После настройки iptables. На моем веб-сервере «истекло время ожидания соединения». Я пытаюсь настроить свои iptables на основе прочитанного, это довольно хорошая отправная точка для веб-сервера из другого сообщения serverFault. У меня есть файл "iptables-setup" со следующим:
# Allow outgoing traffic and disallow any passthroughs
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
# Allow traffic already established to continue
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow ssh, #dns, ftp and web services
iptables -A INPUT -p tcp --dport ssh -i eth0 -j ACCEPT
# DNS
# iptables -A INPUT -p tcp --dport domain -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport ftp -i eth0 -j ACCEPT
iptables -A INPUT -p udp --dport ftp -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport ftp-data -i eth0 -j ACCEPT
iptables -A INPUT -p udp --dport ftp-data -i eth0 -j ACCEPT
# HTTP
iptables -A INPUT -p tcp --dport 80 -i eth0 -j ACCEPT
# HTTPS
iptables -A INPUT -p tcp --dport 443 -i eth0 -j ACCEPT
# CPanel
iptables -A INPUT -p tcp --dport 2083 -i eth0 -j ACCEPT
# WHM
iptables -A INPUT -p tcp --dport 2087 -i eth0 -j ACCEPT
# Allow local loopback services
iptables -A INPUT -i lo -j ACCEPT
# Allow pings
iptables -I INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -I INPUT -p icmp --icmp-type source-quench -j ACCEPT
iptables -I INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -I INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -I INPUT -p icmp --icmp-type echo-reply -j ACCEPT
Затем я бегу:
% service iptables stop
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: mangle filter [ OK ]
Unloading iptables modules: [ OK ]
% sh iptables-setup
% service iptables save
Saving firewall rules to /etc/sysconfig/iptables: [ OK ]
% service iptables restart
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: mangle filter [ OK ]
Unloading iptables modules: [ OK ]
Applying iptables firewall rules: [ OK ]
% iptables --list -n -v
Chain INPUT (policy ACCEPT 84670 packets, 33M bytes)
pkts bytes target prot opt in out source destination
84083 33M acctboth all -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 110K packets, 52M bytes)
pkts bytes target prot opt in out source destination
109K 52M acctboth all -- * * 0.0.0.0/0 0.0.0.0/0
Chain acctboth (2 references)
pkts bytes target prot opt in out source destination
116 16979 tcp -- !lo * [MY_IP] 0.0.0.0/0 tcp dpt:80
78 158K tcp -- !lo * 0.0.0.0/0 [MY_IP] tcp spt:80
0 0 tcp -- !lo * [MY_IP] 0.0.0.0/0 tcp dpt:25
0 0 tcp -- !lo * 0.0.0.0/0 [MY_IP] tcp spt:25
0 0 tcp -- !lo * [MY_IP] 0.0.0.0/0 tcp dpt:110
0 0 tcp -- !lo * 0.0.0.0/0 [MY_IP] tcp spt:110
5 866 icmp -- !lo * [MY_IP] 0.0.0.0/0
3 132 icmp -- !lo * 0.0.0.0/0 [MY_IP]
26431 11M tcp -- !lo * [MY_IP] 0.0.0.0/0
19622 7514K tcp -- !lo * 0.0.0.0/0 [MY_IP]
64 4250 udp -- !lo * [MY_IP] 0.0.0.0/0
66 10580 udp -- !lo * 0.0.0.0/0 [MY_IP]
26500 11M all -- !lo * [MY_IP] 0.0.0.0/0
19691 7524K all -- !lo * 0.0.0.0/0 [MY_IP]
0 0 tcp -- !lo * [MY_IP] 0.0.0.0/0 tcp dpt:80
0 0 tcp -- !lo * 0.0.0.0/0 [MY_IP] tcp spt:80
0 0 tcp -- !lo * [MY_IP] 0.0.0.0/0 tcp dpt:25
0 0 tcp -- !lo * 0.0.0.0/0 [MY_IP] tcp spt:25
0 0 tcp -- !lo * [MY_IP] 0.0.0.0/0 tcp dpt:110
0 0 tcp -- !lo * 0.0.0.0/0 [MY_IP] tcp spt:110
1 576 icmp -- !lo * [MY_IP] 0.0.0.0/0
0 0 icmp -- !lo * 0.0.0.0/0 [MY_IP]
15 600 tcp -- !lo * [MY_IP] 0.0.0.0/0
17 720 tcp -- !lo * 0.0.0.0/0 [MY_IP]
0 0 udp -- !lo * [MY_IP] 0.0.0.0/0
1 1016 udp -- !lo * 0.0.0.0/0 [MY_IP]
16 1176 all -- !lo * [MY_IP] 0.0.0.0/0
18 1736 all -- !lo * 0.0.0.0/0 [MY_IP]
47158 19M all -- !lo * 0.0.0.0/0 0.0.0.0/0
% netstat -lntp | egrep ":80"
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 13687/httpd
Я добавил пробелы для разборчивости, а [MY_IP] вставлен в мой IP. Опять же, у меня есть вопрос: есть ли проблемы с моим ipconfig, которые могли привести к тому, что мой веб-сервер не смог установить HTTP-соединение, которое работало раньше?
Возможно, вы захотите показать вывод iptables --list -n -v
чтобы получить полные привязки правил брандмауэра (включая загруженные интерфейсы и модули)
Затем включил вывод netstat -lntp
поскольку вы хотите подтвердить, что httpd действительно прослушивает порт 0.0.0.0:80, а не 127.0.0.1, например
# netstat -lntp | egrep ":80"
tcp 0 0 :::80 :::* LISTEN 1954/httpd
Редактировать: ответ на iptables -v --list -n
вывод...
Предполагая, что все строки с пропущенными протоколами или «все» относятся к правилам icmp и DENY, единственными имеющимися у вас строками, которые соответствуют порту 80 HTTP, являются следующие;
116 16979 tcp -- !lo * [MY_IP] 0.0.0.0/0 tcp dpt:80
78 158K tcp -- !lo * 0.0.0.0/0 [MY_IP] tcp spt:80
0 0 tcp -- !lo * [MY_IP] 0.0.0.0/0 tcp dpt:80
0 0 tcp -- !lo * 0.0.0.0/0 [MY_IP] tcp spt:80
Я думаю, что порт назначения перепутан с портом источника. Для вашего входящего трафика на порт HTTP (строки с «tcp dpt: 80») тогда в левом столбце должны быть адреса WAN (0.0.0.0/0), а место назначения должно иметь ваш собственный IP-адрес;
116 16979 tcp -- !lo * [MY_IP] 0.0.0.0/0 tcp dpt:80
Вместо этого он должен выглядеть так:
116 16979 tcp -- !lo * 0.0.0.0/0 [MY_IP] tcp dpt:80
Еще одно обновление ::
Что касается вашего исходного сценария для создания правил, я не вижу, как вывод связан с вводом, поскольку ваш сценарий ввода добавляет общее правило, разрешающее весь трафик на порт 80, например;
iptables -A ВВОД -p tcp --dport 80 -i eth0 -j ПРИНЯТЬ
Однако правила в вашем выводе используют другую стратегию с общей цепочкой, называемой «acctboth», которая была вставлена в цепочки INPUT и OUTPUT.
Я хотел бы проверить, что вы загружаете правильный файл конфигурации.
Быстрый поиск в Google показывает, что скрипт, который вы вставили, с acctboth chain - это фактически предоставленный cpanel набор правил iptables для мониторинга пропускной способности;
http://forums.cpanel.net/f5/iptables-acctboth-chain-74575.html
который объясняет все сумасшедшие! lo и другие вещи, которые не соответствуют вашим входным данным .... По сути, перезагрузка ваших правил игнорирует ваш набор правил, это, вероятно, связано с тем, что вместо этого установило эту цепочку мониторинга пропускной способности acctboth.