我的专用服务器桥接到 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
脚本末尾。这是多余的,表明你没有对此事考虑太多。更关键的错误是你启用了转发,但你并没有转发的意图……我认为。