什么是防火墙
防火墙是一种网络安全设备或软件,用于监控和控制网络流量,以保护网络免受未经授权的访问、恶意攻击和数据泄露等威胁。
防火墙的作用
1. 访问控制:防火墙可以根据规则和策略,限制和过滤网络流量,只允许经授权的流量通过,阻止未经授权的流量进入网络。
2. 威胁防御:防火墙可以监控网络流量、检测和阻止恶意攻击,如网络嗅探、入侵尝试、恶意软件传播等。
3. 数据过滤和策略实施:防火墙可以根据预定义的规则过滤和处理数据流量,并实施特定的网络策略,如端口转发、地址转换等。
4. VPN支持:一些防火墙还提供虚拟专用网络(VPN)功能,用于安全地远程访问和连接组织的网络资源。
防火墙的类型
1. 网络层防火墙(Packet Filtering Firewall):基于网络层的IP、端口和协议等特征,过滤和控制数据包的转发。
2. 应用层防火墙(Application Layer Firewall):在网络层的基础上,根据应用层协议和内容进行更精细的过滤和控制,如HTTP、FTP、SMTP等。
3. 状态感知防火墙(Stateful Firewall):对网络连接进行状态跟踪和管理,可以检测和过滤具有恶意行为的连接。
4. 下一代防火墙(Next-Generation Firewall):整合了传统防火墙的功能,并结合了更高级的安全功能,如入侵防御、反病毒、网关防护等。
5. 代理防火墙(Proxy Firewall):代理所有网络流量,为内部网络和外部网络之间建立隔离,对流量进行深度检查和策略控制。
6. 云防火墙(Cloud Firewall):部署在云平台上的防火墙,用于保护云环境中的虚拟机和云服务。
不同类型的防火墙具有各自的特点和适用场景,可以根据实际需求选择合适的防火墙来保护网络安全。
常用防火墙品牌
硬件防火墙:
Cisco ASA
Palo Alto Networks
Fortinet Fortigate
Check Point Firewall
Juniper Networks SRX Series
SonicWall NSA Series
Sophos XG Firewall
Barracuda NextGen Firewall
WatchGuard Firebox
Huawei USG Firewall
软件防火墙:
Windows Defender Firewall (Microsoft)
Norton Firewall (NortonLifeLock)
McAfee Firewall (McAfee)
ZoneAlarm Firewall (Checkpoint Software Technologies)
Comodo Firewall (Comodo)
AVG Firewall (AVG Technologies)
Avast Firewall (Avast Software)
Bitdefender Firewall (Bitdefender)
Kaspersky Internet Security (Kaspersky Lab)
ESET Smart Security (ESET)
这些品牌都是在硬件和软件防火墙领域具有声誉和广泛使用的品牌,它们提供了多种功能和解决方案,以保护企业和个人免受网络威胁。
iptables
iptables是什么?
iptables不是防火墙,是防火墙用户代理用于把用户的安全设置添加到“安全框架”中 “安全框架”是防火墙
“安全框架”的名称为netfilter
netfilter位于内核空间中,是Linux操作系统核心层内部的一个数据包处理模块iptables是用于在用户空间对内核空间的netfilter进行操作的命令行工具
netfilter/iptables功能
netfilter/iptables可简称为iptables,为Linux平台下的包过滤防火墙,是开源的,内核自带的,可以代替成本较高的 企业级硬件防火墙,能够实现如下功能:
数据包过滤,即防火墙数据包重定向,即转发网络地址转换,即可NAT
注:
平常我们使用iptables并不是防火墙的“服务”,而服务是由内核提供的。
iptables概念
iptables工作依据 规则(rules)
iptables是按照规则(rules)来办事的,而规则就是运维人员所定义的条件;规则一般定义为“如果数据包头符合这样的 条件,就这样处理这个数据包”。
规则存储在内核空间的数据包过滤表中,这些规则分别指定了源地址、目的地址,传输协议(TCP、UDP、ICMP)和服 务类型(HTTP、FTP)等。
当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,比如放行(ACCEPT)、拒绝(REJECT)、 丢弃(DROP)等
配置防火墙主要工作就是对iptables规则进行添加、修改、删除等
iptables中链的概念举例说明:
当客户端访问服务器端的web服务时,客户端发送访问请求报文至网卡,而tcp/ip协议栈是属于内核的一部分,所 以,客户端的请求报文会通过内核的TCP协议传输到用户空间的web服务,而客户端报文的目标地址为web服务器所 监听的套接字(ip:port)上,当web服务器响应客户端请求时,web服务所回应的响应报文的目标地址为客户端地址, 我们说过,netfilter才是真正的防火墙,属于内核的一部分,所以,我们要想让netfilter起到作用,我们就需要在内 核中设置“关口”,所以进出的数据报文都要通过这些关口,经检查,符合放行条件的准允放行,符合阻拦条件的则被 阻止,于是就出现了input和output关口,然而在iptables中我们把关口叫做“链
INPUT:处理入站数据包OUTPUT:处理出站数据包
FORWARD:处理转发数据包(主要是将数据包转发至本机其它网卡)
当数据报文经过本机时,网卡接收数据报文至缓冲区,内核读取报文ip首部,发现报文不是送到本机时(目的ip 不是本机),由内核直接送到forward链做匹配,匹配之后若符合forward的规则,再经由postrouting送往下一 跳或目的主机。
PREROUTING:在进行路由选择前处理数据包,修改到达防火墙数据包的目的IP地址,用于判断目标主机
POSTROUTING:在进行路由选择后处理数据包,修改要离开防火墙数据包的源IP地址,判断经由哪一接口送往 下一跳
iptables中表的概念
每个“规则链”上都设置了一串规则,这样的话,我们就可以把不同的“规则链”组合成能够完成某一特定功能集合分 类,而这个集合分类我们就称为表,iptables中共有5张表,学习iptables需要搞明白每种表的作用。
filter: 过滤功能,确定是否放行该数据包,属于真正防火墙,内核模块:iptables_filter nat: 网络地址转换功能,修改数据包中的源、目标IP地址或端口;内核模块:iptable_nat mangle: 对数据包进行重新封装功能,为数据包设置标记;内核模块:iptable_mangle raw: 确定是否对数据包进行跟踪;内核模块:iptables_raw
security:是否定义强制访问控制规则;后加上的
iptables中表链之间的关系
我们在应用防火e墙时是以表为操作入口的,只要在相应的表中的规则链上添加规则即可实现某一功能。那么我们就应 该知道哪张表包括哪些规则链,然后在规则链上操作即可。
filter表可以使用哪些链定义规则:INPUT,FORWARD,OUTPUT
nat表中可以使用哪些链定义规则:PREROUTING,OUTPUT ,POSTROUTING,INPUT
mangle 表中可以使用哪些链定义规则:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING raw表中可以使用哪些链定义规则:PREROUTING,OUTPUT
iptables中表的优先级
raw-mangle-nat-filter(由高至低)
iptables规则匹配条件分类基本匹配条件:
源地址,目标地址,源端口,目标端口等
基本匹配使用选项及功能
- -p protocal指定规则协议,tcp(传输层) udp(传输层) icmp(网络层) ip(网络层)
- -s source 指定数据包的源地址,192.168.1.10
- -d destination指定目的地址
- -i 输入网卡接口 如:lo本地回环,ens33
- -o 输出网卡接口 如:ens37,ens33等
- ! 取 反
基本匹配的特点是:无需加载扩展模块,匹配规则生效
扩展匹配条件:
扩展匹配又分为显示匹配和隐式匹配。
扩展匹配的特点是:需要加载扩展模块,匹配规则方可生效。
隐式匹配的特点:使用-p选项指明协议时,无需再同时使用-m选项指明扩展模块以及不需要手动加载扩展模块; 显示匹配的特点:必须使用-m选项指明要调用的扩展模块的扩展机制以及需要手动加载扩展模块。
隐式匹配选项及功能
- -p tcp
- --sport 匹配报文源端口;可以给出多个端口,但只能是连续的端口范围
- --dport 匹配报文目标端口;可以给出多个端口,但只能是连续的端口范围
- -p udp
- --sport 匹配报文源端口;可以给出多个端口,但只能是连续的端口范围
- --dport 匹配报文目标端口;可以给出多个端口,但只能是连续的端口范围
- --icmp-type
- 0/0: echo reply 允许其他主机ping
- 8/0:echo request 允许ping其他主机
显示匹配使用选项及功能
multiport多端口
- iptables -I INPUT -d 192.168.115.3 -p tcp -m multiport --dports 22,80 -j ACCEPT
- 允许目标IP地址为192.168.115.3的TCP流量的目标端口为22和80的进入。也就是说,允许该主机接受来自端口22和80的TCP连接。
- iptables -I OUTPUT -s 192.168.115.3 -p tcp -m multiport --sports 22,80 -j ACCEPT
- 允许源IP地址为192.168.115.3的TCP流量的源端口为22和80的离开。换句话说,允许该主机发起到端口22和80的TCP连接。
iprange多ip地址
- iptables -A INPUT -d 192.168.115.3 -p tcp --dport 23 -m iprange --src-range 192.168.115.3-192.168.115.7 -j ACCEPT
- iptables -A OUTPUT -s 192.168.115.3 -p tcp --sport 23 -m iprange --dst-range 192.168.115.3-192.168.115.7 -j ACCEPT
time
iptables -A INPUT -d 192.168.2.10 -p tcp --dport 901 -m time --weekdays Mon,Tus,Wed,Thu,Fri --timestart 08:00:00 --timestop 18:00:00 -j ACCEPT
iptables -A OUTPUT -s 192.168.115.3 -p tcp --sport 901 -j ACCEPT
指定访问时间范围
connlimit
连接限制,根据每个客户端IP作并发连接数量限制。
- --connlimit-upto n 连接数小于等于n时匹配
- --connlimit-above n 连接数大于n时匹配
禁止TCP传输:
iptables -A INPUT -p tcp -j DROP
这条规则将阻止所有TCP流量进入系统。
验证发现ssh链接断掉
清空规则
链接恢复正常
禁止ICMP传输:
shell复制
iptables -A INPUT -p icmp -j DROP
这条规则将阻止所有ICMP流量进入系统。
主机ping百度发现不通
二号机ping主机发现ping不通
iptables -F清空规则
允许特定IP地址的所有流量通过:
iptables -A INPUT -s 192.168.115.4 -j ACCEPT
这条规则将允许源IP地址为192.168.115.4的所有流量进入系统。
允许特定端口的TCP流量通过:
iptables -A INPUT -p tcp --dport <Port_Number> -j ACCEPT
这条规则将允许目标端口为<Port_Number>的TCP流量进入系统。
允许特定协议的流量通过: 例如,允许ICMP流量进入系统:
iptables -A INPUT -p icmp -j ACCEPT
ssh验证
ping验证
阻止特定IP地址的所有流量:
iptables -A INPUT -s <IP_Address> -j DROP
这条规则将阻止源IP地址为<IP_Address>的所有流量进入系统。
转发流量到另一个IP地址和端口:
iptables -A PREROUTING -t nat -i <Interface> -p tcp --dport <Port_Number> -j DNAT --to-destination <Destination_IP>:<Destination_Port>
这条规则将通过NAT转发从指定接口和端口进入的TCP流量到另一个目标IP地址和端口