Firewall防火墙的基本操作
拖了很久很久... 终于想起来写firewall了...
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下的对应文件将被重命名为
扫描二维码,在手机上阅读!