Firewalld中的whitelist并非规则白名单

原文地址:http://www.excelib.com/article/292/showpython

whitelist的含义

白名单跟防火墙结合在一块儿你们很容易将其理解为规则白名单,不过在Firewalld中whitelist却并非规则白名单的含义。linux

对于一个防火墙来讲,最重要的固然就是规则了,Firewalld固然也不例外,学生前面也给你们介绍了不少规则相关的配置方法,不过你们有没有意识到一个潜在的问题呢?当咱们服务器中的某个服务(好比http)出现漏洞时,攻击者若是能够执行命令那么是否是就可使用firewall-cmd工具来修改咱们防火墙的规则呢?若是真是这样那么后果可想而知,攻击者不但能够开放咱们原来没有开放的端口,甚至还能够搞恶做剧——将咱们正常服务的端口给关闭!服务器

Firewalld中whitelist就是来解决这个问题的,他能够限制谁能对防火墙规则进行修改,也就是说这里的whitelist其实使用用来配置能够修改防火墙规则的主体的白名单。工具

使用条件

在默认配置下whitelist是不启用的,咱们须要将Lockdown设置为yes才能够启用,这些内容前面学生已经给你们介绍过了,另外,firewall-cmd工具也能够直接对其进行设置和查询,命令以下ui

1 firewall-cmd --lockdown-on
2 firewall-cmd --lockdown-off
3 firewall-cmd --query-lockdown

第一个是开启Lockdown,也就是让whitelist起做用,第二个是关闭Lockdown,第三个是查询当前Lockdown的状态。spa

这三个命令很是容易理解,不过他们跟学生前面给你们介绍过的其余命令有一些使用上的区别,咱们看到这三个命令都没有--permanent选项,不过这并不表示他们不能够持久化保存,其实偏偏相反,在咱们对Lockdown进行修改时配置文件和运行时环境会同时进行修改,也就是说当咱们使用firewall-cmd命令对Lockdown的状态进行修改后首先能够当即生效、其次在重启后也不会失效。excel

另外,在使用--lockdown-on的时候你们要特别当心,要先看本身在不在whitelist范围内,若是不在,启用以后咱们本身也不能够对防火墙进行操做了!code

配置文件

whitelist的配置文件是位于/etc/firewalld目录下的lockdown-whitelist.xml文件,其结构以下xml

1 <whitelist>
2     [<selinux context="selinuxcontext"/>]
3     [<command name="commandline[*]"/>]
4     [<user {name="username"|id="userid"}/>]
5 </whitelist>

咱们看到这里面有三个可选的配置节点:selinux、command和user,每一个配置节点均可以配置多个,配置进来的就表示能够修改防火墙规则,下面学生分别来给你们介绍一下这三个配置项。blog

selinux

一说到selinux可能有的人就会产生畏惧心,不过这里用到的很是简单,只须要将某进程的content给设置进去就好了,具体某个进程的content你们可使用“ps -e --context”命令来查找,找出来以后设置到context属性中就能够了。

咱们能够直接编辑xml配置文件,另外也可使用firewall-cmd命令来操做,相关命令以下

1 firewall-cmd [--permanent] --add-lockdown-whitelist-context=context
2 firewall-cmd [--permanent] --remove-lockdown-whitelist-context=context
3 firewall-cmd [--permanent] --query-lockdown-whitelist-context=context
4 firewall-cmd [--permanent] --list-lockdown-whitelist-contexts

这四个命令也很是容易理解,他们分别表示添加、删除、查询一个具体的selinuxcontenxt以及罗列出全部白名单中配置了的selinuxcontenxt,使用--permanent能够持久化保存,不使用能够当即生效。

command

经过command节点能够针对具体的command命令进行配置,配置以后此命令就能够被通常用户执行了。好比咱们想将以前讲过的panic模式的开启和关闭命令开发,这样当遇到紧急状况时通常用户也能够启动panic模式,这种需求咱们使用下面的配置便可

1 <whitelist>
2     <command name="/usr/bin/python /bin/firewall-cmd --panic-on"/>
3     <command name="/usr/bin/python /bin/firewall-cmd --panic-off"/>
4 </whitelist>

另外,command还可使用通配符“*”,因此上面的配置还能够简化为

1 <whitelist>
2     <command name="/usr/bin/python /bin/firewall-cmd --panic-*"/>
3 </whitelist>

固然,command也可使用firewall-cmd命令来操做,相关命令以下

1 firewall-cmd [--permanent] --add-lockdown-whitelist-command=command
2 firewall-cmd [--permanent] --remove-lockdown-whitelist-command=command
3 firewall-cmd [--permanent] --query-lockdown-whitelist-command=command
4 firewall-cmd [--permanent] --list-lockdown-whitelist-commands

命令的含义跟上面的selinux差很少,你们能够很容易理解,学生就再也不解释了。

user

这里的user指的就是linux中的用户,经过这项能够对指定的用户开放配置权限,指定用户的方法有两种:经过userId和经过userName均可以,在默认的lockdown-whitelist.xml配置文件中就设置了id为0的user,也就是root用户

1 <whitelist>
2   ...
3   <user id="0"/>
4 </whitelist>

固然,经过name属性设置用户名也是能够的,很是简单,学生这里就不给你们举例了。user也可使用firewall-cmd命令来操做,并且uid和name是分开操做的,因此user相关的命令一共有八个

1 firewall-cmd [--permanent] --add-lockdown-whitelist-uid=uid
2 firewall-cmd [--permanent] --remove-lockdown-whitelist-uid=uid
3 firewall-cmd [--permanent] --query-lockdown-whitelist-uid=uid
4 firewall-cmd [--permanent] --list-lockdown-whitelist-uids
5  
6 firewall-cmd [--permanent] --add-lockdown-whitelist-user=user
7 firewall-cmd [--permanent] --remove-lockdown-whitelist-user=user
8 firewall-cmd [--permanent] --query-lockdown-whitelist-user=user
9 firewall-cmd [--permanent] --list-lockdown-whitelist-users

前四个是对uid进行操做,后四个是对username进行操做,具体含义你们应该很容易理解。

特别注意

在使用whitelist的时候咱们要特别注意一点,那就是whitelist只是针对规则的修改(包括添加和删除)起做用,可是不会限制查询。若是你们是使用root配置好防火墙后通常不多修改,也没有使用脚本动态修改等特殊需求的话能够直接将/bin/firewall-cmd的权限设置为750或者更低。

相关文章
相关标签/搜索