linuxalienyan 2020-06-11
netfilter/iptables(简称为iptables)组成Linux平台下的包过滤防火墙,与大多数的Linux软件一样,这个包过滤防火墙是免费的,它可以代替昂贵的商业防火墙解决方案。
netfilter:指的是Linux内核中实现包过滤防火墙的内部结构,属于“内核态”(KernelSpace,又称内核空间)的防火墙功能体系;
Iptables:指的是用来管理Linux防火墙的命令程序,通常位于/sbin/iptables,属于“用户态”(UserSpace,又称用户空间)的防火墙管理体系;
所以其实iptables只是Linux防火墙的管理工具而已,真正实现防火墙功能的是 netfilter,它是Linux内核中实现包过滤的内部结构。
Cetnos7以上版本中替换了iptables变为firewalld作管理工具,配置方法有变化但内核还是通过netfilter实现。
Centos6中iptables默认已经安装可直接使用,Centos7中安装iptables替换默认firewalld步骤如下:
yum install -y iptabels-service systemctl stop firewalld systemctl disable firewalld systemctl start iptables systemctl enable iptables
iptables配置文件,服务管理:
/etc/sysconfig/iptables #iptbales规则存放文件 iptales-save > /etc/sysconfig/iptables #保存规则到配置文件 iptables-restore < /etc/sysconfig/iptables #恢复iptables配置文件 service iptales start/stop/restart/status/save #Centos6中服务管理 systemctl start/stop/restart/status iptables #Centos7中服务管理
默认4个规则表:
raw表:一般用作跳过nat或对数据包进行状态跟踪;
mangle表:一般用于修改数据包,如修改TOS/TTL或者设置Mark标记;
nat表:一般用于网络地址转换,如源地址转换和目的地址转换;
filter表:一般用于对数据包进行过滤;
默认5种规则链:
INPUT:处理入站数据包
OUTPUT:处理出站数据包
FORWARD:处理转发数据包
PREROUTING:在进行路由选择前处理数据包(做目标地址转换)
POSTROUTING:在进行路由选择后处理数据包(做源地址转换)
INPUT、OUTPUT链主要用在“主机型防火墙”中,即主要针对服务器本机进行保护的防火墙;
FORWARD、PREROUTING、POSTROUTING链多用在“网络型防火墙”中。
链、表的优先顺序:
表间优先顺序:
raw > mangle > nat > filter
链间匹配顺序:
入站数据:PREROUTING、INPUT
出站数据:OUTPUT、POSTROUTING
转发数据:PREROUTING、FORWARD、POSTROUTING
链内匹配顺序:
至上向下依次检查、匹配到对应规则即停止(LOG日志策略例外)
若在链内找不到匹配规则、则按照该链默认策略处理(未修改情况下、默认策略为允许)
iptables [-t 表名] 管理选项 [链名] [条件匹配] [-j 目标动作或者调整] 不指定表名、表示filter表 不指定链名、表示所有链