iptables基础知识详解-演道网

iptables命令是Linux上最常用的防火墙代理,可以很好得控制进出流量以及限速等。

iptables不是真正意义上得防火墙,我们应该把它理解为一个代理,用户通过iptables这个代理,将用户的安全设定执行到对应的”安全框架”里面,【netfilter】,这个框架才是真正的防火墙。

netfilter位于内核空间。

iptables是一个命令行工具,位于用户空间。

首先,我们介绍几个基本概念。

netfilter:

Linux操作系统核心层的内部的一个数据包处理模块,它有如下几个功能:

  • 网络地址转换(NAT)
  • 数据包内容修改
  • 数据包过滤【防火墙功能】

rules:

规则是网络管理员预定义的条件,一般形式为”如果符合XXX的条件,就XXX这样处理”。

规则存储在内核空间的信息包过滤表中,这些规则分别指定了源/目的地址,传输协议,服务类型等。

当数据包与规则匹配时,就按照定义的方法进行处理【放行,拒绝,丢弃】。

配置防火墙主要就是配置这些规则。

链:

内核要想实现报文的【放行,拒绝,丢弃】,就要在内核设置关卡,符合条件放行,不符合阻止,这些所谓的关卡就叫链,主要包括【input,output】。

而报文并不是每次的目标主机都是本机,当主机支持 IP_FROWARD时,我们可以把报文转发给其他服务器,也就是其他链,”路由前”,”转发”,”路由后”。

如图:

链为什么叫链呢?

我们前文已经说过,防火墙的作用就是对经过关卡的报文匹配规则,然后执行相对应的动作。但是关卡上的规则可能不止一条,有可能有很多条,每个经过此关卡的报文,都要将这些所有的规则都匹配一遍,所以,我们将这些关卡称之为链。

链名 功能
INPUT 处理输入数据包
OUTPUT 处理输出数据包
PORWARD 处理转发数据包
PREROUTING 用于目标地址转换DNAT
POSTOUTING 用于源地址转换SNAT

表:

我们把具有相同功能的规则的集合叫做表。

表名 功能 内核模块 主要用于
filter 负责过滤功能 iptables_filter 防火墙
nat 网络地址转换 iptable_nat 网关路由器
mangle 拆解报文,修改,重新封装 iptable_mangle 服务质量(QOS
raw 关闭nat表上启用的连接追踪机制 iptable_raw 高级功能,如:网址过滤

所有的规则都保存在这四张表中。

表的优先级为: raw -> mangle -> nat -> filter

动作:

accept 接收数据包
DROP 丢弃数据包
REDIRECT 重定向、映射、透明代理
SNAT 源地址转换
DNAT 目标地址转换
MASQUERADE IP伪装(NAT),用于ADSL
LOG 日志记录

接下来,我们介绍一下iptables的使用:

•基本命令

◦清除已有的规则

iptables -F

iptables -X

iptables -Z

◦查看已有的规则

iptables -vnL

iptables -L -n –line-numbers(删除前查看序号)

◦删除已有的规则

iptables -D INPUT 8

•开放指定端口

◦iptables -A OUTPUT -j  ACCEPT                      #允许所有本机向外的访问

◦iptables -A INPUT -p tcp –dport 22 -j ACCEPT    #允许访问22端口

◦iptables -A INPUT -j reject                      #禁止其他未允许的规则访问

◦iptables -A FORWARD -j REJECT                    #禁止其他未允许的规则访问

•屏蔽指定端口

◦iptables -I INPUT  -s 123.45.6.7  -j DROP          #屏蔽单个IP的命令

◦iptables -I INPUT -s 123.45.6.0/24  -j DROP        #封IP段即从123.45.6.1到123.45.6.254的命令

•相对复杂的命令

iptables -A INPUT -i br-ext -p tcp –dport 5355 -j DROP -m comment –comment ‘huwangxingdong’

链                接口              协议                  目的端口  丢弃        备注

•选项

-t<> 指定要操纵的表;
-A 向规则链中添加条目;
-D 从规则链中删除条目;
-i 向规则链中插入条目;
-R 替换规则链中的条目;
-L 显示规则链中已有的条目;
-F 清除规则链中已有的条目;
-Z 清空规则链中的数据包计算器和字节计数器;
-N 创建新的用户自定义规则链;
-P 定义规则链中的默认目标;
-h 显示帮助信息;
-p 指定要匹配的数据包协议类型;
-s 指定要匹配的数据包源ip地址;
-j<目标> 指定要跳转的目标;
-i<网络接口> 指定数据包进入本机的网络接口;
-o<网络接口<s

转载自演道,想查看更及时的互联网产品技术热点文章请点击http://go2live.cn