Назад | Перейти на главную страницу

Минимальный набор правил 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 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-трафик из отслеживания соединений.