一、 概述
按表现形式划分:
软件防火墙: 集成在系统内部,Linux系统: iptables、firewalld、ufw; windows系统下:
windows defender
硬件防火墙: 华为防火墙、思科防火墙、奇安信防火墙、深信服防火墙等
按技术划分:
包过滤防火墙: 检查数据包的源IP、目的IP、源端口、目的端口、TCP的syn控制位
七层防火墙: 除了上述检查外,还会检查数据内容
防火墙的作用:
阻止来自网络外部的攻击、进行流量控制
二、 Linux防火墙
防火墙结构
用户态:
iptables: 使用iptables命令对防火墙规则进行管理,必须深度理解网络技术和四表五链,对
于初学者或者网络技术不达标的人员不友好
firewalld:使用firewall-cmd命令对防火墙进行管理,采用的是区域划分的形式。不需要连接
底层的四表五链,对于初学者比较友好
ufw: 使用ufw命令对防火墙进行管理,命令简单易懂。
内核态:
四表: 从内核->用户的顺序: raw -> mangle -> nat -> filter
五链: input、output、forward、prerouting、postrouting
firewalld防火墙
区域分类
九大区域: block、dmz、drop、external、home、internal、public、trusted、work
区域功能:
public: 公共区域,默认区域
external: 外部区域 (连接外部网络,例如: internet网络)
dmz: 非军事化管理区域(内部的服务器放于该区域)
drop: 丢弃区域 (丢弃一切流量,不给出任何回应)
block: 阻塞区域 (拒绝任何流量,但给出回应)
firewall-cmd命令用法
命令分类:
查看:
查看所有区域的详细信息
[root@localhost ~]# firewall-cmd --list-all-zones
#查看指定区域的详细信息
[root@localhost ~]# firewall-cmd --list-all --zone=public
#查看指定区域的放行服务
[root@localhost ~]# firewall-cmd --list-services --zone=public
#查看指定区域的放行端口
[root@localhost ~]# firewall-cmd --list-ports --zone=public
#查看指定区域包含的网络接口
[root@localhost ~]# firewall-cmd --list-interfaces --zone=public
#查看指定区域的放心协议
[root@localhost ~]# firewall-cmd --list-protocols --zone=public
#查看指定区域的ICMP阻塞类型
[root@localhost ~]# firewall-cmd --list-icmp-blocks --zone=public
#查看指定区域的放行源地址
[root@localhost ~]# firewall-cmd --list-sources --zone=public
#查看指定区域的源端口
[root@localhost ~]# firewall-cmd --list-source-ports --zone=public
#查看指定区域的富规则
[root@localhost ~]# firewall-cmd --list-rich-rules --zone=public
#查看指定区域的转发端口
[root@localhost ~]# firewall-cmd --list-forward-ports --zone=public
#查看firewalld支持的服务类型
[root@localhost ~]# firewall-cmd --get-services
1
#查看firewalld的默认区域
[root@localhost ~]# firewall-cmd --get-default-zone
#查看firewalld支持的ICMP的阻塞类型
[root@localhost ~]# firewall-cmd --get-icmptypes
#查看firewalld所有的活动区域
[root@localhost ~]# firewall-cmd --get-active-zones
#查看指定网络接口所属区域
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33
#查看所有区域名称
[root@localhost ~]# firewall-cmd --get-zones
添加:
#添加指定服务到指定区域
[root@localhost ~]# firewall-cmd --add-service=http --zone=public
success
#添加端口到指定区域
[root@localhost ~]# firewall-cmd --add-port=80/tcp --zone=public
success
#添加指定协议到指定区域
[root@localhost ~]# firewall-cmd --add-protocol=ah --zone=public
success
#添加ICMP阻塞类型到指定区域
[root@localhost ~]# firewall-cmd --add-icmp-block=echo-request --zone=public
success
#windows端验证
C:\Users\zzh>ping 192.168.115.129
正在 Ping 192.168.115.129 具有 32 字节的数据:
来自 192.168.115.129 的回复: 无法访问目标主机。
来自 192.168.115.129 的回复: 无法访问目标主机。
来自 192.168.115.129 的回复: 无法访问目标主机。
#添加指定网络接口到指定区域
[root@localhost ~]# firewall-cmd --add-interface=ens33 --zone=work
success
#添加指定区域的放行源地址
[root@localhost ~]# firewall-cmd --add-source=192.168.1.0/24 --zone=work
success
#添加指定区域的放行源端口
[root@localhost ~]# firewall-cmd --add-source-port=999/tcp --zone=work
success
#添加转发端口到指定区域
[root@localhost ~]# firewall-cmd --add-forwardport=port=8080:proto=tcp:toport=80:toaddr=192.168.115.115 --zone=work
success
#添加地址转换功能到指定区域
[root@localhost ~]# firewall-cmd --add-masquerade --zone=work
success
#验证添加
[root@localhost ~]# firewall-cmd --list-all --zone=public
修改:
#修改默认区域
[root@localhost ~]# firewall-cmd --set-default-zone=work
success
#修改网络接口所属区域
[root@localhost ~]# firewall-cmd --change-interface=ens33 --zone=internal
success
[root@localhost ~]# firewall-cmd --change-zone=ens33 --zone=external
success
#追加指定区域的放行源地址
[root@localhost ~]# firewall-cmd --change-source=192.168.2.0/24 --zone=work
success
删除:
#删除指定服务到指定区域
[root@localhost ~]# firewall-cmd --remove-service=http --zone=public
success
#删除端口到指定区域
[root@localhost ~]# firewall-cmd --remove-port=80/tcp --zone=public
success
#删除指定协议到指定区域
[root@localhost ~]# firewall-cmd --remove-protocol=ah --zone=public
success
#删除ICMP阻塞类型到指定区域
[root@localhost ~]# firewall-cmd --remove-icmp-block=echo-request --
zone=public
success
#删除指定网络接口到指定区域
[root@localhost ~]# firewall-cmd --remove-interface=ens33 --zone=work
success
#删除指定区域的放行源地址
[root@localhost ~]# firewall-cmd --remove-source=192.168.1.0/24 --zone=work
success
#删除指定区域的放行源端口
[root@localhost ~]# firewall-cmd --remove-source-port=999/tcp --zone=work
success
#删除转发端口到指定区域
[root@localhost ~]# firewall-cmd --remove-forwardport=port=8080:proto=tcp:toport=80:toremover=192.168.115.115 --zone=work
success
#删除地址转换功能到指定区域
[root@localhost ~]# firewall-cmd --remove-masquerade --zone=work
success
#验证删除
[root@localhost ~]# firewall-cmd --list-all --zone=public
保存规则
#逐行规则保存
[root@localhost ~]# firewall-cmd --remove-masquerade --zone=work --permanent
#一次性保存所有规则
[root@localhost zones]# firewall-cmd --runtime-to-permanent
success
#保存的规则存储路径
/etc/firewalld/zones