文章目录

  • 一、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包过滤防火墙概述相关推荐

  1. Linux包过滤防火墙(SNAT,DNAT)

    文章目录 一.Linux包过滤防火墙概述 二.iptables的表,链结构 三.数据包过滤的匹配流程 四.iptables的基本语法 五.设置默认策略 六.数据包的常见类型 七.规则的匹配条件 1.匹 ...

  2. 写了个Linux包过滤防火墙

    花几天写了个so easy的Linux包过滤防火墙,估计实际意义不是很大.防火墙包括用户态执行程序和内核模块,内核模块完全可以用iptable代替.由于在编写的过程一开始写的是内核模块所以就直接用上来 ...

  3. Linux包过滤防火墙

    Linux包过滤防火墙 Netfilter 位于linux内核中的包过滤功能体系 称为linux防火墙的"内核态" Iptables 位于/sbin/iptables,用来管理防火 ...

  4. linux包过滤防火墙之iptables23事--洪水猛兽

    目录 前言 一.iptables介绍 二.iptables-主机型防火墙 2.1 规则表 2.2 规则链 2.3 表链关系 2.3.1 结构关系 ​2.3.2 数据包过滤匹配流程 2.3.3 应用顺序 ...

  5. 第十一章 Linux包过滤防火墙-netfilter--基于Linux3.10

    11.1 netfilter框架 netfilter从Linux2.4引入linux内核,是现在3.10版本的防火墙框架,该框架可实现数据包过滤.数据包处理.地址伪装.透明代理.动态网络地址转换(Ne ...

  6. Linux内核--基于Netfilter的内核级包过滤防火墙实现

    知识基础:本防火墙的开发基于对Linux内核网络栈有个良好的概念,本人对网络栈的分析是基于早期版本(Linux 1.2.13),在明确了网络栈架构的前提下,上升一步分析高级版本内核中的Netfilte ...

  7. 基于Linux系统的包过滤防火墙

    第1 章.基于路由器的包过滤防火墙 1.1 包过滤防火墙的一般概念 1.1.1 什么是包过滤防火墙 包过滤防火墙是用一个软件查看所流经的数据包的包头(header),由此决定整个包的命运.它可能会决定 ...

  8. 网络安全技术第七章——防火墙技术概述及应用(包过滤防火墙 、代理防火墙、状态检测防火墙、分布式防火墙)

    防火墙技术概述及应用 防火墙技术概述及应用 1.防火墙的概念 2.高效可靠的防火墙应具备的基本特性 3.防火墙的基本功能 4.防火墙的基本原理 5.防火墙的类型 (1)包过滤防火墙 (2)代理防火墙 ...

  9. Linux iptables防火墙设置与NAT服务配置

    Linux iptables防火墙设置与NAT服务配置 - 摘要: linux教程,NAT服务器,iptables防火墙设置与NAT服务配置, 防火墙是指设置在不同网络或网络安全域之间的一系列部件的组 ...

最新文章

  1. java.utilDate和java.sql.Date
  2. 获取本地System权限
  3. 彩色图像分割方法的汇总
  4. 【原】动态申请二维数组并释放的三种方法
  5. 如何发布Android Library到maven私有仓库
  6. 使用Packet.dll和npf.sys实现原始数据包的发送和接收
  7. java定义基础变量语句_java语言基础-变量
  8. 丁卓雅计算机学院,幼儿园音乐教育教学研讨会暨许卓雅教授音乐专题讲座
  9. linux 网卡命令 mtu,Linux网络命令
  10. Eigen教程(3)之矩阵和向量的运算
  11. bzoj2298: [HAOI2011]problem a
  12. 转载 - LINUX下查看CPU使用率的命令
  13. 线程(进程线程的比较)
  14. 计算机用户目录是什么,c盘里面users是什么文件夹
  15. 互斥事件的概念和公式_独立事件与互斥事件的区别与联系公式
  16. OpenGL ES 之 2D 纹理介绍和使用
  17. avr单片机c语言库,AVR单片机C语言编译器
  18. Windows的截屏键
  19. SysWow64没有权限解决办法
  20. vue Component inside <Transition> renders non-element root node that cannot be animated.

热门文章

  1. 餐讯:20亿市场份额,移动餐车或成为新的餐饮竞争地
  2. 几个优秀的js框架的license问题,付费,版权,侵权
  3. 集成学习方法之 Boosted Tree 原理
  4. VMware里CentOS7与win10共享文件【完美跑通】
  5. Struts2框架(二)
  6. android 自定义View绘制电池电量(电池内带数字显示)
  7. java短信验证平台_JAVA实现利用第三方平台发送短信验证码
  8. 多多情报通:拼多多三级处罚以后对店铺还有影响吗?拼多多三级处罚原因介绍
  9. 普通io口模拟串口通信
  10. sth. about tarjan