Написание простого брандмауэра с iptables

Я учусь пользоваться iptables и пишу очень простой брандмауэр в Ubuntu.

Используя только таблицу фильтров , я добавил следующие правила

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

, поскольку хочу пропустить только те пакеты, которые мне нужны.

Затем я попытался добавить правила для создания простых HTTP-соединений, поэтому для первой попытки я добавил

iptables -A INPUT -p tcp -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT

первую строку для приема всего трафика TCP, а вторую - для приема ответов DNS. .

Аналогично, для цепочки OUTPUT я добавил

iptables -A OUTPUT -p tcp -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

Но когда я пытаюсь использовать lynx, соединение не происходит.

Я думаю, что единственной проблемой является DNS, так как весь трафик TCP принимается. Но пакеты в / из порта 53 могут проходить через брандмауэр ... так в чем же проблема?


Я добавил следующие два правила, и теперь это работает.

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

и используя Wireshark, я понял, что DNS-запросы также поступают в / из петлевого интерфейса. Я никогда не думал, что ... почему?

3
задан 21 December 2013 в 05:06

1 ответ

Просто используйте iptables-save и перезагрузите компьютер. Это заставит ваши настройки iptables работать.

Если вы настраиваете брандмауэр, то почему вы включаете все порты TCP. Я бы предпочел разрешить только выбранные порты. т.е. для рыси. Я бы использовал:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables-save
sudo init 6

Также, почему вы используете

sudo iptables -A OUTPUT -j DROP

Это отбросит весь ваш исходящий трафик со всех портов.

0
ответ дан 21 December 2013 в 05:06

Другие вопросы по тегам:

Похожие вопросы: