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,网络地址转换策略生效: