Определяем процессы Apache в среднем их должно быть не более 30
deb
ps aux | grep apache | wc -l
cenos
ps aux | grep httpd | wc -l
Смотрим число коннектов на порт
netstat -na | grep :80 | wc -l
netstat -na | grep :443 | wc -l
Смотрим колличество SYN запросов
netstat -na | grep :80 | grep SYN | sort -u | more
netstat -na | grep :443 | grep SYN | sort -u | more
netstat -n -t | grep SYN_RECV | wc -l
Смотрим на какой домен идут запросы
tcpdump -npi eth0 port domain
Сортируем ко-во запросов с ip по всем портам
netstat -ntu | awk '{print $5}'| cut -d: -f1 | sort | uniq -c | sort -nr | more
или
netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
или
netstat -antu | awk '$5 ~ /[0-9]:/{split($5, a, ":"); ips[a[1]]++} END {for (ip in ips) print ips[ip], ip | "sort -k1 -nr"}'
По определенному порту
netstat -ntu | grep ":80\ " | awk '{print $5}'| cut -d: -f1 | sort | uniq -c | sort -nr | more
или полный вывод по порту
netstat -na | grep :80 | sort | uniq -c | sort -nr | more
Смотрим на какие порты стучится определенный ip
netstat -na | grep 127.0.0.1
Смотрим ip с числом запросов к сервису
cat /full_patch/access.log | awk '{print $1}' | sort | uniq -c
Смотрим с каких агентов заходили юзеры
cat /full_patch/access.log | awk -F\" '{print $6}' | sort | uniq -c | sort -n
Блокировка IPTABLES
TCP на 80 порт с определенного IP
iptables -A INPUT -p tcp --dport 80 -s 12.34.56.78 -j DROP
TCP с определенного IP на все порты
iptables -A INPUT -s 12.34.56.78 -j DROP
Список заблокированных
iptables -L -n
или
iptables -L -n —line-numbers
Отмена блокировки IP
iptables -D INPUT -s 127.0.0.1 -j DROP
или удаления правила по номеру
iptables -D INPUT 6
Отчистить таблицу правил
iptables -F
Профилактика для зашиты от Ddos
максимальное количество подключений с одного IP на 80 порт
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 128 -j DROP
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
То же для DNS
iptables -A INPUT -p udp --dport 53 -m connlimit --connlimit-above 16 -j DROP
iptables -A INPUT -p udp --dport 53 -j ACCEPT
Следующее правило в iptables будет препятствовать спуфингу от нашего имени. Как правило, во время ddos мы получаем пакет с установленными флагами SYN и ACK по еще не открытому соединению (этой комбинацией флагов обладает только ответ на SYN-пакет). Это говорит о том, что кто-то послал другому хосту SYN-пакет от нашего имени, и ответ пришел к нам.
По данному правилу, наш хост ответит RST-пакетом, после получения которого атакуемый хост закроет соединение.
iptables -I INPUT -m conntrack --ctstate NEW,INVALID -p tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT --reject-with tcp-reset
Сохраняем правила
iptables-save > /etc/iptables.rules
Дополнительно можно настроить Fail2ban
Источник: https://maxidrom.net/archives/1454 |