IPtables

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张图片

iptables总共是有如下四表五链。

IPtables_第2张图片

流转顺序:

IPtables_第3张图片

1)入站数据流向:(PREROUTING——INPUT)当外界的数据包到达防火墙时,首先被PREROUTING链处理,然后进行路由选择,如果数据包的目标地址是本机,那么就将其传递给INPUT链进行处理,通过以后交给上层的应用程序进行响应

2)转发数据流向:(PREROUTING——FORWARD——POSTROUTING)当外界的数据包到达防火墙时,首先被PREROUTING链处理,然后进行路由选择,如果数据包的目标地址是其他外部地址,则将其传递给FORWARD链进行处理,最后交给POSTROUTING链进行处理

3)出站数据流向:(OUTPUT——POSTROUTING)防火墙本机向外部发送数据包时,首先被OUTPUT链处理,然后进行路由选择,再交给POSTROUTING链进行处理

IPtables_第4张图片

发送过程:

Linux 在网络包发送的过程中,首先是发送的路由选择,然后碰到的第一个 HOOK 就是 OUTPUT,然后接着进入 POSTROUTING 链。

IPtables_第5张图片

转发过程:

先是经历接收数据的前半段。在 ip_rcv 中经过 PREROUTING 链,然后路由后发现不是本设备的包,那就进入 ip_forward 函数进行转发,在这里又会遇到 FORWARD 链。最后还会进入 ip_output 进行真正的发送,遇到 POSTROUTING 链。

IPtables_第6张图片

整体汇总就是:

IPtables_第7张图片

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

IPtables_第8张图片

具体参数介绍: 

选 项 功 能
-A 添加防火墙规则
-D 删除防火墙规则
-I 插入防火墙规则
-F 清空防火墙规则
-L 列出添加防火墙规则
-R 替换防火墙规则
-Z 清空防火墙数据表统计信息
-P 设置链默认规则

注意: -A 是添加到规则的末尾;-I 可以插入到指定位置,没有指定位置的话默认插入到规则的首部。 

 IPtables_第9张图片

触发动作 功 能
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

你可能感兴趣的:(计算机与网络,linux,运维)