Debian Linux 安全加固实战:SSH 防护、防火墙、Fail2ban、权限管理与入侵排查

举报
yd_228838069 发表于 2026/11/08 09:09:48 2026/11/08
【摘要】 一、为什么需要对 Debian 服务器进行安全加固?Debian 是常见的 Linux 服务器操作系统,具有稳定、安全、资源占用低等特点。但服务器部署到公网后,仍然会面临各种安全风险。常见的攻击行为包括:SSH 暴力破解:攻击者不断尝试用户名和密码。端口扫描:扫描服务器开放的端口,寻找可利用的服务。弱密码攻击:尝试常见密码或泄露的密码组合。Web 漏洞利用:通过存在漏洞的网站、API 或管理...

一、为什么需要对 Debian 服务器进行安全加固?

Debian 是常见的 Linux 服务器操作系统,具有稳定、安全、资源占用低等特点。但服务器部署到公网后,仍然会面临各种安全风险。

常见的攻击行为包括:

  • SSH 暴力破解:攻击者不断尝试用户名和密码。

  • 端口扫描:扫描服务器开放的端口,寻找可利用的服务。

  • 弱密码攻击:尝试常见密码或泄露的密码组合。

  • Web 漏洞利用:通过存在漏洞的网站、API 或管理后台入侵服务器。

  • 权限滥用:利用配置不当的账户获取更高权限。

  • 恶意程序植入:安装挖矿程序、后门或恶意脚本。

  • 未授权访问:数据库、Redis、管理面板等服务直接暴露在公网。

服务器安全加固不能只依靠修改 SSH 配置,而应该从多个层面进行防护:

  1. SSH 登录安全。

  2. 防火墙与端口控制。

  3. Fail2ban 自动封禁。

  4. 用户和文件权限管理。

  5. 系统更新与安全补丁。

  6. 日志监控与入侵排查。

  7. 数据备份与恢复。

本文以一台新部署的 Debian 服务器为例,逐步完成基础安全配置。

二、检查系统环境

首先登录 Debian 服务器。

查看系统版本:

cat /etc/debian_version

查看系统信息:

hostnamectl

查看当前登录用户:

whoami

查看当前登录会话:

who

查看服务器 IP:

ip addr

查看监听端口:

sudo ss -lntup

其中:

  • -l:显示监听状态。

  • -n:直接显示数字端口。

  • -t:显示 TCP。

  • -u:显示 UDP。

  • -p:显示对应进程。

例如:

Netid State  Local Address:Port
tcp   LISTEN 0.0.0.0:22
tcp   LISTEN 127.0.0.1:3306
tcp   LISTEN 0.0.0.0:80
tcp   LISTEN 0.0.0.0:443

这里需要特别注意:

  • 0.0.0.0:22:SSH 监听所有 IPv4 网卡。

  • 127.0.0.1:3306:MySQL 只监听本机 IPv4 地址。

  • 0.0.0.0:80:Web 服务监听所有 IPv4 网卡。

如果数据库没有远程访问需求,通常应该只监听本地地址,而不是直接暴露到公网。

三、SSH 安全加固

SSH 是 Linux 服务器最常用的远程管理方式,也是公网服务器最容易遭受暴力破解的入口之一。

1. 安装并检查 SSH 服务

执行:

sudo apt update
sudo apt install openssh-server -y

查看服务状态:

sudo systemctl status ssh

设置开机启动:

sudo systemctl enable ssh

检查 SSH 监听端口:

sudo ss -lntp | grep ssh

Debian 通常使用 /etc/ssh/sshd_config 作为 SSH 服务端配置文件。

2. 修改 SSH 默认端口

SSH 默认端口是 TCP 22。

攻击者经常扫描 22 端口,因此可以将 SSH 修改为其他高位端口,例如 22222。

编辑配置文件:

sudo nano /etc/ssh/sshd_config

找到或添加:

Port 22222

保存后,先检查配置语法:

sudo sshd -t

没有输出通常表示语法检查通过。

然后重新加载 SSH:

sudo systemctl reload ssh

检查新端口是否监听:

sudo ss -lntp | grep 22222

重要:修改 SSH 端口之前,必须先在云服务器安全组和本机防火墙中放行新端口。

不要立即关闭当前 SSH 会话。应另外打开一个终端,测试:

ssh -p 22222 用户名@服务器IP

确认新端口可以正常登录后,再关闭旧连接,并决定是否关闭 22 端口。

修改 SSH 端口只能减少自动化扫描噪声,并不能替代身份认证和防火墙。

