Я хочу установить брандмауэр с помощью iptables.
Сервер работает со службой httpd (httpd)ОС — Centos7, ниже информация приведена после установки iptables-services и запуска iptables без каких-либо изменений.
[root@iptables ~]# iptables -nL --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
КАК вы можете видеть, в цепочке INPUT, Line num3, кажется, сервер какой-то открыт.
Но доступ к веб-странице через браузер не работает.
Есть ли что-то, что я должен установить?
как результатiptables-save
(взят из комментария):
# Generated by iptables-save v1.4.21 on Thu Sep 16 13:41:53 2021
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [527:50260]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Thu Sep 16 13:41:53 2021
Как я и подозревал, iptables -L
скрыли дополнительное совпадение, но iptables-save
показали голую правду. Ваше правило #3 подходит только для lo
— петлевого интерфейса. Этот брандмауэр принимает подключения только к tcp/22 (SSH )извне.
Простейшим разрешением будет:
iptables -I INPUT 4 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT 5 -p tcp --dport 443 -j ACCEPT
Можно дополнительно отфильтровать с помощью conntrack и объединить оба правила в одно с мультипортом:
iptables -I INPUT 4 -m conntrack --ctstate NEW -p tcp -m multiport --dports 80,443 -j ACCEPT -m comment --comment "HTTP/HTTPS service"
Обратите также внимание на комментарий, который я добавил. Используйте комментарии для каждого правила, и через день вы поблагодарите меня за этот совет, если ваш брандмауэр вырастет до более чем 50 правил.
Не используйте -m state
. Это устарело. Он действительно использует -m conntrack
под капотом, и более прозрачно писать его так явно.
Не используйте iptables -L
. Как видите, его вывод выглядит "красивее", и на этом преимущества заканчиваются, но и не дает всех необходимых деталей. Вывод iptables-save
выглядит менее красиво, но он показывает все мельчайшие детали, поэтому всегда используйте последний вариант.