Firewalld的简单使用

Firewalld的简单使用

经验文章nimo972025-07-03 17:47:503A+A-

从Centos7开始默认防火墙就已经更换为了firewall,替换了之前的iptables

Firewalld服务采用firewall-cmd或firewall-config(图形化工具)来动态管理kernel netfilter的临时或永久的接口规则,并实时生效而无需重启服务,firewalld增加了zone的概念。

zone

  • public(公共):公共域,接受经过筛选的连接
  • trusted(信任):允许任何请求(白名单)
  • block(限制):拒绝所有请求,给客户端回复拒绝信息
  • dmz(非军事):仅接受经过选择的连接

常用的区域有4个:public、block、drop、trusted,其实一般都是使用public区,public也是默认区域

firewalld 是如何规定一个网络请求规则,首先会根据 zone 上绑定的 source 进行判断,然后再根据interface 进行判断

Firewalld服务管理

systemctl status firewalld    或者 firewall-cmd --state 查看Firewalld的状态
systemctl stop firewalld      停止Firewalld
systemctl start firewalld     启动Firewalld
systemctl enable firewalld    设置Firewalld开机启动
systemctl disable firewalld   禁用Firewalld

Firewall-cmd常用命令

zone管理

  • 显示当前系统中的默认区域

firewall-cmd --get-default-zone

  • 显示默认区域的所有规则

firewall-cmd --list-all

  • 显示当前正在使用的区域

firewall-cmd --get-active-zones

  • 设置默认区域

firewall-cmd --set-default-zone=trusted

firewall-cmd --get-default-zone

service管理

语法:

  • 显示当前zone中的service

firewall-cmd --list-service

  • 显示指定zone中的service

firewall-cmd --list-service --zone=trusted

  • 显示当前支持的所有service

firewall-cmd --get-service

  • 添加service到默认zone

firewall-cmd --add-service=jenkins

  • 添加service到指定zone

firewall-cmd --add-service=http --zone=trusted

  • 查看service的具体信息

firewall-cmd --info-service=http

  • 创建一个新的service

firewall-cmd --new-service=testservice --permanent

示例:

创建一个叫nginx的service,开放端口为18080

[root@10-4-7-101 ~]# firewall-cmd --delete-service=svnserver --permanent
success
[root@10-4-7-101 ~]# firewall-cmd --new-service=nginx --permanent
success
[root@10-4-7-101 ~]# firewall-cmd --service=nginx --add-port=18080/tcp --permanent
success
[root@10-4-7-101 ~]# firewall-cmd --reload
success
[root@10-4-7-101 ~]# firewall-cmd --info-service=nginx
nginx
  ports: 18080/tcp
  protocols: 
  source-ports: 
  modules: 
  destination: 

注意:--permanent代表永久有效,需要重启firewalld服务或者使用firewall-cmd --reload重新加载配置才能生效。若配置时不带有此选项,表示即时生效,但是当firewall重启或者配置重新加载时这些规则会失效,也可以使用firewall-cmd --runtime-to-permanent命令将当前运行的配置写入配置文件

端口管理

  • 列出指定zone下开放的端口,默认区域可以省略参数--zone

firewall-cmd --list-port --zone=public

  • 允许TCP协议80端口到public区域

firewall-cmd --zone=public --add-port=80/tcp

  • 允许UDP协议5000-6000端口到public区域

firewall-cmd --zone=public --add-port=5000-6000/udp

  • 从public区域删除TCP协议的80端口

firewall-cmd --zone=public --remove-port=80/tcp


富语言规则

语法:

--add-rich-rule='<RULE>'        #在指定的区域添加一条富语言规则
--remove-rich-rule='<RULE>'     #在指定的区删除一条富语言规则
--query-rich-rule='<RULE>'      #找到规则返回0,找不到返回1
--list-rich-rules               #列出指定区里的所有富语言规则

示例:

1、允许10.4.7.100主机能够访问http服务

firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address=10.4.7.100 service name=http accept'

2、允许10.4.7.0/24段能访问8080端口

firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address=10.4.7.0/24 port port=8080 protocol=tcp accept'

3、当访问IP是10.4.7.100主机,将请求的8080端口转发至后端10.4.7.200的9999端口

firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.4.7.100 forward-port port=8080 protocol=tcp to-port=9999 to-addr=10.4.7.200'

4、禁止所有主机ping

firewall-cmd --add-rich-rule='rule protocol value=icmp drop'

扩展一、Block和Drop的区别

两者都是拒绝所有请求,唯一的区别是block会给请求方一个拒绝信息,drop则是直接丢弃请求信息不回复,这里测试对一下,可以看到,当block的时候我们ping还是可以接收到拒绝信息,但是drop的时候任何信息都接受不到。

点击这里复制本文地址 以上内容由nimo97整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

尼墨宝库 © All Rights Reserved.  蜀ICP备2024111239号-7