最后更新于:2026年06月

VPS 安全加固
VPS 服务器安全加固配置

一台裸奔的 VPS 就像一扇没有锁的门——任何人都可以尝试闯入。根据统计,一台新部署的 Linux VPS 在上线后的 24 小时内,平均会收到 数千次 SSH 登录尝试,其中大部分是自动化脚本发起的暴力破解攻击。

本文将从 SSH 安全配置、Fail2ban 自动封禁、防火墙策略、端口敲门(Port Knocking)等多个维度,帮你把 VPS 打造为坚不可摧的堡垒。


🧭 VPS 安全威胁分析

常见攻击类型

PLAINTEXT
┌──────────────────────────────────────────────────────────┐
│                  VPS 常见安全威胁                         │
│                                                          │
│  1. SSH 暴力破解                                         │
│     - 自动化脚本尝试常见用户名/密码组合                   │
│     - 针对 root 用户的高频攻击                           │
│     - 一旦成功,攻击者获得完整控制权                      │
│                                                          │
│  2. 端口扫描与漏洞探测                                    │
│     - 扫描开放端口,寻找可利用的服务                      │
│     - 针对特定版本软件的已知漏洞                         │
│     - 未更新的软件包存在安全风险                          │
│                                                          │
│  3. DDoS 攻击                                            │
│     - 消耗带宽和系统资源                                  │
│     - 导致服务不可用                                      │
│                                                          │
│  4. 恶意软件与挖矿程序                                    │
│     - 利用漏洞植入恶意程序                                │
│     - 消耗 CPU 资源进行挖矿                               │
│                                                          │
│  5. 数据泄露                                             │
│     - 配置文件中存储明文密码                              │
│     - 敏感日志未加密                                      │
│                                                          │
│  6. 权限提升攻击                                          │
│     - 从普通用户提升到 root                              │
│     - 利用内核或软件漏洞                                  │
└──────────────────────────────────────────────────────────┘

安全加固检查清单

PLAINTEXT
✅ 必须完成:
□ 禁用 root SSH 登录
□ 使用 SSH 密钥认证,禁用密码登录
□ 更改 SSH 默认端口(22 → 其他)
□ 安装并配置 Fail2ban
□ 配置防火墙(UFW/firewalld/iptables)
□ 定期更新系统软件包
□ 设置强密码策略
□ 启用系统自动更新

⚠️ 建议完成:
□ 配置端口敲门(Port Knocking)
□ 安装入侵检测系统(IDS)
□ 配置日志审计
□ 设置文件完整性监控
□ 启用 SELinux/AppArmor
□ 配置 SSH 超时断开
□ 使用双因素认证(2FA)
□ 定期备份配置文件

🔐 SSH 安全配置

1. 禁用 root 登录

root 用户是攻击者的首要目标。首先创建一个普通用户,然后禁用 root 的 SSH 登录:

BASH
# 创建新用户(以 admin 为例)
adduser admin
# 设置强密码
passwd admin

# 将用户添加到 sudo 组(赋予管理员权限)
usermod -aG sudo admin    # Debian/Ubuntu
usermod -aG wheel admin   # CentOS/RHEL

# 验证 sudo 权限
su - admin
sudo whoami
# 应输出: root

# 切换到新用户,测试 SSH 登录
ssh admin@你的VPS_IP

2. SSH 密钥认证

密钥认证比密码认证更安全,且无法被暴力破解:

BASH
# 在本地电脑上生成密钥对(推荐 Ed25519)
ssh-keygen -t ed25519 -C "your_email@example.com"

# 或使用 RSA(兼容性更好)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

# 密钥文件位置:
# ~/.ssh/id_ed25519      ← 私钥(保密)
# ~/.ssh/id_ed25519.pub  ← 公钥(上传到 VPS)

# 将公钥上传到 VPS
ssh-copy-id -i ~/.ssh/id_ed25519.pub admin@你的VPS_IP

