-1

Не может быть лучшим названием вопроса. Я постараюсь объяснить лучше. Кроме того, я не эксперт по брандмауэру.

У меня есть linux box/router, основанный на debian (это dreamplug в случае, если это что-то меняет). Я полагаю, что часть брандмауэра - это то, что я реализовал более 10 лет назад в RH4, а затем портировал ее в течение нескольких лет на CentOS 5, 6 и пару лет назад на этот dreamplug (я назову это DP, если коротко).

Короче говоря: правила iptables позволяют определенным службам работать на DP, некоторые открыты для общего доступа, некоторые являются частными. Кроме того, правила перенаправляют некоторые публичные сервисы на пару серверов локальной сети. Более того, DP контролирует доступ к Интернету, и с тех пор, как я это реализовал, у меня есть только 2 варианта: либо рабочая станция получает доступ в Интернет (ко всему), либо нет вообще. Это делает это для локальной сети и для глобальной сети. Я делаю это, имея SNAT для каждого и FORWARD правила для рабочих станций, которым разрешен доступ в Интернет из локальной сети.

Сейчас я нахожусь в ситуации, когда у меня есть рабочая станция с политикой в зоне без интернета, но, как и во всем, что касается политик, теперь ей "нужен" доступ к Dropbox (потому что именно так они решили некоторые другие проблемы за пределами моя сеть, поэтому lansync не вариант, если только я не запустил другую виртуальную машину, но это излишне).

Поэтому мне нужно как-то разрешить входить / выходить конкретным сочетаниям портов ip+ для определенных рабочих станций вместо пары правил FORWARD для IP-адреса локальной сети.

Я предполагаю, что мне нужно SNAT для каждого порта ip+, но я по какой-то причине не добился успеха. Я попробовал самый основной SNAT как

iptables -t nat -A POSTROUTING -s WS_ip -o eth0 -j SNAT --to-source DP_IP

но не повезло.

eth0 это интернет. eth1 - это локальная сеть, WS_IP - в локальной сети, DP_IP - в eth0

Я открыт для других решений до тех пор, пока мне не придется переписывать свой брандмауэр, так как у меня есть довольно много сценариев, локальных и удаленных, которые касаются этого брандмауэра и способа его реализации.

Благодарю.

1 ответ1

0

Это было намного проще, чем я думал.

Я не помню, чтобы видел это в каком-либо из учебных пособий, которые я прочитал, поэтому я не думал о возможности до сих пор.

На самом деле цепочка FORWARD допускает такую же фильтрацию, как и любая другая цепочка (вход / выход) с любыми возможными особенностями.

Короче говоря, после того, как я попробовал все виды SNAT безуспешно, я решил, что попробуем правило FORWARD таким же образом, как и другие цепочки, например:

*filter
:partinet - [0:0]
:dropbox - [0:0]
-A partinet -p icmp -j ACCEPT

-A dropbox -p tcp -d 162.125.32.129 -j ACCEPT
-A dropbox -p tcp -s 162.125.32.129 -j ACCEPT
-A dropbox -p tcp -d 162.125.17.131 -j ACCEPT
-A dropbox -p tcp -s 162.125.17.131 -j ACCEPT

-A FORWARD -s 192.168.1.x -j partinet
-A FORWARD -d 192.168.1.x -j partinet
-A FORWARD -s 192.168.1.x -j dropbox
-A FORWARD -d 192.168.1.x -j dropbox

COMMIT

Вы хотите, чтобы ICMP был разрешен, потому что Windows и, возможно, другие приложения используют его (и, возможно, HTTP) для проверки интернет-соединения. Для Win7 по крайней мере, ICMP достаточно.

Так что это минимальный сценарий iptables для работы. Вы можете выполнить дополнительную фильтрацию по порту назначения (443). Вам, очевидно, нужно будет поддерживать список IP-адресов. Не совсем весело делать вручную. Я подумаю об автоматизации этого, когда это будет раздражать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .