防火墙概述
防火墙是一种高级访问控制设备,置于不同的网络安全域之间一系列组件的组合,它是不同网络安全域间通信的唯一通道,能根据相关的安全策略控制控制进出网络的访问行为。
防火墙的作用
- 保护内部的网络免受外部Internet恶意的攻击
- 创建安全域
- 加强机构的安全管理策略
防火墙的历程
防火墙 | 工作范围 | 判断信息 |
---|---|---|
包过滤防火墙 | 网络层、传输层(3-4层) | 五元组 |
应用代理 | 7层应用层 | 所有应用层的信息包 |
状态检测 | 数据链路层、网络层、传输层(2-4层) | IP地址、端口号、TCp标记 |
入侵检测系统(IDS) | 2-7层 | 抵御2-7层已知威胁 |
入侵防御系统(IPS) | 2-7层 | 能够主动检测和防御 |
web应用防火墙(WAF) | 应用层(7层) | 用来保护web应用 |
防病毒网关(AV) | 2-7层 | 基于网络侧识别病毒文件 |
下一代防火墙(NGFW) | (2-7层) | IDS,FW,IPS,AV,WAF |
- 包过滤防火墙
包过滤是最早的防火墙技术,根据数据包头的信息和过滤的规则阻止或允许数据包通过防火墙
优点:速度快、对用户透明、配置简单规则很容易
缺点:安全性低、过滤配置完备性难以校验、不能检查应用层数据、没有用户和应用验证
- 应用代理防火墙
工作在应用层,核心是代理进程,每一种应用代理一个代理进程,实现监控和控制层通信流
自适应代理防火墙:在每个连接通信开始的时候仍然需要在应用层接受检测,而后面的包可以经过安全规则由自适应代理程序自动的选择是使用包过滤还是代理
- 状态防火墙
工作在传输层,使用各种状态表来追踪活跃的TCP会话
优点:更高安全性、高效性、应用范围广
缺点:不能对应用层数据进行控制、不能产生高层日志、配置复杂
- UTM 统一威胁感知
集合了之前所有的安全防护功能
- 下一代防火墙
必须有标准的防火墙功能,如NAT、状态检测、VPN、IPS,AV等功能
- 云安全,云上防火墙
随着云业务发展,云上的安全变得更加重要,东西向的流量需要进行管控
防火墙的功能
- 访问控制
- 地址转换
- 网络环境支持
- 宽带管理功能
- 入侵检测和防御攻击
- 用户认证
- 高可用性
防火墙性能指标
吞吐量 时延 丢包率 背靠背 并发连接数:基于传输层
数据包过滤防火墙
包过滤是一种保安机制,它控制哪些数据包可以进出网络而哪些数据包应被网络拒绝
数据包过滤的安全策略方式
- 源地址
- 目的地址
- 源目端口号
- 标志位
- 数据包传送使用的数据包
包过滤规则的配置
协议的双向性:
协议总是双向的,协议总会有一个发送方和一个接收方,在指定规则时,要注意包的来源和去向
默认允许和默认拒绝:
安全策略有两种方法,默认拒绝和默认允许,从安全角度来看,用默认的拒绝应该更加合适。
包过滤器的规则
- 包过滤标准必须由包过滤设备端口存储起来,这些包过滤标准叫包过滤规则
- 当包到达端口时,对包的报头进行语法分析,大多数包过滤设备只检查IP、TCP或UDP报头中的字段,不检查包体的内容
- 包过滤器规则以特殊的方式存储
- 如果一条规则阻止包传输或接收,此包便不被允许通过
- 如果一条规则允许包传输或接收,该包可以继续处理
- 如果一个包不满足任何一条规则 该包被阻塞
包过滤软件IPTABLES规则的配置
filter表中进行规则的设置:
iptables -t filter -A INPUT -s 10.1.1.3 -j ACCEPT允许源地址为10.1.1.3进入
iptables -t filter -A INPUT ! -s 10.1.1.3 -j ACCEPT不允许源地址为10.1.1.3进入
iptables -t filter -A INPUT -s 10.1.1.3 -j DROP拒绝源地址为10.1.1.3进入
iptables -t filter -A OUTPUT -d 10.1.1.3-j DROP丢弃到达目标地址为10.1.1.3的包iptables -t filter -A OUTPUT ! -d 10.1.1.3 -j ACCEPT丢弃到达目标地址为10.1.1.3的包
iptables -t filter -A INPUT -d 10.1.1.2 -j DROP丢弃所有到目标地址10.1.1.2的包iptables -t filter -A OUTPUT -s 10.1.1.2 -j ACCEPT 源地址为10.1.1.2出去的包全部允许
iptables
iptables -nL
-n 表示不对 IP 地址进行反查,加上这个参数显示速度将会加快。
-v 表示输出详细信息,包含通过该规则的数据包数量、总字节数以及相应的网络接口。
显示详细的信息:
[root@localhost ~]# iptables -L --line-number
iptables内置模块
多端口指定:
multiport
[root@localhost ~]# iptables -t filter -I INPUT -m multiport -p tcp --dports 20:22,80 -j ACCEPT
指定IP地址范围:
iprange
[root@localhost ~]# iptables -t filter -I INPUT -m iprange --src-range 10.1.1.2-10.1.1.10 -p tcp --dport 80 -j ACCEPT
被动模式:ftp
[root@localhost ~]# iptables -t filter -A INPUT -p tcp --dport 20:21 -j ACCEPT
开启端口的访问
[root@localhost ~]# iptables -t filter -A OUTPUT -p tcp --sport 20:21 -j ACCEPT
限制ftp的数据传输的端口
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf
pasv_min_port=2000
pasv_max_port=3000
[root@localhost ~]# iptables -t filter -A INPUT -p tcp --dport
2000:3000 -j ACCEPT
[root@localhost ~]# iptables -t filter -A OUTPUT -p tcp --sport 2000:3000 -j ACCEPT
状态连接:
state
[root@localhost ~]# iptables -t filter -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
指定mac地址的范围:
-m mac --mac-source
设置tcp数据包的标志位的规则:
[root@localhost ~]# iptables -A INPUT -p tcp --dport 23 --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN -j REJECT
[root@localhost ~]# iptables -A INPUT -p tcp --dport 23 --tcp-flags ALL SYN -j REJECT
[root@localhost ~]# iptables -A INPUT -p tcp --dport 23 --syn -j REJECT
-p tcp --tcp-flags LIST1 LIST2
匹配指定的TCP标记,有两个参数列表,列表内部用逗号为分隔符,两个列表之间用空格分开,
LIST1用作参数检查,LIST2用作参数匹配。可用标志有:
SYN( 同步; 表示开始会话请求 ), ACK(应答),
FIN(结束; 结束会话),RST(复位;中断一个连接) ,
PSH(推送; 数据包立即发送),URG(紧急 ),
ALL(指选定所有的标记),NONE(指未选定任何标记)
更改默认规则:
iptables -P OUTPUT ACCEPT
有关IPTABLES详细的介绍后面出文介绍
选择防火墙的原则
- 防火墙自身的安全性
只有当防火墙自身设备的安全性完备时,才能为系统提供更安全的访问控制功能 - 考虑特殊的需求
包过滤防火墙的主要功能是进行包的过滤,但也具有其他的功能,例如:IP地址转换,双重DNS,VPN虚拟企业网络,病毒扫描,特殊的控制需求 - 选择原则
- 防火墙需要保护整个网络的安全
- 防火墙必须能弥补其他操作系统的不足
- 防火墙具有不同平台的选择
- 防火墙具有完善的售后服务
防火墙的功能
地址转换NAT
IP地址总共32位,大概43亿,在2019年正式使用完全部的IP地址
地址分为:
- 公有地址
- 私有地址 不会在公网上分配,不需要申请就可以使用
RFC规定的三类私有地址如下:
A类:10.0.0.0/8
B类:172.16.0.0/16
C类:192.168.0.0/24
为了减缓IP地址枯竭的问题,使用NAT技术来作为IPv6之前的过渡
NAT通常部署在一个组织出口的地方,用于私有网络访问外部网络或者外部网络访问私有网络
作用:缓解ipv4地址枯竭的速度、保护内网安全
SNAT:源地址NAT,对源地址做地址转换,通常用于内网用户访问公网地址
静态模式:源IP地址和IP地址一一映射
动态模式:多对多的转换,IP地址先到先得
动态端口模式:多对多得转换,不仅会做源IP地址得转换,同时对端口进行转换
DNAT:目的地址转化,用于外网服务终端访问内网服务器的场景
NAT的局限性:
- NAT违反了IP地址结构的模型的设计原则。每个地址应该标识一个网络连接
- NAT违反了基本的网络分层结构模型的设计原则,即第N层应不能修改N+1层报文头内容,而NAT破坏了各层独立的原则
- 多通道协议报文内部携带了IP地址信息,而NAT只能修改报文头部的IP地址和端口,NAT需要与其他技术像配合