# 或手动上传
cat ~/.ssh/id_ed25519.pub | ssh admin@VPS_IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

# 测试密钥登录
ssh admin@你的VPS_IP
# 应无需输入密码即可登录

3. SSH 配置文件优化

编辑 /etc/ssh/sshd_config

BASH
# 备份原配置
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

# 编辑配置
sudo nano /etc/ssh/sshd_config

关键配置项:

BASH
# ============== 基础安全配置 ==============

# 更改默认端口(避开自动化扫描)
Port 2222    # 或其他非标准端口(如 443、8022)

# 禁止 root 登录
PermitRootLogin no

# 强制使用密钥认证
PubkeyAuthentication yes

# 禁用密码认证(密钥配置完成后)
PasswordAuthentication no
PermitEmptyPasswords no

# 禁用挑战响应认证
ChallengeResponseAuthentication no

# 禁用 PAM 认证(可选,减少攻击面)
UsePAM no

# ============== 连接控制 ==============

# 限制登录尝试次数
MaxAuthTries 3

# 限制最大会话数
MaxSessions 2

# 登录超时(秒)
LoginGraceTime 60

# 空闲超时断开
ClientAliveInterval 300
ClientAliveCountMax 2

# ============== 用户限制 ==============

# 只允许特定用户登录
AllowUsers admin

# 或允许特定组
AllowGroups sudo wheel

# 禁止特定用户
DenyUsers root test guest

# ============== 加密与协议 ==============

# 只使用 SSH 协议版本 2
Protocol 2

# 指定加密算法(推荐)
KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com

# ============== 其他安全选项 ==============

# 禁用 X11 转发
X11Forwarding no

# 禁用端口转发(如果不需要)
AllowTcpForwarding no

# 禁用代理转发
AllowAgentForwarding no

# 禁用 SFTP(可选)
# Subsystem sftp /usr/lib/openssh/sftp-server

重启 SSH 服务:

BASH
# 检查配置语法
sudo sshd -t

# 重启 SSH 服务
sudo systemctl restart sshd

# 或
sudo systemctl restart ssh

# 验证服务状态
sudo systemctl status sshd

4. SSH 双因素认证(可选)

使用 Google Authenticator 或类似工具为 SSH 增加 2FA:

BASH
# 安装 libpam-google-authenticator
sudo apt install libpam-google-authenticator

# 为用户配置 2FA
google-authenticator

# 按提示回答:
# Do you want authentication tokens to be time-based? y
# Do you want me to update your ".google_authenticator" file? y
# ... 记录生成的密钥和备用码

# 编辑 SSH PAM 配置
sudo nano /etc/pam.d/sshd
# 添加一行:
auth required pam_google_authenticator.so

# 编辑 SSH 配置
sudo nano /etc/ssh/sshd_config
# 添加:
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive

# 重启 SSH
sudo systemctl restart sshd

🛡️ Fail2ban:自动封禁暴力破解

Fail2ban 工作原理

PLAINTEXT
┌──────────────────────────────────────────────────────────┐
│                   Fail2ban 工作流程                       │
│                                                          │
│  1. 监控日志文件                                          │
│     - /var/log/auth.log (SSH 登录日志)                   │
│     - /var/log/nginx/access.log (Web 服务日志)           │
│                                                          │
│  2. 检测失败模式                                          │
│     - SSH 登录失败                                        │
│     - HTTP 401/403 响应                                   │
│                                                          │
│  3. 计数失败次数                                          │
│     - 达到阈值(如 5 次)触发封禁                         │
│                                                          │
│  4. 添加防火墙规则                                        │
│     - iptables DROP/REJECT                               │
│     - 封禁时间:10 分钟到永久                             │
│                                                          │
│  5. 自动解封                                              │
│     - 封禁时间到期后自动移除规则                          │
└──────────────────────────────────────────────────────────┘

安装 Fail2ban

BASH
# Debian/Ubuntu
sudo apt update
sudo apt install -y fail2ban

