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

Конфигурация iptables работает на одном сервере Centos 6, но не на другом

Этот скрипт iptables:

#!/bin/sh
service iptables stop
iptables -F
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
service iptables save
service iptables restart

работает должным образом на сервере Centos 6.3 (предоставляется VPSBlocks.com.au), но не на сервере Centos 6.0 (предоставляется VPSNine.com). Под «работает, как ожидалось» я имею в виду, что он, по крайней мере, разрешает входящий доступ к портам 22, 80 и 443. А под «неработающим» я подразумеваю, что он не разрешает доступ.

Тот, который работает, имеет следующий / etc / sysconfig / iptables:

# Generated by iptables-save v1.4.7 on Wed Feb 27 19:10:38 2013
*filter
:INPUT DROP [3:453]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [1:52]
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT 
COMMIT
# Completed on Wed Feb 27 19:10:38 2013

тогда как тот, который не работает, имеет следующий файл / etc / sysconfig / iptables:

# Generated by iptables-save v1.4.7 on Wed Feb 27 11:28:36 2013
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Wed Feb 27 11:28:36 2013
# Generated by iptables-save v1.4.7 on Wed Feb 27 11:28:36 2013
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT 
-A INPUT -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT 
COMMIT
# Completed on Wed Feb 27 11:28:36 2013
# Generated by iptables-save v1.4.7 on Wed Feb 27 11:28:36 2013
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Wed Feb 27 11:28:36 2013

Если я заменю нерабочий / etc / sysconfig / iptables на тот, который работает на другом сервере, это позволит мне сохранить текущее соединение ssh, но когда я попытаюсь вернуться, я заблокируюсь.

Почему одна и та же конфигурация iptables будет работать на одном сервере, а на другом - нет? Может ли разница в младших версиях Centos (6.3 против 6.0) объяснять различное поведение?

Обновить: Сервер Centos 6.3 (тот, на котором работает конфигурация iptables) использует iptables 1.4.7-5.1.el6_2. Другой сервер использует iptables 1.4.7-3.el6.

Обновить: iptables --list возвращает следующее на ОБЕИХ серверах:

Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere            multiport dports ssh,http,https state NEW,ESTABLISHED 

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Обновить: Когда я вхожу на сервер 6.0, я вижу это предупреждение:

Warning: Unknown iptable module: nf_conntrack_ipv4, skipped

Я не знаю, как это установить. Это модуль ядра? Если так, похоже, я в снукере.

В вашем сценарии вам может потребоваться flush все таблицы в дополнение к filter (-F), что по умолчанию соответствует таблице фильтров.

  /sbin/iptables -F
  /sbin/iptables -t nat -F
  /sbin/iptables -t mangle -F

Затем примите подключения к уже установленным сеансам со следующей строкой в /etc/sysconfig/iptables прямо над правилом принятия для интерфейса обратной связи.

 -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT

Вам также может потребоваться вручную загрузить nf_conntrack_ipv4 модуль с -

  modprobe nf_conntrack_ipv4

Если многопортовый режим вызывает у вас проблемы, вы можете добавить порты по отдельности для тестирования.

iptables multiport - это модуль, проверьте, установлен ли он в целевой системе CentOS.