RHCE 学习笔记(31) - 防火墙 (上)

这一节内容比较多,主要是学习firewalld的使用和配置。


学习firewalld之前,先简单的看看另外一个工具 tcp wrapper。这个是一个基于主机的访问控制系统,他一般作为防火墙的一个补充和加强。一些简单的服务访问控制,通过tcp wrapper很容易就实现了。


wKioL1TAfYbBVYJyAAF5FoQgunY156.jpg



红帽有个官方文档可以查看详细的解释和实例

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/sect-Security_Guide-TCP_Wrappers_and_xinetd-TCP_Wrappers_Configuration_Files.html


简单的说,配置文件有两个 /etc/hosts.allow 和 /etc/hosts.deny 


从名字都猜的出来,放在allow里面的设定默认就是允许的; 放在deny里面默认就是拒绝的;如果两者的设定都不满足或者都没配置,那服务默认也是允许的。


基本格式是 

daemon1,daemon2, daemon3.. : client1, client2, client3.. : option1, option2,..


如果觉得麻烦,在任何一个文件里面,明确的表明 allow 或者 deny也是可以的。比如,我可以在hosts.allow 文件里面做以下定义,拒绝来自172.0.10.223的ssh请求


wKioL1TAdT7x3oebAAIAGlGiGuw945.jpg


测试看看,果然被拒绝了。

wKiom1TAdGjiGK0BAACAJpoKONM503.jpg


把deny去掉或者改成 allow也行

wKioL1TAdT_SpXfUAABlbWZYDGA259.jpg


再试试看,又可以连接了

wKiom1TAdGnSq9BTAABlGIiMJ3E721.jpg


不过不是所有的服务都可以用tcp wrapper来实现的,只有连接了libwrap模块的daemon才可以。


比如 httpd就没有


wKiom1TAfQmg-lAVAABSmo6E9d4951.jpg


但是sshd就可以

wKioL1TAfeGj6TboAABxqPsPqCw859.jpg






接下来看看重头戏,firewalld的使用。从RHEL7里面,默认的防火墙不再是iptables,而是firewalld,尽管他的底层还是iptables。


他们的区别和关系可以参考

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html


firewalld的一个最大的优点是任何改动实时生效,因为他只对变化的部分做了修改;而iptables是重新创建所有的rule,因此会断掉当前的连接。


wKiom1TAk2rhXC9bAALHTVEfNyw418.jpg

下面主要学习一下图形界面和命令行界面的使用。


系统自带了一堆防火墙软件,他们可能会彼此冲突,因此把不用的都mask掉吧

wKioL1TAdUXi-4oOAAK8I_eb8rw037.jpg

wKioL1TAdUmDB1U7AAHNUOJ1Iik927.jpg



firewalld里面图形界面可以用frewall-config 打开,命令行可以通过 firewall-cmd来实现。


首先看看图形界面

wKiom1TAdHShrSgTAAAudoaza2g572.jpg


里面有很多选项,我们把每一个功能都过一遍。


首先看看左边的一列Zone。 zone 本意是区域的意思,这些不同的Zone可以理解为不同的“安检通道”,每个“安检通道”预先定义了一系列的不同的安全策略。一个网卡只能绑定到一个“安检通道”,即一个Zone里面。


每个zone右边对应了一堆功能,分别是服务,端口,伪装,端口转发,ICMP过滤,富规则,端口和源。


服务选项里面,勾上的表示允许的服务。不同的zone默认勾上的服务是不同的。

比如说 dmz 默认只允许 ssh 服务访问;home允许更多的服务例如samba-client,dhcpv6等等,而trusted 允许所有的服务访问,即使这个服务没有勾选上。



wKioL1TAdVGTZDZ9AALPW_5MucU464.jpg


下面看看命令行如何处理Zone


我们可以获取(get)所有zone 的信息,但是不能自己创建一个新的zone,图形工具也没有选项可以创建


可以利用tab来获取哪些命令,get有很多,但是set只有一个


wKiom1TAlevCL01LAADhyeE7nA4488.jpg


查看一下zone 的选项

wKioL1TAh4iQmx-jAABYCwBd48s872.jpg


看看默人的zone是啥

wKioL1TAh4jjukMXAAA-fvbpMcQ617.jpg


我们可以手动改成home

wKiom1TAhrKDn4g-AABuCdnyxEM949.jpg


修改完之后home zone就被自动加粗加黑了

wKioL1TAh4uDIWajAAFFT8R5jQ4069.jpg



下面看看如何修改服务


服务自己对应了1个或者多个相关的端口,这些都是预定义好的。如果开放了某个服务,那么对应的所有端口都会打开。


wKiom1TAlQTD_vFAAAG9ypJRQzI330.jpg


命令行查看一下有哪些服务


wKioL1TAl3uTw8vTAAFfdP5j8-E772.jpg



图形界面下配置服务很简单,直接勾选就是了


例如目前我是可以远程的访问172.0.10.206的http服务的。这个是我前面做KickStart的时候配置的服务。


wKioL1TAlNuj2QxHAAJenG6EmOw248.jpg


这个时候在172.0.10.206上 http服务是勾选的,如果我去掉他

wKiom1TAlArSq-WiAAGyFtaV3gY059.jpg


那么远端的服务器就无法访问了

wKioL1TAlOXg4TODAAFemJlOEBE895.jpg




那么命令行里如何判断一个服务是否打开了呢,可以使用query命令,query命令很多,查询服务用 query-service就行了 


no就表示服务关掉了 

wKioL1TAmUPhYknDAAEvkVaW1ew830.jpg


把这个服务加上,确认成功

wKiom1TAmG7S6JiVAAByPz-gCD4077.jpg


打开图形界面看看,已经勾上了

wKioL1TAmVSwl5J2AAJnLA985IE865.jpg


但是如果把左上角的 Configuration从 runtime改成 permanent,发现还是没有勾上,这表明这个服务只是暂时生效,重启就没了


wKiom1TAmIbDFPrQAAIfmrQwwkw939.jpg


确认一下区别

wKioL1TAmV_BOH1dAABtlexvd6o726.jpg


配置的时候加上 --permanent就永久生效了

wKiom1TAmImhQA06AABN1Ni4-dA405.jpg


你可能感兴趣的:(firewall,rhel7,rh254)