# CentOS/RHEL
sudo yum install -y epel-release
sudo yum install -y fail2ban

# 启动并启用
sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban

SSH Jail 配置

创建自定义配置文件 /etc/fail2ban/jail.local(不要直接修改 jail.conf):

BASH
sudo nano /etc/fail2ban/jail.local
INI
# ============== 全局默认配置 ==============
[DEFAULT]
# 封禁时间(秒),默认 10 分钟
bantime = 600

# 封禁时间增量(每次封禁后加倍)
bantime.increment = true
bantime.multipliers = 1 2 4 8 16 32 64
bantime.maxtime = 86400   # 最大封禁 24 小时

# 查找时间窗口(秒)
findtime = 600

# 最大失败次数
maxretry = 5

# 后端日志格式
backend = auto

# 封禁动作(iptables)
banaction = iptables-multiport
banaction_allports = iptables-allports

# ============== SSH Jail ==============
[sshd]
enabled = true
port = ssh,2222    # 包含自定义端口
filter = sshd
logpath = /var/log/auth.log
           /var/log/secure    # CentOS/RHEL
maxretry = 3
findtime = 600
bantime = 3600    # 1 小时

# ============== SSH-DDoS Jail ==============
[sshd-ddos]
enabled = true
port = ssh,2222
filter = sshd-ddos
logpath = /var/log/auth.log
maxretry = 2
bantime = 86400   # 24 小时

# ============== Web 服务 Jail(可选)=============
[nginx-http-auth]
enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 3
bantime = 600

[nginx-limit-req]
enabled = true
port = http,https
filter = nginx-limit-req
logpath = /var/log/nginx/error.log
maxretry = 5
bantime = 600

[nginx-botsearch]
enabled = true
port = http,https
filter = nginx-botsearch
logpath = /var/log/nginx/access.log
maxretry = 2
bantime = 86400

自定义 Filter

创建 /etc/fail2ban/filter.d/sshd-custom.conf

INI
[Definition]
failregex = ^%(__prefix_line)sFailed password for <F-USER>(?:invalid user |)<F-ALT_USER>(?:(?:from <HOST>)?\S+)?\s*port \d+\s*ssh2\s*$

            ^%(__prefix_line)sReceived disconnect from <HOST>: 11: \[preauth\]\s*$

            ^%(__prefix_line)sConnection closed by <HOST> \[preauth\]\s*$

            ^%(__prefix_line)sDid not receive identification string from <HOST>\s*$

ignoreregex =

Fail2ban 常用命令

BASH
# 查看所有 Jail 状态
sudo fail2ban-client status

# 查看特定 Jail 详情
sudo fail2ban-client status sshd

# 手动封禁 IP
sudo fail2ban-client set sshd banip 1.2.3.4

# 手动解封 IP
sudo fail2ban-client set sshd unbanip 1.2.3.4

# 查看封禁日志
sudo tail -f /var/log/fail2ban.log

# 测试 Filter 规则
sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

# 重启 Fail2ban
sudo systemctl restart fail2ban

🔥 防火墙配置

UFW(Ubuntu/Debian 推荐)

UFW 是最简单易用的防火墙工具:

BASH
# 安装(通常已预装)
sudo apt install -y ufw

# ============== 基础配置 ==============

# 设置默认策略
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 允许 SSH(使用自定义端口)
sudo ufw allow 2222/tcp comment 'SSH'

# 允许 HTTP/HTTPS(如果需要)
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'

# 允许代理端口
sudo ufw allow 443/udp comment 'WireGuard/Hysteria2'

# ============== 高级规则 ==============

# 只允许特定 IP 访问 SSH
sudo ufw allow from 114.114.114.114 to any port 2222 proto tcp comment 'SSH from trusted IP'

# 拒绝特定 IP
sudo ufw deny from 1.2.3.4

# 限制连接速率(防止 DDoS)
sudo ufw limit 2222/tcp

