linux中的防火墙管理之firewall

一、firewall管理

1、相关概念:

防火墙守护firewalld服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持ipv4ipv6,并支持网桥,采用firewall-cmd(command)firewall-config(gui)来动态的管理kernelnetfilter的临时或永久的接口规则,并实时生效而无需重启服务。iptablesservice/etc/sysconfig/iptables中储存配置,firewalld将配置储存在/usr/lib/firewalld//etc/firewalld/中的各种XML文件里.使用iptablesservice每一个单独更改意味着清除所有旧有的规则和从/etc/sysconfig/iptables里读取所有新的规则,然而使用firewalld却不会再创建任何新的规则;仅仅运行规则中的不同之处。因此,firewalld可以在运行时间内,改变设置而不丢失现行连接。

Firewall能将不同的网络连接归类到不同的信任级别,Zone提供了以下几个级别:

drop:丢弃所有进入的包,而不给出任何响应

block:拒绝所有外部发起的连接,允许内部发起的连接

public:允许指定的进入连接

external:同上,对伪装的进入连接,一般用于路由转发

dmz:允许受限制的进入连接

work:允许受信任的计算机被限制的进入连接,类似workgroup

home:同上,类似homegroup

internal:同上,范围针对所有互联网用户

trusted:信任所有连接



2、安装管理工具

yuminstall firewalld firewall-config -y

3、图形界面:firewall-config

runtime临时更改,即改即生效

permanent ,永久更改,需要重新加载火墙,并重启

4、相关命令

systemctlstart firewalld ---启动防火墙

systemctlstop firewalld ---关闭防火墙

firewall-cmd--state ---查看火墙状态

firewall-cmd--get-active-zones ---获取当前生效的工作域

firewall-cmd--get-default-zone ---默认域

firewall-cmd--get-zones ---获得所有域

firewall-cmd--zone=public --list-all ---显示指定域的所策略

firewall-cmd--get-services ---获取支持的服务


firewall-cmd--list-all-zones ---列出所有域策略


firewall-cmd--list-all-zones ---列出所有域策略

firewall-cmd--set-default-zone=xxx ---设定默认域


(--permanent参数表示永久生效设置,设置后需要要重新加载防火墙策略或重启防火墙使它生效。如果没有指定--zone=xxx参数,那么会加入默认区域,需要指定区域

firewall-cmd--zone=internal --add-source=172.25.254.139/24 ---允许来自139的访问


firewall-cmd--zone=internal --remove-source=172.25.254.139/24 ---移除策略


firewall-cmd--zone=internal --add-interface=eth0 ---添加网卡


firewall-cmd--zone=internal --change-interface=eth0

firewall-cmd--zone=internal --remove-interface=eth0 ---删除网卡


firewall-cmd--zone=public --add-port=80/tcp ---添加端口

firewall-cmd--zone=public --add-service=http ---添加服务


firewall-cmd--zone=public --remove-port=80/tcp ---删除端口

firewall-cmd--zone=public --remove-service=http ---删除服务


firewall-cmd--reload ---重新加载策略

firewall-cmd--complete-reload ---重新加载策略

f注意:这并不会中断已经建立的连接,如果打算中断,可以使用 --complete-reload选项)firewalld的规则被保存在/etc/firewalld目录下的文件中,你也可以直接编辑这些文件达到配置防火墙的目的。/usr/lib/firewalld目录下的内容是不可以被编辑的,但可以用做默认模板。

5DirectRules

通过 firewall-cmd工具,可以使用--direct选项在运行时间里增加或者移除链。如果不熟悉iptables,使用直接接口非常危险,因为您可能无意间导致防火墙被入侵。直接端口模式适用于服务或者程序,以便在运行时间内增加特定的防火墙规则。直接端口模式添加的规则优先应用。

参数:filter(本地数据限制):-s源地址,-d目的地址,-p协议,--dport端口,-j行为/REJECT拒绝/ACCEPT同意/DROP丢弃)

firewall-cmd--direct --add-rule ipv4 filter IN_public_allow 0 -p tcp --dport 80-jACCEPT ---添加规则

firewall-cmd--direct --get-all-rules ---列出规则


firewall-cmd--direct --remove-rule ipv4 filter IN_public_allow 10 -p tcp --dport80 -jACCEPT ---删除规则

6RichRules

通过该方法,可以用比直接接口方式更易理解的方法建立复杂防火墙规则。此外,还能永久保留保留设置,这种语法使用关键词值。

主要参数:source源地址,destination目的地址,service服务名称,port端口,protocol协议名

地址伪装示例:

firewall-cmd --add-masquerade ---开启地址伪装

firewall-cmd--add-rich-rule='rule family=ipv4 source address=172.25.254.100masquerade' ---设定伪装的地址策略


端口转发示例:

firewall-cmd–add-forward-port=port=80:proto=tcp:toport=8080:toaddr=172.25.50.100