【操作系统之十四】iptables扩展模块

摘要:
例如,您不能从每天上午9点到下午6点查看网页:例如:iptables tfilter IOUTUT tcp--dport80 mtime--timestart09:00:00--timetop18:00:00--jREJECT“-mtime”表示使用时间扩展模块。--timestart选项用于指定开始时间,--timestop选项用于指定结束时间。iptables-INPUT-ptcp-dtcp-dport22--syn-jREJECT7和udpudp扩展模块只有两个扩展条件:--sport和--dport,用于匹配UDP协议消息的源端口和目标端口。

1、iprange

使用iprange扩展模块可以指定"一段连续的IP地址范围",用于匹配报文的源地址或者目标地址。
--src-range:匹配报文的源地址所在范围
--dst-range:匹配报文的目标地址所在范围
eg:
iptables -t filter -I INPUT -m iprange --src-range 192.168.1.15-192.168.1.149 -j REJECT

2、string
使用string扩展模块,可以指定要匹配的字符串,如果报文中包含对应的字符串,则符合匹配条件。
比如,如果报文中包含字符"OOXX",我们就丢弃当前报文。
eg:
iptables -t filter -I INPUT -m string --algo bm --string "OOXX" -j REJECT
'-m string'表示使用string模块,'--algo bm'表示使用bm算法去匹配指定的字符串,' --string "OOXX" '则表示我们想要匹配的字符串为"OOXX"

3、time
通过time扩展模块,根据时间段区匹配报文,如果报文到达的时间在指定的时间范围以内,则符合匹配条件。
比如:每天早上9点到下午6点不能看网页:
eg:
iptables -t filter -I OUTPUT -p tcp --dport 80 -m time --timestart 09:00:00 --timestop 18:00:00 -j REJECT
"-m time"表示使用time扩展模块,--timestart选项用于指定起始时间,--timestop选项用于指定结束时间。

eg:
iptables -t filter -I OUTPUT -p tcp --dport 80 -m time --weekdays 6,7 -j REJECT
使用--weekdays选项可以指定每个星期的具体哪一天,可以同时指定多个,用逗号隔开,除了能够数字表示"星期几",还能用缩写表示,例如:Mon, Tue, Wed, Thu, Fri, Sat, Sun

eg:
iptables -t filter -I OUTPUT -p tcp --dport 80 -m time --timestart 09:00:00 --timestop 18:00:00 --weekdays 6,7 -j REJECT
表示周六日的上午9点-下午18点不能看网页

eg:
iptables -t filter -I OUTPUT -p tcp --dport 80 -m time --weekdays 5 --monthdays 22,23,24,25,26 -j REJECT
使用--monthdays选项可以具体指定的每个月的哪一天;

eg:
iptables -t filter -I OUTPUT -p tcp --dport 80 -m time --datestart 2017-12-24 --datestop 2017-12-27 -j REJECT
使用--datestart 选项与--datestop选项,指定具体的日期范围

4、connlimit
使用connlimit扩展模块,可以限制每个IP地址同时链接到server端的链接数量,注意:不用指定IP,其默认就是针对"每个客户端IP",即对单IP的并发连接数限制。
eg:
iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 2 --connlimit-mask 24 -j REJECT
使用"-m connlimit"指定使用connlimit扩展,使用"--connlimit-above 2"表示限制每个IP的链接数量上限为2,再配合-p tcp --dport 22,即表示限制每个客户端IP的ssh并发链接数量不能高于2。
--connlimit-mask选项,去限制"某类网段"的链接数量,24是掩码,转成点分十进制:255.255.255.0

5、limit
limit模块是对"报文到达速率"进行限制的,限制单位时间内流入的包的数量。
iptables -I INPUT -p icmp -m limit --limit 10/minute -j REJECT
"--limit"用于指定多长时间生成一个新令牌的,"--limit-burst"用于指定"木桶中最多存放几个令牌的"

6、tcp
通过--tcp-flags扩展匹配条件,去匹配tcp报文的头部的标识位,然后根据标识位的实际情况实现访问控制的功能。
eg:
iptables -I INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN -j REJECT
SYN,ACK,FIN,RST,URG,PSH SYN"表示需要匹配的标志位列表 最后SYN表示匹配的标志位列表中 SYN标志位必须为1,其他的5个标志位必须为0

上例简写eg:
iptables -I INPUT -p tcp -m tcp --dport 22 --tcp-flags ALL SYN -j REJECT

eg:使用"--syn"选项相当于使用"--tcp-flags SYN,RST,ACK,FIN SYN",也就是说,可以使用"--syn"选项去匹配tcp新建连接的请求报文。
iptables -I INPUT -p tcp -m tcp --dport 22 --syn -j REJECT

7、udp
udp扩展模块只有--sport与--dport两个扩展条件,用于匹配UDP协议报文的源端口与目标端口。
比如,放行samba服务的137这两个UDP端口:
iptables -I INPUT -p udp -m udp --dport 137 -j REJECT

