Минимальный набор правил iptables для высокопроизводительного обратного прокси-сервера Nginx (или: как использовать NOTRACK для http и https)?
Я ищу минимальный набор правил iptables для довольно большого объема обратного прокси Nginx/Varnish. Я хотел бы закрыть сервер, чтобы только порты 80 и 22 были открыты вообще для соединений с внешнего устройства.
Кроме того, я хотел бы исключить трафик на портах 80 из отслеживания соединений, так как список соединений имеет тенденцию расти. С другой стороны, я хотел бы иметь возможность использовать отслеживание соединений для других целей.
Как реализовать минимальный набор правил, который исключает трафик HTTP и HTTPS на портах 80 и 443 из отслеживания соединений?
Это мой основной набор правил:
iptables -F INPUT iptables -P INPUT DROP iptables -i lo -A INPUT -j ПРИНЯТЬ iptables -i eth0 -A INPUT -m состояние - СОСТОЯНИЕ, СОЗДАНО -j ПРИНЯТЬ iptables -i eth0 -A ВХОД -p TCP --dport 22 -j ПРИНЯТЬ iptables -i eth0 -A ВХОД -p TCP --dport 80 -j ПРИНЯТЬ iptables -i eth0 -A ВХОД -p ICMP -j ПРИНЯТЬ
Сервер запускает Nginx на общедоступном IP-адресе (для примера 10.0.0.1) на портах 80 и 443. Nginx общается с Varnish 10.0.0.1:8080. Varnish общается с веб-сервером на другом компьютере (10.0.0.2:80). Этот внутренний сервер должен общаться с Varnish для очистки URL-адресов.
Я пробовал такие вещи, как
iptables -F PREROUTING -t сырье iptables -F OUTPUT -t raw iptables -t raw -A ПРОГНОЗИРОВАНИЕ -p TCP --dport 80 -j NOTRACK iptables -t raw -A OUTPUT -p TCP --sport 80 -j NOTRACK iptables -t raw -A ПРОГНОЗИРОВАНИЕ -p TCP --dport 8080 -j NOTRACK iptables -t raw -A ВЫХОД -p TCP --sport 8080 -j NOTRACK
и варианты с явным упоминанием IP-адресов источника или назначения, но он либо сломал сервер (заблокировав некоторый трафик), либо не смог удалить весь трафик HTTP из отслеживания соединения.