# ============== 启用防火墙 ==============

# 检查规则
sudo ufw show added

# 启用(注意:确保 SSH 规则已添加)
sudo ufw enable

# 查看状态
sudo ufw status verbose

# ============== 日志配置 ==============

# 启用日志
sudo ufw logging on
sudo ufw logging medium    # low/medium/high

# 查看日志
sudo tail -f /var/log/ufw.log

firewalld(CentOS/RHEL/Fedora)

BASH
# 安装(通常已预装)
sudo yum install -y firewalld

# 启动并启用
sudo systemctl enable --now firewalld

# ============== 基础配置 ==============

# 查看默认区域
sudo firewall-cmd --get-default-zone

# 添加服务/端口
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=443/udp

# 或使用预定义服务
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

# ============== 富规则(高级)=============

# 只允许特定 IP 访问 SSH
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="114.114.114.114" port protocol="tcp" port="2222" accept'

# 拒绝特定 IP
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="1.2.3.4" reject'

# 限制连接速率
sudo firewall-cmd --permanent --add-rich-rule='rule service name="ssh" limit value="3/m" accept'

# ============== 应用配置 ==============

# 重载配置
sudo firewall-cmd --reload

# 查看所有规则
sudo firewall-cmd --list-all

# 查看富规则
sudo firewall-cmd --list-rich-rules

iptables(底层防火墙)

BASH
# 查看当前规则
sudo iptables -L -n -v

# ============== 基础规则 ==============

# 允许已建立的连接
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# 允许 SSH
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT

# 允许 HTTP/HTTPS
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 443 -j ACCEPT

# 允许本地回环
sudo iptables -A INPUT -i lo -j ACCEPT

# 拒绝其他入站
sudo iptables -A INPUT -j DROP

# ============== 高级规则 ==============

# 限制 SSH 连接速率
sudo iptables -A INPUT -p tcp --dport 2222 -m conntrack --ctstate NEW -m recent --set
sudo iptables -A INPUT -p tcp --dport 2222 -m conntrack --ctstate NEW -m recent --update --seconds 60 --hitcount 4 -j DROP

# 只允许特定 IP
sudo iptables -A INPUT -p tcp --dport 2222 -s 114.114.114.114 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 2222 -j DROP

# ============== 保存规则 ==============

# Debian/Ubuntu
sudo apt install -y iptables-persistent
sudo netfilter-persistent save

# CentOS/RHEL
sudo yum install -y iptables-services
sudo service iptables save

# 或手动保存
sudo iptables-save > /etc/iptables/rules.v4

🚪 端口敲门(Port Knocking)

什么是端口敲门?

端口敲门是一种隐蔽的访问控制技术:只有按照特定顺序"敲门"(连接特定端口),防火墙才会打开真正的服务端口。

PLAINTEXT
┌──────────────────────────────────────────────────────────┐
│                  端口敲门工作原理                         │
│                                                          │
│  正常情况:                                               │
│  SSH 端口 2222 对所有 IP 关闭                             │
│                                                          │
│  敲门流程:                                               │
│  1. 客户端连接端口 7000 → 防火墙记录                      │
│  2. 客户端连接端口 8000 → 防火墙记录                      │
│  3. 客户端连接端口 9000 → 防火墙记录                      │
│  4. 顺序正确!防火墙为该 IP 打开 2222 端口 30 秒         │
│  5. 客户端在 30 秒内连接 SSH                              │
│                                                          │
│  敲门失败:                                               │
│  - 顺序错误 → 无响应                                      │
│  - 时间超时 → 无响应                                      │
│  - 攻击者无法发现 SSH 端口                                │
└──────────────────────────────────────────────────────────┘

knockd 配置

BASH
# 安装 knockd
sudo apt install -y knockd

# 编辑配置
sudo nano /etc/knockd.conf
INI
[options]
    UseSyslog
    logfile = /var/log/knockd.log

