赞
踩
drop (丢弃) 任何接收到的网络数据都被丢弃,没有任何回复,公有发送出去的网络连接
block(限制)任何接收的网络连接都被IPV4 的icmp-host-prohibited信息和IPV6的icmp6-adm-prohibited信息所拒绝
public (公共) 在公共区域内使用,不能相信网络内的其它计算机不会对你的计算机造成危害,只接收经过选取的连接
external (外部)特别是为路由器启用了伪装功能的外部网。你不能信任来自网络的其它计算,不能信任它们不会对你的计算机造成危害,只能接收经过选择的连接。
dmz (非军事区) 用于你的非军事区的电脑 ,此区域内可公开访问,可以有限的进入你的内部网络,仅接收经过选择的连接。
work (工作) 可以基本信任网络内的其它计算机不会危害你的计算机,仅接收经过选择的连接。
home (家庭) 用于家庭网络,可以基本信任网络内的其它计算机不会危害你的计算机,仅接收经过选择的连接。
internal (内部)用于内部网络,可以基本信任网络内的其它计算机不会危害你的计算机,仅接收经过选择的连接
trusted (信任) 可接收所有的网络连接
注:麒麟系统firewalld默认为public zone,其中public zone里默认放行ssh mdns dhcpv6-client cockpit服务,所以即使打开防火墙也能正常访问ssh
# firewall-cmd --set-default-zone=work //设置zone为work
# firewall-cmd --get-zone-of-interface=ens33 //查看ens33网卡属于哪个zone
# firewall-cmd --zone=public --add-interface=ens33 //给ens33网卡的zone设置成pubilc
# firewall-cmd --zone=public --change-interface=ens33 //更改ens33网卡的zone为public
# firewall-cmd --zone=public --remove-interface=ens33 //删除ens33网卡的zone
# firewall-cmd --get-active-zones //查看系统所有活跃起作用/网卡的zone
# firewall-cmd --get-services //查看所有(可以支持的)service
# firewall-cmd --list-services //查看当前zone下有哪些service
# firewall-cmd --zone=public --list-services //查看指定zone下的service
# firewall-cmd --zone=public --add-service=http --permanent //将http服务永久添加到public zone里面
# firewall-cmd --zone=public --add-port=9001/tcp --permanent //在public下永久添加9001/tcp端口
# firewall-cmd --zone=public --remove-port=9001/tcp --permanent //在public下永久移除9001/tcp端口
# firewall-cmd --reload //刷新防火墙配置
# firewall-cmd --zone=public --list-ports //查询public规则下面的开放的端口
# firewall-cmd --list-all //查看当前规则下配置规则
# firewall-cmd --get-zones //查看支持的所有zone
# firewall-cmd --get-default-zone //查看当前默认zone
6.1、限制ip为192.168.137.12的地址禁止访问80端口
# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.137.12" port protocol="tcp" port="80" reject"
6.2、只允许指定ip访问指定或全部端口,拒绝除指定IP外的所有本地端口访问
第一步:
# firewall-cmd --set-default-zone=trusted //更改防火墙默认区域为trusted,默认放行所有连接请求
第二步:
新建一个zone,将想要访问本机的ip,如:192.168.1.123 ,添加的这个zone中,同时在这个zone中放行所有端口(1-65535),如果不是所有端口也可以指定某一个端口
# firewall-cmd --permanent --new-zone=newzone
# firewall-cmd --permanent --zone=newzone --add-source=192.168.1.123
# firewall-cmd --permanent --zone=newzone --add-port=1-65535/tcp
第三步:
除192.168.1.123这个ip以外的地址访问本机时会使用当前默认的trusted这个zone里的规则,即禁止访问本机的所有端口(1-65535)
# firewall-cmd --permanent --zone=trusted --add-rich-rule=“rule family=“ipv4” port protocol=“tcp” port=“1-65535” drop”
# firewall-cmd --reload
# systemctl restart firewalld
第四步:
查看配置是否生效
# firewall-cmd --list-all-zone
# firewall-cmd --list-all
第五步:
如果想追加或去掉允许访问的IP:
# firewall-cmd --permanent --zone=newzone --add-source=192.168.1.123
# firewall-cmd --permanent --zone=newzone --remove-source=192.168.1.123
# firewall-cmd --reload
说明:
对于一个请求具体优先使用哪个zone,优先级如下:
我们知道每个zone就是一套规则集,但是有那么多zone,对于一个具体的请求来说应该使用哪个zone(哪套规则)来处理呢?这个问题至关重要,如果这点不弄明白其他的都是空中楼阁,即使规则设置的再好,不知道怎样用、在哪里用也不行。
对于一个接受到的请求具体使用哪个zone,firewalld是通过三种方法来判断的:
1、source,也就是源地址 优先级最高
2、interface,接收请求的网卡 优先级第二
3、firewalld.conf中配置的默认zone 优先级最低
这三个的优先级按顺序依次降低,也就是说如果按照source可以找到就不会再按interface去查找,如果前两个都找不到才会使用第三个,也就是在firewalld.conf中配置的默认zone。
zone的配制文件模版: /usr/lib/firewalld/zones
services配制模版: usr/lib/firewalld/services
更改配制文件之后,会在/etc/firewalld/zones目录下生成配置文件 :firewall-cmd --zone=work --add-service=http --permanent
查看: cat /etc/firewalld/zones/work.xml
需求:ftp服务自定议端口1121,需要在work zone 下面放行ftp
# cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services //复制ftp.xml模板到/etc/firewalld/services/目录下
# vi /etc/firewalld/services/ftp.xml //把21端口改成1121端口
# cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/ //复制work.xml模版到/etc/firewalld/zones/目录下;
# vi /ec/firewalld/zones/work.xml //编辑work.xml文件 ,增加一行 <service name=“ftp”/>
# firewall-cmd --reload //重新加载firewall
# firewall-cmd --zone=work --list-service // 查看work下面的services
a、source,也就是源地址 优先级最高
b、interface,接收请求的网卡 优先级第二
c、firewalld.conf中配置的默认zone 优先级最低
# firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 //将在80端口接收到tcp请求转发到8080端口
防火墙内的策略动作有DROP和REJECT两种,区别如下:
1、DROP动作只是简单的直接丢弃数据,并不反馈任何回应。需要Client等待超时,Client容易发现自己被防火墙所阻挡。
2、REJECT动作则会更为礼貌的返回一个拒绝(终止)数据包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明确的拒绝对方的连接动作。连接马上断开,Client会认为访问的主机不存在。REJECT在IPTABLES里面有一些返回参数,参数如下:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。
至于使用DROP还是REJECT更合适一直未有定论,因为的确二者都有适用的场合。REJECT是一种更符合规范的处理方式,并且在可控的网络环境中,更易于诊断和调试网络/防火墙所产生的问题;而DROP则提供了更高的防火墙安全性和稍许的效率提高,但是由于DROP不很规范(不很符合TCP连接规范)的处理方式,可能会对你的网络造成一些不可预期或难以诊断的问题。因为DROP虽然单方面的中断了连接,但是并不返回任何拒绝信息,因此连接客户端将被动的等到tcp session超时才能判断连接是否成功,这样早企业内部网络中会有一些问题,例如某些客户端程序或应用需要IDENT协议支持(TCP Port 113, RFC 1413),如果防火墙未经通知的应用了DROP规则的话,所有的同类连接都会失败,并且由于超时时间,将导致难以判断是由于防火墙引起的问题还是网络设备/线路 故障。一点个人经验,在部署防火墙时,如果是面向企业内部(或部分可信任网络),那么最好使用更绅士REJECT方法,对于需要经常变更或调试规则的网络也是如此;而对于面向危险的Internet/Extranet的防火墙,则有必要使用更为粗暴但是安全的DROP方法,可以在一定程度上延缓******的进度(和难度,至少,DROP可以使他们进行TCP-Connect方式端口扫描时间更长)。
Target:目标
icmp-block-inversion:ICMP协议类型黑白名单开关(yes/no)
Interfaces:关联的网卡接口
sources:来源,可以是IP地址,也可以是mac地址
services:允许的服务
ports:允许的目标端口,即本地开放的端口
protocols:允许通过的协议
masquerade:是否允许伪装(yes/no),可改写来源IP地址及mac地址
forward-ports:允许转发的端口
source-ports:允许的来源端口
icmp-blocks:可添加ICMP类型,当icmp-block-inversion为no时,这些ICMP类型被拒绝;当icmp-block-inversion为yes时,这些ICMP类型被允许。
rich rules:富规则,即更细致、更详细的防火墙规则策略,它的优先级在所有的防火墙策略中也是最高的。
-------------------------
麒麟软件以安全可信操作系统技术为核心,旗下拥有“银河麒麟”、“中标麒麟”两大产品品牌,面向通用和专用领域打造安全创新操作系统产品和相应解决方案,现已形成了服务器操作系统、桌面操作系统、嵌入式操作系统、麒麟云等产品。麒麟软件系列产品能同时支持飞腾、鲲鹏、龙芯、申威、海光、兆芯等国产CPU。企业坚持开放合作共建产业生态,为客户提供完整的国产化解决方案。
麒麟软件官网:https://www.kylinos.cn
麒麟生态适配查询:https://eco.kylinos.cn/zoology/commercial.html
优麒麟社区:https://www.ubuntukylin.com/comunity
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。