linux 的iptables 策略管理服务

IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统。如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置。
防火墙在做数据包过滤决定时,有一套遵循和组成的规则,这些规则存储在专用的数据包过滤表中,而这些表集成在 Linux 内核中。在数据包过滤表中,规则被分组放在我们所谓的链(chain)中。而netfilter/iptables IP 数据包过滤系统是一款功能强大的工具,可用于添加、编辑和移除规则。
虽然 netfilter/iptables IP 信息包过滤系统被称为单个实体,但它实际上由两个组件netfilter 和 iptables 组成。
netfilter 组件也称为内核空间(kernelspace),是内核的一部分,由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集。
iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否则需要下载该工具并安装使用它。

一、规则、表和链

1.规则(rules)

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

2.链(chains)

链(chains)是 数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。当一个数据包到达一个链时,iptables就会从链中 第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则iptables将继续检查下 一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。

3.表(tables)
表(tables)提供特定的功能,iptables内置了4个表,即raw表、filter表、nat表和mangle表,分别用于实现包过滤,网络地址转换和包重构的功能。

(1)RAW表

只使用在PREROUTING链和OUTPUT链上,因为优先级最高,从而可以对收到的数据包在连接跟踪前进行处理。一但用户使用了RAW表,在 某个链上,RAW表处理完后,将跳过NAT表和 ip_conntrack处理,即不再做地址转换和数据包的链接跟踪处理了.

(2)filter表

主要用于过滤数据包, 该表根据系统管理员预定义的一组规则过滤符合条件的数据包。对于防火墙而言,主要利用在filter表中指定的规则来实现对数据包的过滤。Filter表 是默认的表,如果没有指定哪个表,iptables 就默认使用filter表来执行所有命令,filter表包含了INPUT链(处理进入的数据包),RORWARD链(处理转发的数据包),OUTPUT 链(处理本地生成的数据包)在filter表中只能允许对数据包进行接受,丢弃的操作,而无法对数据包进行更改
    INPUT链 – 处理来自外部的数据。
    OUTPUT链 – 处理向外发送的数据。
    FORWARD链 – 将数据转发到本机的其他网卡设备上。
 

(3)nat表

主要用于网络地址转换 NAT,该表可以实现一对一,一对多,多对多等NAT 工作,iptables就是使用该表实现共享上网的,NAT表包含了PREROUTING链(修改即将到来的数据包),POSTROUTING链(修改即 将出去的数据包),OUTPUT链(修改路由之前本地生成的数据包)
    PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。
    POSTROUTING链 – 处理即将离开本机的数据包。它会转换数据包中的源IP地址(source ip address),通常用于SNAT(source NAT)。
    OUTPUT链 – 处理本机产生的数据包。
 

(4)mangle表

主要用于对指定数据包 进行更改,在内核版本2.4.18 后的linux版本中该表包含的链为:INPUT链(处理进入的数据包),RORWARD链(处理转发的数据包),OUTPUT链(处理本地生成的数据 包)POSTROUTING链(修改即将出去的数据包),PREROUTING链(修改即将到来的数据包)

二、iptables 的配置

安装服务

启动服务并设置开机启动

iptables 的常用命令:

iptables    -nL     查看规则
iptables    -F     清空规则
iptables    -t     制定操作的表
iptables    -P     默认规则
iptables    -A     添加规则
iptables    -I     插入,可以指定规则添加的位置
iptables    -R     修改某条规则
iptables    -n     表示不做解析
iptables    -L     查看表的策略信息
iptables    -p     指定某个协议(tcp,udp)
iptables    -N     自动以添加链名
iptables    -E     修改规则链名称
iptables    -X     删除自定义链

查看filter 表中所有规则,此时没有做解析

查看filter 表中所有规则,此时做了解析

查看nat 表的所有规则

清空filter 表中的规则

往filter 表添加一条新的入站规则,丢弃172.25.254.200 主机发送给防火墙本机的所有数据包

往filter 表插入一条新的入站规则,拒绝172.25.254.150 ping 防火墙本机

查看filter 表中防火墙规则并显示规则编号

删除filter 表中INPUT 链的第一条规则

替换filter 表中INPUT 链的第二条规则,拒绝172.25.254.150之外的任何主机连接防火墙本机

修改filter 表中INPUT 链的默认规则为接受数据包

允许任何主机从eth0 网络接口访问防火墙本机的80 端口

三、iptables 设置地址伪装

服务端:ip地址分别为172.25.254.100 与1.1.1.100

客户端:ip地址为1.1.1.200

在路由后进行源地址转换

在客户端测试

ping 172.25.254.82 可以ping 通

在客户端利用ssh 连接172.25.254.82

显示,是以172.25.254.100 的身份连接的

四、iptables 设置端口转发

做目的地地址转换,转换为172.25.254.82

在客户端进行测试

用ssh 连接服务端,发现端口已经调转至172.25.254.82 且必须输入172.25.254.82的密码才能连接

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值