[openSSH]
    sequence    = 7000,8000,9000
    seq_timeout = 5
    command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 2222 -j ACCEPT
    tcpflags    = syn

[closeSSH]
    sequence    = 9000,8000,7000
    seq_timeout = 5
    command     = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 2222 -j ACCEPT
    tcpflags    = syn

# 自动关闭(可选)
[autoCloseSSH]
    sequence    = 7000,8000,9000
    seq_timeout = 5
    command     = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 2222 -j ACCEPT
    stop_command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 2222 -j ACCEPT
    cmd_timeout = 30
    tcpflags    = syn

启动 knockd:

BASH
# 启用并启动
sudo systemctl enable --now knockd

# 检查状态
sudo systemctl status knockd

# 查看日志
sudo tail -f /var/log/knockd.log

客户端敲门

BASH
# 安装 knock 客户端
sudo apt install -y knockd

# 敲门打开 SSH
knock VPS_IP 7000 8000 9000

# 然后连接 SSH
ssh -p 2222 admin@VPS_IP

# 使用完毕后关门(可选)
knock VPS_IP 9000 8000 7000

或使用脚本自动化:

BASH
#!/bin/bash
# knock_ssh.sh

VPS_IP="你的VPS_IP"
SSH_PORT="2222"
KNOCK_PORTS="7000 8000 9000"

echo "敲门..."
knock "$VPS_IP" $KNOCK_PORTS

echo "等待 2 秒..."
sleep 2

echo "连接 SSH..."
ssh -p "$SSH_PORT" admin@"$VPS_IP"

🔄 系统更新与漏洞管理

自动安全更新

BASH
# Debian/Ubuntu
sudo apt install -y unattended-upgrades

# 配置自动更新
sudo dpkg-reconfigure -plow unattended-upgrades
# 选择 "Yes"

# 编辑配置
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

# 确保以下内容启用:
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}";
    "${distro_id}:${distro_codename}-security";
    "${distro_id}ESMApps:${distro_codename}-apps-security";
    "${distro_id}ESMInfra:${distro_codename}-infra-security";
};

# 自动清理
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "false";

# CentOS/RHEL
sudo yum install -y yum-cron

# 编辑配置
sudo nano /etc/yum/yum-cron.conf
update_cmd = security
apply_updates = yes

手动更新流程

BASH
# Debian/Ubuntu
sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y
sudo apt autoclean

# CentOS/RHEL
sudo yum update -y
sudo yum clean all

# 检查可重启的服务
sudo needrestart    # Debian/Ubuntu

# 查看安全公告
# Ubuntu: https://ubuntu.com/security/notices
# CentOS: https://access.redhat.com/security/security-updates/

📊 安全审计与监控

日志审计

BASH
# SSH 登录日志
sudo tail -f /var/log/auth.log    # Debian/Ubuntu
sudo tail -f /var/log/secure      # CentOS/RHEL

# 查看成功登录
sudo grep "Accepted password" /var/log/auth.log
sudo grep "Accepted publickey" /var/log/auth.log

# 查看失败登录
sudo grep "Failed password" /var/log/auth.log

# 统计失败登录次数
sudo grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr

# 系统日志
sudo tail -f /var/log/syslog
sudo journalctl -f

# 查看最近的安全事件
sudo journalctl -p err -n 50

入侵检测(可选)

BASH
# 安装 OSSEC 或 Wazuh(开源 IDS)
# Wazuh 更现代,推荐使用

# 添加仓库
curl -sO https://packages.wazuh.com/4.7/wazuh-install.sh

# 安装
sudo bash wazuh-install.sh -a

# 或使用 AIDE(文件完整性检查)
sudo apt install -y aide

# 初始化数据库
sudo aideinit

# 检查文件变化
sudo aide --check

安全扫描

BASH
# 使用 Lynis 进行安全审计
sudo apt install -y lynis

# 运行审计
sudo lynis audit system

# 查看报告
sudo less /var/log/lynis-report.dat

