Firewalld中的whitelist并不是规则白名单
原文地址:http://www.excelib.com/article/292/show
whitelist的含义
白名单跟防火墙结合在一起大家很容易将其理解为规则白名单,不过在Firewalld中whitelist却并不是规则白名单的含义。
对于一个防火墙来说,最重要的当然就是规则了,Firewalld当然也不例外,学生前面也给大家介绍了很多规则相关的配置方法,不过大家有没有意识到一个潜在的问题呢?当我们服务器中的某个服务(比如http)出现漏洞时,攻击者如果可以执行命令那么是不是就可以使用firewall-cmd工具来修改我们防火墙的规则呢?如果真是这样那么后果可想而知,攻击者不但可以开放我们原来没有开放的端口,甚至还可以搞恶作剧——将我们正常服务的端口给关闭!
Firewalld中whitelist就是来解决这个问题的,他可以限制谁能对防火墙规则进行修改,也就是说这里的whitelist其实使用用来配置可以修改防火墙规则的主体的白名单。
使用条件
在默认配置下whitelist是不启用的,我们需要将Lockdown设置为yes才可以启用,这些内容前面学生已经给大家介绍过了,另外,firewall-cmd工具也可以直接对其进行设置和查询,命令如下
firewall-cmd --lockdown-on
firewall-cmd --lockdown-off
firewall-cmd --query-lockdown
第一个是开启Lockdown,也就是让whitelist起作用,第二个是关闭Lockdown,第三个是查询当前Lockdown的状态。
这三个命令非常容易理解,不过他们跟学生前面给大家介绍过的其他命令有一些使用上的区别,我们看到这三个命令都没有--permanent选项,不过这并不表示他们不可以持久化保存,其实恰恰相反,在我们对Lockdown进行修改时配置文件和运行时环境会同时进行修改,也就是说当我们使用firewall-cmd命令对Lockdown的状态进行修改后首先可以立即生效、其次在重启后也不会失效。
另外,在使用--lockdown-on的时候大家要特别小心,要先看自己在不在whitelist范围内,如果不在,启用之后我们自己也不可以对防火墙进行操作了!
配置文件
whitelist的配置文件是位于/etc/firewalld目录下的lockdown-whitelist.xml文件,其结构如下
<whitelist>
[<selinux context="selinuxcontext"/>]
[<command name="commandline[*]"/>]
[<user {name="username"|id="userid"}/>]
</whitelist>
我们看到这里面有三个可选的配置节点:selinux、command和user,每个配置节点都可以配置多个,配置进来的就表示可以修改防火墙规则,下面学生分别来给大家介绍一下这三个配置项。
selinux
一说到selinux可能有的人就会产生畏惧心,不过这里用到的非常简单,只需要将某进程的content给设置进去就行了,具体某个进程的content大家可以使用“ps -e --context”命令来查找,找出来之后设置到context属性中就可以了。
我们可以直接编辑xml配置文件,另外也可以使用firewall-cmd命令来操作,相关命令如下
firewall-cmd [--permanent] --add-lockdown-whitelist-context=context
firewall-cmd [--permanent] --remove-lockdown-whitelist-context=context
firewall-cmd [--permanent] --query-lockdown-whitelist-context=context
firewall-cmd [--permanent] --list-lockdown-whitelist-contexts
这四个命令也非常容易理解,他们分别表示添加、删除、查询一个具体的selinuxcontenxt以及罗列出所有白名单中配置了的selinuxcontenxt,使用--permanent可以持久化保存,不使用可以立即生效。
command
通过command节点可以针对具体的command命令进行配置,配置之后此命令就可以被一般用户执行了。比如我们想将之前讲过的panic模式的开启和关闭命令开发,这样当遇到紧急情况时一般用户也可以启动panic模式,这种需求我们使用下面的配置即可
<whitelist>
<command name="/usr/bin/python /bin/firewall-cmd --panic-on"/>
<command name="/usr/bin/python /bin/firewall-cmd --panic-off"/>
</whitelist>
另外,command还可以使用通配符“*”,所以上面的配置还可以简化为
<whitelist>
<command name="/usr/bin/python /bin/firewall-cmd --panic-*"/>
</whitelist>
当然,command也可以使用firewall-cmd命令来操作,相关命令如下
firewall-cmd [--permanent] --add-lockdown-whitelist-command=command
firewall-cmd [--permanent] --remove-lockdown-whitelist-command=command
firewall-cmd [--permanent] --query-lockdown-whitelist-command=command
firewall-cmd [--permanent] --list-lockdown-whitelist-commands
命令的含义跟上面的selinux差不多,大家可以很容易理解,学生就不再解释了。
user
这里的user指的就是linux中的用户,通过这项可以对指定的用户开放配置权限,指定用户的方法有两种:通过userId和通过userName都可以,在默认的lockdown-whitelist.xml配置文件中就设置了id为0的user,也就是root用户
<whitelist>
...
<user id=""/>
</whitelist>
当然,通过name属性设置用户名也是可以的,非常简单,学生这里就不给大家举例了。user也可以使用firewall-cmd命令来操作,而且uid和name是分开操作的,所以user相关的命令一共有八个
firewall-cmd [--permanent] --add-lockdown-whitelist-uid=uid
firewall-cmd [--permanent] --remove-lockdown-whitelist-uid=uid
firewall-cmd [--permanent] --query-lockdown-whitelist-uid=uid
firewall-cmd [--permanent] --list-lockdown-whitelist-uids firewall-cmd [--permanent] --add-lockdown-whitelist-user=user
firewall-cmd [--permanent] --remove-lockdown-whitelist-user=user
firewall-cmd [--permanent] --query-lockdown-whitelist-user=user
firewall-cmd [--permanent] --list-lockdown-whitelist-users
前四个是对uid进行操作,后四个是对username进行操作,具体含义大家应该很容易理解。
特别注意
在使用whitelist的时候我们要特别注意一点,那就是whitelist只是针对规则的修改(包括添加和删除)起作用,但是不会限制查询。如果大家是使用root配置好防火墙后一般很少修改,也没有使用脚本动态修改等特殊需求的话可以直接将/bin/firewall-cmd的权限设置为750或者更低。
Firewalld中的whitelist并不是规则白名单的更多相关文章
- 蓝牙协议分析(8)_BLE安全机制之白名单
1. 前言 在万物联网的时代,安全问题将会受到非常严峻的挑战(相应地,也会获得最大的关注度),因为我们身边的每一个IOT设备,都是一个处于封印状态的天眼,随时都有被开启的危险.想想下面的场景吧: 凌晨 ...
- Linux服务器防火墙白名单设置
公司最近对网络安全抓的比较严,要求防火墙必须开启,但是项目的服务器有五六台,三台用于负载均衡,服务器之间必须要进行各种连接,那就只能通过添加白名单的方式. 登上服务器,编辑防火墙配置文件 vi /et ...
- 详解 Python 中的下划线命名规则
在 python 中,下划线命名规则往往令初学者相当 疑惑:单下划线.双下划线.双下划线还分前后……那它们的作用与使用场景 到底有何区别呢?今天 就来聊聊这个话题. 1.单下划线(_) 通常情况下,单 ...
- angularjs中关于跨域设置白名单
在config中注入$sceDelegateProvider服务使用resourceUrlWhitelist([])方法添加白名单 跨域时将method的属性设置为"jsonp"就 ...
- 【转载】C#中自定义Sort的排序规则IComparable接口
C#中的List集合在排序的时候,如果不使用Lambda表达式进行排序的话,一般调用Sort()方法进行排序,如果希望Sort()方法排序后的结果跟我们预想的效果一致或者按照我们自定义的规则排序,则需 ...
- 前面的内容 也是要去掉白名单 和 8.8.8.8这种非问题IP的 高风险 么? (目前我们没有获取客户的中风险、低风险数据,可以处理掉高风险)
前面的内容 也是要去掉白名单 和 8.8.8.8这种非问题IP的 高风险 么? (目前我们没有获取客户的中风险.低风险数据,可以处理掉高风险) == 整体把关.不清楚细节,所以只能从整体决策.做 ...
- 5 个关于 API 中日期和时间设计规则
规则 #1 使用ISO-8601格式作为你的日期格式 ISO 8601 解决了很多问题,包括: 自然排序 - 简单和优雅,免去多余的工作即可实现排序 时区偏移 - 代表用户的地点和时区在日益增长的全球 ...
- 【云速建站】微信公众平台中维护IP白名单
[摘要] 介绍获取接入IP白名单的操作步骤 网站后台对接微信公众号.支付等都依赖于白名单,接下来就介绍一下白名单的配置. 1.1 为什么要设置白名单 为了提高公众平台开发者接口调用的安全性, ...
- Java代码中对IP进行白名单验证
来自:https://www.cnblogs.com/shinubi/p/6723003.html public class ipUtil { // IP的正则,这个正则不能验证第一组数字为0的情况 ...
随机推荐
- Markdown_01_基础语法
目录 概览 一.区块元素{#BlockElement} 1.段落和换行 2.标题 2.区块引用 2.1 在每行的最前面加上 > 2.2 只在整个段落的第一行最前面加上> 2.3 区块引用可 ...
- 过滤器(Filter)
1 什么是过滤器 过滤器JavaWeb三大组件之一,它与Servlet很相似!不它过滤器是用来拦截请求的,而不是处理请求的. 当用户请求某个Servlet时,会先执行部署在这个请求上的Filter,如 ...
- shell的初步介绍
linux下Shell介绍 概述:每个人在成功登陆LIUX后,系统会出现不同的提示符号,例如$,~,#等,然后你就可以开始输入你需要的命令,若是命令正确,系统就会一句命令的要求来执行,知道注销系统位置 ...
- 实现一个简单的lazyman
function lazyman(name) { return new lazyman.fn.init(name); } lazyman.fn = lazyman.prototype = { cons ...
- Mac工具整理
记录一下这两年来使用Mac的一些很好的工具: 1.offic,mac的office还是很强大的,比openoffice要好很多,更比WPS要好. 2.Toad连接数据库用的,一般用来连接Oracle. ...
- ubuntu maven install&config
可以通过命令直接安装,我还是用文件安装. 1,下载apache-maven-3.5.0-bin.tar.gz二进制压缩文件 https://maven.apache.org/download.cgi ...
- Vim技能修炼教程(11) - 代码折叠
上一讲我们是程序员篇的第一讲,关于代码跳转.代码跳转是一个付出很少收获很大的功能.这一节我们开始一个收获很多,但是付出也相对多一点功能:代码折叠. 代码折叠 折叠的类型 折叠有下面几种类型: * Ma ...
- UICollectionView 数据库元素分组 多种section分开显示
第一遍 复杂方法 : 数据库查询一个表中userID 然后进行分类 中间去重 获得ID个数 放到section 中 显示 #pragma mark - 查询不同的ID 各数 - (void)c ...
- Ext JS 5 关于Store load返回json错误信息或异常的处理
关于在store load的时候服务器返回错误信息或服务器出错的处理.ExtJS4应该也能用,没测试过. 这里有两种情况: 服务器返回错误json错误信息,状态为200 服务器异常,状态为500 一. ...
- moment时间转换插件
在vue中的使用: import moment = from “moment” Vue.prototype.$moment = moment; 获取时间戳 : var res = this.$mome ...