Linux包过滤防火墙概述
文章目录
- 一、Linux包过滤防火墙概述
- 1.1.netfilter
- 1.2.iptables
- 1.3 包过滤的工作层次
- 二、iptables的表、链结构
- 2.1 规则链
- 2.2五链
- 2.3 规则链之间的顺序(重要 )
- 2.4规则链内部各防火墙规则之间的顺序
- 2.5.规则表
- 2.6.四表
- 2.7.规则表之间的顺序(重要)
- 2.8.规则链内的匹配顺序
- 三、使用iptables工具
- 3.1.iptables安装
- 3.2.iptables的基本语法
- 3.3添加新的规则
- 3.4查看规则列表
- 3.5 **设置默认策略**
- 四、规则的匹配条件
- 4.1.匹配类型
- 1.通用匹配
- 2.隐含匹配
- 3. 显式匹配
- 4.2 常见的通用匹配条件
- 4.3 **常用的隐含匹配条件**
- 4.4 **常用的显式**
一、Linux包过滤防火墙概述
1.1.netfilter
位于Linux内核中的包过滤功能体系
称为Linux防火墙的“内核态”
1.2.iptables
位于/sbin/iptables,用来管理防火墙规则的工具
称为Linux防火墙的用户态
netfilter和iptables 都可以表示Linux防火墙
1.3 包过滤的工作层次
主要是网络层,针对IP数据包
体现在对包内的IP地址,端口等信息的处理上
二、iptables的表、链结构
2.1 规则链
规则的作用:对数据包进行过滤或处理
链的作用:容纳各种防火墙规则
链的分类依据:处理数据包的不同时机
2.2五链
默认包括5种规则链INPUT:处理入站数据包OUTPUT:处理出战数据包FORWARD:处理转发数据包POSTROUTING链:在进行路由选择后处理数据包PREROUTING链:在进行路由选择前处理数据包
2.3 规则链之间的顺序(重要 )
入站:prerouting-->input
出站 :output->postrouting
转发:prerouting->forward->postrouting
2.4规则链内部各防火墙规则之间的顺序
按顺序依次检查,匹配即停止(log策略例外)
若找不到相匹配的规则,则按该链的默认策略处理
2.5.规则表
作用及划分依据表的作用:容纳各种规则链表的划分依据:防火墙规则的作用相似
2.6.四表
默认包括4个规则表raw表:确认是否对该数据包进行状态跟踪mangle表:为数据包设置标记nat表:修改数据包中的源、目标IP地址或端口filter表:确定是否放行该数据包(过滤)
2.7.规则表之间的顺序(重要)
raw--->mangle-->nat--->filter
表名称 | 功能 |
---|---|
filter表 | 用来对数据包过滤,根据具体的规则要求决定如何处理一个数据包filter表对应的内核模块为iptable_filter,表内包含一个连,即INPUT,FORWARD,OUTPUT |
nat表 | nat(网络地址转换)表主要用来修改数据包的ip地址,端口信息,nat表对应的内核模块为iptable_nat,表内包包含三个链,即PREROUTING,postrouting,output |
mangle表 | 用来修改数据包的TOS(服务类型)TTL(生存周期),或者为数据包设置Mark标记,已实现流量整形,策略路由等高级应用,mangle表对应的内核模块为iptable_mangle,表内包含五个链,即prerouting,postrouting,input,output,forward |
raw表 | 是自1.2.9以后版本的iptables新增的表,主要用来决定是否对数据包进行状态跟踪,raw表对应的内核模块为iptable_raw,表内包含两个链,即output,prerouting |
input ,output链主要用在“主机型防火墙”中,即主要针对服务器本机进行保护的防火墙;而forward, prerouting.postrouting链 多用在“网络型防火墙”中,如使用linux防火墙作为网关服务器,在公司内网与internet之间进行安全控制
2.8.规则链内的匹配顺序
按顺序依次检查,匹配即停止(LOG策略例外)
若找不到相匹配的规则,则按该链的默认策略处理
三、使用iptables工具
3.1.iptables安装
关闭firewalld防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
安装iptables防火墙
yum -y install iptables-services
设置iptables开机自启动
systemctl start iptables.service
systemctl enable iptables.services
永久关闭核心防护
vi /etc/selinux/conf
SELINUX=disabled
3.2.iptables的基本语法
iptables [-t 表名] 选项 [链名] [条件] [-i 控制类型]
例如:iptables -t filter -I INPUT -p(阻止ping测试) icmp -j REJECT
-t:默认表filter可以不写
-I:在链首部插入
-p:指定协议
-j:控制类型注意事项不指定表名时,默认指filter表不指定链接=名时,默认指定表内所有链除非设置链的默认策略,否则必须指定匹配条件选项,链名,控制类型使用大写字母,其余均为小写
数据包的常见的控制类型ACCEPT:允许通过DROP: 直接丢弃,不给出任何回应REJECT:拒绝通过,必要时会给出提示LOG: 记录日志信息,然后传给下一条规则继续匹配
选项名 | 功能及特点 |
---|---|
-A | 在指定的末尾添加(append)一条新的规则 |
-D | 删除(delete)指定链中的某一条过着,可指定规则序号或具体内容 |
-I | 在指定链中插入(insert)一条新的规则。未指定序号时默认作为第一条规则 |
-R | 修改,替换(replace)指定链中的某一条规则,可指定规则序号或具体内容 |
-L | 列出(list)指定链中的所有规则,若未指定链名,则列出表中的所有链 |
-F | 清空(flush)指定链中所有规则,若未指定链名,则清空表中所有链 |
-P | 设置链的默认则略(policy) |
-n | 使用数字形式(numeric)显示输出结果,如显示ip地址而不是主机名 |
3.3添加新的规则
A:在链的末尾追加一条规则
-I:在链的开头(或指定序号)插入一条规则
iptables -t filter -A INPUT -p tcp -j ACCEPT
##在INPUT链的末尾追加tcp协议允许通过的规则
iptables -I INPUT -p udp -j ACCEPT
##在INPUT链的开头插入允许udp协议通过的规则
iptables -I INPUT 2 -p icmp -j ACCEPT
##在INPUT链的第二个规则中插入允许icmp协议通过的规则
3.4查看规则列表
选项 | 功能 |
---|---|
-L | 列出所有的规则条目 |
-n | 以数字形式显示地址,端口等信息 |
-v | 以更详细的方式显示规则信息 |
–line-numbers | 查看规则时,显示规则的序号 |
[root@service ~]iptables -nL INPUT #以数字形式显示INPUT链所有的规则条目(n和L的顺序不能倒)
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/
3.5 删除,清空规则
-D:删除链内指定序号(或内容)的一条规则
-F:清空所有规则
例如:若要删除filter表input链中的第四条规则,可以执行以下操作
iptables -D INPUT 4
iptables -n -L INPUT //确认删除效果清空指定链或表中的所有防火墙规则,使用管理选项 -F例如 :要清空filter表INPUTiptables -t filter -n -L INPUT清空所有表的所有链iptables -F iptables -t nat -F iptables -t mangle -F iptables -t raw -F表的优先级:raw > mangle > nat > filter
3.5 设置默认策略
-P:为指定的链设置默认规则
例如:清空所有默认策略要么是ACCEPT,要么是DROP表的所有链
iptables -t filter -P FORWARD DROP
iptables -P OUTPUT ACCEPT
注意:不指定表默认跟的是前面一个表
注意:当使用管理选项-f清空链时,默认策略不受影响,因此若要修改默认策略,必须通过管理选项-P重新进行设置,另外,默认策略不参与链内规则德顺序编排,因此其他规则之前或之后设置并无区别。
四、规则的匹配条件
在编写防火墙规则时,匹配条件设设置骑着决定性的作用,只有清晰,准确的设置好匹配条件,防火墙才知道要对符合什么条件的数据包进行处理,避免误杀,对于同一条防火墙规则,可以指定多个匹配条件,表示这些条件必须都满足规则才会生效,根据数据包的各种特征,结合iptables的模块结构,匹配条件的设置包括三大类:通用匹配,隐含匹配,显式匹配。
类别 | 条件类型 | 用法 |
---|---|---|
通用匹配 | 协议匹配 | -p协议名 |
通用匹配 | 地址匹配 | -s 源地址,-d 目的地址 |
通用匹配 | 接口匹配 | -i 入站网卡 , -o 出站网卡 |
隐含匹配 | 端口匹配 | –sport源端口,–dport 目的端口 |
隐含匹配 | ICMP类型匹配 | –icmp-type ICMP类型 |
显式匹配 | 多端口匹配 | -m multiport --sport l --dports端口列表 |
显式匹配 | ip范围匹配 | -m iprange --src-range IP范围 |
显式匹配 | mac地址匹配 | -m mac --mac-source MAC地址 |
显式匹配 | 状态匹配 | -m state --state 连接状态 |
4.1.匹配类型
1.通用匹配
可直接使用,不依赖于其他条件或扩展
包括网络协议,ip地址,网络接口等条件
2.隐含匹配
要求以特定的协议匹配作为前提
包括端口,tcp标记,icmp类型条件等
3. 显式匹配
要求以“-m扩展模块”的形式明确指出类型
包括多端口,mac地址,ip范围,数据包状态等条件
4.2 常见的通用匹配条件
协议匹配:-p 协议名
地址匹配:-s 源地址(入站),-d目的地址(出站)
接口匹配:-i入站网卡,-o出站网卡
例如: 例如:在input末尾插入一条规则入站ens33源地址为 私有网址段都不允许通过
iptables -AINPUT -i ens33 -s 192.168.1.1/16 -j DROP
iptables -A INPUT -i ens33 -s 10.0.0./8 -j DROP
iptables -A INPUT -i ens33 -s 192.168.0.0/12 -j DROP
以上是不允许私有网段访问
iptables -I INPUT -p icmp -j DROP //在input开头插入一条规则允许icmp可访问
iptables -A FORWORD !-p icmp -j ACCEPT //在input末尾插入一条规则 ,取反,只要不是icmp就允许通过
4.3 常用的隐含匹配条件
端口匹配:--sport 源端口,--dport目的端口
icmp类型匹配:--icmp-typeICMP类型
例如:
iptables -A FORWARD -s 192.168.2.0/24 -p udp --dport 53 -j ACCEPT //允许4.0访问内网的
iptables -A INPUT -p tcp --dport 20:21 -j ACCEPTICMP类型匹配
编写iptables规则时使用“--icmp-type ICMP 类型”的形式,针对的协议为icmp,用来
检查icmp数据包类型(--icmp-type),ICMP类型使用字符串或数字代码表示,如“E”
4.4 常用的显式
匹配条件
多端口匹配:-m multiport --sports 源端口列表-m multiport --dports 目的端口列表ip范围匹配: -m iprange --src-range ip范围
MAC地址匹配:-m mac --mac-souece mac地址状态匹配: -m state --state 连接状态
例如:连接状态
iptables -A INPUT -p tcp -m multiport -dport 25.90.106.150 -j ACCEPT
iiptables -A FORWARD -p tcp -m iprange --src-range 192.168.40.21-
192.168.40.28 -j ACCEPT
iptables -A INPUT -m mac --mac-source 02:0d;2c:c0:66:3f -j DROP
Linux包过滤防火墙概述相关推荐
- Linux包过滤防火墙(SNAT,DNAT)
文章目录 一.Linux包过滤防火墙概述 二.iptables的表,链结构 三.数据包过滤的匹配流程 四.iptables的基本语法 五.设置默认策略 六.数据包的常见类型 七.规则的匹配条件 1.匹 ...
- 写了个Linux包过滤防火墙
花几天写了个so easy的Linux包过滤防火墙,估计实际意义不是很大.防火墙包括用户态执行程序和内核模块,内核模块完全可以用iptable代替.由于在编写的过程一开始写的是内核模块所以就直接用上来 ...
- Linux包过滤防火墙
Linux包过滤防火墙 Netfilter 位于linux内核中的包过滤功能体系 称为linux防火墙的"内核态" Iptables 位于/sbin/iptables,用来管理防火 ...
- linux包过滤防火墙之iptables23事--洪水猛兽
目录 前言 一.iptables介绍 二.iptables-主机型防火墙 2.1 规则表 2.2 规则链 2.3 表链关系 2.3.1 结构关系 2.3.2 数据包过滤匹配流程 2.3.3 应用顺序 ...
- 第十一章 Linux包过滤防火墙-netfilter--基于Linux3.10
11.1 netfilter框架 netfilter从Linux2.4引入linux内核,是现在3.10版本的防火墙框架,该框架可实现数据包过滤.数据包处理.地址伪装.透明代理.动态网络地址转换(Ne ...
- Linux内核--基于Netfilter的内核级包过滤防火墙实现
知识基础:本防火墙的开发基于对Linux内核网络栈有个良好的概念,本人对网络栈的分析是基于早期版本(Linux 1.2.13),在明确了网络栈架构的前提下,上升一步分析高级版本内核中的Netfilte ...
- 基于Linux系统的包过滤防火墙
第1 章.基于路由器的包过滤防火墙 1.1 包过滤防火墙的一般概念 1.1.1 什么是包过滤防火墙 包过滤防火墙是用一个软件查看所流经的数据包的包头(header),由此决定整个包的命运.它可能会决定 ...
- 网络安全技术第七章——防火墙技术概述及应用(包过滤防火墙 、代理防火墙、状态检测防火墙、分布式防火墙)
防火墙技术概述及应用 防火墙技术概述及应用 1.防火墙的概念 2.高效可靠的防火墙应具备的基本特性 3.防火墙的基本功能 4.防火墙的基本原理 5.防火墙的类型 (1)包过滤防火墙 (2)代理防火墙 ...
- Linux iptables防火墙设置与NAT服务配置
Linux iptables防火墙设置与NAT服务配置 - 摘要: linux教程,NAT服务器,iptables防火墙设置与NAT服务配置, 防火墙是指设置在不同网络或网络安全域之间的一系列部件的组 ...
最新文章
- java.utilDate和java.sql.Date
- 获取本地System权限
- 彩色图像分割方法的汇总
- 【原】动态申请二维数组并释放的三种方法
- 如何发布Android Library到maven私有仓库
- 使用Packet.dll和npf.sys实现原始数据包的发送和接收
- java定义基础变量语句_java语言基础-变量
- 丁卓雅计算机学院,幼儿园音乐教育教学研讨会暨许卓雅教授音乐专题讲座
- linux 网卡命令 mtu,Linux网络命令
- Eigen教程(3)之矩阵和向量的运算
- bzoj2298: [HAOI2011]problem a
- 转载 - LINUX下查看CPU使用率的命令
- 线程(进程线程的比较)
- 计算机用户目录是什么,c盘里面users是什么文件夹
- 互斥事件的概念和公式_独立事件与互斥事件的区别与联系公式
- OpenGL ES 之 2D 纹理介绍和使用
- avr单片机c语言库,AVR单片机C语言编译器
- Windows的截屏键
- SysWow64没有权限解决办法
- vue Component inside <Transition> renders non-element root node that cannot be animated.