У меня есть эта конфигурация 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.
решение1
В общем:
Правила брандмауэра обрабатываются в том порядке, в котором они установлены и отображаются (в выводе команд 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
решение2
Для начала сделаем резервную копию :)
sudo iptables-save > ./mybackup
Если вы потеряли соединение и хотите KVM, вы можете легко вернуться к началу резервного копирования.
sudo iptables-restore < ./mybackup
Затем вы можете начать добавлять правила.
sudo iptables -A INPUT -d YOURIPPUBLIC -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -d YOURIPPUBLIC -p tcp -m tcp --dport 22 -j DROP
sudo iptables -A INPUT -d YOURIPPUBLIC -j DROP
это выше, если вы хотите создать брандмауэр для IP-адреса, отличного от вашего экземпляра, YOURIPPUBLIC: 33.33.33.33 или с маской сети 33.33.33.33/32
СВЯЗАННЫЕ, УСТАНОВЛЕННЫЕ - Если вы подключились раньше, просто пропустите все следующие правила брандмауэра. Чтобы подключиться, следуйте следующим правилам :)
если вам нужна вся сеть
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j DROP
sudo iptables -A INPUT -j DROP
Вы можете сохранить для последующего редактирования:
iptables-save > /.mynew.iptables.list.txt