当前位置:文档之家› iptables详解

iptables详解


添加新的规则

-A:在链的末尾追加一条规则 -I:在链的开头(或指定序号)插入一条规则
[root@localhost ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT [root@localhost ~]# iptables -I INPUT -p udp -j ACCEPT [root@localhost ~]# iptables -I INPUT 2 -p icmp -j ACCEPT -p 用来指定协议
[root@localhost ~]# iptables -t filter -I INPUT -p icmp -j REJECT
几个注意事项
不指定表名时,默认指 filter表 C:\Users\Administrator> ping 192.168.4.254 正在 Ping 192.168.4.254 具有 32 字节的数据: 不指定链名时,默认指表内的所有链 来自 192.168.4.254 的回复: 无法连到端口。 除非设置链的默认策略,否则必须指定匹配条件 来自 192.168.4.254 的回复: 无法连到端口。 阻止ping测试 ……
iptables的表、链结构3-1

规则链

规则的作用:对数据包进行过滤或处理 链的作用:容纳各种防火墙规则 链的分类依据:处理数据包的不同时机

默认包括5种规则链




INPUT:处理入站数据包 OUTPUT:处理出站数据包 FORWARD:处理转发数据包 POSTROUTING链:在进行路由选择后处理数据包 PREROUTING链:在进行路由选择前处理数据包
规则链之间的顺序



规则链内的匹配顺序


数据包过滤的匹配流程2-2

匹配流程示意图
网络A
本机的应用进程
路 由 选 择
网络B
raw:OUTPUT mangle:OUTPUT
入站数据流向
mangle:INPUT filter:INPUT
nat:OUTPUT filter:OUTPUT
出站数据流向
iptables的表、链结构3-2

规则表

表的作用:容纳各种规则链 表的划分依据:防火墙规则的作用相似 mangle表:为数据包设置标记 nat表:修改数据包中的源、目标IP地址或端口 filter表:确定是否放行该数据包(过滤)

默认包括3个规则表



iptables的表、链结构3-3
iptables的管理选项5-2

查看规则列表

-L:列出所有的规则条目 -n:以数字形式显示地址、端口等信息 -v:以更详细的方式显示规则信息 --line-numbers:查看规则时,显示规则的序号
[root@localhost ~]# iptables -L INPUT --line-numbers [root@localhost ~]# iptables -n -L INPUT Chain INPUT (policy ACCEPT) Chain INPUT (policy ACCEPT) num target prot opt source destination -n -L 可合写为 -nL target prot opt source destination 1 ACCEPT udp -- anywhere anywhere ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 2 ACCEPT icmp -- anywhere anywhere ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 3 REJECT icmp -- anywhere anywhere reject-with icmp-portREJECT icmp -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-portunreachable unreachable 4 ACCEPT tcp -- anywhere anywhere ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0
iptables的管理选项5-4

设置默认策略

-P:为指定的链设置默认规则
[root@localhost ~]# iptables -t filter -P FORWARD DROP [root@localhost ~]# iptables -P OUTPUT ACCEPT 默认策略要么是 ACCEPT、要么是DROP
netfilter是Linux核心中的一个通用架构,它提供 了一系列的“表”(tables),每个表由若干“链” (chains)组成,而每条链可以由一条或数条“规 则”(rules)组成。实际上,netfilter是表的容器, 表是链的容器,而链又是规则的容器。
1.规则(rules) 规则(rules)其实就是网络管理员预定义的条件, 规则一般的定义为“如果数据包头符合这样的条件,就 这样处理这个数据包”。规则存储在内核空间的信息包 过滤表中,这些规则分别指定了源地址、目的地址、传 输协议(如TCP、UDP、ICMP)和服务类型(如HTTP 、FTP和SMTP)等。当数据包与规则匹配时,iptables 就根据规则所定义的方法来处理这些数据包,如放行( accept)、拒绝(reject)和丢弃(drop)等。配置防火 墙的主要工作就是添加、修改和删除这些规则。
选项、链名、控制类型使用大写字母,其余均为小写
iptables的基本语法2-2
Байду номын сангаас
数据包的常见控制类型

ACCEPT:允许通过 DROP:直接丢弃,不给出任何回应 REJECT:拒绝通过,必要时会给出提示 LOG:记录日志信息,然后传给下一条规则继续匹配
iptables的管理选项5-1

默认的表、链结构示意图
raw 表
…… PREROUTING 链 …… OUTPUT 链
mangle 表
…… PREROUTING 链 …… POSTROUTING 链 …… INPUT 链 …… OUTPUT 链
nat 表
…… PREROUTING 链 …… POSTROUTING 链 …… OUTPUT 链

iptables


—— 上述2种称呼都可以表示Linux防火墙
Linux包过滤防火墙概述2-2

包过滤的工作层次

主要是网络层,针对IP数据包 体现在对包内的IP地址、端口等信息的处理上
应用层 传输层 网络层 链路层 外部网络
应用代理 传输层 网络层 链路层 网络层防火墙
应用层 传输层 网络层 链路层 受保护网络
filter 表
第1条规则 第2条规则 第3条规则 ……
INPUT 链
…… FORWARD 链 …… OUTPUT 链
…… FORWARD 链
数据包过滤的匹配流程2-1

规则表之间的顺序

manglenatfilter 入站:PREROUTINGINPUT 出站:OUTPUTPOSTROUTING 转发:PREROUTINGFORWARDPOSTROUTING 按顺序依次检查,匹配即停止(LOG策略例外) 若找不到相匹配的规则,则按该链的默认策略处理
3.表(tables) 表(tables)提供特定的功能,iptables内置了3个表,即 filter表、nat表和mangle表,分别用于实现包过滤,网络地址 转换和包重构的功能。 (1).filter表 主要用于过滤数据包,该表根据系统管理员预定义的一组规 则过滤符合条件的数据包。对于防火墙而言,主要利用在filter 表中指定的规则来实现对数据包的过滤。Filter表是默认的表, 如果没有指定哪个表,iptables就默认使用filter表来执行所有命 令。 (2).nat表 主要用于网络地址转换NAT (3).mangle表 主要用于对指定数据包进行更改
iptables的管理选项5-5

常用管理选项汇总
类别
添加新的规则 -I -L -n 查看规则列表 -v --line-numbers -D 删除、清空规则 -F 设置默认策略 -P 清空所有的规则 为指定的链设置默认规则 在链的开头(或指定序号)插入一条规则 列出所有的规则条目 以数字形式显示地址、端口等信息 以更详细的方式显示规则信息 查看规则时,显示规则的序号 删除链内指定序号(或内容)的一条规则
选项
-A 在链的末尾追加一条规则
用途
规则的匹配条件5-2

常见的通用匹配条件

协议匹配:-p 协议名 地址匹配:-s 源地址、-d 目的地址 接口匹配:-i 入站网卡、-o 出站网卡
[root@localhost ~]# iptables -I INPUT -p icmp -j DROP [root@localhost ~]# iptables -A FORWARD -p ! icmp -j ACCEPT [root@localhost ~]# iptables -A FORWARD -s 192.168.1.11 -j REJECT 叹号 ! 表示条件取反 [root@localhost ~]# iptables -I INPUT -s 10.20.30.0/24 -j DROP [root@localhost ~]# iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP [root@localhost ~]# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP [root@localhost ~]# iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP 外网接口
相关主题