Как запретить пересылку пакетов на адреса частной сети через интерфейс

На моем сервере у меня есть маршрут по умолчанию к интерфейсу eth0 . Он имеет публичный интернет-адрес и обращен к сети интернет-провайдера. У меня включена пересылка пакетов и несколько локальных интерфейсов / мостов с частными адресами 10.xxx . Кроме того, маскируются все пакеты, исходящие в сеть провайдера. Проблема: если я правильно понимаю, любой пакет на несуществующий адрес 192.168.xx будет перенаправлен через интерфейс общедоступного сервера (восходящий канал) моему интернет-провайдеру. Это нежелательно.

Как я могу настроить Linux для предотвращения пересылки любых пакетов с адресом частной сети через публичный сетевой интерфейс? Думаю, простого добавления одного правила iptables было бы недостаточно, потому что существует несколько стандартных пространств частных сетей (10.xxx, 192.16.xx, 172.16.xx и, возможно, другие. Также адреса ipv6 в стороне). Есть ли для этого какие-либо подключаемые модули / системные политики iptables? Я ожидаю, что какая-то системная политика будет отмечать интерфейс как восходящий канал, который выходит в Интернет.

Обоснование: моему интернет-провайдеру не нравятся какие-либо пакеты с адресатами диапазона частных сетей. Я использую DNS-сервер, доступ к которому осуществляется через VPN для моей работы. Поэтому, когда VPN выходит из строя, мой интернет-провайдер получает DNS-запросы на адреса частной сети и блокирует все интернет-соединение. Говорят, это сделано в целях безопасности (на тот случай, если какой-нибудь вирус заменит мой системный DNS на собственный).

0
задан 10 October 2017 в 12:18
2 ответа

Любой пакет, не соответствующий правилу маршрутизации в системе, будет направлен на маршрут по умолчанию, если таковой имеется. По умолчанию, если вам назначен IP-адрес в данной сети, будет добавлено правило маршрутизации, автоматически перенаправляющее этот трафик на назначенный интерфейс. Если ваш сервер не находится в тех сетях, которые вы хотите заблокировать, тогда рекомендуется проверить все, что генерирует этот трафик, чтобы полностью избавиться от него, иначе он все равно будет беспокоить вас на устройствах вашей локальной сети.

Диапазоны IP-адресов частной сети IANA довольно хорошо определены, и их всего четыре, как можно увидеть даже в этой статье википедии. Я предлагаю вам добавить правила блокировки исходящего трафика брандмауэром к этим сетевым диапазонам в качестве пунктов назначения после разрешения фактически используемых вами диапазонов.

Пример команд iptables:

iptables -A FORWARD -d 10.0.0.0/8 -j REJECT
iptables -A FORWARD -d 172.16.0.0/12 -j REJECT
iptables -A FORWARD -d 192.168.0.0/16 -j REJECT
ip6tables -A FORWARD -d fd00::/8 -j REJECT

Примечание. Трафик, предназначенный для этих диапазонов, сбрасывается интернет-провайдерами, поскольку они будут некуда пересылать. Некоторые, однако, могут наложить ограничения на ваш трафик, если вы утекаете эти пакеты. Кроме того, если вы опасаетесь проверки трафика или утечки информации на уровне провайдера, это далеко не единственное, что вам нужно сделать, чтобы обезопасить себя.

0
ответ дан 4 December 2019 в 12:19

У вас есть один интерфейс с публичным номером eth0 , который является вашим маршрутом по умолчанию, и вы не хотите, чтобы трафик перенаправлялся с каких-либо интерфейсов с частным номером из общедоступного. . Попробуйте

iptables -A FORWARD -o eth0 -j REJECT

Размещение правила в нужном месте в цепочке FORWARD остается в качестве упражнения. Вы также должны иметь возможность обобщить оттуда до ipv6.

Изменить : вы можете отключить всю пересылку v4 с помощью echo 0> / proc / sys / net / ipv4 / ip_forward , и вся пересылка v6 с echo 0> / proc / sys / net / ipv6 / conf / all / forwarding . Но вы не сказали, что хотите отключить всю пересылку, а просто пересылаете « от или на адреса частной сети через интерфейс общедоступной сети ». Мне неизвестна какая-либо структура / proc , чтобы отключить пересылку только трафика RFC1918, и я был бы удивлен, если бы она была.

3
ответ дан 4 December 2019 в 12:19

Теги

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