iptables 从入门到应用
一、简介
1.1、是什么?
iptables是隔离主机以及网络的工具,通过自己设定的规则以及处理动作对数据报文进行检测以及处理。
1.2、发展史
防火墙的发展史就是从墙到链再到表的过程,也即是从简单到复杂的过程。为什么规则越来越多,因为互联网越来越不安全了,所有防火墙的的规则也越来越复杂。防火的工具变化如下:
ipfirewall(墙)-->ipchains(链条)--iptables(表)
2.0版内核中,包过滤机制是ipfw,管理工具是ipfwadm;
2.2 版内核中,包过滤机制ipchain,管理工具是ipchains;
2.4版及以后的内核中,包过滤机制是netfilter,管理工具iptables。
二、原理
2.1、组成
linux的防火墙由netfilter和iptables组成。用户空间的iptables制定防火墙规则,内核空间的netfilter实现防火墙功能。
netfilter(内核空间)位于Linux内核中的包过滤防火墙功能体系,称为Linux防火墙的“内核态”。
iptables(用户空间)位于/sbin/iptables,是用来管理防火墙的命令的工具,为防火墙体系提供过滤规则/策略,决定如何过滤或处理到达防火墙主机的数据包,称为Linux防火墙的“用户态”。
2.2、实现方式
Linux系统的防火墙功能是由内核实现的,包过滤防火墙工作在TCP/IP的网络层。
用户空间的iptables制定相应的规则策略控制内核空间的netfilter处理相应的数据访问控制。
iptables有四表五链(其实有五表,是后来加进来的),四表分别是下图的的raw,mangle,nat,filter表。五链分别是PREROUTING,INPUT,OUTPUT,FORWARD,POSTROUTING链。表有什么用?链又有什么用呢?其实表决定了数据报文处理的方式,而链则决定了数据报文的流经哪些位置。
你可以从图中看出规则表的优先级:raw-->mangle-->nat-->filter。
四表的介绍如图(ps:由于现在有五表了,所以我把另一个表也加了进来)。
五链的介绍如图。
制作防火墙规则通常有两种基本策略。一是黑名单策略;二是白名单策略。
黑名单策略指没有被拒绝的流量都可以通过,这种策略下管理员必须针对每一种新出现的攻击,制定新的规则,因此不推荐。
白名单策略指没有被允许的流量都要拒绝,这种策略比较保守,根据需要,逐渐开放,目前一般都采用白名单策略,推荐。
2.3、数据包过滤匹配流程
如图,我们可以分析数据报文进入本机后应用了哪些表规则以及链规则,根据表规则和链规则我们分析数据包的过滤匹配流程。
比如我们制定一个filter表的规则,filter表决定是否放行数据包通过,那如果通过,则必须经由INPUT链流入数据包,INPUT链是处理入站数据的,如果没问题,继续放行到用户空间,再经由OUTPUT链将数据包流出。
那如果是nat表的规则,nat表主要实现转发功能,数据包先经由PREROUTING链进行路由选择,选择好路线后再经由FORWARD链转发数据,然后再进行一个路由选择,最后由POSTROUTING链流出数据。
其他表规则的数据包流程不做介绍,图中介绍的十分详尽。
三、iptables命令
3.1、制定iptables表规则思路
(1)选择一张表(此表决定了数据报文处理的方式)
(2)选择一条链(此链决定了数据报文的流经哪些位置)
(3)选择合适的条件(此条件决定了对数据报文做何种条件匹配)
(4)选择处理数据报文的动作,制定相应的防火墙规则。
3.2、基本语法结构
结构:
iptables [ -t 表名 ] 管理选项 [ 链名 ] [ 条件匹配 ] [ -j 目标动作或跳转 ]
几个注意事项:
不指定表名时,默认表示filter表,不指定链名时,默认表示该表内所有链,除非设置规则链的缺省策略,否则需要指定匹配条件。
3.3、详细语法
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
3.4、语法结构解析
语法结构解析如下。
注意:本导图是按照iptables语法结构的使用的先后顺序制作的,如果按照此种方式能够很快地帮助我们记忆以及掌握iptables规则的制定。
3.4.1、表
其实表的介绍,在上面已经介绍了。这里我们可以再来回顾以下五张表的功能。
3.4.2、管理选项
管理选项分为三大类,分别为:规则的显示,规则链管理以及规则管理。我们可以通过man帮助查看iptables的用法,大多选项用法都见名知意。
链管理
1 2 3 4 5 6 7 8 9 |
|
规则管理
1 2 3 4 5 |
|
规则显示
1 2 3 4 5 6 7 |
|
3.4.3、链
五链的功能如图所示。
3.4.4、条件匹配
条件匹配分为基本匹配和扩展匹配,扩展匹配又分为显示匹配和隐式匹配。
基本匹配的特点是:无需加载扩展模块,匹配规则生效;扩展匹配的特点是:需要加载扩展模块,匹配规则方可生效。
隐式匹配的特点:使用-p选项指明协议时,无需再同时使用-m选项指明扩展模块以及不需要手动加载扩展模块;
显示匹配的特点:必须使用-m选项指明要调用的扩展模块的扩展机制以及需要手动加载扩展模块。
基本匹配的使用选项及功能
1 2 3 4 5 6 |
|
隐式匹配的使用选项及功能
1 2 3 4 5 6 7 8 9 10 |
|
显式匹配的使用选项及功能
显式匹配的选项特别多,所以使用思维导图的方式梳理一下。我们可以使用命令:man iptables-extensions查看具体用法。
1.multiport(多端口)
开放多个端口。
1
2
3
例子:
iptables -I INPUT -d 172.16.100.7 -p tcp -m multiport --dports 22,80 -j ACCEPT
iptables -I OUTPUT -s 172.16.100.7 -p tcp -m multiport --sports 22,80 -j ACCEPT
2.iprange(ip范围)
以连续地址块的方式来指明多IP地址匹配条件。
1
2
3
例子:
iptables -A INPUT -d 172.16.100.7 -p tcp --dport 23 -m iprange --src-range 172.16.100.1-172.16.100.100 -j ACCEPT
iptables -A OUTPUT -s 172.16.100.7 -p tcp --sport 23 -m iprange --dst-range 172.16.100.1-172.16.100.100 -j ACCEPT
3.time(时间范围)
指定时间范围。
1
2
3
例子:
iptables -A INPUT -d 172.16.100.7 -p tcp --dport 901 -m
time
--weekdays Mon,Tus,Wed,Thu,Fri --timestart 08:00:00 --
time
-stop 18:00:00 -j ACCEPT
iptables -A OUTPUT -s 172.16.100.7 -p tcp --sport 901 -j ACCEPT
4.string(字符串)
对报文中的应用层数据做字符串模式匹配检测(通过算法实现)。
1
2
3
--algo {bm|kmp}:字符匹配查找时使用算法
--string
"STRING"
: 要查找的字符串
--hex-string “HEX-STRING”: 要查找的字符,先编码成16进制格式
5.connlimit(连接限制)
根据每个客户端IP作并发连接数量限制。
1 2 |
|
6.limit(速率限制)
报文速率控制。
7.state(状态)
追踪本机上的请求和响应之间的数据报文的状态。状态有五种:INVALID, ESTABLISHED, NEW, RELATED, UNTRACKED.
法则:
1、对于进入的状态为ESTABLISHED都应该放行;
2、对于出去的状态为ESTABLISHED都应该放行;
3、严格检查进入的状态为NEW的连接;
4、所有状态为INVALIED都应该拒绝;
3.4.5、处理动作
处理动作有内置的处理动作和自定义的处理动作。自定义的处理动作用的比较少,因此只介绍内置的处理动作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
3.5、保存和载入规则
CentOS6和CentOS7保存和载入的规则稍有差异。
3.5.1、CentOS 7
1 2 3 4 |
|
3.5.2、CentOS 6
1 2 3 |
|
四、iptables的实践应用
iptables十分重要与网络的安全息息相关,我们理所应当掌握。不过我们大可不必死记硬背,一定结合实际项目,多多练习,效果才会更好。
4.1、iptables常用规则
1.放行sshd服务
1 2 |
|
2.放行httpd/nginx服务
1 2 |
|
3.放行本机端的流入流出
1 2 3 |
|
4.限制ping 192.168.0.1主机的数据包数,平均2/s个,最多不能超过3个
1 |
|
4.2、如何配置iptables
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
4.3、iptables初始化脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
|
本文出自 “有点意思!” 博客,请务必保留此出处http://powermichael.blog.51cto.com/12450987/1952049
iptables 从入门到应用相关推荐
- iptables从入门到放弃
维护服务器安全是我们运维人员的一个必要的职能,我们维护服务器的安全有一个比较常规的软件,也是每个计算机都必备的工具防火墙,在Linux中我们使用的防火墙是iptables,他的功能极其强大,如果不考虑 ...
- 《linux iptables使用入门》(转载)
<linux iptables使用入门>(转载) 1)iptables的概述 .netfilter/iptables是在linux 2.4及后继版本的内核中集成的一种服务. .netfil ...
- iptables从入门到精通
一.主要知识点: 1. Iptables表链结构 2. 数据包过滤流程 3. Iptables书写规则 4. Iptables条件匹配 5. Iptables数据包控制 6. Iptables七层过滤 ...
- 快速入门linux系统的iptables防火墙 1 本机与外界的基本通信管理
概述 iptables是一种运行在linux下的防火墙组件,下面的介绍可以快速的学习iptables的入门使用. 特点(重要) 它的工作逻辑分为 链.表.规则三层结构. 数据包通过的时候,在对应表中, ...
- Linux网络防火墙:iptables与netfilter
目录 netfilter iptables iptables示例 nftables 参考文档 iptables是一个配置Linux内核防火墙的命令行工具,它基于内核的netfilter机制.新版本的内 ...
- iptables/netfilter
iptables是一个配置Linux内核防火墙的命令行工具,它基于内核的netfilter机制.新版本的内核(3.13+)也提供了nftables,用于取代iptables. netfilter ne ...
- 微信小程序入门-阿里云学生版简单搭建java后台
文章目录 前言 云服务器 购买 安装 连接 直接连接(入门推荐) 通过工具 安全配置 Linux的防火墙 关闭(入门推荐) 放行 阿里云的防火墙 JDK 卸载 解压版(推荐) 下载 上传 安装 yum ...
- 深入理解Netfilter和iptables
本系列博文主要侧重于分析Netfilter的实现机制.原理和设计思想层面的东西,同时包括从用户态的iptables到内核态的Netfilter的交互过程和通信手段等.至于iptables的入门用法方面 ...
- python5.0完整版
想要这份详细的教程的可以留言,完整视频版,带课件和课程里提到的软件. 1. python5.0 1 1.1. 1-Python基础语法v5.0 1 1.1.1. 第1节 开发环境安装介绍 1 1.1. ...
- linux中iptables入门教程--设置静态防火墙
1.iptables介绍 iptables是复杂的,它集成到linux内核中.用户通过iptables,可以对进出你的计算机的数据包进行过滤.通过iptables命令设置你的规则,来把守你的计算机网络 ...
最新文章
- Cesium中Clock控件及时间序列瓦片动态加载
- SSH 本地和服务器传输
- 最简单的Angular Route hello world场景都跑不通的一个原因
- unity 角色换装
- CF1511G-Chips on a Board【倍增】
- 前端学习(2813):小程序开发前的环境搭建
- Your password has expired. To log in you must change it using a client that supports expired pass...
- 【Kafka】Flink 消费 kafka 部分 分区 一直不提交 offset
- Python来处理数独游戏(含世界最难数独示例)
- 2012.4.17内存相关(二)
- 桌面计算机里没有桌面显示不出来怎么办,电脑桌面显示不出来图标 所有软件都可以正常工作 怎么解决?...
- 《智豆SOW白皮书》重磅发布 附全文
- 数据中心到底是如何建设的?
- codewars练习(javascript)-2021/1/24
- java 未读消息_javaweb未读消息提醒
- Unity3D项目升级URP
- linux判断搜索结果,shell编程之条件判断和find查询
- VS Code,PyCharm与GitHub同步
- IEEE 802.15.4和ZigBee
- 区块链最全资源(学习、开发、工具、社交等)