linux中的iptables服务

netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换(NAT)等功能。

iptables采用“表”和“链”的分层结构,在linux中iptables主要有三张表五条链:

三张表即filter表、nat表、mangle表,分别用于实现包过滤,网络地址转换、包重构(修改)功能

filter表有三个链:INPUT、FORWARD、OUTPUT
作用:过滤数据包 

Nat表有三个链:PREROUTING、POSTROUTING、OUTPUT
作用:用于网络地址转换(IP、端口)

Mangle表有五个链:PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
作用:修改数据包的服务类型等

其中每条链的意思分别为:

INPUT链:进来的数据包应用此规则链中的策略

OUTPUT链:出去的数据包应用此规则链中的策略

FORWARD链:转发数据包时应用此规则链中的策略

PREROUTING链:对数据包作路由选择前应用此链中的规则
(记住!所有的数据包进来的时侯都先由这个链处理)

POSTROUTING链:对数据包作路由选择后应用此链中的规则
(所有的数据包出去的时侯都先由这个链处理)

管理表和链的命令格式如下:

iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]
说明:表名、链名用于指定 iptables命令所操作的表和链;命令选项用于指定管理iptables规则的方式(比如:插入、增加、删除、查看等;条件匹配用于指定对符合什么样 条件的数据包进行处理;目标动作或跳转用于指定数据包的处理方式(比如允许通过、拒绝、丢弃等)

处理包的三种方式:

ACCEPT:允许数据包通过

DROP:直接丢弃数据包,不给任何回应信息

REJECT: 拒绝数据包通过,会给数据发送端一个响应的信息

常用相关参数有:-A 在指定链的末尾添加一条新的策略

                           -D  删除指定链中的某一条策略,可以按规则序号和内容删除

                           -I  在指定链中插入一条新的策略,默认在第一行添加

                           -E  重命名用户定义的链,不改变链本身策略

                           -F  清空所有策略

                           -N  新建一条用户自己定义的链

                           -X  删除指定表中用户自定义创建的链(对默认链无效)

                           -P  设置指定链的默认策略

下面简单介绍一下一些iptables命令的使用:

1.如图,输入iptables -nL 可以看到filter表中的默认策略:

2.输入service iptables save 可将当前的策略自动保存到/etc/sysconfig/iptables目录下:

3.cat /etc/sysconfig/iptables 可以看到保存的策略:

4.iptables -F 可清除当前策略,再用iptables -nL查看已经没有策略了:


5.iptables -P INPUT DROP 可将INPUT链的默认策略修改为DROP:

6.iptables -P INPUT ACCEPT 将INPUT链的默认权限改为允许

然后添加INPUT链下的策略: iptables -A INPUT -p tcp --dport 22 -s 172.25.254.121 -j ACCEPT

                                            iptables -A INPUT -p tcp --dport 22 -j DROP

表示只允许ip为172.25.254.121的主机可以使用SSH远程登陆本机

ip为172.25.254.121的主机在输入ip172.25.254.221主机的root用户密码后可以登陆:

ip为172.25.254.88的主机无法使用ssh服务远程登陆ip为172.25.254.221的主机:

7.iptables -D INPUT 1  删除INPUT链中的第一条策略,可以看到第一条策略已经被删除:

8.iptables -N WESTOS 自定义添加一条新链WESTOS

iptables -X WESTOS 删除自定义添加的链WESTOS



网络地址转换和ip伪装功能的实现设定:

1.首先,给ip为172.25.254.221的主机添加一块网卡eth1,设定ip为172.25.21.221:

将之前ip为172.25.254.121的主机ip改为172.25.21.121,网关设置为172.25.21.221:

ip为172.25.254.88的主机不做更改

2.在双网卡主机上面写入iptables策略,如图所示:

POSTROUTING链下的策略表示:当ip为172.25.21.121的主机在使用ssh服务远程连接ip为172.25.254.88主机时,ip伪装为

172.25.254.221(ip172.25.254.88的主机看到的是ip172.25.254.221主机登陆痕迹):

PREROUTING链下的策略表示:当ip为172.25.254.88的主机使用ssh服务远程连接ip为172.25.254.221的主机时,被ip为172.25.254.221

的主机通过路由转换功能转到ip为172.25.21.121的主机上(ip172.25.254.88的主机虽然连接的是172.25.254.221,但实际看到是ip172.25.21.121):

然后编辑文件:vim /etc/sysctl.conf  输入下图字符,打开内核路由功能:

sysctl -p 将更改刷新:

3.测试:POSTROUTING链下的策略

ip为172.25.21.121的主机使用ssh服务成功连接172.25.254.88的主机


然后在ip为172.25.254.88的主机上查看登陆痕迹,看到的是172.25.254.221


说明ip伪装策略设置生效

接着测试PREROUTING链下的策略

ip172.25.254.88的主机使用ssh服务远程登陆ip172.25.254.221的主机,输入密码登陆成功后,看到的主机

ip为172.25.21.121,网络地址转换策略生效:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章