Назад | Перейти на главную страницу

Тайм-аут подключения к веб-серверу Iptables

После настройки 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.