iptables блокирует все, кроме http/https/ssh

iptables блокирует все, кроме http/https/ssh

У меня есть эта конфигурация 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

Связанный контент