Iptables закрыть все порты кроме некоторых на определенном сетевом интерфейсе?
Привет всем!
Имеем: сетевой интерфейс tun0 ("внутренняя" сеть), eth0 - ему назначен внешний IP.
Нужно запретить все порты на сетевом интерфейсе eth0 кроме 1194 UDP и 22 TCP, соответственно, tun0 трогать нельзя.
Попробовал так: iptables -A INPUT -i eth0 -j DROP
Но соединения также блокируются и на tun0. Подскажите п-ж, как все правильно сделать?
Спасибо! А потом "добавлять" необходимые порты как-то можно? Т.е. практически сделать "наоборот" - сначала блокируем весь трафик, потом разрешаем определенные порты?
syxoi: результат по правилам у вас должен быть верный.Даже проверил себя на своей машине - порт 22 открыт, все остальные блокированы. У вас ssh без блокирующих правил работает? 192.168.5.1 - это IP этого самого шлюза?
tun0 у вас живет за счет открытого порта 1194 (openvpn) Конечно, если заблочить все пакеты на eth0, или открыто только ssh, то и tun0 пропадет, трафик же через него бежит. Я бы еще добавил правило "iptables -A INPUT -i eth0 -m state --state ESTABLISHED, RELATED -j ACCEPT" тем самым разрешив бегать пакетам с уже установленными содинениями, иначе пользователи заплачут что сети нет, т.к ответы на исходящие запросы не приходят. И вобще, дурной это тон закрывать все. Закрывайте то, что надо закрывать. Вот вы так же закрыли icmp, а это не только пинги, но и согласование mtu у вас теперь практически гарантировано начнутся проблемы с потерей пакетов и/или низкой скоростью сети. Откройте их iptable -A INPUT -i eth0 -p icmp -j ACCEPT