Защищаем сервер от атаки DNS Amplification с помощью fail2ban
Защищаем сервер от атаки DNS Amplification с помощью fail2ban
Устанавливаем необходимый софт:
sudo aptitude install fail2ban ipset logrotate
Настройка fail2ban
В /etc/fail2ban/jail.conf необходимо ввести следующие строки:
[named-antidos]
enabled = true
banaction = iptables-ipset
logpath = /var/log/iptables.log
filter = iptables-named
port = any
protocol = all
В /etc/fail2ban/action.d создаем файл
[Definition]
actionstart = ipset --create fail2ban-<name> iphash
actionstop = ipset --flush fail2ban-<name>
ipset --destroy fail2ban-<name>
actionban = ipset --test fail2ban-<name> <ip> || ipset --add fail2ban-<name> <ip>
actionunban = ipset --test fail2ban-<name> <ip> && ipset --del fail2ban-<name> <ip>
И в /etc/fail2ban/filter.d файл iptables-named.conf с содержимым
[Definition]
failregex = .* IPTables-Dropped: .* SRC=<HOST> .*
ignoreregex =
На этом настройка fail2ban закончена. Перезапускам демона командой:
sudo invoke-rc.d fail2ban restart
Настройка iptables
Добавляем правила командами:
iptables -N bl
iptables -A bl -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
iptables -A bl -j DROP
iptables -I INPUT -p udp --dport 53 -m recent --name ddns --set
iptables -I INPUT -p tcp --dport 53 -m recent --name ddns --set
iptables -I INPUT -p udp --dport 53 -m recent --name ddns --update --seconds 60 --hitcount 15 -j bl
iptables -I INPUT -p tcp --dport 53 -m recent --name ddns --update --seconds 60 --hitcount 15 -j bl
iptables -I INPUT -m set --match-set fail2ban-named-antidos src -j DROP
Настройка syslog
Теперь необходимо организовать вывод в лог от iptables в отдельный файл, чтобы не захламлять syslog. На примере rsyslog в /etc/rsyslog.conf добавляем строчку
kern.warning /var/log/iptables.log
И перезапускаем демон:
sudo invoke-rc.d rsyslog restart
Настройка logrotate
При интенсивных атаках с нескольких хостов, размер лог файла может разрастись до нескольких десятков мегабайт за сутки. Чтобы логи не забили все свободное дисковое пространство, создадим файл /etc/logrotate.d/iptables с содержимым:
/var/log/iptables.log
{
rotate 3
daily
missingok
notifempty
delaycompress
compress
postrotate
invoke-rc.d rsyslog rotate > /dev/null
endscript
}
Читаем еще:
- Iptables. советы и примеры
- Пользователи и группы в Linux
- Выбираем для себя Helpdesk (Service Desk)
- Несколько полезных команд системным администраторам Linux
- Настройка прокси-сервера Squid +sams+ncsa на Ubuntu 10.04