3. 禁止 root 直接登录

root 拥有系统最高权限,如果 root 密码被破解,攻击者就可能直接控制整个系统。

建议先创建普通管理用户:

sudo adduser admin

将其加入 sudo 用户组:

sudo usermod -aG sudo admin

检查用户组:

groups admin

测试普通用户是否能够使用 sudo:

su - admin
sudo whoami

如果输出:

root

说明 sudo 权限正常。

接下来编辑 SSH 配置:

sudo nano /etc/ssh/sshd_config

设置:

PermitRootLogin no

检查配置:

sudo sshd -t

重新加载:

sudo systemctl reload ssh

务必先确认普通管理账户能够正常登录并使用 sudo,再禁用 root 登录。

4. 禁用密码登录,使用 SSH 密钥认证

相比密码登录,SSH 密钥认证通常更加安全。

在 Windows 客户端打开 PowerShell,生成密钥:

ssh-keygen -t ed25519 -C "debian-server"

按提示保存密钥。

默认生成:

C:\Users\用户名\.ssh\id_ed25519
C:\Users\用户名\.ssh\id_ed25519.pub

其中:

  • id_ed25519:私钥,必须妥善保管,不能上传到服务器或发送给他人。

  • id_ed25519.pub:公钥,可以放到服务器上。

将公钥复制到服务器。

如果 Windows 环境支持 ssh-copy-id:

ssh-copy-id -p 22222 admin@服务器IP

也可以手动复制公钥内容,在服务器上执行:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys

将公钥完整内容粘贴进去,然后执行:

chmod 600 ~/.ssh/authorized_keys

编辑 SSH 配置:

sudo nano /etc/ssh/sshd_config

设置:

PubkeyAuthentication yes
PasswordAuthentication no
PermitRootLogin no

注意:如果服务器使用 PAM、额外的认证配置或其他 SSH 认证机制,还需要检查相关配置是否与预期一致。

检查配置:

sudo sshd -t

重新加载:

sudo systemctl reload ssh

一定要保留原有 SSH 会话,并使用新的终端测试密钥登录。

确认密钥登录正常后,才能彻底关闭密码认证。

5. 检查 SSH 登录失败记录

查看 SSH 登录失败记录:

sudo journalctl -u ssh --since "24 hours ago"

查看认证日志:

sudo grep -E "Failed password|Invalid user" /var/log/auth.log

统计失败登录记录:

sudo grep "Failed password" /var/log/auth.log | wc -l

查看最近登录:

last

查看失败登录:

sudo lastb

如果发现大量陌生 IP 不断尝试登录,说明服务器正在遭受自动化扫描或暴力破解。

四、防火墙配置:使用 UFW 管理端口

防火墙可以限制哪些网络流量能够进入服务器。

Debian 可以使用 nftables,也可以使用 UFW 这样的管理工具。

本文使用 UFW 演示,适合希望快速管理服务器防火墙的用户。

1. 安装 UFW

sudo apt install ufw -y

查看状态:

sudo ufw status verbose

2. 设置默认规则

默认拒绝进入服务器的连接,允许服务器主动向外连接:

sudo ufw default deny incoming
sudo ufw default allow outgoing

3. 放行 SSH 端口

如果 SSH 使用默认端口:

sudo ufw allow 22/tcp

如果 SSH 已修改为 22222:

sudo ufw allow 22222/tcp

4. 放行 Web 服务端口

HTTP:

sudo ufw allow 80/tcp

HTTPS:

sudo ufw allow 443/tcp

如果使用其他服务端口,也应该根据实际需要添加规则。

例如:

sudo ufw allow 8080/tcp

不要为了方便直接放行所有端口。

5. 启用防火墙

确认 SSH 端口已经放行后执行:

sudo ufw enable

查看规则:

sudo ufw status numbered

示例:

To       Action  From
--       ------  ----
22222/tcp ALLOW  Anywhere
80/tcp    ALLOW  Anywhere
443/tcp   ALLOW  Anywhere

如果使用 IPv6,还应检查 UFW 的 IPv6 配置是否启用,并确认 IPv6 规则符合预期。

6. 删除防火墙规则

查看规则编号:

sudo ufw status numbered

删除指定规则:

sudo ufw delete 2

也可以直接删除指定端口规则:

sudo ufw delete allow 8080/tcp

7. 限制 SSH 登录来源

如果服务器只需要从固定公网 IP 管理,可以限制 SSH 来源。

