Устанавливаем метку на 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 -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) атаки.
Число процессов 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