Я хочу настроить некоторые политики NAT, чтобы определенные машины имели только исходящий доступ к http / https. Они не должны иметь возможность выполнять сканирование портов или что-либо еще со своего компьютера.
В настоящее время мои правила NAT:
-A PREROUTING -d 1.2.3.4 -j DNAT --to-destination 10.10.1.10
-A POSTROUTING -s 10.10.1.10 -j SNAT --to-source 1.2.3.4
И у меня есть общее правило:
-A POSTROUTING -o eth0 -j MASQUERADE
1.2.3.4 - это общедоступный IP, а 10.10.1.10 - внутренний IP.
Это разрешает весь входящий и исходящий доступ к NAT напрямую через.
Я попробовал следующее правило POSTROUTING вместо приведенного выше:
-A POSTROUTING -s 10.10.1.10 -p tcp --dport 80 -j SNAT --to-source 1.2.3.4:80
Однако это, похоже, не сработало. После добавления этого правила я все еще мог использовать RDP с рабочей станции.
Напомним, моя цель - разрешить определенным рабочим станциям иметь доступ к Интернету только по протоколам http / https. Весь остальной исходящий трафик следует заблокировать. Весь трафик должен быть разрешен. Я хочу, чтобы все остальные рабочие станции в сети использовали существующую политику NAT, чтобы разрешить NAT для всего исходящего трафика.
Обновить Основываясь на ответе @Zoredache, у меня теперь есть следующие правила постмаршрутизации.
-A POSTROUTING -s 10.10.1.10/32 -p tcp -m tcp --dport 80 -j SNAT --to-source 1.2.3.4:80
-A POSTROUTING -s 10.10.1.10/32 -p tcp -m tcp --dport 443 -j SNAT --to-source 1.2.3.4:443
-A POSTROUTING -s 10.10.1.10/32 -p tcp -m tcp --dport 53 -j SNAT --to-source 1.2.3.4:53
-A POSTROUTING -s 10.10.1.10/32 -p tcp -m udp --dport 53 -j SNAT --to-source 1.2.3.4:53
-A POSTROUTING -s 10.10.1.10/32 -j ACCEPT
-A POSTROUTING -o eth0 -j MASQUERADE
Они еще не совсем работают, но приближаются. Подробнее в моем ответе на @Zoredache ниже.
Ключ к iptables - выигрыш первого матча.
Предполагая, что клиентская машина 10.10.1.10
тогда вам просто нужно посмотреть на эти правила по порядку. Если первое правило не соответствует, оно передаст правило MASQ, которому оно будет соответствовать.
-A POSTROUTING -s 10.10.1.10 -p tcp --dport 80 -j SNAT --to-source 1.2.3.4:80
-A POSTROUTING -o eth0 -j MASQUERADE
Если бы вы добавили еще одно правило перед финальным MASQUERADE
правило должно привести к тому, что NAT не произойдет. Поскольку пакеты из 10.10.1.10, не предназначенные для tcp / 80 или tcp / 443, будут соответствовать правилу ACCEPT, что означает, что они не будут транслироваться правилами SNAT / MASQ.
-A POSTROUTING -s 10.10.1.10 -p tcp --dport 80 -j SNAT --to-source 1.2.3.4:80
-A POSTROUTING -s 10.10.1.10 -p tcp --dport 443-j SNAT --to-source 1.2.3.4:443
-A POSTROUTING -s 10.10.1.10 -j ACCEPT
-A POSTROUTING -o eth0 -j MASQUERADE