Linux 和 VPS 服务器通过内置的 Linux 安全模型提供比 Windows 系统更好的安全防护。但没有系统能做到绝对安全。黑客每天主动扫描数百万台服务器,寻找漏洞以窃取敏感数据或将服务器用于大规模攻击。
保护 Linux 服务器需要主动配置。新装的 VPS 系统默认优先考虑易用性而非安全性。学会保护 Linux 服务器实现可以防御不断演变的威胁,同时保持系统功能完整。本指南提供 20 个关键步骤来加固 Linux 服务器基础设施,将你的系统从容易被攻击的状态转变为能够抵御常见威胁的堡垒。
Linux VPS 是什么?

Linux VPS(虚拟专用服务器)运行在云平台上,拥有独立于其他用户的专用资源。与共享主机不同,在共享主机中一个被入侵的账户会影响所有用户,安全的 VPS 主机将你的环境隔离开来。不过,攻击者仍会针对不安全的 VPS 服务器,盗取数据、植入恶意软件或对其他系统发动攻击。
当您下单时 购买 Linux VPS 托管服务中,操作系统预装了基础设置。这些默认配置优先考虑易用性而非安全性,使你的服务器容易被自动扫描脚本发现的常见漏洞攻击。在 VPS 服务器上实现安全的云数据需要超越基础安装的主动防护措施。
为什么应该保护你的 Linux VPS
不安全的服务器在上线数小时内就会成为攻击目标。组织现在每周平均面临 1,876 次网络攻击,这比上一年增加了 75%。了解如何保护 Linux 服务器基础设施有助于抵御这些持续威胁,防止系统被破坏。
最危险的地方在于,复杂的攻击往往无法被及时发现。攻击者可能在没有明显入侵迹象的情况下访问你的数据、监听通信或利用服务器资源。保护好 VPS 托管服务需要主动防护,因为攻击者不会主动暴露,当你发现异常活动时,可能已经造成重大损害。
Linux 安全模型 (LSM)

Linux 包含内置安全功能,可以阻止未授权访问关键系统组件。带有图表的 Linux 安全模型展示了访问控制如何保护文件、进程和用户交互。这创建了多层安全防护,相比其他操作系统更难被利用。
但 LSM 无法防止由配置不当、弱密码或过时软件导致的攻击。它为如何保护 Linux 服务器提供了基础,但需要正确实施才能对 Ubuntu VPS 托管 及其他 Linux 发行版有效。
20 种保护 Linux VPS 的方法

