iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的"安全框架"中,这个"安全框架"才是真正的防火墙,这个框架的名字?.NETfilter 。
Netfilter是linux操作系统核心层内部的一个数据包处理模块,它具有如下功能:网络地址转换(Network Address Translate),数据包内容修改以及数据包过滤的防火墙功能!
iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架!
netfilter/iptables(下文中简称为iptables)组成Linux平台下的包过滤防火墙,一般Linux系统是默认自带启动的 。
查看是否启动:sysctl -p 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载!
文章插图
iptables是按照规则来办事的,我们就来说说规则(rules),规则其实就是网络管理员预定义的条件,规则一般的定义为"如果数据包头符合这样的条件,就这样处理这个数据包" 。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等 。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等 。配置防火墙的主要工作就是添加、修改和删除这些规则 。
iptables传输数据包的过程当我们启用了防火墙功能时,报文需要经过如下关卡,而这些关卡在iptables中不被称为"关卡",而被称为"链" 。也就是说,根据实际情况的不同,报文经过"链"可能不同 。
文章插图
所以,根据上图,我们能够想象出某些常用场景中,报文的流向:
到本机某进程的报文:PREROUTING --> INPUT
由本机转发的报文:PREROUTING --> FORWARD --> POSTROUTING
由本机的某进程发出报文(通常为响应报文):OUTPUT --> POSTROUTING
链(chains)我们知道,防火墙的作用就在于对经过的报文匹配"规则",然后执行对应的"动作",所以,当报文经过这些关卡的时候,则必须匹配这个关卡上的规则,但是,这个关卡上可能不止有一条规则,而是有很多条规则,当我们把这些规则串到一个链条上的时候,就形成了"链",每个经过这个"关卡"的报文,都要将这条"链"上的所有规则匹配一遍,如果有符合条件的规则,则执行规则对应的动作 。
文章插图
5种链
5种链的说明如下:
PREROUTING:数据包进入路由表之前
INPUT:通过路由表后目的地为本机
FORWARDING:通过路由表后,目的地不为本机
OUTPUT:由本机产生,向外转发
POSTROUTHING:发送到网卡接口之前
表(tables)每个"链"上都放置了一串规则,但是这些规则有些很相似,我们把实现相同功能的规则放在一起;我们把具有相同功能的规则的集合叫做"表",所以说,不同功能的规则,我们可以放置在不同的表中进行管理 。
iptables已经为我们定义了4个表: filter表、nat表、mangle表和raw表:每个表对应了不同的功能,而我们定义的规则也都逃脱不了这4种功能的范围 。
filter表:负责过滤功能,防火墙; 内核模块:iptables_filter
nat表:network address translation,网络地址转换功能; 内核模块:iptable_nat
mangle表:拆解报文,做出修改,并重新封装的功能; 内核模块: iptable_mangle
raw表:关闭nat表上启用的连接追踪机制; 内核模块:iptable_raw
表链关系某些"链"中注定不会包含"某类规则",让我们看看每个"链"上的规则都存在于哪些"表"中:
PREROUTING链 的规则可以存在于:raw表,mangle表,nat表 。
INPUT 链的规则可以存在于:mangle表,filter表,(centos7中还有nat表,centos6中没有) 。
推荐阅读
- Linux|彻底弃用Intel处理器:Linux之父把台式机、笔记本全换了
- AMD|Windows下干不过 AMD悄然在Linux系统上超越Intel
- Linux|Linux 5.19内核发布 支持国产CPU龙芯自研指令集
- Linux|国产操作系统上新:深度Deepin官宣23版本8月发布
- 电脑设置开启禁用网络安全防火墙 电脑防火墙在哪里设置
- 如何关闭防火墙(关闭Windows防火墙的四种方法)
- linux系统怎么关闭selinux?
- 如何发送邮件(如何用Linux命令行发送邮件)
- Linux通过特殊关键字查询文件路径
- linux系统搭建ftp服务器及创建用户
