Архив

Архив Март 2013

IPTABLES: Защита от брутфорса

Устанавливаем метку на SSH пакеты
iptables -t filter -A INPUT -p tcp —destination-port 22 -m state —state NEW -m recent —set —name SSH -j ACCEPT

Устанавливаем запись в системный лог попыток брутфорса
iptables -t filter -A INPUT -p tcp —destination-port 22 -m recent —update —seconds 900 —hitcount 3 —rttl —name SSH -j LOG —log-prefix «SSH_BRUTFORCE: »

Блокируем брутфорсера. Параметр —seconds устанавливает время в секундах, в течении которых проводится наблюдение за доступом к порту, параметр —hitcount устанавливает число разрешенных попыток.
iptables -t filter -A INPUT -p tcp —destination-port 22 -m recent —update —seconds 900 —hitcount 3 —rttl —name SSH -j DROP

Нельзя в течении пятнадцати минут подключиться на порт SSH более 3х раз. Защита очень простая и эффективная. Проверено.

IPTABLES: Обман сканера портов + ограничение коннекта

Применяем вот такие правила:

iptables -A INPUT -p tcp –dport 22 -m recent –name ssh –update –seconds 3600 –hitcount 8 -j REJECT
iptables -A INPUT -p tcp –dport 22 -m recent –name ssh –set
iptables -A INPUT -p tcp –dport 22 -m recent –name ssh ! –rcheck –seconds 15 –hitcount 2 -j REJECT
iptables -A INPUT -p tcp –dport 22 -j ACCEPT

Результат:

Попытка соединения на 22 порт (обычный коннект или скан порта)

Сбрасывается соединение и даётся 15 секунд на логин

Если в течении 15 секунд залогинился успешно – даёт доступ, если не успел – реджектит и снова даёт 15 сек.

Если 8 фейлов в час, то блочит, до начала часа после первого фейла.

Команды для определения DDoS атаки

В интернете, в открытом доступе были найдены полезные команды для проверки нагрузки на сервер а так же для анализа и определения ДДОС (DDoS) атаки.

Число процессов Apache:
ps aux | grep httpd |wc -l

Число коннектов на 80 порт:
netstat -na | grep :80 | wc -l

То же, в статусе SYN
netstat -na | grep :80 | grep syn

Пример SYN-флуда:
netstat -na | grep :80 | grep SYN | wc -l 767

Посмотреть много ли разных IP:
netstat -na | grep :80 | grep SYN | sort -u | more

На какой домен чаще всего идут запросы:
tcpdump -npi eth0 port domain

Статус Apache:
apachectl status

Посмотреть откуда IP или Domain:
whois xxx.xxx.xxx.xxx

или
jwhois xxx.xxx.xxx.xxx

С какого IP сколько запросов:
netstat -na | grep :80 | sort | uniq -c | sort -nr | more

Количество соединений с сервером:
cat /proc/net/ip_conntrack | wc -l

Вывод информации в реальном времени,
IP которые соединены с сервером и какое количество соединений по каждому IP
netstat -anp |grep ‘tcp\|udp’ | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -n