Назад | Перейти на главную страницу

Использование iptables для предотвращения атак методом перебора SSH и DDOS-атак

У меня есть следующие строки в самом верху iptables, они используются для предотвращения атак методом перебора SSH и DDOS-атак: сегмент iptables для предотвращения атак методом перебора SSH и DDOS-атак

Что меня беспокоит, так это "name: DEFAULT" во всех трех, мне просто интересно, все ли они будут работать или одно будет перезаписывать другое? Есть идеи, как это проверить?

Кроме того, я использую Nginx в качестве обратного прокси для Apache, правильно ли я использую здесь порты 80 и 443 (т.е. те, на которых работает Nginx), или мне следует использовать порты Apache 7080 и 7081 в iptables?

Это работает на VPS с Plesk Onyx и Ubuntu 14.04.

Спасибо за вашу помощь!


Вот команды, которые я использовал для добавления этих строк в iptables:

iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 5 --hitcount 20 -j DROP
iptables -I INPUT -p tcp --dport 443 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 443 -m state --state NEW -m recent --update --seconds 5 --hitcount 20 -j DROP
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent  --update --seconds 60 --hitcount 5 -j DROP 

Самый простой способ добиться этого - установить fail2ban. Он будет отслеживать SSH по умолчанию и динамически блокировать IP-адреса, которые часто не работают. Однако вы можете настроить его для отслеживания любого файла журнала. Таким образом, вы также можете включить HTTP и HTTPS.

Re: "Что меня беспокоит, так это" name: DEFAULT "во всех трех, мне просто интересно, все ли они будут работать, или одно будет перезаписывать другое?" Добавление "--name UNIQUE-NAME" решает эту проблему (если это проблема). Вот обновленные директивы:

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set --name SSH
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent  --update --seconds 60 --hitcount 5 --name SSH -j DROP
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --set --name DDOS-HHTP
iptables -I INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 5 --hitcount 20 --name DDOS-HHTP -j DROP
iptables -I INPUT -p tcp --dport 443 -m state --state NEW -m recent --set --name DDOS-HHTPS
iptables -I INPUT -p tcp --dport 443 -m state --state NEW -m recent --update --seconds 5 --hitcount 20 --name DDOS-HHTPS -j DROP

Что-то вроде

iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m sshbrute --set
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m sshbrute --update --seconds 60 --hitcount 4 -j DROP

Может работать на вас. Все ssh-соединения (или, скорее, соединения с портом 22) помечаются как "sshbrute", вторая команда сбрасывает любое новое ssh-соединение, если за одну минуту с определенного IP-адреса происходит более 4 новых соединений. Не вводите пароль неверно, а если и делаете, то делайте это медленно.