IPtables只是Linux防火墙的管理工具而已,位于/sbin/iptables。真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构。
安装:yum -y install iptables-services
启动:systemctl start iptables //启动iptables
1 四表五链
接收过程:
Linux 在网络包接收在 IP 层的入口函数是 ip_rcv。网络在这里包碰到的第一个 HOOK 就是 PREROUTING。当该钩子上的规则都处理完后,会进行路由选择。如果发现是本设备的网络包,进入 ip_local_deliver 中,在这里又会遇到 INPUT 钩子。
iptables总共是有如下四表五链。
流转顺序:
1)入站数据流向:(PREROUTING——INPUT)当外界的数据包到达防火墙时,首先被PREROUTING链处理,然后进行路由选择,如果数据包的目标地址是本机,那么就将其传递给INPUT链进行处理,通过以后交给上层的应用程序进行响应
2)转发数据流向:(PREROUTING——FORWARD——POSTROUTING)当外界的数据包到达防火墙时,首先被PREROUTING链处理,然后进行路由选择,如果数据包的目标地址是其他外部地址,则将其传递给FORWARD链进行处理,最后交给POSTROUTING链进行处理
3)出站数据流向:(OUTPUT——POSTROUTING)防火墙本机向外部发送数据包时,首先被OUTPUT链处理,然后进行路由选择,再交给POSTROUTING链进行处理
发送过程:
Linux 在网络包发送的过程中,首先是发送的路由选择,然后碰到的第一个 HOOK 就是 OUTPUT,然后接着进入 POSTROUTING 链。
转发过程:
先是经历接收数据的前半段。在 ip_rcv 中经过 PREROUTING 链,然后路由后发现不是本设备的包,那就进入 ip_forward 函数进行转发,在这里又会遇到 FORWARD 链。最后还会进入 ip_output 进行真正的发送,遇到 POSTROUTING 链。
整体汇总就是:
2 命令介绍
命令格式如下:
Iptables -A INPUT -s any -d 192.168.70.140 --dport 80,443 -j ACCEPT
Iptables -A INPUT -s any -d any -j DROP
具体参数介绍:
选 项 | 功 能 |
---|---|
-A | 添加防火墙规则 |
-D | 删除防火墙规则 |
-I | 插入防火墙规则 |
-F | 清空防火墙规则 |
-L | 列出添加防火墙规则 |
-R | 替换防火墙规则 |
-Z | 清空防火墙数据表统计信息 |
-P | 设置链默认规则 |
注意: -A 是添加到规则的末尾;-I 可以插入到指定位置,没有指定位置的话默认插入到规则的首部。
触发动作 | 功 能 |
---|---|
ACCEPT | 允许数据包通过 |
DROP | 丢弃数据包 |
REJECT | 拒绝数据包通过 |
LOG | 将数据包信息记录 syslog 曰志 |
DNAT | 目标地址转换 |
SNAT | 源地址转换 |
MASQUERADE | 地址欺骗 |
REDIRECT | 重定向 |
其他常用命令:
- 查看规则 :iptables -nvL
- 把添加在第 6 行规则的 DROP 修改为 ACCEPT: iptables -R INPUT 6 -s 194.168.1.5 -j ACCEPT
- 删除添加的第 6 行的规则:iptables -D INPUT 6
3 保存恢复
iptables-save把规则保存到文件中,再由目录rc.d下的脚本(/etc/rc.d/init.d/iptables)自动装载,不然重启后会自动消失。
1)保存
service iptables save
会看到提示,防火墙规则保存在/etc/sysconfig/iptables文件内,这个文件就是iptables的配置文件。
2)备份
cp /etc/sysconfig/iptables /opt/myipt.rule
3)恢复
iptables-restore < /opt/myipt.rule
service iptables save