一、前言
记录时间 [2024-04-26]
本文讲述了 Linux 系统的防火墙相关知识,包括 firewalld
防火墙工具的一系列操作,如开启、停用、开放端口等等,还有 start
和 enable
在用法上的区别。
二、防火墙概述
防火墙是一种网络安全设备或软件,用于监控和控制进出网络的数据流量。其主要目的是防止未经授权的访问和恶意攻击,确保网络的安全性和完整性。防火墙可以基于预定义的规则集,允许或阻止特定类型的流量通过。
防火墙可以配置允许或拒绝特定的端口、IP 地址、应用程序或数据包类型的流量。正确配置和管理防火墙是确保网络安全的重要步骤,需要根据组织的安全策略和需求进行定期审查和更新。
防火墙可以分为以下几种类型:
- 硬件防火墙:独立的物理设备,通常位于网络的边界,如路由器或专用的防火墙设备。它们通过检查进出的数据包来过滤流量。
- 软件防火墙:安装在计算机或服务器上的软件应用程序,可以检查本地或特定应用程序的流量,并按照预定规则进行过滤。
- 应用程序防火墙(WAF):这是一种专门针对 Web 应用程序的防火墙,可以检测和阻止 Web 应用程序中的恶意流量和攻击。
阿里云服务器具备两道防火墙,一道在 Linux 操作系统中配置,一道在阿里云安全组中配置。
1. 阿里云安全组
阿里云安全组(Security Group)是阿里云提供的一种虚拟防火墙服务,用于控制云服务器(ECS 实例)、负载均衡器、RDS 数据库等资源的入口和出口流量。安全组作为一种网络访问控制机制,允许或拒绝特定IP地址、端口和协议的数据包通过。
创建和管理安全组通常是通过阿里云控制台、命令行界面(CLI)或 API 进行的。在配置安全组规则时,应考虑实际的业务需求和安全策略,确保只允许必要的流量通过,同时保护云资源不受未经授权的访问和恶意攻击。
总的来说,阿里云安全组是一种有效的网络安全管理工具,可以帮助保护云环境中的资源,确保其安全、可靠和高效运行。
2. Linux 防火墙
操作系统中的防火墙通常是一种软件防火墙。软件防火墙是安装在操作系统上的应用程序,用于监控和过滤进出计算机的网络流量。它可以根据预定义的规则集来允许或阻止特定类型的数据包,从而提供基本的网络安全保护。
软件防火墙可以配置为:
- 允许或拒绝特定端口:设置规则,允许或拒绝特定端口上的进入或出去的流量。
- 管理应用程序访问:监控和控制特定应用程序的网络访问,以防止恶意软件或未经授权的应用程序发送或接收数据。
- IP 地址过滤:根据 IP 地址或 IP 地址范围来限制网络访问。
- 数据包过滤:防火墙可以检查数据包的内容和协议头部,以识别和过滤恶意流量。
三、启动 / 关闭防火墙
在 Linux 系统中,常用的防火墙工具是 iptables
和 firewalld
,文中使用的是 firewalld
工具。
firewalld
是一个动态的、管理简单的防火墙工具,已经在许多现代 Linux 发行版中取代了 iptables
。
1. 启动 firewalld 防火墙
# 启动 firewalld 防火墙
systemctl start firewalld
# 设置 firewalld 防火墙开机自启动
systemctl enable firewalld
# 设置 firewalld 防火墙开机自启动,并立刻启动
systemctl enable firewalld --now
2. 停止 firewalld 防火墙
# 停止 firewalld 防火墙
systemctl stop firewalld
# 停用 firewalld 防火墙,重启生效
systemctl disable firewalld
3. 重启 firewalld 服务
# 重启防火墙服务
systemctl restart firewalld.service
四、端口开放
在使用
firewalld
管理防火墙规则时,可以通过以下步骤来开放新的端口。
1. 检查目前开放的端口
# 查看防火墙所有信息
firewall-cmd --list-all
# 检查目前开放的端口(一般使用这个)
firewall-cmd --list-ports
2. 开放新端口
单个端口开放
开放单个端口,以 8080 为例:
<port_number>
:需要开放的端口号。--zone=public
:防火墙区域,通常使用public
或其他适当的区域。--permanent
:将规则永久保存,这样即使重启也会保留。
# 开放新端口
# sudo firewall-cmd --zone=public --add-port=<port_number>/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
多个端口开放
如果需要开放多个端口,可以列出它们并用 -
分隔:
<port_range>
:端口范围,例如3000-4000
。
# sudo firewall-cmd --zone=public --add-port=<port_range>/tcp --permanent
firewall-cmd --zone=public --add-port=3000-4000/tcp --permanent
五、重新加载防火墙规则
添加新的端口后,需要重新加载防火墙规则才能生效。
# 重新加载防火墙规则
firewall-cmd --reload
# 或者重启防火墙服务
systemctl restart firewalld.service
六、关于 start 和 enable
在 Linux 系统中,start
和 enable
是两个常用的系统服务管理命令,它们用于启动和管理系统服务,但它们的操作方式和效果有所不同。下面以 systemctl
命令为例,进行二者的区分。
systemctl
是一个系统服务管理工具,用于控制 Systemd 初始化系统中的服务。以下是 start
和 enable
在 systemctl
中的区别:
1. start
start
启动一个特定的系统服务。
使用方式:
systemctl start <service_name>
效果:立即启动指定的服务,但不会在系统启动时自动启动该服务。
2. enable
enable
设置一个系统服务在系统启动时自动启动。
使用方式:
# 启用指定的服务,并在系统启动时自动启动该服务
systemctl enable <service_name>
# 立即启动该服务
systemctl enable <service_name> --now
效果:启用指定的服务,并在系统启动时自动启动该服务。
如果服务当前没有运行,enable
命令也会启动该服务,需要加上参数 --now
。
3. 选择使用
- 使用
start
命令会立即启动一个服务,但不会设置该服务在系统启动时自动启动。 - 使用
enable
命令会启用一个服务,并设置该服务在系统启动时自动启动。
在选择使用 start
或 enable
命令时,需要根据实际情况。
如果只是想立即启动一个服务,而不希望它在系统重启后自动运行,那么使用 start
命令是合适的。如果希望服务在系统启动时自动启动,那么应使用 enable
命令。
七、总结
本文讲述了 Linux 系统的防火墙相关知识,包括 firewalld
防火墙工具的一系列操作,如开启、停用、开放端口等等,还有 start
和 enable
在用法上的区别。
一些参考资料:
阿里云官网:https://www.aliyun.com/product/ecs
FinalShell 下载地址:http://www.hostbuf.com/t/988.html
Xshell 和 Xftp 下载:https://www.xshell.com/zh/free-for-home-school/