У меня есть следующие строки в самом верху 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 новых соединений. Не вводите пароль неверно, а если и делаете, то делайте это медленно.