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

iptables перенаправляет порты с 80/443 на 8080/8181

В Centos 6.4 я хочу заблокировать все входящие порты, кроме 22, 80 и 443. 80 (внешний) должен быть перенаправлен на 8080 (внутренний). 443 (внешний) следует перенаправить на 8181 (внутренний). Я использовал следующие команды:

service iptables stop
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8181
service iptables save
service iptables restart

Однако я все еще могу получить доступ к портам 8080 и 8181. Есть ли способ заблокировать порты 8080 и 8181 извне, оставив при этом внутренне открытыми для перенаправления с 80 и 443?

В ваших правилах нет ничего, что отбрасывало бы любые пакеты. Вы можете добиться этого, установив политику по умолчанию вашего INPUT цепь к DROP. По умолчанию это ACCEPT:

iptables -P INPUT DROP

При этом вы можете начать замечать, что ваши исходящие соединения больше не работают.

Вы можете добавить правила в верхней части INPUT цепь к ACCEPT уже установленный трафик обратно.

Сделайте это, используя следующее:

iptables -A INPUT -m state --state ESTABLISHED,RELATED

В RELATED часть пропускает другой связанный трафик (например, пакеты ICMP, отправленные в результате чего-либо ESTABLISHED соединение)

Лучше я создам новую цепочку, а затем добавлю в нее свои правила. Вы можете сделать это с помощью: First DROP входящего / перенаправляющего / исходящего трафика

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

Затем создайте цепочку с суждением ACCEPT и добавьте правила внутри:

iptables -N myrules # Create a new chain
iptables -A myrules -m state --state ESTABLISHED,RELATED
iptables -A myrules -j LOG --log-prefix="Myrules: " # Just a log prefix
iptables -A myrules -j ACCEPT # Packets matching this rule will be ACCEPTed
iptables -A INPUT -i eth0 -p tcp --dport 22 -j myrules

Затем добавьте правила перенаправления:

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8181

У вас есть несколько сетевых адаптеров на сервере или нет? Вы можете заблокировать это таким образом. Вы также можете легко заблокировать его по исходным IP-адресам, чтобы вы могли разрешить только правила «INPUT» для этих портов с определенных IP-адресов и только все правила «FORWARD» или «PREROUTING» от других.