这些安全措施从基础配置变更逐步进阶到高级监控系统。掌握如何保护 Linux 服务器环境需要系统地实施这些步骤,打造能够抵御常见攻击向量的安全 Linux 服务器。
每项技术都针对攻击者常利用的特定漏洞。这些方法涵盖从每个服务器都需要的基础配置,到用于高级威胁检测的复杂监控系统。有些措施提供即时保护,有些则建立长期安全防御。实施顺序很重要——基础加固步骤应该先于高级监控工具。这 20 项策略共同构建了多层安全防护,大幅缩小了服务器的攻击面。
1. 保持软件最新
过时的软件包含已知的安全漏洞,攻击者可以利用。软件开发者定期发布补丁来修复这些漏洞,更新是保护 Linux 服务器系统的第一道防线。
为关键安全补丁配置自动更新:
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y
# CentOS/RHEL
sudo yum update -y
设置电子邮件通知以便了解需要手动审查的可用安全补丁。
2. 禁用 Root 登录
每个 Linux 服务器都包含一个拥有无限系统访问权限的 root 用户账户。由于黑客知道这个账户总是存在,他们会用 暴力攻击 猜测密码并获得完整的服务器控制权。
在禁用 root 访问前创建新的管理员用户:
# Create new user
sudo adduser adminuser
sudo usermod -aG sudo adminuser
# Disable root login in SSH configuration
sudo nano /etc/ssh/sshd_config
# Change: PermitRootLogin no
sudo systemctl restart sshd
这强制攻击者同时猜测用户名和密码,大大提高了安全性。
3. 生成 SSH 密钥对
仅基于密码的登录方式,尤其是在密码较弱的情况下,存在安全隐患。SSH 密钥认证提供了更安全的替代方案。通过使用密钥而非密码,你能确保采用更加强大且难以破解的身份验证方法。
这项安全措施尤其重要,因为 被盗凭证在 24% 的数据泄露事件中充当了初始攻击向量 根据安全研究显示。这些攻击的检测和遏制耗时比任何其他方法都要长,因此通过 SSH 密钥来防御至关重要。
生成 SSH 密钥对以实现安全身份验证:
ssh-keygen -t rsa -b 4096
ssh-copy-id username@server-ip
SSH 密钥最长可达 4096 位,安全性远高于即使是复杂密码。
4. 启用双因素认证
双因素认证在密码之外添加了第二层验证。即使攻击者获得了你的密码,在没有第二个认证因子的情况下也无法访问你的服务器。
安装并配置双因素认证:
sudo apt install libpam-google-authenticator
google-authenticator
配置你的移动认证器应用生成基于时间的代码用于服务器访问。
5. 更改 SSH 端口
默认 SSH 端口(22)持续遭受自动扫描工具的攻击尝试。切换到自定义端口能减少这些自动化攻击的暴露。考虑到 2024 年数据泄露的全球平均成本达到 488 万美元 这样,即便是改变端口这样的简单安全措施也能有效防护自动化威胁。
对于大多数 Linux 发行版:
sudo nano /etc/ssh/sshd_config
# Find: #Port 22
# Change to: Port 2222 (choose a port between 1024-65535)
sudo systemctl restart sshd
对于 Ubuntu 23.04 及更高版本:
sudo nano /lib/systemd/system/ssh.socket
# Update ListenStream=2222
sudo systemctl daemon-reload
sudo systemctl restart ssh.service
Important: 在关闭当前会话前测试新端口:
# Test connection in a new terminal
ssh username@server-ip -p 2222
更新防火墙规则以允许新端口:
sudo ufw allow 2222
sudo ufw delete allow 22 # Remove old rule after testing
连接时请记得指定新端口: ssh username@server-ip -p 2222
6. 禁用未使用的网络端口和 IPv6
开放的网络端口为攻击者提供了入侵点。每项运行的服务都会产生潜在的安全漏洞,因此应禁用不必要的服务及其相关端口。
查看当前开放的端口:
sudo netstat -tulpn
# Alternative command
sudo ss -tulpn
Use iptables 管理防火墙规则并关闭不必要的端口。
如不需要,禁用 IPv6:
sudo nano /etc/sysctl.conf
# Add these lines:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
# Apply changes
sudo sysctl -p
# Verify IPv6 is disabled
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
# Should return 1
更新网络配置(查找你的实际 netplan 文件):
# Find netplan configuration files
ls /etc/netplan/
# Edit your specific configuration file
sudo nano /etc/netplan/[your-config-file].yaml
# Comment out IPv6 configuration lines
sudo netplan apply
7. Configure a Firewall
防火墙控制哪些网络流量可以到达你的服务器。它阻止未授权的连接,同时允许合法流量通过指定端口。
UFW 快速设置:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw enable
基本防火墙规则:
| Purpose | Command | Result |
| Allow HTTP | sudo ufw allow 80 | 允许网页流量 |
| Allow HTTPS | sudo ufw allow 443 | 允许安全网页流量 |
| 允许自定义 SSH 端口 | sudo ufw allow 2222 | SSH 在自定义端口上运行 |
| Block specific IP | sudo ufw deny from 192.168.1.100 | IP completely blocked |
检查防火墙状态:
sudo ufw status verbose
此配置阻止所有传入流量,除了 SSH 连接。
8. 安装反恶意软件和防病毒应用
Linux 系统可能感染恶意软件,这些软件会窃取数据、挖取加密货币或为攻击者提供后门访问。反恶意软件在威胁危害你的系统前检测并删除它们。
安装 ClamAV 进行全面病毒扫描:
sudo apt install clamav clamav-daemon clamav-freshclam
sudo freshclam
sudo systemctl enable clamav-freshclam
sudo systemctl start clamav-freshclam
在关键目录上运行手动扫描:
sudo clamscan -r /home --infected --remove --bell
sudo clamscan -r /var/www --infected --remove
为增强保护,在 ClamAV 旁安装 Maldet:
# Verify URL availability before downloading
wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
tar -xzf maldetect-current.tar.gz
cd maldetect-*
sudo ./install.sh
# Note: Always verify download URLs from official sources before use
使用 cron 计划每日自动扫描:
# Add to crontab: Daily scan at 2 AM
0 2 * * * /usr/bin/clamscan -r /home --quiet --infected --remove
9. 安装 Rootkit 扫描器
Rootkit 是隐藏在操作系统深处的恶意程序,通常逃过标准杀毒软件的检测。它们可以为攻击者提供对你系统的持久访问权限,同时对常规检测方法保持隐形。
安装并配置 Chkrootkit 以检测 rootkit:
sudo apt install chkrootkit
sudo chkrootkit | grep INFECTED
安装 RKHunter 以获得额外的 rootkit 防护:
sudo apt install rkhunter
sudo rkhunter --update
sudo rkhunter --propupd
sudo rkhunter --check
创建自动化的每周 rootkit 扫描:
# Add to crontab: Weekly rootkit scan every Sunday at 3 AM
0 3 * * 0 /usr/bin/rkhunter --cronjob --update --quiet
0 4 * * 0 /usr/bin/chkrootkit | grep INFECTED > /var/log/chkrootkit.log
如果检测到 rootkit,请立即隔离服务器并考虑完全重新安装操作系统。rootkit 在保持系统完整性的同时极难彻底移除。
10. 使用 Fail2Ban 进行入侵防御
Fail2Ban 监控登录尝试,自动阻止显示恶意行为的 IP 地址,例如多次失败的登录尝试。
Quick Installation:
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
必要的 SSH 防护设置:
[sshd]
enabled = true
port = ssh
maxretry = 3
bantime = 3600
findtime = 600
关键配置值:
| Setting | Value | Meaning |
| maxretry | 3 | 禁止前的失败次数 |
| bantime | 3600 | 禁止时长(1 小时) |
| findtime | 600 | 时间窗口(10 分钟) |
启动并启用:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
检查被禁止的 IP:
sudo fail2ban-client status sshd
11. Turn on SELinux
Security-Enhanced Linux(SELinux)提供强制访问控制,限制程序的操作权限,即使程序被入侵也不例外。它在标准 Linux 权限之外创建了额外的安全层。
检查并启用 SELinux:
sestatus
sudo setenforce enforcing
SELinux 策略防止被入侵的应用程序访问未授权的系统资源。按照这些 简短说明充分利用 SELinux 实现最优配置。
12. 保护文件、目录和邮件
加密敏感文件以防止未授权访问,即使攻击者获得系统权限也不例外。这对于处理敏感数据的安全文件服务器 Linux 配置至关重要。
使用 GPG 进行文件加密:
gpg --cipher-algo AES256 --compress-algo 1 --s2k-mode 3 --s2k-digest-algo SHA512 --s2k-count 65536 --symmetric filename
设置适当的文件权限以限制访问:
chmod 600 sensitive-file # Owner read/write only
chmod 700 private-directory # Owner access only
13. 定期进行备份
定期备份确保你能从安全事件、硬件故障或意外数据丢失中恢复。自动化备份降低了人为错误的风险,是安全 VPS 托管策略的关键组成部分。
创建自动化备份脚本:
#!/bin/bash
tar -czf /backup/$(date +%Y%m%d)-system.tar.gz /home /etc /var/log
将备份存储在多个位置,包括异地存储,遵循 3-2-1 备份规则。
14. 创建磁盘分区
磁盘分区将系统文件与用户数据分开存储,限制单个分区被破坏时的影响范围。它还可以防止一个区域的磁盘空间耗尽影响整个系统。
推荐分区方案:
/boot – 500MB (boot files)
/ – 20GB (system files)
/home – 50GB (user data)
/var – 10GB (日志和数据库)
/tmp – 2GB (temporary files)
swap – 2GB (virtual memory)
使用安全限制挂载临时分区:
# Add to /etc/fstab for permanent mounting
echo "tmpfs /tmp tmpfs defaults,noexec,nosuid,nodev,size=2G 0 0" >> /etc/fstab
echo "tmpfs /var/tmp tmpfs defaults,noexec,nosuid,nodev,size=1G 0 0" >> /etc/fstab
# Apply immediately
sudo mount -a
验证分区安全性:
mount | grep -E "(noexec|nosuid|nodev)"
df -h # Check disk usage by partition
The noexec 选项可防止恶意可执行文件运行, nosuid 禁用 set-user-ID 位,以及 nodev 防止在临时目录中创建设备文件。
15. 监控服务器日志
服务器日志记录所有系统活动,提供安全事件的早期警告信号。定期监控日志有助于在异常模式成为严重威胁之前识别它们。
关键日志:
| Log File | Purpose | Command |
| /var/log/auth.log (Debian/Ubuntu)<br>/var/log/secure (CentOS/RHEL) | Login attempts | sudo tail -f /var/log/auth.log<br>sudo tail -f /var/log/secure |
| /var/log/syslog (Debian/Ubuntu)<br>/var/log/messages (CentOS/RHEL) | System messages | sudo tail -f /var/log/syslog<br>sudo tail -f /var/log/messages |
| /var/log/apache2/access.log (Debian/Ubuntu)<br>/var/log/httpd/access_log (CentOS/RHEL) | Web traffic | sudo tail -f /var/log/apache2/access.log<br>sudo tail -f /var/log/httpd/access_log |
| /var/log/fail2ban.log | Blocked IPs | sudo tail -f /var/log/fail2ban.log |
快速日志分析命令:
# Failed login attempts (adjust path for your distribution)
sudo grep "Failed password" /var/log/auth.log | tail -10
# Successful logins
sudo grep "Accepted" /var/log/auth.log | tail -10
# Large file transfers (adjust path for your web server)
sudo awk '{print $10}' /var/log/apache2/access.log | sort -n | tail -10
自动日志监控:
# Install logwatch for daily summaries
sudo apt install logwatch
sudo logwatch --detail Med --mailto [email protected] --service All
设置日志轮转以防止日志文件占用过多磁盘空间。
16. 使用强密码
强密码能够抵御暴力破解和字典攻击。弱密码可以在几分钟内被现代计算能力破解。
Password requirements:
- Minimum 12 characters
- 大写字母、小写字母、数字和符号的组合
- 不含字典词汇或个人信息
- 每个账户使用不同的密码
使用密码管理器生成和安全存储复杂密码。结合 Linux 安全模型与图表原则等其他措施,强密码形成多层防御,抵御未授权访问。
17. 优先使用 SFTP 而非 FTP
标准 FTP 以明文传输数据和凭证,容易被网络窃听。SFTP 对所有数据传输进行加密,保护敏感信息,支持安全的 Linux 文件服务器架构。
配置仅允许 SFTP 访问:
sudo nano /etc/ssh/sshd_config
# Add: Subsystem sftp internal-sftp
禁用标准 FTP 服务以消除安全风险:
sudo systemctl disable vsftpd
sudo systemctl stop vsftpd
18. 启用内容管理系统自动更新
内容管理系统(WordPress、Drupal、Joomla)会频繁发布安全补丁。启用自动更新可确保关键漏洞及时得到修复。
对于 WordPress,在 wp-config.php 中添加:
define('WP_AUTO_UPDATE_CORE', true);
add_filter('auto_update_plugin', '__return_true');
add_filter('auto_update_theme', '__return_true');
监控更新日志以确保兼容性和功能完整性。
19. 禁用匿名 FTP 上传
匿名 FTP 允许任何人在未经身份验证的情况下上传文件到你的服务器。这可能导致服务器被用于托管非法内容、恶意软件或成为攻击分发点。
配置 vsftpd 以要求身份验证:
sudo nano /etc/vsftpd.conf
# 禁用匿名访问
anonymous_enable=NO
# 启用本地用户身份验证
local_enable=YES
write_enable=YES
local_umask=022
# 限制用户仅访问其主目录
chroot_local_user=YES
allow_writeable_chroot=YES
# Security settings
ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
重启 FTP 服务:
sudo systemctl restart vsftpd
sudo systemctl enable vsftpd
创建具有受限权限的 FTP 用户账户:
sudo adduser ftpuser
sudo usermod -d /var/ftp/uploads ftpuser
sudo chown ftpuser:ftpuser /var/ftp/uploads
sudo chmod 755 /var/ftp/uploads
监控 FTP 访问日志以查找可疑活动:
sudo tail -f /var/log/vsftpd.log
20. 配置暴力破解保护
实施多层暴力破解保护措施(除 Fail2Ban 外)以防御复杂的自动化攻击。
配置额外的保护措施:
# Limit SSH connection attempts
sudo nano /etc/ssh/sshd_config
# Add: MaxAuthTries 3
# Add: ClientAliveInterval 300
# Add: ClientAliveCountMax 2
使用 DenyHosts 等工具配合 Fail2Ban 实现全面保护。
Conclusion
保护 Linux VPS 需要实施多层防御,从基础配置更改到高级监控系统。从基础安全措施(软件更新、防火墙配置、SSH 加固)开始,然后添加入侵检测和自动监控等高级工具。
安全的 Linux 服务器需要持续维护,而不仅仅是一次性配置。定期审查日志、更新软件并根据威胁变化调整安全措施。适当的安全配置投入可防止代价高昂的数据泄露并维护系统可靠性。
请记住这些安全措施协同运作——没有单一技术可提供完整保护。实施全部 20 项策略会形成重叠的安全层,显著降低服务器遭受常见攻击的风险。无论你需要安全文件服务器 Linux 配置还是常规受保护的 VPS 主机保护,这些基础步骤都能提供必要的安全防护。