iptables详解(9):iptables的黑白名单机制

注意:在参照本文进行iptables实验时,请务必在个人的测试机上进行,因为如果iptables规则设置不当,有可能使你无法连接到远程主机中。

前文中一直在强调一个概念:报文在经过iptables的链时,会匹配链中的规则,遇到匹配的规则时,就执行对应的动作,如果链中的规则都无法匹配到当前报文,则使用链的默认策略(默认动作),链的默认策略通常设置为ACCEPT或者DROP。

那么,当链的默认策略设置为ACCEPT时,如果对应的链中没有配置任何规则,就表示接受所有的报文,如果对应的链中存在规则,但是这些规则没有匹配到报文,报文还是会被接受。

同理,当链的默认策略设置为DROP时,如果对应的链中没有配置任何规则,就表示拒绝所有报文,如果对应的链中存在规则,但是这些规则没有匹配到报文,报文还是会被拒绝。

所以,当链的默认策略设置为ACCEPT时,按照道理来说,我们在链中配置规则时,对应的动作应该设置为DROP或者REJECT,为什么呢?

因为默认策略已经为ACCEPT了,如果我们在设置规则时,对应动作仍然为ACCEPT,那么所有报文都会被放行了,因为不管报文是否被规则匹配到都会被ACCEPT,所以就失去了访问控制的意义。

所以,当链的默认策略为ACCEPT时,链中的规则对应的动作应该为DROP或者REJECT,表示只有匹配到规则的报文才会被拒绝,没有被规则匹配到的报文都会被默认接受,这就是"黑名单"机制。

同理,当链的默认策略为DROP时,链中的规则对应的动作应该为ACCEPT,表示只有匹配到规则的报文才会被放行,没有被规则匹配到的报文都会被默认拒绝,这就是"白名单"机制。

如果使用白名单机制,我们就要把所有人都当做坏人,只放行好人。

如果使用黑名单机制,我们就要把所有人都当成好人,只拒绝坏人。

白名单机制似乎更加安全一些,黑名单机制似乎更加灵活一些。

那么,我们就来做一个简单的白名单吧,也就是说,只放行被规则匹配到的报文,其他报文一律拒绝,那么,我们先来配置规则。

假设,我想要放行ssh远程连接相关的报文,也想要放行web服务相关的报文,那么,我们在INPUT链中添加如下规则。

如上图所示,我们已经放行了特定的报文,只有上述两条规则匹配到的报文才会被放行,现在,我们只要将INPUT链的默认策略改为DROP,即可实现白名单机制。

示例如下。

上图中,我们已经将INPUT链的默认策略改为DROP,并且已经实现了所谓的白名单机制,即默认拒绝所有报文,只放行特定的报文。

如果此时,我不小心执行了"iptables -F"操作,根据我们之前学到的知识去判断,我们还能够通过ssh工具远程到服务器上吗?

我想你已经判断出了正确答案,没错,按照上图中的情况,如果此时执行"iptables -F"操作,filter表中的所有链中的所有规则都会被清空,而INPUT链的默认策略为DROP,所以所有报文都会被拒绝,不止ssh远程请求会被拒绝,其他报文也会被拒绝,我们来实验一下。

如上图所示,在当前ssh远程工具中执行"iptables -F"命令后,由于INPUT链中已经不存在任何规则,所以,所有报文都被拒绝了,包括当前的ssh远程连接。

这就是默认策略设置为DROP的缺点,在对应的链中没有设置任何规则时,这样使用默认策略为DROP是非常不明智的,因为管理员也会把自己拒之门外,即使对应的链中存在放行规则,当我们不小心使用"iptables -F"清空规则时,放行规则被删除,则所有数据包都无法进入,这个时候就相当于给管理员挖了个坑,所以,我们如果想要使用"白名单"的机制,最好将链的默认策略保持为"ACCEPT",然后将"拒绝所有请求"这条规则放在链的尾部,将"放行规则"放在前面,这样做,既能实现"白名单"机制,又能保证在规则被清空时,管理员还有机会连接到主机,示例如下。

因为刚才的ssh连接已经被拒绝,所以,此时直接在控制台中设置iptables规则

如上图所示,先将INPUT链的默认策略设置为ACCEPT

然后继续配置需要放行的报文的规则,如下图所示,当所有放行规则设置完成后,在INPUT链的尾部,设置一条拒绝所有请求的规则。

上图中的设置,既将INPUT链的默认策略设置为了ACCEPT,同时又使用了白名单机制,因为如果报文符合放行条件,则会被前面的放行规则匹配到,如果报文不符合放行条件,则会被最后一条拒绝规则匹配到,此刻,即使我们误操作,执行了"iptables -F"操作,也能保证管理员能够远程到主机上进行维护,因为默认策略仍然是ACCEPT。

其实,在之前知识的基础上,理解所谓的黑白名单机制是很容易的,此处只是将最佳实践总结了一下,希望这篇文章能够对你有所帮助。

