一份新鲜的 Linux 服务器 虽然可能几分钟内就能上线,但这并不意味着它已经准备好投入生产。.
在部署 WordPress、数据库、API、Web 应用程序或其他工作负载之前,您应配置操作系统、管理员用户、SSH 访问、防火墙、更新、时间同步、日志记录、备份和监控。.
一个好的 Linux 服务器配置 既能减少不必要的暴露,又能为后续安装的所有内容奠定稳固的基础。.
本指南将逐步介绍针对新VPS、云服务器或独立服务器进行Linux服务器配置的基本步骤,重点关注 安全、SSH 和防火墙配置.
Linux 服务器设置: 更新 → 用户 → SSH → 防火墙 → 时间 → 服务 → 安全 → 备份 → 监控。.

在新Linux服务器上应该进行哪些配置?
Linux 服务器的基本配置应涵盖以下几个重要方面:
- 操作系统更新
- 主机名和时区
- 管理员用户
- SSH 身份验证
- root权限
- 防火墙规则
- 自动安全更新
- 不必要的服务
- 暴力破解防护
- 日志
- 存储与内存
- 备份
- 监测
具体配置取决于服务器的功能。.
公共Web服务器、数据库服务器、开发服务器和Docker主机不应自动采用相同的防火墙规则或安装相同的软件。.
先考虑工作负载 → 再考虑配置。.
Linux 服务器设置检查清单
| 配置 | 目的 | 优先级 |
|---|---|---|
| 系统更新 | 修复已知的漏洞和错误 | 关键 |
| 管理员用户 | 减少日常root权限的使用 | 关键 |
| SSH 密钥 | 安全的远程身份验证 | 关键 |
| 防火墙 | 限制公开的服务 | 关键 |
| 时间同步 | 准确的日志记录和身份验证 | 高 |
| 安全更新 | 维护补丁 | 高 |
| Fail2ban | 减少重复登录攻击 | 可选/有用 |
| 备份 | 恢复数据和配置 | 关键 |
| 监测 | 检测故障和资源问题 | 高 |
1. 连接到 Linux 服务器
大多数 Linux 服务器都是通过 SSH 进行远程管理的。.
在 Linux、macOS 或配备 SSH 客户端的现代 Windows 环境中,基本命令如下:
ssh root@SERVER_IP
例如:
ssh [email protected]
您的主机提供商可能会使用另一个初始用户名,例如:
ubuntu debian ec2-user cloud-user
请使用您的服务器提供商提供的凭据。.
首次连接时,SSH 可能会显示主机密钥的指纹。.
在可能的情况下,请在接受该指纹之前通过您的服务提供商对其进行验证。.
2. 更新 Linux 服务器
你应该做的第一件事之一就是更新操作系统。.
适用于 Ubuntu 和 Debian:
sudo apt update sudo apt upgrade -y
在AlmaLinux或Rocky Linux等发行版中,包管理命令有所不同。.
例如:
sudo dnf update
请务必按照您所使用的具体发行版和版本的文档操作。.
新创建的服务器镜像中可能仍包含有可用安全更新的软件包。.
全新安装 ≠ 已安装所有补丁的服务器。.
3. 检查服务器是否需要重启
某些更新——尤其是内核或低级系统更新——可能需要重启后,新组件才会生效。.
在 Ubuntu/Debian 系统上,有一个有用的检查方法是:
test -f /var/run/reboot-required && echo "Reboot required"
如果需要重启,且这对您的工作负载是安全的:
sudo reboot
服务器重启期间,您的 SSH 连接将被关闭。.
4. 配置 Linux 主机名
明确的主机名有助于在日志、监控系统和管理工具中更轻松地识别服务器。.
检查当前的主机名:
hostnamectl
设置新的主机名:
sudo hostnamectl set-hostname web01.example.com
有用的命名约定可能包括:
web01.example.com web02.example.com db01.example.com app01.example.com
随着基础设施规模的扩大,保持一致的命名规范变得越来越重要。.
5. 配置服务器时区
正确的系统时间对于以下方面非常重要:
- 服务器日志
- 身份验证
- 计划任务
- SSL/TLS
- 数据库记录
- 安全调查
检查当前配置:
timedatectl
要使用协调世界时(UTC):
sudo timedatectl set-timezone UTC
对于分布在多个地理区域的服务器而言,UTC 通常非常方便,因为它为管理员提供了一个统一的时间基准。.
6. 创建一个非root管理员用户
如果每项任务都使用root账户,则会加剧管理失误带来的后果。.
创建一个独立的用户:
adduser adminuser
在 Ubuntu/Debian 上,授予 sudo 权限:
usermod -aG sudo adminuser
然后进行测试:
su - adminuser
以及:
sudo whoami
结果应为:
root
这意味着该账户可以通过……执行管理任务 sudo.
7. 配置 SSH 密钥认证
SSH 密钥是构建安全 Linux 服务器时最重要的组成部分之一。.
如果您本地计算机上还没有合适的 SSH 密钥,请生成一个 Ed25519 密钥:
ssh-keygen -t ed25519
这通常会生成一个私钥和一个相应的公钥。.
私钥必须保密。.
切勿将其上传到公共代码库、粘贴到支持论坛中,或通过截图分享。.
如果您的本地系统提供了 ssh-copy-id, ,复制公钥:
ssh-copy-id adminuser@SERVER_IP
然后进行测试:
ssh adminuser@SERVER_IP
请在保持当前会话打开的同时,在第二个终端中执行此操作。.
在测试完替代方案之前,切勿移除当前的登录方式。.
8. 了解 SSH 文件权限
SSH 文件的权限设置不正确可能会导致密钥认证无法正常工作。.
典型的用户配置包括:
~/.ssh/ ~/.ssh/authorized_keys
常用的权限包括:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
这些文件还应归属于正确的用户。.
如果在复制或编辑文件后 SSH 密钥突然无法使用,首先应检查的便是权限和所有权。.
9. 加强 SSH 服务器的安全性
OpenSSH 服务器配置文件通常位于:
/etc/ssh/sshd_config
现代系统还可能从以下位置加载配置片段:
/etc/ssh/sshd_config.d/
根据您的安全要求,设置可能包括:
PermitRootLogin no PubkeyAuthentication yes PasswordAuthentication no
不过,请不要盲目禁用 root 权限或密码认证。.
首先请确认:
- 您的管理员用户正在工作
- SSH密钥认证正常工作
- Sudo 有效
- 您可以访问该服务提供商的控制台或恢复系统
在应用更改之前,请验证 SSH 配置:
sudo sshd -t
如果该命令报告了错误,请在重新加载 SSH 之前先修复该错误。.
10. 是否应该更改 SSH 端口?
许多 Linux 服务器使用 TCP 22 端口来运行 SSH。.
更改此设置可以减少某些自动扫描产生的噪音,但不应将其与强认证或真正的访问控制混为一谈。.
您的主要 SSH 防护措施应包括:
- 安全密钥
- 适当的root登录策略
- 强大的账户安全防护
- 防火墙规则
- 更新
- 监测
非标准端口 ≠ 安全的SSH。.
11. 配置 Linux 防火墙
防火墙用于控制哪些网络服务可以被访问。.
基本原理很简单:
接纳你需要的,屏蔽你不需要的。.
Ubuntu 通常使用 UFW 作为一种简便的防火墙管理界面。.
检查其状态:
sudo ufw status
在启用该功能之前,请先允许 SSH:
sudo ufw allow OpenSSH
对于公共 Web 服务器:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp
然后启用它:
sudo ufw enable
验证:
sudo ufw status verbose
12. Linux Web 服务器应该打开哪些端口?
一台典型的公共Web服务器可能需要:
| 港口 | 服务 | 典型曝光 |
|---|---|---|
| 22 | SSH | 在可行的情况下予以限制 |
| 80 | HTTP | 公开 |
| 443 | HTTPS | 公开 |
| 3306 | MySQL/MariaDB | 通常为私有 |
| 5432 | PostgreSQL | 通常为私有 |
| 6379 | Redis | 通常为私有 |
除非您的架构明确要求远程访问,并且您已实施了适当的安全控制措施,否则通常不应将数据库和缓存服务直接暴露在公共互联网上。.
已安装的服务 ≠ 公共服务。.
13. 了解服务提供商防火墙与服务器防火墙的区别
除了 Linux 系统内部的防火墙外,云服务和 VPS 提供商还可能提供外部防火墙。.
这形成了两层安全防护:
互联网 → 服务商防火墙 → Linux 防火墙 → 应用程序
两者结合使用可能会很有用。.
例如,服务提供商的防火墙可能会将SSH访问限制在已知的源地址范围内,而本地防火墙则负责控制服务之间的访问。.
但请记住,相互冲突的防火墙规则可能会使故障排除变得更加困难。.
记录哪个层控制哪种流量。.
14. 启用自动安全更新
安全补丁不应完全依赖于有人记得手动登录。.
Ubuntu/Debian 系统可以对符合条件的更新使用无人值守升级。.
如有需要,请安装该软件包:
sudo apt install unattended-upgrades -y
然后查看适合您服务器的配置。.
自动化并不能消除对监控的需求。.
不过,你还是应该知道:
- 更新是否成功
- 服务是否需要重启
- 是否需要重启
- 某个应用程序是否依赖于特定软件包版本
自动补丁更新 + 监控 > 仅自动补丁更新。.
15. 如有必要,安装 Fail2ban
公共 SSH 服务经常会遭遇反复的自动化登录尝试。.
Fail2ban 可以监控日志,并暂时封禁那些反复触发已配置认证失败的 IP 地址。.
在 Ubuntu/Debian 上:
sudo apt install fail2ban -y
检查该服务:
sudo systemctl status fail2ban
请不要将Fail2ban视为SSH密钥或防火墙的替代品。.
更好的模型是:
SSH密钥 + 防火墙 + 更新 + 监控 + Fail2ban
16. 查看正在运行的服务
每个面向网络的服务都会增加您必须维护的组件数量。.
使用以下命令查看监听套接字:
sudo ss -tulpn
这有助于确定哪些进程正在监听网络连接。.
请问:
- 我认识这项服务吗?
- 它需要正在运行吗?
- 它需要监听每个接口吗?
- 它需要连接公共互联网吗?
与其让不必要的软件无限期运行,不如禁用那些你确实不需要的服务。.
17. 使用 systemd 管理服务
许多现代 Linux 发行版都使用 systemd 来管理服务。.
常用命令包括:
systemctl status nginx systemctl start nginx systemctl stop nginx systemctl restart nginx systemctl reload nginx systemctl enable nginx
了解以下两者之间的区别: 重新启动 以及 重新加载.
重新加载可让某些服务在无需完全重启的情况下应用配置更改,但具体行为取决于该服务。.
18. 仅安装您需要的软件
新服务器并不需要教程中提到的所有管理工具、Web 服务器、数据库和控制面板。.
一些常见的实用工具可能包括:
sudo apt install curl wget unzip git htop -y
但一般原则应该是:
精简服务器 → 更小的攻击面 → 更易维护。.
安装软件应基于工作负载的需求,而不是因为另一台服务器碰巧在使用它。.
19. 检查磁盘使用情况
磁盘空间耗尽可能会导致数据库、应用程序和系统服务出现故障。.
检查文件系统使用情况:
df -h
要查看目录大小:
du -sh /var/* 2>/dev/null
磁盘使用量不断增加的常见原因包括:
- 日志
- 数据库文件
- 网站上传
- 本地备份
- 包缓存
- Docker 镜像
- 临时文件
在文件系统完全填满之前,监控磁盘空间的增长情况。.
20. 检查 Linux 内存使用情况
用途:
free -h
Linux 会刻意将可用内存用于缓存,因此初学者不应认为所有“已用”内存都意味着存在问题。.
评估:
- 可用内存
- 互换活动
- 应用程序的使用
- 内存不足事件
- 长期趋势
已使用的内存 ≠ 被浪费的内存。.
21. 是否应该配置交换分区?
当物理内存不足时,交换空间可以提供额外的虚拟内存。.
检查当前交换空间:
swapon --show
以及:
free -h
对于小型VPS而言,合理配置交换空间或许有所帮助,但交换空间并不能替代充足的物理内存。.
频繁的交换操作会显著降低性能,特别是对于对延迟敏感的应用程序而言。.
交换空间 = 安全缓冲区,而非可用内存。.
22. 监控 CPU 和系统负载
有用的命令包括:
top htop uptime
这些信息有助于识别占用大量CPU资源的进程以及系统负载情况。.
然而,高负载并不总是意味着CPU是瓶颈。.
等待磁盘或其他资源的进程也会增加系统负载。.
在升级服务器之前,请确定真正的限制因素是否为:
CPU → 内存 → 磁盘 I/O → 数据库 → 网络 → 应用程序
如果服务器已经感觉运行缓慢,请采用这种诊断方法,而不是立即购买更多资源。.
23. 配置日志管理
日志对于诊断安全事件和应用程序故障至关重要。.
根据 Linux 发行版和软件堆栈的不同,可以通过以下方式查看日志:
/var/log/
以及 systemd 的日志:
journalctl
有用的示例包括:
journalctl -p err journalctl -u ssh journalctl -u nginx
服务名称因发行版而异。.
还应定期轮换日志,以免其占用整个文件系统。.
24. 检查失败的 SSH 登录尝试
身份验证日志有助于识别重复的SSH登录失败尝试。.
在 Ubuntu/Debian 系统中,身份验证信息通常位于:
/var/log/auth.log
例如:
sudo grep "密码错误" /var/log/auth.log
在其他发行版中,身份验证日志可能使用不同的文件或系统日志。.
如果公共服务器收到自动登录尝试,请不要感到惊讶。.
公共IP地址经常被扫描。.
25. 正确配置 DNS
如果 Linux 服务器将托管网站或应用程序,请务必在确定哪些服务器地址应接收流量后再配置 DNS。.
典型的记录包括:
example.com A IPv4_ADDRESS www.example.com A IPv4_ADDRESS
对于 IPv6:
example.com AAAA IPv6_ADDRESS
除非服务器已实际配置为能够正确处理 IPv6 流量,否则请勿发布 AAAA 记录。.
过时的 IPv6 记录可能会导致令人困惑的问题,即网站对部分访问者可以正常访问,而对其他访问者则无法访问。.
26. 为公共网站配置 HTTPS
如果 Linux 服务器托管了一个公共网站,请在确认 DNS 和 Web 服务器均运行正常后,启用 HTTPS。.
请使用受公众信任的证书,并在可能的情况下配置自动续期。.
我们的 SSL证书安装指南 更详细地介绍了 HTTPS 的配置。.
配置完成后,请验证:
- 证书有效期
- 主机名覆盖范围
- 证书链
- HTTP 到 HTTPS 的重定向
- 自动续订
27. 确保数据库安全
如果服务器运行的是 MySQL、MariaDB、PostgreSQL 或其他数据库,请不要将其默认公开。.
对于单服务器网站架构:
应用程序 → 本地数据库
通常比以下方式更可取:
互联网 → 公共数据库端口
如果需要远程访问数据库,请使用适当的网络和数据库访问控制措施对其进行限制。.
另请使用:
- 唯一的数据库用户
- 雄厚的资历
- 所需的最低权限
- 定期备份
28. 遵循最小权限原则
并非每个应用程序都应该以 root 身份运行。.
并非每位用户都需要 sudo 权限。.
并非每个数据库账户都需要访问所有数据库。.
并非每个服务都需要监听所有接口。.
该原理被称为 最小权限原则.
仅向每个用户、应用程序和服务授予其执行任务所需的权限。.
这样可以限制某个组件遭到破坏时可能造成的影响。.
29. 配置备份
在将重要数据存入服务器之前,请先确定如何对其进行备份。.
备份策略可能包括:
- 申请文件
- 数据库
- 配置文件
- 服务器快照
- 异地副本
- 多个还原点
请勿将唯一的备份保存在同一台VPS上。.
如果服务器、账户或存储出现故障,生产数据和备份都可能同时丢失。.
服务器 + 同一台服务器上的备份 = 单一故障域。.
30. 测试备份恢复
备份任务显示“成功”并不意味着系统一定能够恢复。.
定期测试:
- 文件恢复
- 数据库恢复
- 配置恢复
- 恢复所需的凭据
- 恢复时间
真正的目的并不是创建备份。.
它正在顺利恢复。.
在测试恢复之前,备份 ≠ 恢复。.
31. 设置服务器监控
一台投入生产的 Linux 服务器不应依赖于每天有人手动检查它。.
至少应监控以下内容:
- 服务器可用性
- CPU 使用率
- 内存使用情况
- 磁盘空间
- 磁盘I/O
- 网络流量
- 加载
- 重要服务
- 备份状态
- SSL证书过期
警报对于以下情况特别有用:
- 服务器离线
- 磁盘空间几乎已满
- 服务已停止
- 备份失败
- 证书即将过期
32. 谨慎重启
Linux 服务器并不需要仅仅因为运行了很长时间就重新启动。.
当出现技术原因时,请重启系统,例如:
- 必须进行内核更新
- 计划内维护
- 具体故障排除
在重启生产服务器之前,请先弄清楚哪些服务必须在重启后自动恢复运行。.
通过以下方式检查重要服务:
systemctl status SERVICE_NAME
33. 记录服务器配置
当几个月后出现故障时,文档就变得无比宝贵。.
记录以下信息:
- 服务器用途
- 操作系统
- 主机名
- 公网/私网 IP 的作用
- 开放端口
- 已安装的服务
- 防火墙规则
- 备份位置
- 监控系统
- DNS 配置
- 恢复程序
请勿将敏感密码或私有 SSH 密钥存储在不安全的文档中。.
Linux 服务器安全:应优先考虑哪些方面?
初学者有时会把注意力集中在一些晦涩难懂的安全强化调整上,却忽略了基本的安全控制措施。.
优先考虑基础:
1. PATCH
请及时更新软件。.
2. 身份验证
请使用安全的 SSH 身份验证。.
3. 限制
仅开放必要的端口和服务。.
4. LIMIT
遵循最小权限原则。.
5. 备份
请将可恢复的副本保存在服务器之外。.
6. 监控
及时发现变化或故障。.
高级加固措施虽然有用,但应以此为基础,而非取代这些基础措施。.
Linux 服务器配置中的常见错误
凡事都使用Root权限
在适当的情况下,请分别创建管理员账户和应用程序账户。.
过早禁用 SSH 访问
在禁用现有访问权限之前,请先测试新用户和 SSH 密钥。.
在允许 SSH 之前启用防火墙
这是一种让自己被锁在远程服务器之外的经典做法。.
开放所有港口
仅公开需要外部访问的服务。.
将 MySQL 或 Redis 对外公开
除非架构有此要求,否则请勿将后端服务设为公开。.
安装了过多的软件
每个额外的软件包都会带来维护负担。.
忽略日志
日志通常是配置或安全问题的首个迹象。.
仅在服务器上保存备份
这并不能防止整个服务器丢失。.
假设自动续订总能正常运作
监控 SSL 证书的续期和部署。.
在找出瓶颈之前先升级服务器
增加CPU和内存并不能解决所有应用程序、数据库、存储或网络问题。.
Linux 服务器配置与 VPS 配置:有什么区别?
本 VPS 配置指南重点介绍了将新购买的 VPS 从首次登录到工作负载正常运行的完整过程。.
Linux 服务器设置指南更深入地探讨了 Linux 操作系统本身的配置和维护。.
如果您刚刚购买了第一台VPS,不妨从我们的 如何搭建VPS服务器 指南。.
然后,请参考本指南来加强底层的 Linux 配置。.
Linux 服务器设置常见问题解答
在新的 Linux 服务器上,我应该先做什么?
在部署生产环境应用程序之前,请验证访问权限、更新操作系统、创建管理员用户、配置安全的SSH访问并设置防火墙规则。.
我应该在 Linux 上禁用 root 登录吗?
限制直接远程root登录是一项常见的安全措施。在实施此措施之前,请确认另一个管理员账户已具备可正常使用的SSH密钥认证和sudo访问权限。.
我应该禁用 SSH 密码吗?
基于密钥的身份验证可以减少对密码的依赖。在禁用密码身份验证之前,请测试 SSH 密钥访问功能,并确保您能够访问恢复控制台。.
Linux 服务器需要防火墙吗?
是的。防火墙有助于限制可访问的网络服务范围。VPS 和云服务提供商还可能提供外部防火墙,以补充操作系统自带的防火墙功能。.
UFW 对 Linux 服务器来说够用吗?
UFW 可为许多 Ubuntu 服务器提供简单直观的主机级防火墙管理。防火墙的要求取决于系统架构,而复杂的环境可能需要使用其他防火墙技术或服务提供商级别的控制措施。.
我需要用Fail2ban吗?
并非所有服务器都需要此功能,但它有助于减少重复的自动登录尝试。它应作为安全认证、防火墙规则和监控的补充,而非取代它们。.
我应该更改 SSH 端口 22 吗?
你可以这样做,而且这样做可能会减少一些自动扫描产生的干扰,但更改端口并不能替代 SSH 密钥、安全认证和访问控制。.
MySQL 的 3306 端口应该保持开放吗?
对于许多单服务器Web应用程序而言,答案是否定的。数据库可以在本地与应用程序通信,而无需将MySQL直接暴露在互联网上。.
Linux 服务器应该多久更新一次?
应根据服务器的风险和运行要求,及时部署安全更新。自动安全更新虽有帮助,但仍需进行监控。.
我该如何判断我的 Linux 服务器是否安全?
没有任何配置能让服务器永久保持“安全”。安全性是一个持续的过程,涉及更新、访问控制、防火墙规则、应用程序安全、监控、备份以及定期审查。.
Linux 服务器基本配置检查清单
- ✓ 更新操作系统
- ✓ 如有必要,请重新启动
- ✓ 设置主机名
- ✓ 配置时区和时间同步
- ✓ 创建非root管理员
- ✓ 配置 SSH 密钥
- ✓ 验证 SSH 文件的权限
- ✓ 检查 root SSH 访问权限
- ✓ 检查密码认证
- ✓ 验证 SSH 配置
- ✓ 配置防火墙
- ✓ 仅允许必需的端口
- ✓ 查看听力服务
- ✓ 启用安全更新
- ✓ 如有必要,请配置暴力破解防护措施
- ✓ 限制数据库的暴露范围
- ✓ 应用最小权限原则
- ✓ 为网站配置 HTTPS
- ✓ 监控磁盘空间
- ✓ 监控内存和交换空间
- ✓ 监控 CPU 和负载
- ✓ 查看日志
- ✓ 配置服务器外备份
- ✓ 测试还原
- ✓ 配置运行时间和资源监控
- ✓ 记录服务器信息
最终建议
一个可靠的 Linux 服务器配置 这并不是要应用数百项复杂的加固调整。.
从基础开始,并正确进行配置。.
更新
↓
创建管理员用户
↓
安全的 SSH
↓
配置防火墙
↓
消除不必要的暴露
↓
PATCH
↓
返回
↓
MONITOR
最重要的是,切勿盲目地进行安全设置调整。.
在限制 root 权限之前,先测试新管理员。在禁用密码之前,先测试 SSH 密钥。在启用防火墙之前,先允许 SSH 访问。在强制重定向之前,先测试 HTTPS。在依赖备份之前,先测试备份。.
安全 → 测试 → 验证 → 监控
一台配置得当的 Linux 服务器能为您的网站或应用程序提供更坚实的基础,并使今后的故障排查变得轻松许多。.





