Помогите разобраться с IPTABLES

Конфигурирование IPTABLES (Установка, настройка IPTABLES, Маскарадинг, Firewall)
Ответить
ShVofka
Сообщения: 1
Зарегистрирован: 17 фев 2010, 15:28

Помогите разобраться с IPTABLES

Сообщение ShVofka » 17 фев 2010, 15:50

eth0 - внешний, eth1 - внутренний
Хочу закрыть доступ по внешний кроме определенных портов, делаю так:
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 5060 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT

Проверяю - все работает, НО, через некоторое время (минут 10 например) пропадает связь с сервером на внутреннем интерфейсе - не пингуется, и нет доступа по WEB, SSH и т.д. потом все появляется на некоторое время..
В чем причина?

vadim007
Сообщения: 7
Зарегистрирован: 21 мар 2010, 09:22

Re: Помогите разобраться с IPTABLES

Сообщение vadim007 » 21 мар 2010, 10:48

ShVofka писал(а):eth0 - внешний, eth1 - внутренний
Хочу закрыть доступ по внешний кроме определенных портов, делаю так:
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 5060 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 10000:20000 -j ACCEPT

Проверяю - все работает, НО, через некоторое время (минут 10 например) пропадает связь с сервером на внутреннем интерфейсе - не пингуется, и нет доступа по WEB, SSH и т.д. потом все появляется на некоторое время..
В чем причина?
Хочу уточнить: закрыть только для локального компа, или для всей сети, если данный комп выступает в качестве шлюза?
Почему спрашиваю: ты оперируешь с цепочкой INPUT, которая служит для передачи пакетов локальным приложениям. А хочешь закрыть доступ на внешний интерфейс eth0. Откуда, вернее от кого закрыть: от интернета, или от локальных процессов? Если от интернета, т.е. чтобы на твой комп не лезли из интернета, то нужно использовать цепочку PREROUTING. Это в общем случае, если у тебя шлюз. А судя по наличию двух интерфейсов - eth0 и eth1 - то так оно и есть. В твоем примере ты контролируешь пакеты только локально. А про FORWARD-то и забыл. И вот, чтобы не писать такие точно правила и для FORWARD, нужно использовать цепочку PREROUTING.
Идем дальше. Если ты хочешь наложить ограничения на доступ к чему-либо локальных приложений, нужно использовать цепочку OUTPUT. А если хочешь запретить выход в инет из локальной сети, то нужно использовать цепочку... нет, не POSTROUTING, а опять-же PREROUTING :)
Это было как-бы вступление к твоей постановке задачи и ее реализации тобой.
Теперь попробуем рассмотреть твой случай. Для конкретно описанной задачи все сделано вроде правильно, за исключеним одного - все твои запреты действуют только для самого шлюза. Да и шлюз еще не полноценный, так как не сделано "echo 1 > /proc/sys/net/ipv4/ip_forward''. Но раз ты пишешь, что периодически пропадает доступ к различным службам (я так думаю, что в интернет, а не на твоем шлюзе), то все это в твоих правилах имеется, и ты показал какую-то малую часть твоих правил. А телепатами никому быть не интересно :)
Вот видишь, сколько я всего написал на твой небольшой вопрос. Это потому, что сегодня воскресенье, и с утра хорошее настроение. Чего и тебе желаю. И выложи все правила, тогда будет над чем подумать.

Ответить