一、分类
1、逻辑上分为
(1)主机防火墙:针对单个主机进行防护
(2)网络防火墙:处于网络入口或者边缘
2、物理上分为
(1)硬件防火墙:硬件级别实现防火墙功能,性能高,成本高
(2)软件防火墙:应用软件处理逻辑运用于通用硬件平台,性能低,成本低
二、四表五链
1、四表
filter :负责过滤功能,防火墙,内核
nat :网络地址转换功能,内核模块
raw :关闭nat表上启用的链接追踪机制
mangle :拆解报文,作出修改,重新封装
表是链上具有相同高性能呢个规则的合集
2、五链
INPUT
OUTPUT
FORWARD
PREROUTING
POSTROUTING
四个表在同一个链中有优先次序:
raw>mangle>nat>filter
三、iptables
iptables并不是真正意义上的防火墙,可以理解为一个客户端工具。netfilter才是防火墙真正的安全框架,位于内核空间中。iptables是一个命令工具,位于用户空间,通过这个命令来操作netfilter。
1、防火墙配置
-t:指定要操作的表
-L:表示列出规则
-v:列出详细信息
-n:表示不解析地址,直接显示IP地址
–line-numbers:表示显示规则号
-x:显示出计数器的精确值
iptables -L 查看所有规则
iptables -F 清空规则
iptable -t filter -D INPUT 1 清除链的某个规则
iptables -t filter -L 查看指定表的规则
iptables -nvL --line-number
2、iptables常用命令
-A:将一个规则添加到链末尾
-I:将一个规则添加到第一行
-D:将指定链中的规则删除
-F:指定链中所有规则删除
-L:列出所有规则
-R:修改
iptables -t filter -I INPUT -s 192.168.1.69 -j ACCEPT
iptables -t filter -I INPUT -s 192.168.1.69 -j DROP
iptables -t filter -I INPUT -s 192.168.1.69 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.69 -p tcp --dport 80 -j DROP
-s:原地址
-d:目的地址
-p:协议 --dport 目标端口 --sport 源端口
3、target
ACCETP:接受
DROP:丢弃
REJECT:拒绝
4、创建自定义链
当默认的链规则非常多时不方便管理,可以选择创建自定义链
- 在filter表中创建web自定义链
iptables -t filter -N web
- 在INPUT链中引用刚才定义的链
iptables -t filter -I INPUT -p tcp --dport 80 -j web
- 将web自定义链命名为IN_WEB
iptables -E IN_WEB
删除自定义链需要满足两个条件:
1、自定义链没有被引用
2、自定义链中没有任何规则
如果没有在默认链中引用自定义链,自定义链中的内容不生效。
四、黑名单与白名单
1、黑名单机制
当链的默认策略为ACCEPT时,链中的规则应为DROP或REJECT,表示只有匹配到规则的报文才会被拒绝,没有被匹配到的报文则会被接受,这就是黑名单机制。
2、白名单机制
当链的默认策略为DROP时,链中的规则应为ACCEPT,表示只有匹配到的规则才会被接受,没有匹配到的则会被默认拒绝,此为白名单机制。
默认策略设置为DROP存在缺点,即在对应的链中没有设置任何规则时,管理员也会把自己拒之门外,一旦使用iptables -F清空规则,所有数据包都将无法进入。
注:若要使用白名单机制,最好将链的默认策略保持ACCEPT,然后将“拒绝所有请求”放在链的尾部,将放行规则写在前面。
五、NAT、SNAT、DNAT
NAT,译为“网络地址转换”,它可以修改报文的IP地址。通常会被集成到路由器、防火墙、或独立的NAT设备中。
在局域网内,大家的IP都是私有IP,但内部的网络在上网的时候都是经过路由器、防火墙的处理,对外显示的是路由器或防火墙的地址
SNAT地址转换
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to-source 192.168.1.120
- -t nat表示操作nat表
- -A POSTROUTING 表示将SNAT规则添加到POSTROUTING链末尾
- -s 192.168.2.0/24 代表来源网段
- -j SNAT 表示SNAT动作,对匹配的报文进行源地址转换
- –to-source 192.168.1.120 表示匹配到的报文源地址修改为192.168.1.10
DNAT地址转换
iptables -t nat -I PERROUTING -d 192.168.1.153 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.153:80