У меня есть общедоступная и частная подсеть в моей сети, и я маршрутизирую весь трафик в моей частной подсети через NAT-машину в общедоступной подсети. На машине NAT я настроил прокси-сервер squid так, чтобы разрешить https-соединение только с определенным доменом (скажем, google.com). Отрывок из моей конфигурации squid выглядит следующим образом:
acl allowed_https_sites ssl::server_name google.com
В свои правила iptables я добавляю следующие правила в соответствии с моей конфигурацией squid. Правила следующие:
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3129
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 3130
sudo service iptables save
Изнутри машины частной подсети, если я попытаюсь перейти к google.com
он работает, и если я перейду на любой другой веб-сайт https, я не смогу получить к нему доступ, а это именно то, что я хочу.
Я хочу сделать еще один шаг, когда мне не нужны никакие исходящие соединения, кроме google.com
возможно и с моей машины NAT. Для этого я пытаюсь реализовать решение, описанное в этом решение но я не получаю желаемых результатов.
Если я изменю правила соответствующим образом, как указано в приведенной выше ссылке, я не смогу достичь конечного результата. Конечный результат, которого я пытаюсь достичь, - разрешить только один домен https с моей машины в частной подсети, и все остальное должно быть заблокировано / отклонено. Сначала я подумал, что могу выполнить простое сопоставление строк в правилах iptables, но ошибался. Это кажется более сложным, чем я первоначально ожидал. Есть ли другие идеи, которые я мог бы попробовать, или я могу как-то настроить вышеуказанное решение в соответствии со своим вариантом использования?
Основная проблема заключается в том, что у вас нет определенного адреса или диапазона для google.com, по которому могут работать iptables. Поэтому вам следует блокировать трафик на уровне процесса. Поскольку прокси-сервер squid в основном запускается «squid» как эффективным пользователем, вы можете запретить исходящий (OUTPUT) трафик от других процессов.
iptables -A OUTPUT -m owner ! --uid-owner squid -j DROP
Более того, вы можете перенаправить любой исходящий (кроме squid) на squid и наслаждаться предыдущей конфигурацией, чтобы получить доступ только и только к одному домену.