1.什么是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 或更高版本,否则需要下载该工具并安装使用它。
2.iptables表链结构
表名:
raw | 高级功能,如:网址过滤 |
mangle | 数据包修改(QOS),用于实现服务质量 |
net | 地址转换,用于网关路由器 |
filter | 包过滤,用于防火墙规则 |
规则链名:
INPUT链 | 处理输入数据包 |
OUTPUT链 | 处理输出数据包 |
PORWARD链 | 处理转发数据包 |
PREROUTING链 | 用于目标地址转换(DNAT) |
POSTOUTING链 | 用于源地址转换(SNAT) |
3.iptables 启动
systemctl stop firewalld
systemctl disable firewalld
systemctl start iptables.service
systemctl enable iptables.service
iptables -nL #查看iptables的设置
iptables -F #清空所有iptables更改
service iptables save #保存更改到/etc/sysconfig/iptables
4.iptables常用参数
-t<表>:指定要操纵的表;
-A:向规则链中添加条目;
-D:从规则链中删除条目;
-i:向规则链中插入条目;
-R:替换规则链中的条目;
-L:显示规则链中已有的条目;
-F:清楚规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源ip地址;
-j<目标>:指定要跳转的目标;
-i<网络接口>:指定数据包进入本机的网络接口;
-o<网络接口>:指定数据包要离开本机所使用的网络接口。
动作:
ACCEPT | 接收数据包 |
DROP | 丢弃数据包 |
REDIRECT | 重定向、映射、透明代理 |
SNAT | 源地址转换 |
DNAT | 目标地址转换 |
MASQUERADE | IP伪装(NAT),用于ADSL |
LOG | 日志记录 |
iptables -A INPUT -s 172.25.254.65 -p tcp --dport 80 -j REJECT #拒绝172.25.254.65访问80端口
iptables -nL
iptables -D INPUT 1 #删除INPUT链的第一行
iptables -D INPUT -s 172.25.254.65 -p tcp --dport 80 -j REJECT #按内容删除
iptables -N westos #添加自定义链名
iptables -E westos WESTOS #修改规则链名称
iptables -X WESTOS #删除自定义链
新建规则
删除规则
自定义链
5.用iptable命令实现端口伪装
实验环境: 一台主机为双网卡 ip分别为 eth0:172.25.254.133 eth1:172.25.0.222
另一台主机为单网卡,ip为172.25.0.233 设置其网关为172.25.0.222
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.133
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j DNAT --to-dest 172.25.0.222
用ip为172.25.0.222的主机连接172.25.254.65
使用 w -i 命令 查看是谁连接的这台主机,发现ip显示为172.25.254.133 则伪装成功