Я ищу минимальный набор правил iptables для обратного прокси-сервера Nginx / Varnish с довольно большим объемом. Я бы хотел закрыть сервер, чтобы только порты 80 и 22 были открыты для подключений извне.
Кроме того, я хотел бы исключить трафик на портах 80 из отслеживания соединений, поскольку список соединений имеет тенденцию к увеличению. С другой стороны, я хотел бы иметь возможность использовать отслеживание соединений для других целей.
Как можно реализовать минимальный набор правил, исключающий трафик HTTP и HTTPS на портах 80 и 443 из отслеживания соединений?
Это мой основной набор правил:
iptables -F INPUT iptables -P INPUT DROP iptables -i lo -A INPUT -j ACCEPT iptables -i eth0 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -i eth0 -A INPUT -p TCP --dport 22 -j ACCEPT iptables -i eth0 -A INPUT -p TCP --dport 80 -j ACCEPT iptables -i eth0 -A INPUT -p ICMP -j ACCEPT
Сервер запускает 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 raw iptables -F OUTPUT -t raw iptables -t raw -A PREROUTING -p TCP --dport 80 -j NOTRACK iptables -t raw -A OUTPUT -p TCP --sport 80 -j NOTRACK iptables -t raw -A PREROUTING -p TCP --dport 8080 -j NOTRACK iptables -t raw -A OUTPUT -p TCP --sport 8080 -j NOTRACK
и варианты с явным упоминанием IP-адресов источника или назначения, но это либо нарушило работу сервера (блокируя некоторый трафик), либо не смогло удалить весь HTTP-трафик из отслеживания соединений.