У меня проблема с IPtables на машине CentOS 5.6, которая раньше работала нормально, я не совсем уверен, когда это началось, поскольку я заметил проблему только тогда, когда пришел разрешить новый IP-адрес на порту.
В основном, когда я пытаюсь остановить, запустить или перезапустить, я получаю следующее:
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: security raw nat mangle filter [FAILED]
Unloading iptables modules: [ OK ]
По какой-то причине, что бы я ни делал, я не могу изменить правила. Я попытался зайти так далеко, чтобы полностью удалить IPtables (через yum), но даже после перезапуска системы он по-прежнему разрешал только соединения с портами, которые были открыты до возникновения проблемы, и фильтровал все остальное.
Я действительно в своем уме, iptables status
показывает совершенно пустые цепочки, но все равно никаких радостей по поводу внешних связей.
Любые идеи были бы хорошы. Если вы хотите, чтобы я предоставил дополнительную информацию, дайте мне знать.
Заранее спасибо,
Сэм.
РЕДАКТИРОВАТЬ: содержание /etc/sysconfig/iptables
(он в основном пуст из-за удаления и переустановки iptables).
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
РЕДАКТИРОВАТЬ 2:
Если я бегу /etc/init.d/iptables stop
я получил:
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: security raw nat mangle filter [FAILED]
Unloading iptables modules: [ OK ]
И пустые правила:
$ iptables -L -n -v
Chain INPUT (policy ACCEPT 81 packets, 6575 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 72 packets, 4133 bytes)
pkts bytes target prot opt in out source destination
Но он по-прежнему блокирует и фильтрует порты.
Точно так же запуск приводит к:
/etc/init.d/iptables start
Flushing firewall rules: [ OK ]
Setting chains to policy ACCEPT: security raw nat mangle filter [FAILED]
Unloading iptables modules: [ OK ]
Applying iptables firewall rules: [ OK ]
iptables -L -n -v
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
207 54155 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 reject-with tcp-reset
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
4 228 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:25
2 116 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:110
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:143
1 52 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:993
2 128 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:995
0 0 ACCEPT tcp -- * * -sanitized- 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT tcp -- * * 192.168.0.0/16 0.0.0.0/0 tcp dpt:22
0 0 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 8 code 0
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 reject-with tcp-reset
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
0 0 ACCEPT all -- lo lo 0.0.0.0/0 0.0.0.0/0
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
158 25662 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 reject-with tcp-reset
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
0 0 ACCEPT all -- * lo 0.0.0.0/0 0.0.0.0/0
33 2351 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0
Но я все еще не могу подключиться к SSH-порту 22 (иначе я использую последовательную консоль).
В этой теме было решение, которое сработало для меня: http://forum.linode.com/viewtopic.php?t=6981&postdays=0&postorder=asc&start=0
Решение состоит в том, чтобы добавить следующие строки в /etc/init.d/iptables
echo -n $"${IPTABLES}: Setting chains to policy $policy: "
ret=0
for i in $tables; do
echo -n "$i "
case "$i" in
+ security)
+ $IPTABLES -t filter -P INPUT $policy \
+ && $IPTABLES -t filter -P OUTPUT $policy \
+ && $IPTABLES -t filter -P FORWARD $policy \
+ || let ret+=1
+ ;;
raw)
$IPTABLES -t raw -P PREROUTING $policy \
&& $IPTABLES -t raw -P OUTPUT $policy \
|| let ret+=1
;;
Вы используете это на Linode (или другом VPS)? Я спрашиваю об этом, потому что, ища "Установка цепочек для политики ACCEPT: security raw nat mangle filter" в Google, я нашел следующую ссылку:
Форум Linode.com :: Просмотр темы - IPTables
http://www.linode.com/forums/archive/o_t/t_3930/iptables.html
В этом обсуждении соответствующее сообщение - это сообщение пользователя "Troubleshootr", в котором также упоминается CentOS (I жирный что мне кажется частью решения ответа):
Я задал тот же вопрос, но ответа на него не последовало. Вот что я получил от поддержки:
«Проблема в том, что ядро« Последняя версия 2.6 Paravirt »имеет цепочку« безопасности », и iptables не знает, как с ней справиться. Обычно переключение на «последнюю версию ядра 2.6 Stable» решает проблему без каких-либо дополнительных настроек. сценария инициализации iptables (часто он просто игнорирует эту цепочку и запускается нормально). Наша команда по сборке действительно знает об этой проблеме, однако у меня нет ETA о том, когда / когда она будет решена. Совершенно нормально продолжать использовать наше «последнее стабильное ядро 2.6» - до недавнего времени это ядро фактически использовалось по умолчанию для развертываний CentOS. Никакие приложения, за исключением iptables, не будут работать иначе при использовании стабильного ядра. "
Это помогает?
Вы случайно не запускаете Webmin или другую панель управления на этом сервере?
У меня была такая же проблема с сервером CentOS 5.6, где все, что я делал с iptables
через командную строку прошился после перезагрузки; будут соблюдаться только правила, которые я ввел через интерфейс в Webmin.
В сообщении об ошибке каждый из перечисленных элементов представляет собой отдельную таблицу iptables. Отдельные таблицы поддерживаются модули ядра:
- то
iptable_raw
Модуль при загрузке зарегистрирует ловушку, которая будет вызываться перед любой другой ловушкой Netfilter. Он предоставляет таблицу под названием raw, которую можно использовать для фильтрации пакетов до того, как они достигнут более ресурсоемких операций, таких как отслеживание соединений.- то
iptable_mangle
модуль регистрирует таблицу ловушек и манипуляций для запуска после отслеживания соединений (но все же перед любой другой таблицей), чтобы в пакет можно было внести изменения, которые могут повлиять на дальнейшие правила, такие как NAT или фильтрация.- то
iptable_nat
модуль регистрирует два перехватчика: преобразования на основе DNAT применяются до перехватчика фильтра, преобразования на основе SNAT применяются после. Таблица nat, которая предоставляется iptables, является просто «базой данных конфигурации» только для сопоставлений NAT и не предназначена для какой-либо фильтрации.- то
iptable_filter
модуль регистрирует таблицу фильтров, используемую для универсальной фильтрации (firewalling).
В security
table относительно новый, и возможно, что в используемом вами ядре он не скомпилирован. Вы можете подтвердить это, запустив iptables -t <table> -L
; то есть:
adam@adamc: $ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
adam@adamc: $ sudo iptables -t mangle -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Настоящая уловка в том, что я понятия не имею, как сказать CentOS, чтобы она не загружала security
стол. Изучая сценарий инициализации, можно обнаружить файл конфигурации, в котором перечислены эти строки; в противном случае вы можете напрямую отредактировать сценарий инициализации, чтобы удалить все таблицы, которые у вас не установлены.