olemskoi.ru

Архив тега ‘httpd’

Repos updated, httpd 2.2.15, php 5.2.13, mysql 5.0.91 and more (перепечатка)

Комментариев нет

Enough said.  You know what you've got to do.  Issues in the comments as usual.  If something goes wrong and you've got a large bit of data you'd like to send me, please send it via the comment form on the About page and don't break the site layout by posting it all as a [...]

Логирование медленных запросов Apache

Комментариев нет

Для логирования медленных запросов Apache очень удобно использовать модуль mod_log_slow, домашняя страница которого находится по адресу http://code.google.com/p/modlogslow/

Для установки модуля под CentOS 5 64bit можно воспользоваться репозиторием Southbridge:

yum install modlogslow

или установить пакет по прямой ссылке:

rpm -ihv http://rpms.southbridge.ru/stable/x86_64/modlogslow-1.0.6-1.southbridge.x86_64.rpm

Пример конфигурации можно посмотреть в файле /etc/httpd/conf.d/logslow.conf

13.03.2010

Написал Игорь Олемской

Just about everything updated (including the site) (перепечатка)

Комментариев нет

Alright, just about every package in the repo was just updated. Some significantly, others not so much, but the ones people are likely to care about are there. MySQL is now up to 5.0.84, PHP is up to 5.2.11, and httpd is up to 2.2.13.

Отбил небольшой DDOS ;) (перепечатка)

Комментариев нет

DDOS на HTTP 20 Мбит входящего. Отбито софтварным костылем 8-)

Конфигурация машины: Quad Core Xeon / 4G RAM, CentOS 5.3 x86_64

Сервисы: apache (back) + nginx (front)

Sysctl:

kernel.shmall = 4294967296
vm.min_free_kbytes=70000
net.core.somaxconn=65536
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.ipv4.ip_local_port_range = 2000 61000
net.ipv4.tcp_fin_timeout = 25
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_timestamps = 0
net.core.rmem_max=8388608
net.core.wmem_max=16777216
net.ipv4.tcp_no_metrics_save=0
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 87380 16777216
net.core.netdev_max_backlog=65536
net.ipv4.tcp_max_syn_backlog=4096
net.ipv4.ip_conntrack_max=300000

nginx:

worker_rlimit_nofile 80000;
events {
worker_connections  65536;
use epoll;
}

http {
gzip off; # ;)
keepalive_timeout  0;
server_tokens off;
reset_timedout_connection on;

server {
listen x.x.x.x default deferred;
log_format IP $remote_addr;
location / {
proxy_pass http://127.0.0.1/;
….
access_log /var/log/nginx/ipban IP;

apache: ServerLimit и MaxClients установить так, чтобы не засрало более чем 80% памяти. (В top’е можно глянуть сколько памяти потребляет каждый процесс).

Собсно скрипт. Запускается по крону раз в минуту и банит нах айпи, которые за эту минуту обратились к скриптовой части более 20 раз.

#!/usr/bin/perl

system (‘mv /var/log/nginx/ipban /var/log/nginx/ipban.proc’);
system (‘touch /var/log/nginx/ipban’);
system («/etc/init.d/nginx reload»);

open $f,’/var/log/nginx/ipban.proc’;

%h=();

while (<$f>) {
chomp;
if (/\d+\.\d+\.\d+\.\d+/) {
unless ($h{$_}) {
$h{$_}=1;
} else {
$h{$_}++;
}
}
}

close $f;

foreach $k (keys (%h)) {
if ($h{$k} > 20) {
system («iptables -I INPUT -s $k -j DROP»);
print «$k banned\n»;
}
}

20 -число вычисленное в ходе проб и ошибок применительно к этому серверу и location’у nginx. После того как скрипт беспощадно побанил 2к хостов, сервер начал подавать внешние признаки жизни, после 3к забаненых зомби начала грузицца морда.

В процессе работы мой рабочий комп был дважды забанен в ходе экспериментов ))

Более серъезный DDOS конечно будет трудно отбивать тупой банилкой.

АПДЕЙТ. Время шло, таблица бана росла, ддосеры не унимались.

Поставил вот эту хрень http://www.configserver.com/cp/csf.html

Софтина умеет вообще много чего. Но практически все что она умеет бесполезно. Кроме temporary ban ip address.

В конфигах отключил практически все, ибо оно (все) мешало. Мне надо было от этой проги только то, чтобы она банила айпи с TTL. Т.е. на время. И крон стал пускать раз в 5 минут.

Соответственно, в кроновом скрипте поменял

if ($h{$k} > 20) {
system («iptables -I INPUT -s $k -j DROP»);

На

if ($h{$k} > 60) {
system («/usr/sbin/csf –tempdeny $k 28800″);

Так же цель атаки – страницу, сделал статичной.  ДДОС просел, сайт ожил.

Recent repo updates: ModSecurity, XCache, httpd (перепечатка)

Комментариев нет

I've been a bit lax over the past week or so, but there's been a few packages I've updated since the last post. On January 8th I updated XCache to 1.2.2. On January 15th I updated mod_security to eliminate that config bug that affected some 32-bit users. Finally, yesterday, January 22nd, I [...]