文章目录
前言
在 Internet 中,企业通过架设各种应用系统来为用户提供各种网络服务,如 Web 网站、电子邮件系统、FTP 服务器、数据库系统等。那么,如何来保护这些服务器,过滤企业不需要的访问甚至是恶意的入侵呢?Linux 的防火墙体系主要工作在网络层,针对 TCP/IP 数据包实施过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙)。Linux 系统的防火墙体系基于内核编码实现, 具有非常稳定的性能和高效率,也因此获得广泛的应用。
一、Iptables
- 位于/sbin/iptables,用来管理防火墙规则的工具
- 称为LINUX防火墙的“用户态”
二、包过滤的工作层次
- 主要是网络层,针对IP数据包
- 体现在对包内的IP地址、端口等信息的处理上
三、iptable的表、链结构
1. 四表五链
1.1、规则的作用:对数据包进行过滤或处理
1.2、链的作用:容纳各种防火墙规则
1.3、链的分类依据:处理数据包的不同时机
2. 四表
2.1、raw:主要用来决定是否对数据包进行状态跟踪,包含两个规则链:OUTPUT、PREROUTING
2.2、Mangle:修改数据包内容,用来做流量整形的,给数据包设置标记,包含五个规则链:INPUT、OUTPUT、FORWSRD、PREROUTING、POSTROUTING
2.3、NAT:负责网络地址转换,用来修改数据包中的源、目标IP地址或端口,包含三个规则链:OUTPUT、PREROUTING、POSTROUTING
2.4、Filter:负责过滤数据包,确定是否放行该数据包(过滤),包含三个链,即:PREROUTING、POSTROUTING、OUTPUT
3. 五链
3.1、INPUT:处理入站数据包
3.2、OUTPUT:处理出站数据包
3.3、FORWARD:处理转发数据包
3.4、POSTROUTING链:在进行路由选择后处理数据包3.5、PREROUTING链:在进行路由选择前处理数据包
4. 数据包过滤的匹配流程
优先顺序:raw>mangle>nat>filter
四、规则链匹配顺序
1. 主机型防火墙
1.1、数据包直接进入到防火墙所在的服务器的内部某一个应用程序当中,直接进入到服务,入站数据(来自外界的数据包,且目标地址是防火墙本机) : PREROUTING --> INPUT --> 本机的应用程序。
1.2、出站数据(从防火墙本机向外部地址发送的数据包):本机的应用程序–>OUTPUT-.>POSTROUTING。
1.3、网络型防火墙:转发数据(需要经过防火墙转发的数据包) : PREROUTING --> FORWARD --> POSTROUTING。
2. 规则链内的匹配设顺序
2.1、自上向下按顺序依次进行检查,找到相匹配的规则即停止(LOG策略例外,表示记录相关日志)要么放行 要么丢弃,若在该链内找不到相匹配的规则,则按该链的默认策略处理(未修改的状况下,默认策略为允许)
2.2、一旦找到一条匹配规则将不再检查后续的其他规则,如果一直找不到匹配的规则,就按默认规则处理。
2.3、默认规则用iptables -L查看,规则链后面出现(policy ACCEPT)即是默认放行
2.4、默认策略不参与链内规则的顺序编排
2.5、-F清空链时,默认策略不受影响
3. 数据包在规则表、链间的匹配流程
3.1、入站数据流向:来自外界的数据包到达防火墙后,首先被 PREROUTING 链处理(是否修改数据包地址等),然后进行路由选择(判断该数据包应发往何处);如果数据包的目标地址是防火墙本机(如 Internet 用户访问网关的 Web 服务端口),那么内核将其传递给INPUT 链进行处理(决定是否允许通过等),通过以后再交给系统上层的应用程序(如 httpd 服务器)进行响应。
3.2、转发数据流向:来自外界的数据包到达防火墙后,首先被 PREROUTING 链处理,然后再进行路由选择;如果数据包的目标地址是其他外部地址(如局域网用户通过网关访问 QQ 服务器),则内核将其传递给 FORWARD 链进行处理(允许转发或拦截、丢弃),最后交给 POSTROUTING 链(是否修改数据包的地址等)进行处理。
3.3、出站数据流向:防火墙本机向外部地址发送的数据包(如在防火墙主机中测试公网 DNS服务时),首先进行路由选择,确定了输出路径后,再经由 OUTPUT 链处理,最后再交 POSTROUTING 链(是否修改数据包的地址等)进行处理。
五、编写防火墙规则
1、IP table安装
CentOS7默认使用firewalld防火墙,没有安装IP table,若想使用,必须先关系firewalld防火墙,再安装iptable
六、基本语法
1、语法构成
2、数据包的常见控制类型
七、添加、查看、删除规则等基本操作
1、iptables 命令的常用管理选项
2、查询iptable以及清空iptable文件
3、禁止ICMPping通本网段
4、Ssh 22端口案例
-i 在指定链中插入一条新的
-d 删除
5、查看规则列表
6、以数字形式显示
7、删除规则
8、自上而下顺序
9、规则的匹配条件
9.1、通用匹配:可直接使用,不依赖于其他条件或扩展,包括网络协议、IP地址、网络接口等条件。
协议匹配:-p协议名
地址匹配:-s 源地址、-d目的地址
端口匹配:-i入站网卡、-o出站网卡
9.2、案例
9.3、隐含匹配
9.3.1、端口匹配: --sport 源端口、–dport 目的端口
9.3.2、–sport 1000 匹配源端口是1000的数据包
9.3.3、–sport 1000:3000 匹配源端口是1000-3000的数据包
9.3.4、–sport :3000 匹配源端口是3000及以下的数据包
9.3.5、–sport 1000: 匹配源端口是1000及以上的数据包
9.3.6、注意: --sport和–dport 必须配合-p <协议类型>使用
9.4、案例
10、TCP标记
10.1、SYN建立联机
10.2、ACK确认
10.3、PSH传送
10.4、FIN结束
10.5、RST重置
10.6、URG紧急
10.7、案例
总结
1、netfilter是实现过滤防火墙功能的内核机制,iptables是管理防火墙规则的用户态工具
2、iptables的规则体系默认包括四个表(filter、nat、mangle、raw)和五种链(INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING)
3、表的匹配顺序为 raw → mangle → nat → filter
4、链的匹配顺序取决于具体的数据流向,且遵循“匹配即停止”的原则,但LOG操作除外
5、iptables规则的匹配条件类型包括通用匹配、隐含匹配、显示匹配,其中显示匹配必须以“-m 模块名称”加载模块