CentOS7 中使用 firewall-cmd 配置只允许指定ip访问本机的指定端口

2022-11-21 18:59:32 浏览数 (1)

1、启动firewalld服务并设置开机自动启动,下面的命令必须在防火墙开启的状态下才可用 ,由于firewalld默认不是放行所有端口,所以启动firewalld会造成该机器的某些端口无法访问。 systemctl enable firewalld systemctl start firewalld

2、更改防火墙默认区域为trusted,默认放行所有连接请求 firewall-cmd --set-default-zone=trusted

3.新建一个zone,将想要访问本机80端口的ip,如:192.168.1.123 ,添加的这个zone中,同时在这个zone中放行80端口。 firewall-cmd --permanent --new-zone=newzone

firewall-cmd --permanent --zone=newzone --add-source=192.168.1.123

firewall-cmd --permanent --zone=newzone --add-port=80/tcp

4.除192.168.1.123这个ip以外的地址访问本机时会使用当前默认的trusted这个zone里的规则,即禁止访问本机的80端口。 firewall-cmd --permanent --zone=trusted --add-rich-rule=“rule family=“ipv4” port protocol=“tcp” port=“80” drop”

systemctl restart firewalld

查看配置是否生效:

firewall-cmd --list-all-zone

firewall-cmd --list-all

对于一个请求具体优先使用哪个zone,优先级如下:

我们知道每个zone就是一套规则集,但是有那么多zone,对于一个具体的请求来说应该使用哪个zone(哪套规则)来处理呢?这个问题至关重要,如果这点不弄明白其他的都是空中楼阁,即使规则设置的再好,不知道怎样用、在哪里用也不行。

对于一个接受到的请求具体使用哪个zone,firewalld是通过三种方法来判断的:

1、source,也就是源地址 优先级最高

2、interface,接收请求的网卡 优先级第二

3、firewalld.conf中配置的默认zone 优先级最低

这三个的优先级按顺序依次降低,也就是说如果按照source可以找到就不会再按interface去查找,如果前两个都找不到才会使用第三个,也就是在firewalld.conf中配置的默认zone。

0 人点赞