【操作系统之十四】iptables扩展模块
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

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:

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扩展模块的更多相关文章
- 我的MYSQL学习心得(十四) 备份和恢复
我的MYSQL学习心得(十四) 备份和恢复 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) ...
- linux基础-第十四单元 Linux网络原理及基础设置
第十四单元 Linux网络原理及基础设置 三种网卡模式图 使用ifconfig命令来维护网络 ifconfig命令的功能 ifconfig命令的用法举例 使用ifup和ifdown命令启动和停止网卡 ...
- Kali Linux Web 渗透测试视频教程—第十四课-arp欺骗、嗅探、dns欺骗、session劫持
Kali Linux Web 渗透测试视频教程—第十四课-arp欺骗.嗅探.dns欺骗.session劫持 文/玄魂 目录 Kali Linux Web 渗透测试—第十四课-arp欺骗.嗅探.dns欺 ...
- Chrome浏览器扩展开发系列之十四
Chrome浏览器扩展开发系列之十四:本地消息机制Native messaging 时间:2015-10-08 16:17:59 阅读:1361 评论:0 收藏:0 ...
- VSTO学习笔记(十四)Excel数据透视表与PowerPivot
原文:VSTO学习笔记(十四)Excel数据透视表与PowerPivot 近期公司内部在做一种通用查询报表,方便人力资源分析.统计数据.由于之前公司系统中有一个类似的查询使用Excel数据透视表完成的 ...
- 【转】花开正当时,十四款120/128GB SSD横向评测
原文地址:http://www.expreview.com/19604-all.html SSD横评是最具消费指导意义的评测文章,也是各类热门SSD固态硬盘的决斗疆场.SSD评测在行业内已经有不少网站 ...
- 从零开始学习PYTHON3讲义(十四)写一个mp3播放器
<从零开始PYTHON3>第十四讲 通常来说,Python解释执行,运行速度慢,并不适合完整的开发游戏.随着电脑速度的快速提高,这种情况有所好转,但开发游戏仍然不是Python的重点工作. ...
- (C/C++学习笔记) 二十四. 知识补充
二十四. 知识补充 ● 子类调用父类构造函数 ※ 为什么子类要调用父类的构造函数? 因为子类继承父类,会继承到父类中的数据,所以子类在进行对象初始化时,先调用父类的构造函数,这就是子类的实例化过程. ...
- 高翔《视觉SLAM十四讲》从理论到实践
目录 第1讲 前言:本书讲什么:如何使用本书: 第2讲 初始SLAM:引子-小萝卜的例子:经典视觉SLAM框架:SLAM问题的数学表述:实践-编程基础: 第3讲 三维空间刚体运动 旋转矩阵:实践-Ei ...
随机推荐
- DVWA-文件上传学习笔记
DVWA-文件上传学习笔记 一.文件上传漏洞 文件上传漏洞,通常是由于对上传文件的类型.内容没有进行严格的过滤.检查,导致攻击者恶意上传木马以便获得服务器的webshell权限. 二.DVWA学习 将 ...
- 解决 Visual Studio 符号加载不完全问题
解决 Visual Studio 符号加载不完全问题 工具 - 选项 - 搜索 "符号" - 选上服务器 | 加载所有符号, 之后符号就会显示完全
- U9创建BE组件
打开UBF,新建项目->实体项目 输入名称后,点击确定,第二步:修改名称以在后期作为文件夹区分 第三步:创建实体 第四步:添加U9基础对象引用 拖动到解决方案的Reference 第五步:右键构 ...
- DevExpress的TreeList怎样设置数据源,从实例入手
场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...
- Winform中设置ZedGraph因设置小刻度导致的竖直虚线显示过多
场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- https://www.cnblogs.com/kxm87/p/9268622.html
数据库使用MySQL,ORM使用spring data jpa 1 因此需要再pom.xml文件中添加相应jar包.如下: <!-- 引入jap --> <dependency> ...
- 010.[转] maven的三大生命周期
一.Maven的生命周期 Maven的生命周期就是对所有的构建过程进行抽象和统一.包含了项目的清理.初始化.编译.测试.打包.集成测试.验证.部署和站点生成等几乎所有的构建步骤. Maven的生命周期 ...
- 全球唯一标识符 System.Guid.NewGuid().ToString()
System.Guid.NewGuid().ToString(); //ToString() 为 null 或空字符串 (""),则使用"D". 结果:8209 ...
- Qt 之 qwt 和 qwtpolar 的编译配置
1 Qwt Qwt 全称为 Qt Widgets for Technical Applications,用于专业技术领域的可视化显示,如下所示: 左图为二阶系统的频率响应:中图为德国小城 Fried ...
- 01day-微信小程序 表单组件 动态绑定变量 导航组件 地图组件 view text button 上下滚动组件
04-开发者环境搭建(下载安装开发者工具) 01==>微信开发工具的下载 安装 微信小程序的工具是 下载稳定版本的 安装的时候 直接下一步就可以了 02==>项目名陈随便输入 目录 App ...