iptables防火墙概述
linux系统的防火墙:IP信息包过滤u系统,它实际上由两个组件netfilter和iptables组成。
主要工作在网络层,针对IP数据包,体现在对包内的IP地址、端口、协议等信息的处理上。
netfilter和iptables之间的关系
netfilter
属于“内核态”(user apace,又称为内核空间)的防火墙功能体系。
是内核的一部份,又一些数据包过滤表组成,这些表包含内核用来控制数据包过滤处理的规则集。
iptables
属于“用户态”(user apace,又称为用户空间)的防火墙管理体系。
是一种用来管理linux防火墙的命令程序,它使插入、修改和删除数据包过滤表中的规则变得容易,通常位于/sbin/iptables文件下。
iptables四表五链
规则表的作用:容纳各种规则链
规则链的作用:容纳各种防火墙规则
结合:表中有链,链中有规则
四表
ram表: 确定是否对该数据包进行状态跟踪。包含两个规则链,OUTPUT、PREROUTING。
mangle表: 修改数据包内容,用来做流量整形的,给数据包设置标记。包含五个规则链,INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING。
nat表: 负责网络地址转换,用来修改数据包中的源、目标IP地址或端口。包含三个规则链,OUTPUT、PREROUTING、POSTROUTING。
filter表: 负责过滤数据包,确定是否放行该数据包(过滤)。包含三个规则链,INPUT、FORWARD、OUTPUT。
五链
INPUT:处理入站数据包,匹配目标IP为本机的数据包。
OUTPUT:处理出站数据包,一般不在此链上做配置。
FORWARD:处理转发数据包,匹配流经本机的数据包。
PREROUTING链:在进行路由选择前处理数据包,用来修改目的地址,用来做DNAT。相当于把内网中的80端口映射到路由器外网端口上。
POSTROUTING链:在进行路由选择后处理数据包,用来修改源地址,用来做SNAT。相当于内网通过路由器NAT转换功能实现内网主机通过一个公网IP地址上网
表与规则链的匹配顺序
规则链内的匹配顺序
主机型防火墙 :
入站数据(来自外界的数据包,且目标地址是防火墙本机) : PREROUTING --> INPUT --> 本机的应用程序
出站数据(从防火墙本机向外部地址发送的数据包) :本机的应用程序–> OUTPUT --> POSTROUTING 网络型防火墙
转发数据(需要经过防火墙转发的数据包) : PREROUTING --> FORWARD --> POSTROUTING
内核中数据包的传输过程
当一个封包进入网卡,首先检查 Prerouting,然后检查目的 IP 判断是否需要转送出去,如果来自本机封包则会跳到input进行过滤其次检查OUTPUT 以及 Postrouting 。如果封包需转送处理则会跳入Forward 进行过滤,其次检查 Postrouting。过程中如果符合某条规则将会进行处理 。
iptables的安装
centos7默认使用firewalld防火墙,没有安装iptables,若想使用iptables防火墙。必须关闭firewalld防火墙,在安装iptables。
systemctl stop firewalld #关闭firewalld防火墙
systemctl disabie firewalld.service #取消firewalld防火墙开机自启
yum install iptables iptables-services -y#安装iptables防火墙和iptables-services管理程序
systemctl start iptables.service #开启iptables防火墙开启
iptables防火墙的配置方法
iptables #命令行
system- config- firewall #图形化界面(centos7没办法使用)
iptables命令行配置方法
格式
iptables [-t 表名] 管理选项 [链名] [匹配条件] [-j 控制类型]
注意事项:
不指定表名时,默认指filter表
不指定链名时,默认指表内的所有链
除非设置链的默认策略,否则必须指定匹配条件
选项、链名、控制类型使用大写字母,其余均为小写
常用的控制类型
常用的管理选项
查看规则列表
清空规则列表
设置默认策略
iptables 的各条链中,默认策略是规则匹配的最后一个环节——当找不到任何一条能够匹配数据包的规则时,则执行默认策略。默认策略的控制类型为 ACCEPT(允许)、DROP(丢弃)两种。例如,执行以下操作可以将 filter 表中 FORWARD 链的默认策略设为丢弃, OUTPUT 链的默认策略设为允许