У меня есть эта конфигурация iptables на моем vps, который должен запускать Wordpress. Я хочу заблокировать все входящие запросы, кроме http на порту 80, https на порту 443 и ssh на порту 22.
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 f2b-sshd tcp -- anywhere anywhere multiport dports ssh
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain f2b-sshd (1 references)
num target prot opt source destination
1 REJECT all -- [retracted_ip] anywhere reject-with icmp-port-unreachable
2 REJECT all -- [retracted].com anywhere reject-with icmp-port-unreachable
3 RETURN all -- anywhere anywhere
Я нашел несколько команд в Интернете, но не уверен в том, могут ли они конфликтовать с fail2ban.
В целом:
Правила брандмауэра обрабатываются в порядке их установки и появления (в выводе iptables -L -v -n --line-numbers
, iptables -L -v -n -t nat --line-numbers
, iptables-save
и/или аналогичные команды).
Создание новых правил в неправильных цепочках и/или неправильном порядке приведет к нежелательным последствиям, нарушению функциональности, безопасности и/или блокировке действительного трафика.
Имейте в виду, что низкоуровневые команды iptables
для управления брандмауэром не всегда могут быть лучшим решением. Насколько я знаю, в Ubuntu предпочтительнее использовать инструментарий UFW, и он будет надежно работать вместе с fail2ban.
Fail2ban создает одну или несколько пользовательских цепочек (которые выполняют большую часть тяжелой работы для блокировки конкретных некорректно работающих IP-адресов), таких как цепочка f2b-sshd
. Обычно вы позволяете fail2ban управлять записями в этих цепочках.
Кроме того, fail2ban создает правила для пользовательских цепочек, которые он создает в цепочке INPUT
. Обычно эти правила должны стоять первыми в цепочке INPUT
перед любыми другими созданными вами правилами.
В вашей текущей конфигурации брандмауэра, когда вы используете iptables с переключателем -A
для добавления новых правил в цепочку INPUT, все должно работать.
Выполнение следующих команд добавит обычные правила для создания брандмауэра, который разрешает ssh, http и https и блокирует весь остальной входящий трафик.
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited