firewall(firewalld)是 CentOS 7 开始自带的防火墙,操作方式与规则等都与 iptables 不同。(CentOS 6 及早期版本 iptables 防火墙可以参考《iptables 防火墙基本配置操作》)
firewall 相比较 iptables 操作更加简单,不需要记太繁琐的规则写法,记几条命令就足以够用。
服务相关
- 开启 / 关闭 / 重启 / 查询进程状态
systemctl start/stop/restart/status firewalld
- 设置开机自启 / 关闭开机自启
systemctl enable/disable firewalld
- 查看防火墙状态
firewall-cmd --state
常用操作
- 重载防火墙(删除非永久配置、应用永久配置,配置完防火墙规则后需要执行此命令才能生效)
firewall-cmd --reload
- 查看所有配置(包括已开启的端口及服务)
firewall-cmd --zone=public --list-all
- 开启端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
如果需要开启 UDP 协议,把tcp
改成udp
即可,下同。 - 开启连续的多个端口
firewall-cmd --zone=public --add-port=3000-3100/tcp --permanent
- 禁用端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
- 添加服务
firewall-cmd --zone=public --add-service=http --permanent
添加服务其实也是开启端口,只是内置的服务规则已经包含了常见的各种软件的通信端口,使用更加方便。例如添加 http 服务,开启默认的 80 端口;添加 ssh 服务,开启默认的 22 端口。 - 删除服务
firewall-cmd --zone=public --remove-service=http --permanent
- 查看所有可添加的服务(含未启用)
firewall-cmd --get-service
不常用的高端骚操作
一般根本用不上,如果只是简单控制一下端口,只掌握上面的 “常用操作” 就行啦。不如说,我也不怎么做以下高大上的骚操作,因为平时实在是用不上,没有太多实践论证,所以内容仅供参考...
- 开启端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
--zone 作用域
--permanent 永久生效,没有此参数时 命令会临时生效,但重启和 reload 防火墙后会失效
这里跟 “常用操作” 里那个开启端口是一样一样的,如果想高级使用,可以活用--zone
和--permanent
参数。CentOS7 默认的作用域都是 public。 - 查看指定区域的所有配置
firewall-cmd --zone=public --list-all
--zone=public 指定区域 - 查看所有区域的所有配置
firewall-cmd --list-all-zones
- 查看规则中已启用的服务
firewall-cmd --list-services
- 添加自定义服务
在 /usr/lib/firewalld/services/
下自定义服务 xml 文件即可,写法可以参考目录下面系统内置的文件。
- 查看所有 icmp 规则(含未启用)
firewall-cmd --get-icmptype
- 查询默认区域
firewall-cmd --get-default-zone
默认区域为 public - 设置默认区域
firewall-cmd --set-default-zone=internal
- 将指定网口增加到区域
firewall-cmd --zone=zone --add-interface=网口名称
- 查看所有区域(含未启用)
firewall-cmd --get-zones
- 查看网口使用的区域
firewall-cmd --get-active-zones
- 查看指定区域所有端口
firewall-cmd --zone=public --list-ports
- 端口流量转发(同一台服务器,从 80 到 12345)
firewall-cmd --zone="public" --add-forward-port=port=80:proto=tcp:toport=12345
- 端口流量转发(不同服务器)
在需要的区域激活 Masqueradefirewall-cmd --zone=public --add-masquerade
- 添加规则,从本机 80 转发到 1.2.3.4 的 8080 端口
firewall-cmd --zone="public" --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=1.2.3.4
- 删除流量转发规则
firewall-cmd --zone=public --remove-masquerade
- 启用 / 禁用 / 查询区域端口和协议组合
firewall-cmd --permanent [--zone=<zone>] --add(/remove/query)-port=<port>[-<port>]/<protocol> [--timeout=<seconds>]
- 在区域中启用 / 禁止 / 查询端口转发或映射
firewall-cmd --permanent [--zone=<zone>] --add(/remove/query)-forward-port=port=<port>[-<port>]:proto=<protocol> { :toport=<port>[-<port>] | :toaddr=<address> | :toport=<port>[-<port>]:toaddr=<address> }
- 启用 / 禁用 / 查询区域中的服务
firewall-cmd --permanent [--zone=<zone>] --add(/remove/query)-service=<service>
- 永久启用 / 禁用 / 查询区域中的 ICMP 阻塞
firewall-cmd --permanent [--zone=<zone>] --add(/remove/query)-icmp-block=<icmptype>
/usr/lib/firewalld
中的默认 / 备用配置
该目录包含了由 firewalld 提供的默认以及备用的 ICMP 类型、服务、区域配置。由 firewalld 软件包提供的这些文件不能被修改,即使修改也会随着 firewalld 软件包的更新被重置。 其他的 ICMP 类型、服务、区域配置可以通过软件包或者创建文件的方式提供。
/etc/firewalld
中的系统配置
存储在此的系统或者用户配置文件可以是系统管理员通过配置接口定制的,也可以是手动定制的。这些文件将重载默认配置文件。
为了手动修改预定义的 icmp 类型,区域或者服务,从默认配置目录将配置拷贝到相应的系统配置目录,然后根据需求进行修改。
如果你加载了有默认和备用配置的区域,在 /etc/firewalld 下的对应文件将被重命名为 .old 然后启用备用配置。
1.本站所有内容只做学习和交流使用。 版权归原作者所有。
2.保证站内提供的所有可下载源码资源(软件等)都是按“原样”提供,本站未做过任何改动;但本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。
3.本站部分内容均收集于网络!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。请联系站长邮箱:admin#ibian.online(#换成@)处理!