# 使用 OpenVAS(专业漏洞扫描)
# 需要单独部署,参考官方文档

🔍 故障排查手册

问题 1:SSH 无法登录

BASH
# 检查 SSH 服务状态
sudo systemctl status sshd

# 检查端口监听
sudo ss -tlnp | grep 2222

# 检查防火墙规则
sudo ufw status
sudo iptables -L -n | grep 2222

# 检查 Fail2ban 封禁
sudo fail2ban-client status sshd

# 查看日志
sudo tail -50 /var/log/auth.log

# 常见原因:
# 1. 端口未开放 → 添加防火墙规则
# 2. IP 被封禁 → fail2ban-client unbanip
# 3. 密码认证禁用但密钥未配置 → 临时启用密码或配置密钥
# 4. SSH 配置错误 → sshd -t 检查语法

问题 2:Fail2ban 不工作

BASH
# 检查服务状态
sudo systemctl status fail2ban

# 检查日志
sudo tail -f /var/log/fail2ban.log

# 测试 Filter
sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

# 检查 Jail 配置
sudo fail2ban-client -d | grep sshd

# 常见原因:
# 1. Filter 规则不匹配日志格式 → 调整 failregex
# 2. 日志路径错误 → 检查 logpath
# 3. backend 配置错误 → 改为 auto 或 systemd
# 4. iptables 规则冲突 → 检查现有规则

问题 3:防火墙规则不生效

BASH
# UFW
sudo ufw status numbered
sudo ufw reload

# firewalld
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

# iptables
sudo iptables -L -n -v
sudo iptables-save

# 检查规则顺序(iptables 按顺序匹配)
# 确保 ACCEPT 规则在 DROP 之前

问题 4:端口敲门失败

BASH
# 检查 knockd 服务
sudo systemctl status knockd

# 查看日志
sudo tail -f /var/log/knockd.log

# 测试敲门
knock -v VPS_IP 7000 8000 9000

# 检查 iptables 规则是否添加
sudo iptables -L -n | grep 2222

# 常见原因:
# 1. 敲门端口未开放 → 需要在防火墙中放行敲门端口
# 2. knockd 配置错误 → 检查 sequence 和 command
# 3. 时间超时 → 增加 seq_timeout
# 4. TCP flags 不匹配 → 确保使用 syn

📋 完整安全加固流程

新 VPS 上线检查清单

PLAINTEXT
Day 0(部署当天):
□ 创建普通用户,添加 sudo 权限
□ 配置 SSH 密钥认证
□ 禁用 root SSH 登录
□ 更改 SSH 默认端口
□ 安装并配置 Fail2ban
□ 配置防火墙(UFW/firewalld)
□ 更新所有软件包
□ 配置自动安全更新

Day 1(部署次日):
□ 测试 SSH 密钥登录
□ 验证 Fail2ban 工作正常
□ 检查防火墙规则
□ 配置日志监控
□ 安装基础监控工具(node_exporter)

Day 7(一周后):
□ 审查 SSH 登录日志
□ 检查 Fail2ban 封禁统计
□ 验证自动更新工作正常
□ 配置备份策略

每月:
□ 检查系统更新
□ 审查安全日志
□ 检查证书有效期
□ 更新 Fail2ban 规则
□ 检查防火墙规则有效性

每季度:
□ 运行 Lynis 安全审计
□ 更新 SSH 配置(加密算法)
□ 检查用户权限
□ 清理旧日志和备份

结语

VPS 安全加固不是一次性工作,而是持续的过程。从 SSH 配置到 Fail2ban,从防火墙到端口敲门,每一层防护都在为你的服务器增加一道防线。

总结要点:

记住:安全是一个层级系统,没有单一的"银弹"。多层防护叠加,才能构建真正坚固的防线。

愿你的 VPS 永远安全,远离入侵!🛡️

版权声明

作者: 易邦

链接: https://blog.e8k.net/posts/vps-security-hardening/

许可证: 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。