Создание/настройка брандмауэра с помощью iptables

Я хочу установить брандмауэр с помощью 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
1
задан 16 September 2021 в 02:32
1 ответ

Как я и подозревал, 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выглядит менее красиво, но он показывает все мельчайшие детали, поэтому всегда используйте последний вариант.

0
ответ дан 16 September 2021 в 19:00

Теги

Похожие вопросы