iptables 中从 8006 到 443 的转发不起作用

iptables 中从 8006 到 443 的转发不起作用

我的专用服务器桥接到 vmbr0,它有 2 个桥接的以太网卡 eth0 和 eth1。

我已启用转发功能net.ipv4.ip_forward=1

我想将端口 8006 重定向到 443。

现在我正在访问端口 8006 上的一个 Web 应用程序,它想要使用 重定向到 443 iptables

目前我正在使用此规则进行转发,但它不起作用:

iptables -t nat -I PREROUTING -d 192.168.1.100 -p tcp --dport 443 -j DNAT --to-destination 192.168.1.100:8006

如果我应用这些iptables规则,则无法在 192.168.1.100:8006 上访问该页面:

# Default filter

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

# Loopback allows all.

iptables -I INPUT -i lo -j ACCEPT
iptables -I FORWARD -i lo -j ACCEPT

# Null packets are, simply said, recon packets. see how we configured the VPS and find out weaknesses.

iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

# Reject is a syn-flood attack

iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# XMAS packets, also a recon packet

iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

# Allow all Outgoing connection

iptables -A OUTPUT -j ACCEPT
# Ethernet allows established/related Except invalid.

iptables -A INPUT -i vmbr0 -m state --state ESTABLISHE,RELATED -j ACCEPT
iptables -A INPUT -i vmbr0 -m state --state INVALID -j DROP

# Allow TCP on Port 22 SSH with rate limiting

iptables -A INPUT -i vmbr0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -I INPUT -i vmbr0 -p tcp -m state --state NEW -m tcp --dport 22 -m recent --set
iptables -I INPUT -i vmbr0 -p tcp -m state --state NEW -m tcp --dport 22 -m recent --update --seconds 10 --hitcount 5 -j DROP

# Allow Ping ICMP echo With Limiting

iptables -A INPUT -i vmbr0 -p icmp -m state --state NEW -m icmp --icmp-type echo-request -j ACCEPT
iptables -I INPUT -i vmbr0 -p icmp -m icmp --icmp-type echo-request -m recent --set
iptables -I INPUT -i vmbr0 -p icmp -m icmp --icmp-type echo-request -m recent --update --seconds 10 --hitcount 10 -j DROP

# Allow HTTP Requests for NON-secured 80

iptables -A INPUT -i vmbr0 -p tcp --dport 80 -m state --state NEW -m tcp -j ACCEPT
iptables -I INPUT -i vmbr0 -p tcp --dport 80 -m state --state NEW -m recent --set
iptables -I INPUT -i vmbr0 -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 5 --hitcount 20 -j DROP

# Allow HTTP Requests for SLL 443

iptables -A INPUT -i vmbr0 -p tcp --dport 443 -m state --state NEW -m tcp -j ACCEPT
iptables -I INPUT -i vmbr0 -p tcp --dport 443 -m state --state NEW -m recent --set
iptables -I INPUT -i vmbr0 -p tcp --dport 443 -m state --state NEW -m recent --update --seconds 5 --hitcount 20 -j DROP

# Enabling Logging

iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A OUTPUT -j LOGGING
iptables -A LOGGING -m limit --limit 10/min -j LOG --log-prefix "IPTables-log:" --log-level 4
iptables -A LOGGING -j DROP

# DROP ALL Except Above Rules

iptables -A INPUT -j DROP

答案1

有很多话想说,但问的却很少。如果您希望远程计算机访问端口 8006 上的某些内容,您必须告诉防火墙接受端口 8006 上的连接,但目前您还没有这样做。

请注意,PREROUTING 中的规则修改了寻址到 443 的网段,并将目标地址更改为 8006。您将端口 443 重定向到端口 8006。但是,您声明要将端口 8006 重定向到 443。也许更改 PREROUTING 规则中的数字不会你想要什么。

旁注:您肯定需要重新编写防火墙脚本。它显然是您在互联网上找到的内容的复制粘贴组合。当(现在)工作时,这肯定会停止为你工作。例如,您将 INPUT 的策略设置为 DROP,但仍然位于iptables -A INPUT -j DROP脚本末尾。这是多余的,表明你没有对此事考虑太多。更关键的错误是你启用了转发,但你并没有转发的意图……我认为。

相关内容