Linux 服务器上默认禁用的功能是什么(以及为什么这很重要)
当你配置一个全新的Linux服务器时——无论是VPS、专用服务器,还是云托管虚拟机——系统会启动到一个刻意设计的极简且加固的环境中。这不是疏忽或不完整的设置。这是一种刻意的设计理念,融入了每个主要Linux发行版中。
现代Linux服务器构建剥离了不必要的服务、协议和接口,以最小化攻击面、节省系统资源,并给管理员精确控制其基础设施上运行的内容。理解默认情况下禁用的内容——以及原因——是任何系统管理员、DevOps工程师或管理生产工作负载的开发人员的基础知识。
本指南剖析了Linux服务器上默认禁用或不存在的最常见功能和服务,解释了每个决策背后的安全和运营原理,并向你展示了如何在自己的系统上验证每个设置。
为什么”默认禁用”是一种安全策略,而不是限制
这里起作用的原则通常被称为“默认安全,按需扩展。”现代Linux发行版不是发布一个功能完整的系统并信任管理员将其锁定,而是发布一个锁定的系统,并信任管理员仅启用他们需要的功能。
这种方法直接降低了配置错误的风险——这是导致服务器被攻击的主要原因之一。每个未运行的服务都是无法被利用的服务。每个未启用的协议都是无法被拦截的协议。每个不存在的开放端口都是攻击者无法探测的入口点。
在建立了这个背景后,让我们详细检查每个默认限制。
1. Root SSH 登录
状态:在几乎所有现代 Linux 服务器发行版上默认禁用
在当代 Linux 服务器构建中,通过 SSH 的直接 root 登录被普遍禁用——这有充分的理由。允许远程 root 访问会创建一个单一的灾难性故障点:一个被破坏的密码会给攻击者完整的、不受限制的系统控制权。
正确的工作流程是以非特权用户身份登录,并仅在必要时使用 sudo 或 su 提升权限。这会创建审计跟踪,限制凭证盗窃的影响范围,并在执行特权命令之前强制执行有意的操作。
如何验证:
grep PermitRootLogin /etc/ssh/sshd_config在正确加固的服务器上的预期输出:
PermitRootLogin no如果您看到 PermitRootLogin yes 或 PermitRootLogin prohibit-password,请立即查看您的 SSH 配置,并将其与您组织的安全策略保持一致。
最佳实践:
创建一个专用的管理用户,将其添加到 sudo 组,并在部署任何面向公众的服务之前确保 PermitRootLogin no 已设置。
2. SSH 中的密码身份验证
状态:在大多数云配置的服务器上默认禁用
在许多云平台和托管环境中,SSH 密码身份验证在配置时完全禁用。SSH 密钥对是唯一接受的身份验证机制。
这是一项重大的安全改进。密码身份验证容易受到暴力破解、凭据填充和字典攻击。SSH 密钥——特别是当受密码短语保护时——用当前技术进行暴力破解在计算上是不可行的。
传统的基于 ISO 的安装可能仍然默认允许密码登录,但最佳做法是在设置基于密钥的身份验证后立即禁用它们。
如何验证:
grep PasswordAuthentication /etc/ssh/sshd_config预期输出:
PasswordAuthentication no如何禁用密码身份验证:
编辑 /etc/ssh/sshd_config 并设置:
PasswordAuthentication no
PubkeyAuthentication yes然后重新加载 SSH 守护程序:
# Ubuntu/Debian
sudo systemctl reload ssh
# RHEL/AlmaLinux/Rocky Linux
sudo systemctl reload sshd> 警告:在禁用密码身份验证之前,始终确认您的 SSH 密钥正常工作,否则您可能会被锁定在服务器之外。
3. 遗留和明文网络协议
状态:现代服务器构建中不存在
Telnet、FTP、Rlogin 和 Rsh 等服务不会安装在现代 Linux 服务器镜像上。这些协议设计于加密不是优先事项的时代。它们以明文传输凭证、命令和数据——使用网络段中任何位置的数据包嗅探器都可以轻松截获。
这些协议已被安全替代方案取代:
| 遗留协议 | 安全替代方案 |
|---|---|
| Telnet(端口 23) | SSH(端口 22) |
| FTP(端口 21) | SFTP 或 FTPS |
| Rlogin / Rsh | SSH |
如何验证没有遗留服务运行:
ss -tulnp如果端口 21(FTP)或 23(Telnet)未出现在输出中,则这些服务未激活。如果出现,请立即调查并删除或禁用它们,除非有特定的、合理的需求。
4. 图形用户界面 (GUI)
状态:未在服务器版本上安装
服务器发行版 — 包括 Ubuntu Server、Debian、AlmaLinux、Rocky Linux 和 CentOS Stream — 不附带图形桌面环境,如 GNOME、KDE Plasma 或 XFCE。这是一个经过深思熟虑的选择。
GUI 环境:
- 消耗大量 RAM 和 CPU 资源,这些资源应该专用于工作负载
- 引入大量额外软件包,每个软件包都代表潜在的安全漏洞
- 对于服务器管理完全不必要,服务器管理通过 SSH 上的命令行执行
期望是明确的:服务器通过 CLI 进行管理。如果您发现自己想在生产服务器上使用图形界面,这通常表明需要重新考虑某个流程或工作流。
> 注意:工具如 VPS 控制面板 — 例如 cPanel、Plesk 或 DirectAdmin — 提供基于网络的图形管理界面,无需在服务器上安装完整的桌面环境。
5. 开发工具链和编译器
状态:未安装在最小化服务器镜像中
编译器(如 gcc)和构建工具(如 make、cmake 和 autoconf)在大多数最小化 Linux 服务器镜像中是有意缺失的。原因有两个:
- 减少镜像大小:最小化镜像部署速度更快,备份更容易,占用资源更少。
- 安全加固:如果攻击者获得服务器访问权限,缺少编译器可以防止他们直接在系统上编译恶意二进制文件或漏洞利用代码。这在许多攻击链中是一个有意义的障碍。
如何验证:
gcc --version如果未安装工具链,您将看到:
-bash: gcc: command not found如果需要,如何安装:
# Ubuntu/Debian
sudo apt update && sudo apt install build-essential
# RHEL/AlmaLinux/Rocky Linux
sudo dnf groupinstall "Development Tools"仅在编译是真正的操作需求的服务器上安装开发工具——例如构建服务器或开发环境——并避免在生产应用程序或数据库服务器上安装它们。
6. ICMP (Ping 响应)
状态:在操作系统级别默认启用;通常在网络/防火墙级别受到限制
Linux 服务器在操作系统级别默认响应 ICMP 回显请求 (ping)。但是,许多托管提供商和云平台在网络防火墙或安全组级别阻止 ICMP,使服务器即使完全正常运行也显示无法 ping 通。
抑制 ICMP 响应使服务器在网络侦察扫描期间的可发现性降低。但是,这也会使合法监控和诊断变得复杂——ping 和 traceroute 等工具依赖 ICMP 才能正常运行。
如何测试:
ping your_server_ip如何使用 iptables 在操作系统级别阻止 ICMP(如果需要):
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP阻止 ICMP 的决定应该是深思熟虑的,需要权衡边际安全收益与对监控和故障排除工作流的运营成本。
7. IPv6
状态:在大多数发行版中默认启用;可能在提供商级别受到限制
IPv6 在现代 Linux 发行版(包括 Ubuntu、Debian、Fedora 和 RHEL 衍生版)中默认启用。但是,许多托管提供商如果其基础设施不支持 IPv6,会在网络级别禁用 IPv6,这意味着操作系统可能配置了 IPv6,但服务器将没有可路由的 IPv6 地址。
如何检查 IPv6 地址:
ip a | grep inet6如果仅显示 ::1(环回地址),则即使在操作系统中启用了 IPv6,也未在网络级别配置。
如果您的工作负载不需要 IPv6,且您的提供商不提供 IPv6,您可以通过将以下内容添加到 /etc/sysctl.conf 来在内核级别禁用它:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1然后应用更改:
sudo sysctl -p8. 不必要的系统服务和守护进程
状态:因发行版而异;最小化安装禁用大多数非必要服务
除了上面列出的项目外,最小化 Linux 服务器安装通常会禁用或省略桌面或全功能构建中存在的一系列服务:
- Bluetooth — 与服务器无关;未安装
- Avahi/mDNS — 本地网络发现;在服务器上不必要且可能存在安全隐患
- Cups(打印) — 服务器上没有用例
- ModemManager — 与服务器硬件无关
- NetworkManager — 在服务器上通常被
systemd-networkd或手动netplan配置替代
如何审计运行的服务:
systemctl list-units --type=service --state=running定期审查此列表,并禁用任何在该特定服务器上没有文档化用途的服务。
新配置 Linux 服务器的实用安全检查清单
配置新服务器后 — 无论是升级到 VPS 的共享虚拟主机还是全新的独立服务器 — 请按照此检查清单确认您的基线安全状态:
| 检查项 | 命令 | 预期结果 | |
|---|---|---|---|
| Root SSH 登录 | grep PermitRootLogin /etc/ssh/sshd_config | no | |
| 密码认证 | grep PasswordAuthentication /etc/ssh/sshd_config | no | |
| 开放端口 | ss -tulnp | 仅显示预期的端口 | |
| GCC 已安装 | gcc --version | command not found(除非需要) | |
| 运行的服务 | systemctl list-units --type=service --state=running | 仅限必需的服务 | |
| IPv6 状态 | `ip a | grep inet6` | 符合您的环境预期 |
为您的安全需求选择合适的托管环境
您选择的托管环境也会影响服务器的默认安全态势。带有 cPanel 的 VPS 提供了一个托管的、基于网络的界面,简化了管理,同时保留了底层 Linux 安全模型。裸机专用服务器让您完全控制堆栈的每一层,从固件到应用程序。
对于运行 SSL 保护的网络应用程序的团队,将您的服务器与正确配置的 SSL 证书配对是对服务器级别加固的必要补充——加密传输中的数据,就像 SSH 密钥身份验证保护对服务器的访问一样。
结论
开箱即用的 Linux 服务器以刻意安全、精简的状态进行配置。Root SSH 登录被禁用。密码身份验证受到限制或被消除。不存在旧版明文协议。未安装图形环境。编译器和构建工具被排除在基础镜像之外。
相比之下,ICMP 响应和 IPv6 等服务在操作系统级别默认保持启用,但根据提供商的基础设施和安全态势,通常在网络或防火墙层受到限制。
“默认安全,按需扩展”的理念确保管理员对其环境保持完全的控制权。服务器仅暴露其预期角色明确需要的内容——不多不少。您启用的每项服务、打开的每个端口和安装的每个软件包都是经过深思熟虑的决定,并有文档记录的理由。
这种纪律是运维安全的基础。这不是 Linux 服务器的限制。这正是它们成为全球生产基础设施首选平台的原因。
