博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iptables防火墙理论(附四表五链)
阅读量:2026 次
发布时间:2019-04-28

本文共 2449 字,大约阅读时间需要 8 分钟。

硬件防火墙:在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本高。如:思科ASA 华为防火墙 天融信防火墙 等。

软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能低,成本低。如:iptables firewall(CentOS7独有的)等。

一:iptables包过滤的概述

1.1:netfilter

位于Linux内核中的包过滤功能体系

称为Linux防火墙的“内核态”

1.2:iptanbles

位与/usr/sbin/iptables,用来管理防火墙规则的工具

称为Linux防火墙的 “用户态”

-------上述2种称呼都可以表示Linux防火墙

1:防火墙关联端口----服务  端口开相应的服务就开2:基于IP----源IP、目标IP3:协议----TCP、UDP、ICMP极少数会过滤MAC(局域网)

1.3:包过滤的工作层次

主要是网络层、针对IP数据包

体现在对包内的IP地址、端口等信息的处理上

在这里插入图片描述

二:iptables的四表、五链结构

  • 四表:filter、nat、managle、raw,默认是filter表。表的处理优先级:raw>managle>nat>filter
英文 中文
filter 过滤数据包
nat 网络地址转换(端口映射、地址映射等。)
mangle 用于对特定数据报的修改。
raw 优先级最高,设置raw时一般是为了不再让iptables做数据报的链接跟踪处理,提高性能。
  • 五链:PREROUTING 、INPUT、FORWARD、OUTPUT、POSTROUTING
英文 中文
PREROUTING 数据包进入路由表之前,对数据包做路由选择前应用此链路中的规则,所有的数据包进来的时候都先由这个链处理
INPUT 通过路由表后目的为本机,进来的数据报应用此规则链上的策略
FORWARD 通过路由表后,目标地址不为本机,做转发数据报时应用此规则链上的策略
OUTPUT 由本机产生的外出的数据包向外转发时,应用此规则链中的策略
POSTROUTING 数据报做路由选择后发送后到网卡接口之前应用此链中的规则,所有的数据包出来的时候都先由这个链处理
  • 表与链之间的包含关系:
filter
nat
mangle
raw

在这里插入图片描述

三:数据包过滤的匹配流程

3.1:规则表之间的顺序

raw→mangle→nat >filter

3.2:规则链之间的顺序

入站: PREROUTING→INPUT

出站: OUTPUT→POSTROUTING
转发: PREROUTING>FORWARD→POSTROUTING

五链顺序:PREROUTING— > INPUT— – > FORWARD- - - - >OUTPUT---- >POSTROUT ING

3.3:规则链内的匹配顺序

按顺序依次检查,匹配即停止(LOG策略例外)

若找不到相匹配的规则,则按该链的默认策略处理
在这里插入图片描述
规则链之间的优先顺序(分三种情况):

第一种情况:入站数据流向

从外界到达防火墙的数据包,先被PREROUTING规则链处理(是否修改数据包地址等),之后会进行路由选择(判断该数据包应该发往何处),如果数据包的目标主机是防火墙本机(比如说Internet用户访问防火墙主机中的web服务器的数据包),那么内核将其传给INPUT链进行处理(决定是否允许通过等),通过以后再交给系统上层的应用程序(比如Apache/Nginx服务器)进行响应。

第二种情况:转发数据流向

来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后会进行路由选择,如果数据包的目标地址是其它外部地址(比如局域网用户通过网关访问QQ站点的数据包),则内核将其传递给FORWARD链进行处理(是否转发或拦截),然后再交给POSTROUTING规则链(是否修改数据包的地址等)进行处理。

第三种情况:出站数据流向

来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后会进行路由选择,如果数据包的目标地址是其它外部地址(比如局域网用户通过网关访问QQ站点的数据包),则内核将其传递给FORWARD链进行处理(是否转发或拦截),然后再交给POSTROUTING规则链(是否修改数据包的地址等)进行处理。

第三种情况:出站数据流向

防火墙本机向外部地址发送的数据包(比如在防火墙主机中测试公网DNS服务器时),首先被OUTPUT规则链处理,之后进行路由选择,

二. iptables命令常用方法

iptables [-p table] 链管理 chain

-t table : filter,nat,mangle,raw (默认为 filter)

链管理

命令 作用
-F 清空规则链
-N 创建新的自定义规则链
-X drop 删除用户自定义的规则链
-P Policy 为指定链设置默认策略;iptables -t filter -P FORWARD DROP
-E 重命令自定义链

规则管理i

命令 作用
-A 将新规则添加到指定的链上
-I 将新规则插入到指定的位置
-D 删除链上的指定规则
-R 替代指定链上的规则

查看:

命令 作用
-L 列表,列出指定链上的指定的规则

-n -v –line-numbers -x 等参数

匹配条件:
基本匹配:

命令 作用
-s 原地址IP
-d 目的IP
-p 协议{tcp
-i 数据报文的流入接口
-o 数据报文的流出接口
扩展匹配 -m match_name
–dport PORT 目标端口,可以是单个端口
–sport PORT 源端口
-p udp
–icmp -type
0 echo-reply
8 echo-request

目标:

命令 作用
-j TARGET jump至指定的TARGET
TACCEPT 接受
DROP 丢弃
REJECT 拒绝访问
RETURN 返回调用链

转载地址:http://ofdaf.baihongyu.com/

你可能感兴趣的文章
java 注解
查看>>
CAS:乐观锁实现
查看>>
压力测试工具Apache ab
查看>>
Linux - Shell
查看>>
MySQL 如何执行关联查询
查看>>
算法运行时间n3,n2, n, nlogn对比
查看>>
java 中的suppressedException
查看>>
Rope --高效字符串处理数据结构
查看>>
Gap buffer -- 一个数据结构为可编辑的文本
查看>>
X/Open DTP模型,两阶段提交,JTA接口定义
查看>>
MySql binlog 日志
查看>>
spring 事务管理
查看>>
Redis集群
查看>>
线程中实现不可中断的任务
查看>>
世界城市时间计算
查看>>
Hessian原理分析
查看>>
WebCollector提供免费代理
查看>>
将WebCollector导入MAVEN项目
查看>>
WebCollector爬虫爬取一个或多个网站
查看>>
WebCollector爬虫的数据持久化
查看>>