*Drive*- Здесь рулят padonki

*Drive* - Counter Strike Source
It is currently 17 Jan 2019, 08:35

All times are UTC + 3 hours [ DST ]




Post new topic Reply to topic  [ 1 post ] 
Author Message
PostPosted: 11 Apr 2010, 18:10 
Offline
padonki
User avatar

Joined: 14 Aug 2006, 20:43
Posts: 3657
Location: Солнцево
Has thanked: 9 times
Have thanks: 45 times
Итак , ВАШ сервер подвергся очередной DDoS атаке:

В логах обнаружились повторяющиеся записи вида

Mar 28 22:07:05 daemon kernel: ip_conntrack: table full, dropping packet.

Mar 28 22:07:10 daemon kernel: printk: 224 messages suppressed.

Mar 28 22:07:10 daemon kernel: ip_conntrack: table full, dropping packet.

Mar 28 22:07:15 daemon kernel: printk: 244 messages suppressed.

Mar 28 22:07:15 daemon kernel: ip_conntrack: table full, dropping packet.

Mar 28 22:07:20 daemon kernel: printk: 217 messages suppressed.



Что означает переполнение таблицы соединений.

Проверим, что в действительности имеем

[root@daemon]# cat /proc/net/ip_conntrack | wc -l
65535

Факт на лицо - гигантское количество соединений.

Что у нас с параметрами tcp

[root@daemon]# sysctl -a | grep tcp_keepalive_time
net.ipv4.tcp_keepalive_time = 7200

Держать tcp соединение открытым в течение 2-х часов. Перебор !!!

Что можно предпринять для защиты от DDoS (не панацея, но жизнь облегчит)

1. Корректируем параметры tcp

Ищем файл /etc/sysctl.conf. В него вписываем следующее

# Controls IP packet forwarding
net.ipv4.ip_forward = 0

# Controls source route verification
net.ipv4.conf.default.rp_filter = 1

# Do not accept source routing
net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel
kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename
# Useful for debugging multi-threaded applications
kernel.core_uses_pid = 1

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536

# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536

# Controls the maximum shared segment size, in bytes
kernel.shmmax = 4294967295

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 268435456

# через 60 секунд с момента наступления тишины в канале сервером выполняется проба. Если клиент жив, то серверу высылается ответный пакет
net.ipv4.tcp_keepalive_time = 60

# если ответа на проверку нет, то с интервалом в 10 секунд повторить
net.ipv4.tcp_keepalive_intvl = 10

# Сколько раз повторить проверку после чего закрыть соединение
net.ipv4.tcp_keepalive_probes = 5

net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0

net.ipv4.netfilter.ip_conntrack_max = 65536
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_last_ack = 120
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 60
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 30
net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 30

Сохраняем файл и обновляем системные переменные

[root@daemon]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
net.ipv4.ip_conntrack_max = 65536
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_keepalive_intvl = 10
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_sack = 0
net.ipv4.tcp_timestamps = 0

После этого необходимо перезагрузиться, иначе надо ждать два часа, чтобы отвалились открытые соединения. Минут через 5 после перезагрузки посмотрим что получилось



[root@daemon]# cat /proc/net/ip_conntrack | wc -l
3506
[root@daemon]# cat /proc/net/ip_conntrack | wc -l
3494



Отбились.

2. Теперь iptables.

Опять же недавно был HTTP DDoS. С разных IP шли запросы

210.18.136.151 - - [29/Mar/2010:00:09:25 +0300] "GET /setting.xls HTTP/1.1" 404 221 "-" "-" AU
59.92.97.151 - - [29/Mar/2010:00:09:46 +0300] "GET /setting.doc HTTP/1.1" 404 221 "-" "-" -
59.92.97.151 - - [29/Mar/2010:00:09:47 +0300] "GET /setting.xls HTTP/1.1" 404 221 "-" "-" -
59.92.97.151 - - [29/Mar/2010:00:09:49 +0300] "GET /setting.doc HTTP/1.1" 404 221 "-" "-" -
59.92.97.151 - - [29/Mar/2010:00:09:50 +0300] "GET /setting.xls HTTP/1.1" 404 221 "-" "-" -
59.92.97.151 - - [29/Mar/2010:00:09:51 +0300] "GET /setting.doc HTTP/1.1" 404 221 "-" "-" -
59.92.97.151 - - [29/Mar/2010:00:09:52 +0300] "GET /setting.xls HTTP/1.1" 404 221 "-" "-" -

Побороли это просто (должен быть загружен модуль iptables string, iptables должен быть не ниже версии 1.3.5, а ядро – не ниже 2.6.18, собранным с опцией CONFIG_NETFILTER_XT_MATCH_STRING=m)

/sbin/iptables -A INPUT -p tcp --dport 80 -m string --string "GET /setting." --algo kmp -j DROP


Далее можно поставить ограничение по количеству одновременных соединений

# Лимит на 20 запросов в секунду для интерфейса eth0
/sbin/iptables --new-chain lim1
/sbin/iptables --insert OUTPUT 1 -p tcp --destination-port 80 -o eth0 --jump lim1
/sbin/iptables --append lim1-m limit --limit 20/sec --jump RETURN
/sbin/iptables --append lim1--jump DROP

# Максимум 10 одновременных соединений с одного IP
/sbin/iptables -A INPUT-p tcp --dport 80 -m iplimit --iplimit-above 10 -j REJECT

# Блокировка более 10 SYN
/sbin/iptables -I INPUT -p tcp --syn --dport 80 -j DROP -m iplimit --iplimit-above 10

# 20 соединений на сеть класса С
/sbin/iptables -p tcp --dport 80 -m iplimit --iplimit-above 20 --iplimit-mask 24 -j REJECT

_________________
Моя характеристика с детского сада: Хорошо кушает, спит, гуляет! Прошло много лет, ничего не изменилось.
Image


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 1 post ] 

All times are UTC + 3 hours [ DST ]


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  


Powered by -=PadonaK=- ®, Forum Drivesource.ru, Статситика игрового ресурса *Drive* HLstatsX, Система забаненых игроков Sourcebans

drivesource.ru ® 2006-2019