感谢支持
我们一直在努力

iptables常用命令和实例复习

一、IPTABLES的简介

1. 简介

IPTABLES/netfilter(http://www.netfilter.org) 其实大多数人都认为iptables是linux系统上的一个服务,其实不是的. 我们linux系统上的服务比如说httpd服务在启动起来的时候,是不是在后台启动一个相应的服务进程且在网卡上监听一个端口,而iptables却不然,那么iptables到底是什么呢?其实iptables只是一个工具而已.我们的linux系统有用户空间,和内核空间,而iptables有两个组件,一是netfilter, netfilter组件只是用来过滤防火墙规则,及作出相应的处理机制的,它是集成在内核中的一部分,也就是说它是工作在内核空间的,那么大家都知道用户是不可能直接跟内核空间打交道的,那么netfilter只是工作在内核空间对规则进行处理的,那么规则从何而来呢? 是从iptables的第二个组件iptables而来的,我们上面说了IPTABLES只是一个工作在用户空间的一个工具而已,那么用户就使用这个工具的一个命令来跟工作在内核空间中的netfiter组件打交道的.其实IPTABLES防火墙就是这样的.

二、IPTABLES的表和链

IPTABLES常用的表和链有三个filter表 nat表 mangle表, 和五个链 INPUT链 OUTPUT链 FORWARE链 POSTROUTING链 PREROUTING链, 下面来介绍下它们的各个功能呢个功能,

1.filter表

filter表主要是过滤数据包的,IPTABLES几乎所有的数据包过滤都在此表中实现的,filter表也是IPTABLES中默认的表,此表中还包含三个链如下

1.1 INPUT链

过滤所有的目标地址是本机的数据包

1.2 OUTPUT链

过滤所有从本机出去的数据包

1.3 FORWORD链

过滤所有从本机路过的数据包

2.nat表

nat表主要是用于做网络地址转换的(NAT) 在IPTABLES中可以做SNAT(源地址转换),DNAT(目标地址转换),PNAT(即跟SNAT差不多,不一样的是SNAT的源地址是固定的,而PNAT的源地址是不固定的,当使用ppp 或pppoe的方式连接互联网的时候一般适应这中) 。 nat表中包含两个链如下

2.1 PREROUTING链

在数据包到达防火墙的时候改变目标地址 DNAT应用于此链.

2.2 OUTPUT链

可以改变本地产生的数据包的目标地址

2.3 POSTROUTING链

在数据包离开防火墙的时候改变源地址,SNAT应用于次链

3. mangle表

mangle表主要是修改数据包头部信息的,此表中包含以下5条链

3.1 PREROUTING链,

在数据包进入防火墙之后,也称为路由前,

3.2 POSTROUTING链,

在数据包确定目标地址后,也称为路由后,

3.3 OUTPUT链

从本机出去的时间包路由前

3.4 INPUT链

数据包进入本机后,路由后

3.5 FORWARD链

第一次路由判断之后,最后一次路由判断之前改变数据包

三、IPABLES的状态

IPTABLES的状态跟踪连接有4种,分别是,NEW,ESTABLISHED,RELATED,INVALID,除了从本机出去的数据包有nat表的OUTPUT链处理外,其他说有的状态跟踪都在nat表中的PREROUTING链中处理,下面来说下4种状态是什么,

1,NEW状态

NEW状态的数据包说明这个数据包是收到的第一个数据包,

2,ESTABLISHED状态,

只要发送并接到应答,一个数据包的状态就从NEW变为ESTABLEISHED,而且该状态会继续匹配这个连接后继数据包,

3,RELATED状态

当一个数据包的状态处于ESTABLSHED状态的连接有关系的时候,就会被认为是RELATED,也就是说一个链接想要是RELATED状态,首先要有一个ESTABLISHED的连接,

4,INVALID状态

不能被识别属于哪个连接状态或没有任何关系的状态,一般这中数据包要被拒绝的

四、IPTABLES命令的使用详解

iptables在RHEL的系统上默认安装的, IPTABLES的命令选项主要分为这么几大类,规则管理,链管理,默认管理,查看,匹配条件,处理动作,基本应该就这些了吧,下面来一一说名,

1.规则管理类

#iptables -A 添加一条新规则

#iptables -I 插入一条新规则 -I 后面加一数字表示插入到哪行

#iptables -D 删除一条新规则 -D 后面加一数字表示删除哪行

#iptables -R 替换一条新规则 -R 后面加一数字表示替换哪行

2.链管理类

#iptables -F 清空链中的所有规则

#iptables -N 新建一个链

#iptables -X 删除一个自定义链,删除之前要保证次链是空的,而且没有被引用

#iptables -E 重命名链

3.默认管理类

#iptables -P 设置默认策略

4.查看类

#iptables -L 查看规则 -L还有几个子选项如下

#iptables -L -n 以数字的方式显示

#iptables -L -v 显示详细信息

#iptables -L -x 显示精确信息

#iptables -L –line-numbers 显示行号

5.条件匹配类

5.1 基本匹配

条件匹配也可以使用 ! 取反

-s 源地址

-d 目标地址

-p 协议{tcp|udp|icmp}

-i 从哪个网络接口进入,比如 -i eth0

-o 从哪个网络接口出去,比如 -o eth0

5.2扩展匹配

5.2.1隐含扩展匹配

-p {tcp|udp} –sport 指定源端口

-p {tcp|udp} –dport 指定目标端口

5.2.2显示扩展匹配

-m state –state 匹配状态的

-m mutiport –source-port 端口匹配 ,指定一组端口

-m limit –limit 3/minute 每三分种一次

-m limit –limit-burst 5 只匹配5个数据包

-m string –string –algo bm|kmp –string “xxxx” 匹配字符串

-m time –timestart 8:00 –timestop 12:00 表示从哪个时间到哪个时间段

-m time –days 表示那天

-m mac –mac-source xx:xx:xx:xx:xx:xx 匹配源MAC地址

-m layer7 –l7proto qq 表示匹配腾讯qq的 当然也支持很多协议,这个默认是没有的,需要我们给内核打补丁并重新编译内核及iptables才可以使用 -m layer7 这个显示扩展匹配,

6,处理动作类

-j ACCEPT 允许

-j REJECT 拒绝

-j DROP 拒绝并提示信息

-j SNAT 源地址转换

-j DNAT 目标地址转换

-j REDIRECT 重定向

-j MASQUERAED 地址伪装

-j LOG –log-prefix “说明信息,自己随便定义” 记录日志

赞(0) 打赏
转载请注明出处:服务器评测 » iptables常用命令和实例复习
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