centos7版本firewalld防火墙的基本命令配置管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos7版本firewalld防火墙的基本命令配置管理相关的知识,希望对你有一定的参考价值。
centos7/redhat7已经默认使用firewalld作为防火墙,其使用的方式已经变化,基于iptables的防火墙默认
不启用,但是仍可以继续使用
注意:centos7/redhat7中有几种防火墙共存:firewalld、iptables、ebtablesd、
默认使用的是firewalld作为防火墙,管理工具是firewalld、
Centos7的内核版本是3.10
uname -r
在此版本的内核里防火墙的包过滤机制是firewalld,使用firewalld来管理netfilter,不过底层调用的还是iptables,因为这几种damon是冲突的,所以建议禁用其他服务
systemctl status {firewalld,iptables,ip6tables,ebtables}
禁止iptables、ip6tables、ebtables
systemctl mask {iptables,ip6tables,ebtables}
firewalld提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的防火墙管理工具。拥有运行时配置和永久配置选项。它
也支持允许服务或者应用程序直接添加防火墙规则的接口。以前的system-config-firewall防火墙模型是静态的,每次修改都要求防火墙
完全重启。这个过程包括内核netfilter防火墙模块的卸载和新配置所需模块的装载等。 相反,firewall daemon动态管理防火墙,不需要重启整个防火墙便可应用更改。因而也就没有必要重载所有内核防火墙模块了。
什么是区域:网路区域定义了网络连接的等级
数据包要想进入到内核里必须通过某一个区域zone中的一个区域,而不同的区域里定义的规则不一样(即信任度不一样,过滤签强度也不一样),可以根据网卡所连接的安全性来判断,这张网卡的流量到底使用哪一个区域。
例如: 上图网卡eth0的流量全部使用zone区域1过滤规则,网卡eth1的流量全部使用zione区域2过滤规则 。。。。。
注意:一张网卡只能绑定到一个区域,而一个区域可以绑定多块网卡
什么是服务 :服务就是 端口和协议入口的组合
区域的概念:
丢弃区域(Drop Zone):如果使用丢弃区域,任何进入的数据包将被丢弃。这个类似我们之前使用的 iptables -j drop,一旦使用丢弃规则将意味着不存在响应。
阻塞区域(Block Zone):阻塞区域会拒绝进入网络的连接,并且返回icmp-host-prohibited,只有服务器已经建立的连接会被通过即只允许由该系统初始化的网络连接
公共区域(Public Zone):只接受那些被选中的连接,默认只允许ssh和dhcpv6-client,这个区域是缺省区域zone
外部区域(External Zone):这个区域相当于路由器的启用伪装(masqmasquerading)选项。只有指定的连接会被接受,即ssh,而其他的连接将被丢弃或者不被接受
隔离区域(DMZ Zone):如果想要只允许给部分服务能被外部访问,可以在DMZ区域中定义。它也拥有只通过被选中连接的特性,即ssh。
工作区域(Work Zone):在这个区域,我们只能定义内部网络。比如私有网络通信才被允许,只允许ssh,ipp-client和dhcpv6-client
家庭区域(Home Zone):这个区域专门用于家庭环境。它同样只允许被选中的连接,即ssh,ipp-client,mdns,Samba-client和dhcpv6-client
内部区域(Internal Zone):这个区域和工作区域(Work Zone)类似,它也只有通过被选中的连接,和home区域一样。
信任区域(Trusted Zone):信任区域允许所有网络通信通过。记住:因为trusted是最被信任的,即使设置没有任何的服务,那么也是被允许的,因为trusted是允许所有连接的以上是系统定义的所有的zone,但是这些zone区域并不是在使用,只有活跃的区域才有实际操作意义。
获取firewalld的状态
firewall-cmd --state
2.在不改变状态的情况下重新加载防火墙
firewall-cmd --reload
注意:如果你使用--complete-reload,状态信息将会丢失
3.获取支持的区域列表
firewall-cmd --get-zones
这条命令输出后分别用空格分开
4.获取所有支持的服务
firewall-cmd --get-services
这条命令输出后分别用空格分开
每个服务都是firewalld相关的端口和选项还有规则的集合,也就是把服务看成是firewalld的某一个选项规则或端口的集合,被启动的服务会在firewalld开启时、运行时自动加载。
默认情况下很多服务是有效的
列出有效的服务
cd /usr/lib/firewalld/services/
想要创建自己的服务就可以在目录下面指定好
例如:现在我想添加一个rhmp服务,端口号为1935。
首先任选一种服务复制过来:
cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/
接下来把复制过来的文件重命名为rhmp.xml
mv ssh.xml rhmp.xm
接下来打开并编辑文件的头部、描述、协议和端口号,以供rhmp服务使用
vim rhmp.xml
重启firewalld服务激活这些设置
firewall-cmd --reload
为确认服务是否已经正常启动 ,获取服务列表
firewall-cmd --get-services
5.获取所有支持的ICMP类型
firewall-cmd --get-icmptype
这条命令输出之后用空格分隔列表
6.列出全部启用的区域防火墙策略
例如:服务、端口和协议的组合、端口、数据包转发、伪装、ICMP拦截或自定义规则等
firewall-cmd --list-all-zones
上面的命令将会列出每种区域如block、dmz、drop、external、home、internal、public、trusted以及work。如果区域还有其它详细规则(rich-rules)、启用的服务或者端口,这些区域信息也会分别被罗列出来。
7.输出区域全部启用的防火墙策略,如果省略区域,将显示默认的区域
firewall-cmd --list-all
输出指定启动区域的防火墙策略
firewall-cmd --zone=public --list-all
8.查看默认区域
firewall-cmd --get-default-zone
public是默认区域在/etc/firewalld/firewalld.conf文件中定义成DefaultZone=public。
9.设置默认区域
firewall-cmd --set-default-zone=drop
查看默认区域
firewall-cmd --get-default-zone
流入默认区域中配置的接口的新访问请求将被置入新的默认区域,当前活动的连接请求将不受影响。
10、获取活动的区域
firewall-cmd --get-active-zones
这条命令将输出每个区域所含的接口:区域名、接口名
11.查看某个接口是属于哪个区域的
firewall-cmd --get-zone-of-interface=eno16777736
这条命令将输出接口所属的区域的名称
12.将接口(网卡)添加到区域中
firewall-cmd --zone=public --add-interface=eno16777736
如果接口不属于区域,将被增加到区域中,如果区域省略了,将使用默认区域,接口在重新加载后将重新应用
13.修改接口所属区域
firewall-cmd --zone=public --Change-interface=eno16777736
这个选项与--add-interface相似,但是当接口已经存在于另一个区域的时候,该接口将被添加到新的区域。
14、从区域中删除一个接口
firewall-cmd --zone=public --remove-interface=eno16777736
如果某个接口不属于任何区域,那么这个接口所有的数据包使用默认的区域(zone)规则。
15.查询区域中是否包含某个接口
firewall-cmd --zone=drop --query-interface=eno33554984
如果区域被省略了,将使用默认区域
16.列举区域中启用的服务
firewall-cmd --zone=public --list-services
如果区域被省略了,将使用默认区域
17.启用、禁用及查询应急模式阻断所有网络连接 ,以防出现紧急状况
firewall-cmd --panic-on
firewall-cmd --panic-off
firewall-cmd --query-panic
处理运行时区域:
运行时模式下对区域进行的修改不是永久有效的。重新加载或者重启后修改将失效。
给某个区域开启某个服务
firewall-cmd --zone=public --add-service=ipp-client --timeout=60
上述配置给默认区域开启ipp-client服务,如果不指定区域,将使用默认区域,如果设置了超时时间,服务将只启用特定秒数。
使ipp-client服务生效60秒
2.禁用某个区域中的某个服务
firewall-cmd --remove-service=ipp-client
如果未指定区域,将使用默认区域。
3.查询区域中是否启动了特定的服务
firewall-cmd --zone=public --query-service=ssh
yes表示服务启用,no表示服务关掉了
4.启用区域端口和协议组合
firewall-cmd --zone=public --add-port=8080/tcp
firewall-cmd --zone=public --add-port=25-80/tcp
上述命令启用端口和协议,端口可以是单独的端口也可以是一个范围的端口。
5.禁用区域端口和协议组合
firewall-cmd --zone=public --remove-port=8080/tcp
6.查询区域中是否启用了端口和协议组合
firewall-cmd --zone=public --query-port=25-80/tcp
7.启用区域中的IP伪装功能
firewall-cmd --zone=public --add-masquerade
此操作启用地址伪装功能,私有网络的地址将被隐藏,并映射到一个公有网络的IP,这是地址转换的一种形式,常用于路由,由于内核的限制,伪装功能仅可用于ipv4。
8.禁用区域中的IP伪装功能
firewall-cmd --zone=public --remove-masquerade
9.查询区域中的伪装状态
firewall-cmd --zone=public --query-masquerade
注意:启用伪装功能的主机同时也需要开启转发服务。
echo 1 > /proc/sys/net/ipv4/ip_forward
或
#vi /etc/sysctl.conf 添加如下内容
net.ipv4.ip_forward = 1
保存退出并执行#sysctl -p 使修改生效
10、启用区域的ICMP阻塞功能
firewall-cmd --zone=public --add-icmp-block=echo-request
此操作是互联网选中的报文(icmp)进行阻塞,ICMP可以是创建、请求、应答报文。
11.禁止区域的ICMP阻塞功能
firewall-cmd --zone=public --remove-icmp-block=echo-request
12.查询区域的ICMP阻塞功能
firewall-cmd --zone=public --query-icmp-block=echo-request
13.在区域中启用端口转发或映射
下面的命令的意思是凡是从external区域进来的22端口的数据包全部转发到211.106.65.50IP地址上面
firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toaddr=211.106.65.50
端口可以映射到另一台主机的同一端口,也可以是同一台主机或另一台主机的不同端口,端口可以是一个单独的端口或者是范围端口,协议可以为tcp或udp,目标可以是端口号和端口范围,目标地址可以是IPv4地址,受内核限制 ,端口转发功能仅可用于IPV4
14.禁止区域中的端口转发或映射
firewall-cmd --zone=external --remove-forward-port=port=22:proto=tcp:toaddr=211.106.65.50
15.查询区域的端口转发或者端口映射
firewall-cmd --zone=external --query-forward-port=port=22:proto=tcp:toaddr=211.106.65.50
处理永久区域:
永久选项不直接影响运行时状态。这些选项仅在重载或者重启服务时可用。为了使用运行时和永久设置,需要分别设置两者。
注意:需要永久时候,--permanent 这项参数永远都是第一添加的位置
1.获取永久选项所支持的服务
firewall-cmd --permanent --get-services
2.获取永久选项所支持的icmp类型列表
firewall-cmd --permanent --get-icmptypes
3. 获取支持的永久区域
firewall-cmd --permanent --get-zones
4.配置防火墙在public区域打开HTTP协议,并保存,以致重启生效
firewall-cmd --permanent --zone=public --add-service=http
查看永久模式下public区域是否打开http服务
firewall-cmd --permanent --zone=public --query-service=http
5.防火墙开放8080端口在public区域
firewall-cmd --permanent --zone=public --add-port=8080/tcp
6.命令行配置富规则
查看富规则:
firewall-cmd --list-rich-rules
创建富规则:
firewall-cmd --add-rich-rule 'rule family=ipv4 source address=10.35.89.0/24
service name=ftp log prefix="ftp" level=info accept' --permanent
firewall-cmd --add-rich-rule 'rule family=ipv4 source address=10.35.89.0/24
port port=80 protocol=tcp log prefix="80" level=info accept' --permanent
.
2018年 祝愿大家有个好的心情!!!
新的一年新的开始,希望对你有所帮助!!!
以上是关于centos7版本firewalld防火墙的基本命令配置管理的主要内容,如果未能解决你的问题,请参考以下文章