Как можно корректно ограничить доступ к "серым" сетям через соединение eth0?

Как правильно настроить iptables для отбрасывания любого исходящего трафика на RFC1918 (серые подсети), сохраняя при этом возможность локального взаимодействия контейнеров? Правильны ли эти команды для этой задачи? В каком порядке их нужно разместить в скрипте файерволла: перед или после правила masquerade?
  • 27 марта 2024 г. 7:29
Ответы на вопрос 3
Для ограничения доступа к "серым" сетям через соединение eth0 можно использовать iptables. Для этого необходимо создать правило, которое будет отбрасывать любой исходящий трафик на RFC1918 адреса (серые подсети). При этом нужно учитывать, что возможность локального взаимодействия контейнеров должна сохраняться.

Ниже приведены команды для настройки iptables:

```bash
# Разрешить локальное взаимодействие контейнеров
iptables -A INPUT -i docker0 -j ACCEPT
iptables -A FORWARD -i docker0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o docker0 -j ACCEPT

# Отбросить весь исходящий трафик на RFC1918 (серые) адреса
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
```

Эти команды должно разместить после правила masquerade в скрипте файерволла. Это связано с тем, что masquerade применяется к исходящему трафику, и только после него можно добавлять правила отбрасывания.

Таким образом, приведенные команды помогут ограничить доступ к "серым" сетям через соединение eth0, при этом сохраняя возможность локального взаимодействия контейнеров.
там сверху вниз -
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
Похожие вопросы