Linux安全防火墙 - iptables详解

本文详细介绍了iptables的基础结构,包括Tables、Chains和Rules的构成,重点讲解了filter、nat、mangle和raw表的功能以及规则的编写,提供了查看、删除和添加规则的实例。
摘要由CSDN通过智能技术生成

1. 基础结构

iptables 自上而下由 TablesChainsRules 三部分组成。

image.png

  1. Tables:表,用于存储链的容器(一个表中可以有多个链),是防火墙的最大概念。
  2. Chains:链,用于存储规则的容器(一个链中可以有多条规则)。
  3. Rules:规则,可以设置允许或者拒绝规则。

2. 表结构

2.1 filter表

过滤:是 iptables 的默认表,主要和主机自身相关,是真正负责主机防火墙功能的(用于过滤拦截流入流出主机的数据包)

Chains:链介绍
INPUTinput:过滤流入主机的数据包(设置是否让数据包进入主机)
OUTPUToutput:过滤流出主机的数据包(处理从主机发出的数据包)
FORWARDforward:路过,处理转发流经主机的数据包(将数据转发到本机的其他网卡设备上)

2.2. nat表

网络地址转换(Network Address Translation),即来源于目的IP地址和端口的转换。和主机自身无关,一般用于局域网共享上网(内网服务器上外网)、IP映射和端口映射等。

Chains:链介绍
PREROUTINGprerouting:路由之前,处理刚到达本机并在路由转发之前的数据包。他会转换数据包中的目的IP地址,通常用于DNAT(destination NAT)目的地址网络地址转换
POSTROUTINGpostrouting:路由之后,处理即将离开本机的数据包。他会转换数据包中的源IP地址,通常用于SNAT(source NAT)源地址网络地址转换
OUTPUToutput:处理本机产生的数据包,改变主机发出数据包的目的地址

2.3 mangle表

用于指定如何处理数据包,他能改变TCP头中的QoS位

Chains:链介绍
PREROUTINGprerouting:路由之前
POSTROUTINGpostrouting:路由之后
OUTPUToutput:流出
INPUTinput:流入
FORWARDforward:转发

2.4 raw表

用于处理异常

Chains:链介绍
PREROUTINGprerouting:路由之前
OUTPUToutput:流出

2. Rules(规则):重点重点重点

  1. Rules规则包括一个条件和一个目标(target)。
  2. 如果满足条件,就执行目标(target)中的规则或者特定值。
  3. 如果不满足条件,就判断下一条规则。
目标名称介绍
ACCEPTaccept:允许包
DROPdrop:丢弃包
QUEUEqueue:把包传递到用户空间
RETURNreturn:停止执行当前链中的后续Rules,并返回到调用链

2.1 命令

长参数短参数用法介绍
–list-L-L 链名 [规则序号]展示表中的所有规则
–append-A-A 链名在指定链里增加规则
–insert-I-I 链名 [规则序号]在指定链中增加规则,不指定序号默认在第1条
–delete-D-D 链名 规则序号删除指定序号的规则

2.2 选项

长参数短参数用法介绍
–table-t-t 表名指定表,默认是filter表
–numeric-n-nL数字展示ip地址和端口
–line-numbers-nL --line-numbers展示列表的时候显示序号
–protocol-p-p TCP指定规则的协议
–source-s-s 源IP指定规则的源IP
–sport-s 源IP --sport 源端口指定规则的源端口
–destination-d-d 目的IP指定规则的目的IP
–dport-d 目的IP --dport指定规则的目的端口
–match-m-m 扩展模块名扩展匹配规则
–in-interface-iinput流入的时候从哪个网卡进来
–out-interface-ooutput流出的时候从哪个网卡出去
–jump-j-j 目标满足条件后的动作:ACCEPT/DROP

2.3 扩展模块

# 多个端口
-m multiport --sport 80,443 --dport 81,445 

3. 常用的例子

3.1 查看filter表中的规则配置

sudo iptables -nL --line-numbers

3.2 删除指定序号的规则

sudo iptables -D INPUT 1

3.2 增加规则

# 拒绝所有
sudo iptables -I INPUT 6 -p TCP --dport 8080 -j DROP

# 接受某个源IP
sudo iptables -I INPUT 6 -p TCP -s 192.168.1.1 --dport 8080 -j ACCEPT

# IP范围匹配
sudo iptables -A INPUT 6 -p TCP -m iprange --src-range 192.168.1.5-192.168.1.124 --dport 8080 -j ACCEPT

# 多个端口
sudo iptables -I INPUT 6 -p TCP -m multiport --dport 80,443 -j ACCEPT
  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值