netfilter:Linux2.4.x引入了一个子系统,它作为一个通用的、抽象的框架,提供一整套的hook函数的管理机制,使得诸如数据包过滤、网络地址转换(NAT)和基于协议类型的连接跟踪成为了可能。位于Linux内核中的包过滤功能体系,称为Linux防火墙的“内核态”。
iptables:与最新的3.5版本Linux内核集成的IP信息包过滤系统。如果Linux系统连接到因特网或LAN、服务器或连接LAN和因特网的代理服务器,则该系统有利于在Linux系统上更好地控制IP信息包过滤和防火墙配置。iptables位于/sbin/iptables,是用来管理防火墙规则的工具。iptables称为Linux防火墙的“用户态”。
包过滤主要是在网络层,针对IP数据包。包过滤主要体现在对包内的IP地址、端口等信息的处理上。
iptables其实并不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的“安全框架”中,这个“安全框架”才是真正的防火墙,这个框架的名字叫netfilter。netfilter才是防火墙真正的安全框架。netfilter位于内核空间。iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架。netfilter/iptables组成的Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换等功能。
iptables是一个基于命令行的防火墙工具,它使用规则链来允许/阻止网络流量。当一条网络连接试图在你的系统中建立时,iptables会查找其对应的匹配规则。如果找不到,iptables在作用是区分不同功能的规则,并且存储这些规则。iptables的结构是由表组成,而tables是由链组成,链又是由具体的规则组成。因此我们在编写iptables规则时,要先指定表,再指定链。tables的作用是区分不同功能的规则,并且存储这些表。
CentOS 7之后系统默认使用Firewalld防火墙,这里如果要使用iptables需要进行安装并停用Firewalld防火墙。
基于防火墙策略设置的各种防护规则,防火墙规则的执行顺序认为从前到后依次执行、遇到匹配的规则就不在向下检查,如果遇到不匹配的规则则会继续向下进行。