在Internet中,企业通过假设各种应用程序来为用户提供各种网络服务,如Web网站、电子邮件系统、FTP服务器、数据系统等,,那么如何来保护这些服务器呢,这边就需要用到防火墙!
linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙,基于内核编码实现,具有非常稳定的性能和极高的效率,被广泛应用。
netfilter和iptables都用来指linux防火墙,主要区别:
netfilter:指的是linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于内核态的防火墙功能体系。
iptables:指的用来管理linux防火墙的命令程序,属于用户态的防火墙管理体系。
1.iptables防火墙默认的规则表、链结构↓
4个规则表:
- filter表:确定是否放行该数据包(过滤)
- raw表:确定是否对该数据包进行状态跟踪
- mangle表:为数据包设置标记
- nat表:修改数据包中源、目标IP地址或端口
4个规则表中,mangle表和raw表的应用相对较少。
5种规则链:
- INPUT链:处理入站数据包
- OUTPUT链:处理出站数据包
- FORWARD链:处理转发数据包
- PREROUTING链:在进行路由选择前处理数据包
- POSTROUTING链:在进行路由选择后处理数据包
iptables管理着四个默认表和五种链,各种防火墙规则依次存放在链中,那么当一个数据包到达防火墙之后,优先会怎么选择呢?
2.数据包过滤的匹配流程
一.规则表中的顺序
二.规则链之间的顺序
当数据包经过每条规则链时,依次按第一条规则、第二条规则。。。。。的顺序进行匹配和处理。链内的过滤遵循“匹配即停止”的原则,一旦找到相匹配的规则,则不在检查本链内后续的其他规则,如果对比完整个链,找不到相匹配的规则,就按照规则链的默认策略进行处理。
语法构成:
- iptables 【-t 表名】选项【链名】【条件】【-j控制类型】
注意:不指定表名时,默认指filter表
不指定链名时,默认指表内的所有链
除非设置链的默认策略,负责必须指定匹配条件
选项、链名、控制类型使用大写,其余小写
数据包的常见控制类型:
- ACCEPT:允许通过
- DROP:直接丢弃
- REJECT:拒绝通过
- LOG:记录日志信息,然后传给下一条规则继续匹配