基本概念
CentOS 7及以上的版本,默认的防火墙是firewalld,所以如果你输入iptables配置防火墙报找不到命令时,你就要考虑用firewalld来管理防火墙了。
firewalld文档连接
- 【firewalld】:firewall daemon,提供动态管理防火墙的能力,并支持对网络以及与其关联的连接、接口和源定义信任级别
- 【firewall-cmd】:firewalld的命令行管理工具,CentOS上防火墙的管理即主要依赖该命令
- 【Runtime Configuration 和 Permanent Configuration】:firewalld有两种类型的配置:一种是运行时配置,另一种是持久化的配置。持久化配置在防火墙启动或者重加载(reload)时加载为运行时配置(所以防火墙真正生效的是运行时配置)。防火墙停止运行,运行时配置随即失效;当防火墙重新启动时,运行时配置即重新自持久化配置中加载。运行时配置不会被自动持久化,但是可以借助命令将其持久化。
- 【systemctl restart firewalld 与 firewall-cmd –reload】:前者是重启firewalld服务,后者是重载firewalld的配置
firewalld结构:
firewalld服务启停
==启动firewalld服务==
systemctl start firewalld
==关闭firewalld服务==
systemctl stop firewalld
==检查firewalld服务状态==
systemctl status firewalld
注:查看firewalld启动记录
==重启firewalld服务==
systemctl reload firewalld
注:修改了持久化的配置之后即需要重启服务
查看frewalld状态和配置
==检查firewalld运行状态==
firewall-cmd --state
注:查看firewalld是否运行
==检查firewalld配置内容==
firewall-cmd --list-all
注:查看配置的服务、端口、目标、源等信息
==重载firewalld配置内容==
firewall-cmd --reload
注:修改的运行时的配置会在重载之后失效
==查看firewalld版本==
firewall-cmd -V
或者
firewall-cmd --version
配置firewalld
说明:
- 如果要做持久化的配置,则加上 “–permanent” 参数;否则不加
- 非持久化的配置,会立即生效,但是配置信息会在服务重启、重载配置之后丢失
- 持久化的配置,不会立即生效,需要服务重启、或者重载配置之后才会生效
下面会以持久化的配置为例
端口配置
新增端口配置:
firewall-cmd --permanent --add-port 7001/tcp
firewall-cmd --reload
删除端口配置:
firewall-cmd --permanent --remove-port 7001/tcp
firewall-cmd --reload
服务配置
新增服务配置:
firewall-cmd --permanent --add-service telnet
firewall-cmd --reload
删除服务配置:
firewall-cmd --permanent --remove-service telnet
firewall-cmd --reload
查看服务信息:
firewall-cmd --info-service telnet
协议配置
增加协议配置:
firewall-cmd --permanent --add-protocol icmp
firewall-cmd --reload
删除服务配置:
firewall-cmd --permanent --remove-protocol icmp
firewall-cmd --reload
rich rules配置
rich rules可以配置一些更加复杂的场景,–add-rich-rule的值就是具体的规则,例如允许来自某个IP的所有流量:
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.2.1" accept"
禁止某个IP段以某种协议访问某个端口:
firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.0/24" port protocol="tcp" port="22" reject"
firewall-cmd提供的配置能力非常丰富,具体的可以参考:
firewall-cmd man page