[Comm] Re: Помогите разобраться с iptables

Dmitry Lebkov =?iso-8859-1?q?dima_=CE=C1_sakhalin=2Eru?=
Вс Май 30 05:40:50 MSD 2004


On Sat, 29 May 2004 21:16:30 +0400
Juveman <juveman на atom.ru> wrote:

[skip]

> > # service iptables save
> > # cat /etc/sysconfig/iptables
> > 
> > и результаты сюда.
> > 
> Вот результаты:
> cat /etc/sysconfig/iptables
> # Generated by iptables-save v1.2.9 on Sat May 29 20:53:21 2004
> *filter
> :INPUT DROP [2740:387783]
> :FORWARD DROP [0:0]
> :OUTPUT DROP [818:58417]
> [18:1392] -A INPUT -i lo -j ACCEPT
> [299:102114] -A INPUT -p tcp -m multiport --sports 20,21,80 -j ACCEPT
> [101:6102] -A INPUT -p tcp -j REJECT --reject-with icmp-port-unreachable
> [12:2981] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
> [27545:1169439] -A OUTPUT -o lo -j ACCEPT
> [678:51062] -A OUTPUT -s 10.0.222.8 -j ACCEPT
> COMMIT
> # Completed on Sat May 29 20:53:21 2004

У тебя REJECT-правило, отвергающее все tcp-пакеты применяется раньше
чем '-m state'. Приведи /etc/sysconfig/iptables вот к такому виду:

# Generated by iptables-save v1.2.9 on Sat May 29 20:53:21 2004
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
[0:0] -A INPUT -i lo -j ACCEPT
[0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
[0:0] -A INPUT -p tcp -m multiport --sports 20,21,80 -j ACCEPT
[0:0] -A INPUT -p tcp -j REJECT --reject-with icmp-port-unreachable
[0:0] -A OUTPUT -o lo -j ACCEPT
[0:0] -A OUTPUT -p tcp -m multiport -s 10.0.222.8 --dports 20,21,80 -j ACCEPT
COMMIT
# Completed on Sat May 29 20:53:21 2004

и всё будет работать так, как ты пытаешся сделать. Т.е. для хоста
10.0.222.8 будет разрешен tcp-трафик протоколов HTTP и FTP (в том
числе и passive FTP), а всё остальное - запрещено.

> Я еще не закончил правила писать, просто несколько раз уже
> переписывал все. При таких правилах реально работает только
> браузер и ICQ :)) Хотя должен, насколько я понимаю, еще и FTP.

> Пробовал поставить правило -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
> вторым в цепочке INPUT до блокирования соединений со всех портов
> кроме 20,21,80. Тогда работает вообще все (в том числе и фтп).

Работаетвсё потому, что у тебя OUTPUT-правило разрешает всё для
адреса 10.0.222.8. Разреши отправку пакетов только на нужные
сервисы и будет то, что ты пытаешся получить.

> Как будто запрета tcp соединений нет вообще. Если я правильно
> понимаю, все дело в очередности прохождения этих правил? То есть
> у меня пакет, который приходит с 21 порта принимается и уже не
> проводится проверка его состояния? Так что ли?

Проверка производится по цепочке сверху вниз, до первого совпадения.

> В общем у меня пока получается либо разрешить нужные мне протоколы
> (но тогда фтп не работает), либо сделать так, чтобы фтп работало
> (но тогда не получается запретить соединения по ненужным мне протоколам).
> Как-нибудь можно добиться и того, и другого? :))
> Может с цепочкой INPUT похимичить? :))

Химичь с цепочкой OUTPUT. Хотя, если тебе не нужен passive FTP, можно
выбросить '-m state' и рулить только INPUT-цепочкой, но это - не очень
хорошая идея ... ;)

--
WBR, Dmitry Lebkov

PS. Настрой в своем почтовом клиенте line wrapping на 73 символа - надоело
    переформатировать очень длинные квоты при ответе ...



Подробная информация о списке рассылки community