在Linux系统使用时,假如我们需要放开http访问,可以这么操作:

# 放行
firewall-cmd --add-service=http --permanent

# 也可以针对tcp端口
firewall-cmd --add-port=80/tcp --permanent

# 生效
firewall-cmd --reload

但是这是针对所有访问本机的操作,如果是针对某一个IP呢?

1.禁止

比如现在有一个需求,现在需求禁止10.1.1.200访问本机80端口,实现如下:

# Reject,返回10.1.1.200禁止信息
firewall-cmd --add-rich-rule="rule family='ipv4' source address='10.1.1.200' port port=80 protocol=tcp reject" --permanent

# Drop,直接丢弃,不会返回10.1.1.200任何信息
firewall-cmd --add-rich-rule="rule family='ipv4' source address='10.1.1.200' port port=80 protocol=tcp drop" --permanent

2.允许

现在本机的8080端口对外部是禁止访问的,如果只允许10.1.1.200访问,实现如下:

firewall-cmd --add-rich-rule="rule family='ipv4' source address='10.1.1.200' port port=8080 protocol=tcp accept" --permanent

可以看到,不论是禁止还是允许,只是在最终的判别上的差别accept|drop|reject,规则如下:

firewall-cmd --add-rich-rule= \
"rule family='ipv4' \
source address='ip/mask' \
port port=port \
protocal={tcp|udp}" \
--permanent

3.针对IP段操作

在上面的命令中,source address后可跟子网掩码,如要禁止10.1.2.0/24整段地址访问本机80端口:

firewall-cmd --add-rich-rule="rule family='ipv4' source address='10.1.2.0/24' port port=80 protocol=tcp reject" --permanent

针对firewall-cmd的任何操作最终都需要firewall-cmd --reload来使配置生效!


4.iptables实现

对于CentOS7之前的默认防火墙管理iptables来说,应该如下实现:

# 配置
iptables -A INPUT -p tcp -s 10.1.1.200 –dport 80 -j ACCEPT

# 保存
service iptables save

# 生效
service iptables restart
Last modification:July 15th, 2019 at 04:38 pm