例如只允许 203.0.113.10 访问 22222:

sudo ufw allow from 203.0.113.10 to any port 22222 proto tcp

注意:203.0.113.10 是文档示例地址,实际使用时需要替换成自己的公网 IP。

如果原来已经存在允许所有来源访问 SSH 的规则,应删除那条宽泛规则,避免它继续允许其他 IP 访问。

如果你的公网 IP 经常变化,不建议盲目使用固定 IP 白名单,否则可能导致自己无法连接服务器。

8. 防火墙常见注意事项

  • SSH 端口必须提前放行。

  • Web 服务器通常需要开放 80 和 443。

  • 不要将 MySQL 的 3306 端口直接暴露到公网。

  • Redis 默认端口 6379 不应该随意对公网开放。

  • 云服务器安全组和系统防火墙是两层不同的防护。

  • 修改防火墙规则前,最好保留云厂商控制台或其他备用管理方式。

五、Fail2ban 自动防御 SSH 暴力破解

Fail2ban 是 Linux 常用的自动封禁工具。

它可以监控 SSH 等服务的日志。当某个 IP 在规定时间内出现多次失败登录时,自动调用防火墙封禁该 IP。

1. 安装 Fail2ban

sudo apt install fail2ban -y

启动服务:

sudo systemctl enable --now fail2ban

检查状态:

sudo systemctl status fail2ban

2. 创建本地配置文件

不要直接修改软件包提供的 jail.conf,建议创建独立的本地配置文件:

sudo nano /etc/fail2ban/jail.local

添加:

