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

перенаправление портов iptables с политикой по умолчанию DROP

У меня есть веб-сервер, который работает как обычный пользователь, поэтому я не могу использовать порты ниже 1024. К веб-серверу по-прежнему должен быть доступ через порт 443. Я хочу, чтобы iptables перенаправлял с 443 на 1443 порт, где мой веб-сервер прослушивает входящие запросы. Это пока мои правила:

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

iptables -A OUTPUT -p tcp -o eth0 --sport 443 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 443 -j ACCEPT

iptables -A PREROUTING -t nat -p tcp --dport 443 -j REDIRECT --to-port 1443 
iptables -A OUTPUT -t nat -p tcp --dport 443 -j REDIRECT --to-port 1443

Но iptables по-прежнему отбрасывает пакеты, если я не добавлю следующие правила:

iptables -A OUTPUT -p tcp -o eth0 --sport 1443 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 1443 -j ACCEPT

Теперь я могу подключиться к своему веб-серверу через порт 443, но также и через порт 1443, который мне не нужен.

Какие правила мне не хватает, чтобы мой веб-сервер был доступен только через порт 443?

Я думаю, что самый простой способ добиться этого:

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

iptables -A PREROUTING -t nat -p tcp --dport 443 -j REDIRECT --to-port 1443 

iptables -A INPUT --ctstate ESTABLISHED,DNAT -j ACCEPT
iptables -A OUTPUT --ctstate ESTABLISHED -j ACCEPT

Самый простой способ исправить это, настроить ваш веб-сервер на прослушивание только на localhost (127.0.0.1), настроить правила iptables для ввода:

iptables -A INPUT -p tcp -d 127.0.0.1/32 -i eth0 --dport 1443 -j ACCEPT

И пересылаем весь запрос на 127.0.0.1:1443.