[Linux安全运维] iptables包过滤

前言

防火墙是网络安全中非常重要的设备,是一种将内部网络和外部网络隔离开的技术。简单来说,防火墙技术就是访问控制技术,由规则和动作组成。

1. Linux 包过滤防火墙

1 .1 概述

iptables: 指的是管理Linux防火墙的命令程序,主要是针对网络层的,对象是IP数据包,这也是为什么叫做包过滤。

1 .2 四表五链结构

iptables的结构可以概括为四表五链

表中存放的是链,链中存放的是规则

1 . 2 .1 规则表

表分为四类:

规则表作用说明
raw流量跟踪确定是否对该数据包进行状态跟踪
mangle流量修改为数据包设置标记,负责对数据包进行修改和追踪
nat地址转换修改数据包中的源、目标IP地址或端口
filter过滤、筛选确定是否放行该数据包
1 . 2 .2 规则链

对数据包进行过滤和处理,链中存放着各种防护墙规则。

规则链作用说明
INPUT处理入站数据包数据访问的时候限制规则编写的位置
PREROUTING在进行路由选择前出处理数据包
FORWARD处理转发数据包是否允许数据进行转发
POSTROUTING在进行路由选择后处理数据包
OUTPUT处理出站数据包数据包向外方式所写的规则限制
1 . 2 .3 表链结构关系图

在这里插入图片描述

1 . 2 .4 匹配流程

表之间的顺序:raw -> mangle -> nat -> filter。

链路之间的顺序:

  • 入站:PREROUTING INPUT
  • 出站:OUTPUT POSTROUTING
  • 转发:PREROUTING FORWARD POSTROUTING

1 .3 iptables 命令

1 . 3 .1 语法结构
iptables [-t 表名] 选项 [数字] 链名 [匹配条件] [-j 控制类型]

核心思路: iptables操作哪张表、哪条链,符合什么流量,执行什么动作。

注意事项:

  • 不指定表名时,默认指filter表
  • 不指定链名时,默认指表内所有链
  • 必须设置匹配条件,除非设置链的默认策略
  • 选项、链名、控制类型使用大写,其他用小写
  • 不指定序号时,默认第一条规则
  • 如果匹配到了规则,立即执行动作,结束匹配
  • 如果没有匹配到规则,执行默认动作
1 . 3 .2 常见控制类型
控制类型说明
ACCEPT允许通过
DROP丢弃
REJECT解决通过,必要时会给提示
LOG记录日志信息,然后传给下一条规则进行匹配
1 . 3 .3 选项
类别选项说明
1. 添加新规则-A在链的末尾追加一条规则
-I在链的开头(或者指定序列号)插入一条规则
2. 查看规则表-L列出所有的规则条目
-n以数字形式显示地址、端口等信息
-v以更详细的方式显示规则信息
-line-numbers查看规则时,显示规则的序号
3. 删除、清空规则-D删除链内只当序号(或内容)的一条规则
-F清空所有的规则
4. 设置默认策略-P为指定的链设置默认规则

例子:

# 规则添加
# 插入一条规则,允许访问192.168.1.120
iptables -I INPUT -s 192.168.1.120 -j ACCEPT
# 追加一条规则,解决访问192.168.1.120
iptables -A INPUT -s 192.168.1.120 -j REJECT

# 查询信息
# 查看指定nat表,默认不加 -t 就是指filter表
iptables -t nat -L
# 查看指定raw表
iptables -t raw -L
# 列出INPUT链的详细信息
iptables -vL INPUT

# 规则删除
# 删除第2条规则
iptables -D INPUT 2

# 设置默认规则
# 将nat表的INPUT来拿的默认策略设置为ACCEPT
iptables -t nat -P INPUT ACCEPT
1 . 3 .4 匹配条件

匹配条件分为三种:通用匹配隐含匹配显示匹配

1)通用匹配

独立使用,可以直接使用。

匹配方式参数
协议匹配-p 协议名 {all | tcp | udp | icmp}
地址匹配-s 源地址
-d 目的地址
接口匹配-i 入站网卡
-o 出站网卡

例子:

# 允许所有的TCP协议进入
iptables -A INPUT -p tcp -j ACCEPT
# 开启ssh 22端口
iptables -A INPUT -p tcp --dport ACCEPT

2)隐含匹配

要求以特定的协议匹配为前提。

匹配方式选项
端口匹配–sport 源端口
–dport 目的端口
TCP匹配–tcp-flags 检查范围 被设置的标记
ICMP匹配–icmp-type ICMP类型

例子:

# 允许外部主机ping内部主机
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

3)显示匹配

要求以"-m 扩展模块"的形式指出类型。

匹配方式选项
多端口匹配-m multiport --sport 源端口列表
-m multiport --drort 目的端口列表
IP 范围匹配-m iprange --src-range IP范围
MAC 地址匹配-m mac --mac-source MAC地址
连接状态匹配-m state --state 连接状态

例子:

# 允许22、80端口进入并开启ssh协议
iptables -I INPUT -p ssh -m multiport --dport 22,80 -j ACCEPT
1 . 3 .5 规则备份还原

导出备份规则:

iptables-save > /opt/iprules_all.txt

导入还原备份规则:

iptables-restore < /opt/iprules_all.txt
  • 13
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值