原文地址:https://www.cnblogs.com/wanstack/p/8393230.html

时间: 2024-10-11 21:19:08

iptables详解(9):iptables的黑白名单机制的相关文章

Linux网络安全模型及iptables详解(1)

Linux网络安全模型及iptables详解 基本概念 Firewall:工作在主机或网络边缘,对进出的报文按事先定义的规则进行检查, 并且由匹配到的规则进行处理的一组硬件或软件,甚至可能是两者的组合 硬件防火墙:在硬件级别实现部分功能的防火墙:另一个部分功能基于软件实现 软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙: 主机防火墙:工作于主机边缘,只能对一台主机起到保护作用 网络防火墙:工作于网络边缘,对多台主机起到保护作用(定向规则) iptables:防火墙规则编写工具,位于用

linux中iptables详解

linux中iptables详解 一.通用基础知识 1.基本概念 什么是防火墙? 所谓防火墙指的是工作于主机或网络的边缘,对于进出的报文根据事先定义的规则作检查,将那些能够被规则所匹配到的报文作出相应处理的组件. 防火墙是由软件和硬件设备组合而成.在内部网和外部网之间.专用网与公共网之间的界面上构造的保护屏障,使Internet与Intranet之间建立起一个安全网关(Security Gateway),从而保护内部网免受非法用户的侵入. 防火墙主要由服务访问规则.验证工具.包过滤和应用网关4个

iptables详解之filter

iptables详解之filter iptables令很多小伙伴脑阔疼,下面我们来说说如何使用iptables. 一.iptables格式 1.1.iptables 帮助 通过iptables --help查看一下iptables用法 [[email protected] ~]# iptables --help iptables v1.4.21 Usage: iptables -[ACD] chain rule-specification [options] iptables -I chain

iptables 详解

Iptables 详解 Iptables的历史 历史版本 与Linux内核各版本集成的防火墙历史版本: 2.0.X内核:ipfwadm 2.2.X内核:ipchains 2.4.X内核:iptables iptables的工作原理 iptables由用户空间的命令行程序和位于内核中的tcp/ip协议栈的报文处理框架两部分组成.工作在用户空间中,定义规则,让在内核空间当中的netfilter来读取,并且实现让防火墙工作.而放入内核的地方必须是tcp/ip的协议栈经过的地方.而这个tcp/ip协议栈

iptables详解加实战

iptables 组件是一种工具,也称为用户空间(userspace),它使插入.修改和除去信息包过滤表中的规则变得容易.分为四个表和五个链,其中表是按照对数据包的操作区分的,链是按照不同的Hook点来区分的,表和链实际上是netfilter的两个维度. 4个表:filter,nat,mangle,raw,默认表是filter(没有指定表的时候就是filter表).表的处理优先级:raw>mangle>nat>filter. filter:一般的过滤功能,如不-t指定表,则默认filte

iptables详解--转

出处:http://yijiu.blog.51cto.com/433846/1356254 iptables详解 基本概念: 1.防火墙工作在主机边缘:对于进出本网络或者本主机的数据报文,根据事先设定好的检查规则对其检查,对形迹可疑的报文一律按照事先定义好的处理机制做出相应处理 对linux而言tcp/ip协议栈是在内核当中,意味着报文的处理是在内核中处理的,也就是说防火墙必须在工作在内核中,防火墙必须在内核中完成tcp/ip报文所流进的位置,用规则去检查,才真正能工作起来. iptables用

CentoOS iptables详解

一.防火墙.iptables和netfilter简介 防火墙(Firewall):是由软件和硬件设备组合而成的一种隔离技术,它工作于网络或主机的边缘(通信报文的进出口),对于进出本网络或主机的数据包根据事先定义的检测规则进行匹配检测,允许或是限制传输的数据包通过. netfilter:是内核的一部分,由一些数据包过滤表组成,这些表包含内核用来控制数据包过滤处理的规则集. iptables:是用来插入.修改和删除数据包过滤表中的规则的管理工具. 二.iptables详解 该图片来自于网络 报文流向

Java集合详解3:Iterator,fail-fast机制与比较器

Java集合详解3:Iterator,fail-fast机制与比较器 今天我们来探索一下LIterator,fail-fast机制与比较器的源码. 具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech 喜欢的话麻烦star一下哈 文章首发于我的个人博客: https://h2pl.github.io/2018/05/9/collection3 更多关于Java后端学习的内容请到我的CSDN博客上查看:https://blog.csdn.net/a72

转:iptables详解

一:前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘.而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP.数据进行检测. 目前市面上比较常见的有3.4层的防火墙,叫网络层的防火墙,还有7层的防火墙,其实是代理层的网关. 对于TCP/IP的七层模型来讲,我们知道第三层是网络层,三层的防火墙会在这层对源地址和目标地址进行检测.但是对于七层的防火