iptables详解

一、iptables介绍

iptables :包过滤防火墙,是内核防火墙netfilter的管理工具。
核心:四表五链

iptables并不是真正意义上的防火墙,可以将它理解为一个客户端工具。
用户通过iptables这个客户端,将用户的安全设定执行到对应的“安全框架”--netfilter中。
netfilter才是正在的防火墙,netfilter位于内核空间。
而iptables是一个命令行工具,位于用户空间,通过这个命令行工具来操作netfilter。
netfilter/iptables组成Linux平台下的包过滤防火墙,它可以完成封包过滤、封包重定向和网络地址转换(NAT)等功能.

防火墙分类

(1)从逻辑上分类
主机防火墙:针对单个主机进行防护
网络防火墙:处于网络入口或者边缘,针对网络入口进行防护,服务于防火墙背后的本地局域网
(2)从物理上分类
硬件防火墙:在硬件级别实现部分防火墙功能,另一部分功能基于软件实现,性能高,成本高
软件防火墙:应用软件处理逻辑运行于通用硬件平台之上的防火墙,性能低,成本低

二、iptables四表五链详解

规则

防火墙的作用就在于对经过的报文匹配“规则”,然后执行对应的“动作”

规则:网络管理员预定义的条件,即如果数据包头符合这样的条件,就这样处理这个数据包。 规则存储在内核空间的信息包过滤表中。
规则指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP、SMTP)等。
当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accep)、拒绝(reject)和丢弃(drop)等。
等。 配置防火墙的主要工作就是添加、修改和删除这些规则。

匹配条件加上处理动作共同组成了规则

netfilter才是真正的防火墙,它是内核的一部分,所以,如果想要防火墙能够达到“防火”的目的,则需要在内核中设置关卡,所有进出的报文都要通过这些关卡。
经过检查后,符合放行条件的才能放行,符合阻拦条件的则需要被阻止。
于是,就出现了input关卡和output关卡,而这些关卡在iptables中被称为“链”。

五链:
INPUT
OUTPUT
PREROUTING:路由前
FORWARD:转发
POSTROUTING:路由后

表:把具有相同功能的规则的集合叫做“表”,不同的规则放置于不同的表中工作,在iptables中定义了四种表,每种表对应不同的功能。

说明
filter表 负责过滤功能
nat表 network address translation,网络地址转换功能;内核模块:iptable_nat
mangle表 拆解报文,做出修改,并重新分装的功能;iptable_mangle
raw表 关闭nat表上启用的连接追踪机制;iptable_raw

当iptables定义的四种表处于同一条“链”时,执行的优先级如下:
优先级次序(由高而低):raw–>mangle–>nat–>filter

PREROUTING raw表,mangle表,nat表
INPUT mangle表,filter表,(centos7中还有nat表,centos6中没有)
FORWARD mangle表,filter表
OUTPUT raw表,mangle表,nat表,filter表
POSTROUTING mngle表,nat表

iptables详解_第1张图片

三、iptables基本用法

匹配条件

基本匹配条件 扩展匹配条件
源地址Source IP 源端口Source Port
目标地址Destination IP 目标端口Destination Port

处理动作

动作 含义
ACCEPT 允许数据包通过
DROP 丢弃数据包,不给任何回应信息客户端过了超时时间才会有反应
REJECT 拒绝数据包通过,必要时会给数据发送端一个响应的信息
SNAT 源地址转换,解决内网用户用同一个公网地址上网的问题
MASQUERADE 是SNAT的一种特殊形式,适用于动态的、临时会变的ip上
DNAT 目标地址转换
REDIRECT 在本机做端口映射,80–>8080
LOG 在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则让下一条规则去匹配,也就是说除了记录以外不对数据包做任何其他操作

iptables参数

常用操作命令 说明
-A 在指定链尾部添加规则
-D 删除匹配的规则
-R 替换匹配的规则
-I 在指定位置插入规则(例:iptables -t filter -I INPUT 1 --dport 80 -j ACCEPT将规则插入到filter表INPUT链中的第一位上)
-L/S 列出指定链或所有链的规则
-F 删除指定链或所有链的规则
-N 创建用户自定义链
-X 删除指定的用户自定义链
-P 为指定链设置默认规则策略,对自定义链不起作用
-Z 将指定链或所有链的计数器清零
-E 更改自定义链的名称
-n ip地址和端口号以数字方式显示,不解析IP地址,直接显示出IP地址
-t 指定要操作的表,缺省时表示filter表
-v verbose,列出详细信息
–line-numbers 显示规则序号
-x 显示出计算器的精确值
常用规则匹配器 说明
-p tcp/udp/icmp/all 匹配协议,all会匹配所有协议
-s addr[/mask] 匹配源地址
-d addr[/mask]匹配目标地址
- -sport 匹配源端口(可指定连续的端口)如- -sport80
- -dport 匹配目的端口(可指定连续的端口)如- -dport80
-o interface 匹配出口网卡,只适用于FORWARD、POSTROUTING、OUTPUT(例:iptables -A FORWARD -o eth0)
-i interface 匹配入口网卡,只适用于PREROUTING、INPUT、FORWARD
- -icmp-type 匹配icmp类型(使用iptables -p icmp -h可查看可用的icmp类型)
- -tcp-flags mask comp 匹配TCP标记,mask表示检查范围,comp表示匹配mask中的哪些标记(例:iptables -A FORWARD -p tcp --tcp-flags ALL SYN,ACK -j ACCEPT 表示匹配SYN和ACK标记的数据包)
-j DROP/ACCEPT/REJECT/LOG 拒绝/允许/拒绝并发出消息/在/var/log/messages中登记分组匹配的记录
-m mac -mac 绑定MAC地址
-m limit -limit 1/s 1/m 设置时间策略
-s 192.168.1.153或192.168.1.0/24 指定源地址或地址段
-d 192.168.1.153或192.168.1.0/24 指定目标地址或地址段
-s ! 192.168.1.0 指定源地址以外的

iptables -t 表 -A 链 匹配的条件 -j 动作
在这里插入图片描述
规则保存
[root@localhost ~]# service iptables save #保存规则到文件 /etc/sysconfig/iptables
[root@localhost ~]# iptables-save > /root/iptables #导出iptables模板
[root@localhost ~]# iptables-restore < iptables #导入iptables模板

你可能感兴趣的:(iptables详解)