Iptables-如何使用两个 IP 来限制服务器上服务的访问?

Iptables-如何使用两个 IP 来限制服务器上服务的访问?

在我的个人服务器 (Centos 6.6) 上,我获取了一个辅助 IP,以便将所有后端访问与前端应用程序分开。但我不确定如何指定给定 IP 可以访问哪个端口。

例如

eth0 (192.168.10.1) 仅适用于端口 80/443 eth0:1 (192.168.10.2) 仅适用于 ssh

我目前有,但它不起作用,因为我仍然可以从任何 IP 访问 80/443/22:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [1119386456:2737152595892]

#allow incoming ICMP ping pong stuff
-A INPUT -i eth0 -p icmp --icmp-type 8 -s 0/0 -m state --state NEW,ESTABLISHED,RELATED -m limit --limit 30/sec  -j ACCEPT
-A OUTPUT -o eth0 -p icmp --icmp-type 0 -d 0/0 -m state --state ESTABLISHED,RELATED -j ACCEPT
#Allow all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 -j REJECT

#Accept all established inbound connections
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0:1 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
-A INPUT -i eth0:1 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --name DEFAULT --rsource -j DROP
#Allow SSH
-A INPUT -i eth0:1 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
#Allow HTTP
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
#Allow HTTPS
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

#
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A INPUT -j DROP
-A FORWARD -j DROP
COMMIT

我是否遗漏了什么?提前致谢。

编辑:

抱歉,如果我没有说清楚。但目的只接受到 eth0(192.168.10.1)上端口 80/443 的流量和来自 eth0:1(192.168.10.2)上 22 的流量

答案1

用。。。i eth0:1来代替-d 1.1.1.1/32

我相信您已经使用 ifconfig 创建了接口别名。实际上,您可以使用 iproute2 实用程序(ip addr add ..)为接口分配多个 IP。

最好在 iptables 规则中使用 IP 地址。

相关内容