Помогите пожалуйста разобраться с некоторыми правилами iptables, созданными админом до меня. Мне они кажутся некоторые безполезными, некоторые неправильными, но система рабочая, поэтому прежде чем что-то менять или удалять не мешало бы хорошенько разобраться, так как горький опыт показывает, что в нашем деле часто очевидная чушь является самым необходимым и рабочим. Linux сервер является шлюзом в интеренет.
Итак:
-A INPUT -s 192.168.0.0/255.255.0.0 -i eth0 -j ACCEPT
Интерфейс eth0 является внешним, а диапазон адресов-источников - локальная сеть. Т.е. с внешнего интерфеса разрешаются все пакеты с ip-source локальной сети. При чем это правило в цепочке INPUT второе. ?
Едем дальше:
-A INPUT -s 193.152.203.139 -i lo -j ACCEPT #ip вымышленный
По поводу этого правила у меня два вопроса. Первый аналогичный предыдущему: как с локального интерфейса могут уходить пакеты с ip-source внешней сети. А второй - сам указанный ip-шник не является ip адресом моей внешней сетевухи. Может быть, это адрес провайдера? Правило в цепочке пятое.
-A OUTPUT -s 193.152.203.139 -j ACCEPT
Опять тот же, непонятный мне, источник. Правильно ли я понимаю, что цепочка OUTPUT работает для обоих интерфейсов, т.е. в данном случае пропускаются все пакеты с указанным адресом источником в локальную сеть, поскольку во вне таких пакетов, в которых бы источником являлся подобный (чужеродный) ip, быть не может. Короче каша в голове. ?Если вы поможете моему дальнейшему превращению из обезъяны в человека, буду крайне признателен.
>Помогите пожалуйста разобраться с некоторыми правилами iptables, созданными админом до меня. Мне
>они кажутся некоторые безполезными, некоторые неправильными, но система рабочая, поэтому прежде
>чем что-то менять или удалять не мешало бы хорошенько разобраться, так
>как горький опыт показывает, что в нашем деле часто очевидная чушь
>является самым необходимым и рабочим. Linux сервер является шлюзом в интеренет.для начала, посмотрите iptables -L -nxv
правила, на которых 0 пакетов и счётчиков, не срабатывают никогда. Их можно смело закоменнтировать (в дальнейшем убрать)>
>Итак:
>-A INPUT -s 192.168.0.0/255.255.0.0 -i eth0 -j ACCEPT
>Интерфейс eth0 является внешним, а диапазон адресов-источников - локальная сеть. Т.е. с
>внешнего интерфеса разрешаются все пакеты с ip-source локальной сети. При чем
>это правило в цепочке INPUT второе. ?_на_ интерфейс eth0 разрешено всё _из_ сети 192.168.0.0/16. Возможно, таким образом организован доступ к сервисам слушающим порты привязанные к адресу этого интерфейса
>Едем дальше:
>-A INPUT -s 193.152.203.139 -i lo -j ACCEPT
>#ip вымышленный
>По поводу этого правила у меня два вопроса. Первый аналогичный предыдущему: как
>с локального интерфейса могут уходить пакеты с ip-source внешней сети. А
>второй - сам указанный ip-шник не является ip адресом моей внешней
>сетевухи. Может быть, это адрес провайдера? Правило в цепочке пятое.
кто такой 193.152.203.139? в любом случае, обычно к lo интерфейсу разрешают всё от всех без указания айпи>-A OUTPUT -s 193.152.203.139 -j ACCEPT
>Опять тот же, непонятный мне, источник. Правильно ли я понимаю, что цепочка
>OUTPUT работает для обоих интерфейсов, т.е. в данном случае пропускаются все
>пакеты с указанным адресом источником в локальную сеть, поскольку во вне
>таких пакетов, в которых бы источником являлся подобный (чужеродный) ip, быть
>не может. Короче каша в голове. ?кто такой 193.152.203.139? возможно это старый ваш айпи адрес? просто убирайте это правило как бесполезное
>Если вы поможете моему дальнейшему превращению из обезъяны в человека, буду крайне
>признателен.
>
Во-первых, большое спасибо за ответ, все-таки два дня ждал.
Во-вторых, не все понятно.
>для начала, посмотрите iptables -L -nxv
>правила, на которых 0 пакетов и счётчиков, не срабатывают никогда. Их можно
>смело закоменнтировать (в дальнейшем убрать)
Эта команда выдает количество пакетов не правил, а целых цепочек, поэтому отобрать правила с нулевым счетчиком не получается. Примерно, так:
Chain INPUT (policy ACCEPT 523462 packets, 6345663 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 6436534 packets, 563562 bytes)
pkts bytes target prot opt in out source destination>
>>
>>Итак:
>>-A INPUT -s 192.168.0.0/255.255.0.0 -i eth0 -j ACCEPT
>>Интерфейс eth0 является внешним, а диапазон адресов-источников - локальная сеть. Т.е. с
>>внешнего интерфеса разрешаются все пакеты с ip-source локальной сети. При чем
>>это правило в цепочке INPUT второе. ?
>_на_ интерфейс eth0 разрешено всё _из_ сети 192.168.0.0/16. Возможно, таким образом организован
>доступ к сервисам слушающим порты привязанные к адресу этого интерфейса
Дело в том, что eth1 имеет ip=192.168.0.11, т.е. входит в указанную сеть, а eth0 - внешний интерфейс и имеет ip совершенно другой, поэтому этого момента я и не понимаю, как на eth0 могут попадать пакеты из сети 192.168.0.0/16 если он внешний?>>Едем дальше:
>>-A INPUT -s 193.152.203.139 -i lo -j ACCEPT #ip вымышленный
...
>кто такой 193.152.203.139? в любом случае, обычно к lo интерфейсу разрешают всё
>от всех без указания айпи
В том то и дело, что ни мой внешний интерфейс (eth0), ни маршрутизатор (который, как я понимаю здесь и так не при чем) и близко такого ip не имеют. Что за он, сам понять не могу! :(>кто такой 193.152.203.139? возможно это старый ваш айпи адрес? просто убирайте это
>правило как бесполезноеЗакомментировал правила, связанные с этим ip, сделал ./iptables restart и обнаружил новую проблему: мой сервак перестал вообще отвечать на всяческие запросы из локальной сети. Подозреваю, поскольку не склонен к спиритизму, что криво (ну или не криво, а как-то хитро) работает restart. Вернул все как было, сделал снова restart, но это не помогло, пришлось перегружать в пожарном порядке сервер. Это дало свои результаты - все снова работает как и было. До конца рабочего дня намерен эксперементы отложить, но поведение restarta озадачивает ;(
>>Если вы поможете моему дальнейшему превращению из обезъяны в человека, буду крайне
>>признателен.
>>
>Во-первых, большое спасибо за ответ, все-таки два дня ждал.
>Во-вторых, не все понятно.
>>для начала, посмотрите iptables -L -nxv
>>правила, на которых 0 пакетов и счётчиков, не срабатывают никогда. Их можно
>>смело закоменнтировать (в дальнейшем убрать)
>Эта команда выдает количество пакетов не правил, а целых цепочек, поэтому отобрать
>правила с нулевым счетчиком не получается. Примерно, так:
>Chain INPUT (policy ACCEPT 523462 packets, 6345663 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 6436534 packets, 563562 bytes)
> pkts bytes target
> prot opt in
>out source
> destinationхех,что говорит о том, что весь ваш файрвол стоит в режиме ACCEPT ALL во всех направлениях :))
>>доступ к сервисам слушающим порты привязанные к адресу этого интерфейса
>Дело в том, что eth1 имеет ip=192.168.0.11, т.е. входит в указанную сеть,
>а eth0 - внешний интерфейс и имеет ip совершенно другой, поэтому
>этого момента я и не понимаю, как на eth0 могут попадать
>пакеты из сети 192.168.0.0/16 если он внешний?
это называется forwarding и я думаю вам определённо следует начать с теории.
на это сайте есть руссифицировання документация к iptables, прочтите и не раз её обязательно>Закомментировал правила, связанные с этим ip, сделал ./iptables restart и обнаружил новую
>проблему: мой сервак перестал вообще отвечать на всяческие запросы из локальной
>сети. Подозреваю, поскольку не склонен к спиритизму, что криво (ну или
>не криво, а как-то хитро) работает restart. Вернул все как было,
>сделал снова restart, но это не помогло, пришлось перегружать в пожарном
>порядке сервер. Это дало свои результаты - все снова работает как
>и было. До конца рабочего дня намерен эксперементы отложить, но поведение
>restarta озадачивает ;(
изучите скрипт подгрузки правил. что-то там у вас всё не так.
читай выше про свои показания iptables -L -nxv - у тебя всё разрешено.
>это называется forwarding и я думаю вам определённо следует начать с теории.
>
>на это сайте есть руссифицировання документация к iptables, прочтите и не раз
>её обязательно
К слову, читал два раза, правда оба только до рассмотрения примера rc.firewall. Висит и сейчас перед носом. Намерен углубленно сегодня засесть и за эту часть.
Дождался конца рабочего дня и решил делать так, как делал бы я.
Заменил в правиле
-A INPUT -s 192.168.0.0/255.255.0.0 -i eth0 -j ACCEPT
eth0 на eth1? т.е. на внутренний интерфейс, сервак стал доступен из сети.
Заменил во всех правилах злолучный непонятный ip (193.152.203.139) на мой реальный внешний, начали выходить в инет, заработало одним словом все.
Осмелел, удалил еще некоторые правила, казавшиеся мне лишними, все по-прежнему фурычит.
>Если вы поможете моему дальнейшему превращению из обезъяны в человека, буду крайне >признателен.
Все-таки зачатки человеческие уже имеются, это не может не радовать. За что и Вам bass большое спасибо.
Есть еще, правда, вопросы. Буду сам ломать конечно голову, но если поспособствуете - заранее благодарен.
Например, почему правила не подгружаются вообще во время перегрузки сервака?
Почему был такой кривой конфиг и не грузился при перегрузке сервака, в то время как админ - мой предшественник считается мегаспецом? Может быть у нас функции файервола выполняет маршрутизатор (Cisco)
Как узнать, включен ли forwarding в ядре? И еще о нем: что-то в руководстве я нигде не нашел, что правило с критериями -s $loc_net -i $inet_if -j ACCEPT является пересылкой, может объясните поподробнее или подскажете где искать об этом?
>Например, почему правила не подгружаются вообще во время перегрузки сервака?
Для начала узнайте откуда в Вашем дистрибутиве они должны стартовать. В этом поможет изучение скриптов в /etc/rc.d (/etc/rc.d/rc.inet2).
В большинстве дистрибутивов правила iptables прописываются в /etc/rc.d/rc.firewall
Кроме того на этом скрипте должны быть права на запуск (chmod +x /etc/rc.d/rc.firewall)
>Почему был такой кривой конфиг и не грузился при перегрузке сервака, в
>то время как админ - мой предшественник считается мегаспецом? Может быть
>у нас функции файервола выполняет маршрутизатор (Cisco)
Вопросы относительно топологии сети, лучше задавать Вашему ушедшему коллеге
>Как узнать, включен ли forwarding в ядре?
#cat /proc/sys/net/ipv4/ip_forward
Если 1 - включен, 0 - выключен.
>в руководстве я нигде не нашел, что правило с критериями -s
>$loc_net -i $inet_if -j ACCEPT является пересылкой, может объясните поподробнее или
>подскажете где искать об этом?
Вы путаете два функционала: iptables и route
Для просмотра "что куда пересылается" поможет команда
#route -n
Просто, спасибо. Хоть и с опозданием.
Не могу заставить работать цепочку в firewall. Делаю так:
после описания lo стоит правило iptables -A INPUT -i eth0 -j RASCALS
в цепочку RASCALS забиваю адреса негодяев так:
iptables -A RASCALS -s ${remote_IP} -p tcp -j REJECT --reject-with icmp-port-unreachable
Заканчивается цепочка так:
iptables -A RASCALS -j RETURNiptables -L -nxv по этому поводу дает такую картину:
2015959 1695695380 RASCALS all -- eth0 * 0.0.0.0/0 0.0.0.0/0
счетчики всех правил в цепочке равны 0,
22663 17109529 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0Из чего я делаю вывод, что цепочка как-то работает (число входящих не равно числу исходящих). Хотя, когда вношу в таблицу RASCALS хост, с которого тестирую, пинг все равно проходит. Из чего я делаю вывод, что цепочка не работает. :(