[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
backend = systemd

[sshd]
enabled = true
port = 22222

参数说明:

参数 说明
bantime 封禁持续时间
findtime 统计失败次数的时间窗口
maxretry 达到多少次失败后封禁
backend 日志读取方式
enabled 是否启用对应保护

这里表示:10 分钟内 SSH 登录失败达到 5 次,就封禁该 IP 1 小时。

如果 SSH 仍然使用 22 端口,应将 port 修改为 22。

如果使用 UFW 管理防火墙,Fail2ban 需要采用与防火墙实际环境兼容的封禁动作。Debian 上使用 nftables 时,可在确认系统版本和 Fail2ban 动作文件支持情况后配置对应的 nftables action。不要假定所有系统都默认使用相同的封禁后端。

3. 重启 Fail2ban

sudo systemctl restart fail2ban

查看 Fail2ban 状态:

sudo fail2ban-client status

查看 SSH 保护状态:

sudo fail2ban-client status sshd

输出可能包含:

Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed: 15
|  `- Journal matches: _SYSTEMD_UNIT=ssh.service
`- Actions
   |- Currently banned: 2
   |- Total banned: 3

说明 Fail2ban 已经检测到失败登录,并封禁了部分 IP。

4. 手动解封 IP

如果误封了自己的 IP,可以执行:

sudo fail2ban-client set sshd unbanip 203.0.113.10

查看封禁列表:

sudo fail2ban-client status sshd

5. 查看 Fail2ban 日志

sudo journalctl -u fail2ban -n 100

也可以实时查看:

sudo journalctl -u fail2ban -f

Fail2ban 可以降低暴力破解风险,但不能代替强密码、SSH 密钥认证和防火墙。

六、Linux 用户和权限管理

服务器安全不仅取决于网络防护,也与用户权限密切相关。

1. 查看系统用户

查看所有用户:

cat /etc/passwd

查看普通用户:

awk -F: '$3 >= 1000 && $3 < 60000 {print $1, $3}' /etc/passwd

查看当前用户:

whoami

查看用户所属组:

groups 用户名

2. 创建普通用户

sudo adduser developer

如果需要 sudo 权限:

sudo usermod -aG sudo developer

检查:

groups developer

不建议所有日常操作都使用 root 账户。

3. 删除不再使用的用户

删除用户:

sudo deluser 用户名

同时删除用户主目录:

sudo deluser --remove-home 用户名

执行前应确认该账户不再运行服务,也没有需要保留的数据。

4. 检查文件权限

查看文件权限:

ls -lah

例如:

-rw-r--r-- 1 root root 1024 config.txt

权限含义:

  • r:读取。

  • w:写入。

  • x:执行。

修改文件权限:

chmod 644 config.txt

修改目录权限:

chmod 755 /var/www

修改文件所有者:

sudo chown www-data:www-data config.txt

递归修改目录所有权:

sudo chown -R www-data:www-data /var/www/example

注意:不要随意对整个网站目录执行 chmod -R 777。

这会让所有用户都获得写入权限,增加网站文件被篡改的风险。

5. 保护 SSH 密钥目录

SSH 私钥和授权公钥目录应设置严格权限:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

如果权限设置过于宽松,SSH 可能拒绝使用相关密钥文件。

6. 检查 sudo 权限

查看 sudo 用户:

getent group sudo

查看 sudo 配置:

sudo visudo

不要直接随意编辑 /etc/sudoers,应使用 visudo,避免语法错误导致 sudo 无法使用。

七、系统更新与安全补丁

服务器长期不更新,可能存在已经公开的安全漏洞。

1. 更新软件包列表

sudo apt update

2. 安装可用更新

sudo apt upgrade

生产环境升级前,应先检查变更内容并做好备份。

3. 检查安全更新

Debian 的安全更新通常通过官方安全仓库发布。

可以查看软件包更新情况:

apt list --upgradable

查看当前系统的软件包信息:

apt-cache policy openssh-server

4. 安装自动安全更新工具

安装:

sudo apt install unattended-upgrades -y

启用自动更新配置:

sudo dpkg-reconfigure unattended-upgrades

根据提示选择是否启用自动安装更新。

查看配置:

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

查看自动更新日志:

sudo journalctl -u unattended-upgrades

自动更新有助于及时安装安全补丁,但生产环境仍应关注服务重启、兼容性和升级失败问题。

八、检查公网暴露的服务端口

很多服务器并不是 SSH 被攻破,而是其他服务直接暴露在公网。

例如:

端口 常见服务 安全建议
22 SSH 密钥认证、限制来源
80 HTTP 按需开放
443 HTTPS 按需开放
3306 MySQL 尽量仅监听本机或私网
6379 Redis 不直接暴露公网
27017 MongoDB 限制网络访问
8080 Web 服务 只开放实际需要的访问入口
9000 管理服务或其他应用 检查具体进程及访问范围

查看监听端口:

sudo ss -lntup

查看端口对应进程:

sudo lsof -i -P -n

检查指定端口:

sudo ss -lntp | grep 3306

如果 MySQL 只需要本机访问,可以检查 MySQL 配置中的:

bind-address = 127.0.0.1

修改后重启 MySQL:

sudo systemctl restart mysql

实际服务名称应以系统安装情况为准。

注意:127.0.0.1 仅表示本机 IPv4 回环地址。如果服务同时监听 IPv6 的 ::,还需要检查 IPv6 暴露情况。

九、服务器入侵排查

如果发现服务器 CPU 使用率异常、网络流量增加、出现陌生进程或系统文件被修改,就需要进行安全排查。

1. 检查 CPU 和内存

top

或者:

htop

如果没有安装:

sudo apt install htop -y

查看 CPU 使用率较高的进程:

ps aux --sort=-%cpu | head -20

查看内存占用较高的进程:

ps aux --sort=-%mem | head -20

重点检查:

  • 不认识的进程。

  • 长时间占用大量 CPU 的进程。

  • 名称伪装成系统服务的进程。

  • 运行在 /tmp、/dev/shm 等临时目录中的可疑程序。

但需要注意,进程名称、运行路径和 CPU 占用都不能单独证明服务器已经被入侵。

2. 检查陌生登录记录

查看当前登录用户:

who

查看登录历史:

last -a

查看失败登录:

sudo lastb -a

查看 SSH 认证日志:

sudo grep -E "Accepted|Failed password|Invalid user" /var/log/auth.log

重点检查:

  • 不熟悉的登录 IP。

  • 异常登录时间。

  • 未知用户登录。

  • 不符合日常管理习惯的成功登录记录。

如果使用 journald 或日志文件路径不同,也可以通过:

sudo journalctl -u ssh

查询 SSH 服务日志。

3. 检查异常网络连接

查看当前 TCP 连接:

sudo ss -antp

查看所有监听端口:

sudo ss -lntup

查看网络连接较多的进程:

sudo lsof -i -P -n

重点检查陌生的外部 IP、异常端口,以及不应该主动访问公网的服务进程。

4. 检查定时任务

攻击者可能通过 cron 定时任务维持恶意程序运行。

查看当前用户的定时任务:

crontab -l

查看 root 的定时任务:

sudo crontab -l

检查系统级定时任务:

ls -lah /etc/cron.d/
ls -lah /etc/cron.daily/
ls -lah /etc/cron.hourly/
ls -lah /etc/cron.weekly/

查看 systemd 定时器:

systemctl list-timers --all

如果出现不认识的任务,应先检查其内容、创建时间、所属用户和执行文件,不要直接删除所有陌生任务。

5. 检查异常 systemd 服务

查看正在运行的服务:

systemctl --type=service --state=running

查看开机启动服务:

systemctl list-unit-files --type=service --state=enabled

查看指定服务:

systemctl status 服务名称

检查可疑服务文件:

sudo find /etc/systemd/system -type f -maxdepth 3

如果发现未知服务,应检查其执行命令:

sudo systemctl cat 服务名称

不要仅凭服务名称判断其安全性。

6. 检查异常文件

查看最近 24 小时修改的文件:

sudo find /etc /usr/local/bin /tmp /var/tmp /dev/shm \
-type f -mtime -1 -ls 2>/dev/null

查看临时目录:

ls -lah /tmp
ls -lah /var/tmp
ls -lah /dev/shm

检查可疑可执行文件:

sudo find /tmp /var/tmp /dev/shm \
-type f -executable -ls 2>/dev/null

这些命令可以帮助发现异常文件,但正常软件也可能在这些目录生成临时文件,需要结合文件内容和进程信息判断。

7. 检查新增用户和 SSH 公钥

查看最近创建或修改的用户信息:

sudo stat /etc/passwd
sudo stat /etc/shadow

查看具有登录 Shell 的用户:

awk -F: '$7 !~ /(nologin|false)$/ {print $1, $3, $6, $7}' /etc/passwd

查看 root 和管理员用户的 SSH 公钥:

sudo find /root /home -path "*/.ssh/authorized_keys" -type f -print

检查授权公钥内容:

sudo cat /root/.ssh/authorized_keys

实际使用时,还应检查普通用户目录中的 authorized_keys 文件。

如果发现陌生公钥,先记录其内容和相关文件信息,再判断是否为未授权访问。

8. 检查系统日志

查看最近系统日志:

sudo journalctl -p warning -n 100

查看本次启动以来的错误:

sudo journalctl -b -p err

查看 SSH 日志:

sudo journalctl -u ssh --since "today"

查看系统重启记录:

last reboot

如果发现异常服务启动、权限变更、登录行为或系统崩溃,应结合时间线进一步排查。

十、发现服务器被入侵后应该怎么办?

如果确认服务器遭到入侵,不要只删除可疑文件就认为问题已经解决。

建议按照以下顺序处理。

第一步:保留证据

记录:

  • 异常进程信息。

  • 登录 IP 和登录时间。

  • 可疑文件路径。

  • systemd 服务配置。

  • cron 定时任务。

  • 异常网络连接。

  • 系统日志。

如果条件允许,先通过云平台快照或磁盘镜像保存现场。

不要急着重启、清理日志或删除文件,否则可能破坏调查证据。

第二步:限制攻击入口

根据实际情况:

  • 使用云平台安全组限制公网访问。

  • 暂时关闭不必要的服务端口。

  • 限制 SSH 管理来源。

  • 隔离疑似被入侵的服务器。

  • 保留必要的取证和管理通道。

如果服务器正在处理重要业务,应评估隔离措施对业务的影响。

第三步:更换凭据

从可信设备上处理:

  • 修改服务器管理账户密码。

  • 更换 SSH 密钥。

  • 更换数据库密码。

  • 更换 API 密钥。

  • 更换网站后台账户密码。

  • 检查其他服务器是否复用了相同凭据。

如果攻击者已经取得 root 权限,应认为服务器上的凭据可能全部泄露。

第四步:确认入侵范围

排查:

  • 是否新增未知用户。

  • 是否存在后门 SSH 公钥。

  • 是否修改系统启动项。

  • 是否植入定时任务。

  • 是否修改 systemd 服务。

  • 是否篡改网站文件。

  • 是否窃取数据库和配置文件。

  • 是否存在横向访问其他服务器的行为。

第五步:重建服务器

如果已经确认攻击者获得 root 权限,最可靠的处理方式通常是:

  1. 从可信镜像重新安装系统。

  2. 更新系统和软件包。

  3. 重新配置 SSH 和防火墙。

  4. 使用新的 SSH 密钥和业务凭据。

  5. 从可信备份恢复业务数据。

  6. 对网站程序、数据库和备份进行安全检查。

  7. 持续监控异常登录和网络连接。

不要直接将旧服务器的所有系统文件复制到新服务器。

如果无法确认攻击者留下的后门是否清除,重建通常比手动清理更可靠。

十一、进一步提升服务器安全性

完成基础加固后,还可以增加以下措施。

1. 限制 Web 管理后台访问

如果服务器部署了网站管理后台,不建议将管理入口无条件暴露在公网。

可以考虑:

  • 通过 VPN 或私有网络访问。

  • 使用固定 IP 白名单。

  • 增加多因素认证。

  • 设置登录失败限制。

  • 定期检查管理员账户。

  • 对敏感操作记录审计日志。

2. 使用 HTTPS

网站应尽量使用 HTTPS,避免登录凭据和业务数据以明文方式传输。

可以使用 Let's Encrypt 免费证书,并通过 Nginx 配置 HTTPS。

同时检查证书是否即将过期:

sudo certbot certificates

3. 保护数据库

数据库应遵循最小权限原则。

例如:

  • 不使用 root 账户运行网站业务。

  • 为不同应用创建独立数据库账户。

  • 限制数据库监听地址。

  • 不向公网开放数据库端口。

  • 定期备份数据库。

  • 定期检查数据库用户和授权。

4. 做好备份

至少保留:

  • 数据库备份。

  • 网站代码备份。

  • Nginx 配置备份。

  • 系统关键配置备份。

  • 业务上传文件备份。

建议采用异地备份,避免服务器被入侵或磁盘损坏后,备份也同时丢失。

5. 建立监控机制

可以监控:

  • CPU 使用率。

  • 内存使用率。

  • 磁盘剩余空间。

  • 网络流量。

  • SSH 登录失败次数。

  • 服务异常退出。

  • 数据库连接数量。

  • 网站 HTTP 错误状态。

对于重要服务器,可以使用 Prometheus、Grafana、Netdata 等监控工具。

十二、Debian 服务器安全检查命令速查表

检查项目 命令
系统版本 cat /etc/debian_version
当前用户 whoami
当前登录 who
登录历史 last -a
失败登录 sudo lastb -a
SSH 服务 sudo systemctl status ssh
SSH 日志 sudo journalctl -u ssh
监听端口 sudo ss -lntup
网络连接 sudo ss -antp
防火墙状态 sudo ufw status verbose
Fail2ban 状态 sudo fail2ban-client status
SSH 封禁情况 sudo fail2ban-client status sshd
CPU 排查 top
进程排查 ps aux --sort=-%cpu
定时任务 crontab -l
systemd 服务 systemctl --type=service --state=running
系统错误日志 sudo journalctl -b -p err
最近修改文件 sudo find /etc -type f -mtime -1

十三、服务器安全加固检查清单

完成配置后,可以按照下面的清单逐项检查:

  • 已创建普通管理员账户。

  • 普通管理员具备必要的 sudo 权限。

  • 已配置 SSH 密钥认证。

  • 已测试密钥登录成功。

  • 已关闭 root 远程登录。

  • 已根据需要关闭 SSH 密码认证。

  • SSH 端口已在云安全组和系统防火墙中放行。

  • UFW 或 nftables 已正确配置。

  • 不必要的公网端口已经关闭。

  • MySQL、Redis 等服务没有不必要地暴露公网。

  • Fail2ban 已启用并正常工作。

  • 系统安全更新已及时安装。

  • 已检查陌生用户和 SSH 公钥。

  • 已检查 cron 和 systemd 定时任务。

  • 已建立数据库和网站备份。

  • 已验证备份可以正常恢复。

  • 已建立基本的系统监控机制。

十四、总结

Debian Linux 服务器安全不是简单地修改 SSH 端口,也不是安装一个 Fail2ban 就能解决所有问题。

真正有效的安全防护,需要多层措施共同配合:

  1. SSH 密钥认证降低账户被破解的风险。

  2. 防火墙限制不必要的公网访问。

  3. Fail2ban 自动封禁异常登录来源。

  4. 用户权限管理降低权限滥用风险。

  5. 系统更新及时修复已知漏洞。

  6. 日志审计帮助发现异常行为。

  7. 异地备份保障业务数据安全。

对于公网 Debian VPS,建议至少完成 SSH 密钥登录、防火墙端口控制、Fail2ban、数据库访问限制和异地备份这几项基础工作。

需要特别强调:安全加固并不意味着服务器绝对安全。即使 SSH 已经关闭密码登录,网站程序漏洞、泄露的 API 密钥、错误的文件权限和存在漏洞的第三方服务,仍然可能成为入侵入口。

因此,服务器安全应该是一项持续工作,而不是一次性配置。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。