Как правильно запретить выход на "серые" сети через eth0?
Доброго дня. Подскажите, как правильно дропнуть iptables любые исходящие на rfc1918 (серые подсети) ?
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
Вводные по сереру - ubuntu 20, iptables, на сервере docker + lxc контейнеры. Локально они должны продолжать общаться.
Правильно ли я понимаю, что сделать надо вот так?
enp0s31f6 - интерфейс WAN
iptables -A FORWARD -o enp0s31f6 -d 192.168.0.0/16 -j REJECT iptables -A FORWARD -o enp0s31f6 -d 172.16.0.0/12 -j REJECT iptables -A FORWARD -o enp0s31f6 -d 10.0.0.0/8 -j REJECT |
iptables -A FORWARD -o enp0s31f6 -d 192.168.0.0/16 -j REJECT iptables -A FORWARD -o enp0s31f6 -d 172.16.0.0/12 -j REJECT iptables -A FORWARD -o enp0s31f6 -d 10.0.0.0/8 -j REJECT
И правильно ли я понимаю, что надо делать это вконце моего скрипта фаерволла? он при старте системы загружает нужные правила
там сверху вниз -
Accept
проброс портов
masquerade
и в самый низ я пихаю эти 3 правила, мы же дропаем FORWARD этих пакетов ? или их надо пихать до правила masquerade ?
Дополнительно:
там сверху вниз -
Accept
проброс портов
masquerade
проброс портов и masquerade в таблице NAT, а цепочка FORWARD в таблице FILTER. Нет никакой разницы, заполните вы сперва NAT, затем FILTER или сперва FILTER, затем NAT.
Имеет значение только порядок правил в пределах каждой цепочки.
Таргет Accept доступен в любых цепочках таблицы FILTER и в любых цепочках таблицы NAT, так что совершенно бесполезна информация о том, что у вас сначала Accept - это никак не помогает определить, к чему относится ваш Accept.
Но можно с уверенностью ответить на последний вопрос:
и в самый низ я пихаю эти 3 правила, мы же дропаем FORWARD этих пакетов ? или их надо пихать до правила masquerade ?
Никакой разницы между этими вариантами не будет, они эквивалентны. Либо оба эти варианта будут работать, либо оба варианта работать не будут. Зависит от того, что у вас раньше в цепочке FORWARD.
- спасибо
Ответы:
На уровне маршрутизации:
ip rule add to 10.0.0.0/8 oif enp0s31f6 prohibit ip rule add to 192.168.0.0/16 oif enp0s31f6 prohibit ip rule add to 172.16.0.0/12 oif enp0s31f6 prohibit |
ip rule add to 10.0.0.0/8 oif enp0s31f6 prohibit ip rule add to 192.168.0.0/16 oif enp0s31f6 prohibit ip rule add to 172.16.0.0/12 oif enp0s31f6 prohibit
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для запрета выхода на "серые" сети через интерфейс eth0 можно воспользоваться настройками iptables. "Серыми" сетями считаются сети, которые не являются общедоступными и не должны быть доступны извне.
Прежде всего, необходимо определить диапазон IP-адресов "серых" сетей, которые вы хотите запретить. Обычно это адреса из диапазона 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16.
Затем, создайте правило iptables, которое будет блокировать пакеты, направленные на эти сети через интерфейс eth0. Для этого выполните следующие команды в консоли:
iptables -A OUTPUT -o eth0 -d 10.0.0.0/8 -j REJECT iptables -A OUTPUT -o eth0 -d 172.16.0.0/12 -j REJECT iptables -A OUTPUT -o eth0 -d 192.168.0.0/16 -j REJECT
Эти правила запретят любые пакеты, направленные на "серые" сети через интерфейс eth0. При необходимости, вы можете добавить другие диапазоны IP-адресов или настроить более сложные правила для фильтрации трафика.
Чтобы сохранить изменения после перезагрузки системы, убедитесь, что вы сохранили текущие правила iptables командой iptables-save и добавили их в соответствующий конфигурационный файл (например, /etc/sysconfig/iptables для CentOS).
Таким образом, вы можете правильно запретить доступ на "серые" сети через интерфейс eth0, обеспечивая безопасность вашей сети.