8、icmp
ICMP协议(Internet Control Message Protocol)互联网控制报文协议,它主要用于探测网络上的主机是否可用,目标是否可达,网络是否通畅,路由是否可用等。比如ping

【操作系统之十四】iptables扩展模块第1张
eg:
iptables -I INPUT -p icmp -m icmp --icmp-type 8/0 -j REJECT
使用"--icmp-type"选项表示根据具体的type与code去匹配对应的icmp报文,而上图中的"--icmp-type 8/0"表示icmp报文的type为8,code为0才会被匹配到,也就是只有ping请求类型的报文才能被匹配到
别人对我们发起的ping请求将会被拒绝通过防火墙,而我们之所以能够ping通别人,是因为别人回应我们的报文的icmp type为0,code也为0,无法被上述规则匹配到,所以我们可以看到别人回应我们的信息。

type为8的类型下只有一个code为0的类型,所以我们可以省略对应的code,示例如下
iptables -I INPUT -p icmp -m icmp --icmp-type 8 -j REJECT

除了能够使用对应type/code匹配到具体类型的icmp报文以外,我们还能用icmp报文的描述名称去匹配对应类型的报文,示例如下
iptables -I INPUT -p icmp -m icmp --icmp-type "echo-request" -j REJECT
--icmp-type "echo-request"与 --icmp-type 8/0的效果完全相同

9、state

state模块的连接其中的报文可以分为5种状态,报文状态可以为NEW、ESTABLISHED、RELATED、INVALID、UNTRACKED:

【操作系统之十四】iptables扩展模块第2张
NEW:连接中的第一个包,状态就是NEW,我们可以理解为新连接的第一个包的状态为NEW。
ESTABLISHED:我们可以把NEW状态包后面的包的状态理解为ESTABLISHED,表示连接已建立。
RELATED:数据连接与"命令连接"中的报文有关系,"数据连接"中的报文可能就是RELATED状态,。
INVALID:如果一个包没有办法被识别,或者这个包没有任何状态,那么这个包的状态就是INVALID,我们可以主动屏蔽状态为INVALID的报文。
UNTRACKED:报文的状态为untracked时,表示报文未被追踪,当报文的状态为Untracked时通常表示无法找到相关的连接。

eg:只有回应我们的报文能够通过防火墙,如果报文的状态为ESTABLISHED,那么报文肯定是之前发出的报文的回应,只要放行状态为ESTABLISHED的报文即可
iptables -t filter -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

免责声明:文章转载自《【操作系统之十四】iptables扩展模块》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【t093】外星密码This dependency was not found: * !!vue-style-loader!css-loader?……解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Word,Excel,pdf,txt等文件上传并提取内容

近期项目需求:1.要用到各种文件上传,下载。 2.并对文件进行搜索。 3.仅仅要文件里包括有搜索的内容,所有显示出来。 今天正好有时间整理一下,方便以后阅读,及对须要用到的朋友提供微薄之力。首先在实现文件上传时,使用的struts2自带的文件上传功能,通过流的方式将文件保存,在下载的时候通过流的方式写出就可以。这个实现起来不是非常难,主要是对各种文件...

使用HslCommunication实现PLC数据的远程客户端监视,以及web端实时监视,远程操作设备示例

前言  本文主要是演示一个例子,服务器后台程序从PLC采集数据,并推送给在线客户端显示,以及推送给web端进行实时的显示,还支持远程操作,支持安卓端的同步监视和远程操作,关于HslCommunication的相关资料如下 nuget地址:https://www.nuget.org/packages/HslCommunication/           ...

JAVA获取文件本身所在的磁盘位置

我们在做java开发(纯java程序,或者java web开发)时,经常会遇到需要读取配置文件的需求,如果我们将文件所在位置的信息直接写到程序中,例如:E:\workspace\JavaGUI\bin\com\util这个目录,这样虽然可行,但是,却产生了很大的局限性,因为读取的文件必须要要满足在E:\workspace\JavaGUI\bin\com\u...

[Selenium] CSS3 选择器

http://www.cnblogs.com/MasterMonkInTemple/category/564552.html 在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素。 "CSS" 列指示该属性是在哪个 CSS 版本中定义的。(CSS1、CSS2 还是 CSS3。) 选择器 例子 例子描述 CSS .class .intro 选...

Apache Drill初探

                                    Apache Drill初探 介绍 Apache Drill是一个开源的,对于Hadoop和NoSQL低延迟的SQL查询引擎。 Apache Drill 实现了 Google's Dremel.那么什么是Google's Dremel?网络中一段描述:Dremel 是Google...

Android okHttp网络请求之Retrofit+Okhttp+RxJava组合

Retrofit介绍:   Retrofit和okHttp师出同门,也是Square的开源库,它是一个类型安全的网络请求库,Retrofit简化了网络请求流程,基于OkHtttp做了封装,解耦的更彻底:比方说通过注解来配置请求参数,通过工厂来生成CallAdapter,Converter,你可以使用不同的请求适配器(CallAdapter), 比方说RxJ...