Linux 服务器上默认禁用的功能是什么(以及为什么这很重要)
当您配置一台全新的 Linux 服务器时——无论是 VPS、专用服务器,还是云托管虚拟机——系统会启动到一个刻意精简且加固的环境中。这不是疏忽或不完整的设置。这是一种刻意的设计理念,内置于每个主要 Linux 发行版中。
现代 Linux 服务器构建会剥离不必要的服务、协议和接口,以最小化攻击面、节省系统资源,并为管理员提供对其基础设施上运行内容的精确控制。了解默认情况下禁用的内容——以及原因——是任何系统管理员、DevOps 工程师或管理生产工作负载的开发人员的基础知识。
本指南详细分析了 Linux 服务器上默认禁用或不存在的最常见功能和服务,解释了每项决策背后的安全性和运营原理,并向您展示了如何在自己的系统上验证每项设置。
“默认禁用”是一种安全策略,而不是限制
这里起作用的原则通常被称为“默认安全,按需扩展”。现代 Linux 发行版不是提供一个功能齐全的系统并信任管理员将其锁定,而是提供一个锁定的系统并信任管理员仅启用他们需要的内容。
这种方法直接降低了配置错误的风险——这是导致服务器泄露的主要原因之一。每个未运行的服务都是无法被利用的服务。每个未启用的协议都是无法被拦截的协议。每个不存在的开放端口都是攻击者无法探测的入口点。
在建立了这个背景后,让我们详细检查每项默认限制。
1. Root SSH 登录
状态:在几乎所有现代 Linux 服务器发行版上默认禁用
通过 SSH 的直接 root 登录在当代 Linux 服务器构建中普遍禁用——这是有充分理由的。允许远程 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 地址:
ip a | grep inet6如果只出现 ::1(环回地址),则即使在操作系统中启用了 IPv6,也未在网络级别配置。
如果您的工作负载不需要 IPv6,且您的提供商不提供它,您可以通过将以下内容添加到 /etc/sysctl.conf 在内核级别禁用它:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1然后应用更改:
sudo sysctl -p8. 不必要的系统服务和守护进程
状态:因发行版而异;最小安装禁用大多数非必要服务
除了上面列出的项目外,最小 Linux 服务器安装通常禁用或省略桌面或功能齐全的构建中存在的一系列服务:
- 蓝牙——与服务器无关;未安装
- 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 登录被禁用。密码认证受限或被消除。旧版明文协议不存在。未安装图形环境。编译器和
