Debian 12 刚装完系统,默认其实已经比很多发行版要干净,但离“能直接放到公网”还有距离。新手最怕的不是不会配置,而是配置了一堆自己都不懂的规则,最后要么 SSH 连不上,要么留下更大的洞。所以极简安全配置的核心思路是:只做必要的事,每一步都知道为什么,并且能随时回退。

先从一个最容易被忽略的点说起:更新源和系统更新。很多人装完系统第一件事是装软件,其实第一件事应该是确保系统是最新的。Debian 的 stable 分支本身不以“新”见长,但安全更新非常及时。执行

apt update && apt upgrade -y
之后,建议再装一个
unattended-upgrades
,让安全更新自动进行。对于新手运维来说,手动更新经常忘记,自动安全更新是性价比最高的防护。

SSH 是唯一入口,先把它锁紧

云服务器和物理服务器不同,你唯一能远程管理的入口通常就是 SSH。默认情况下 Debian 的 SSH 允许 root 密码登录,这在公网上非常危险。改配置之前,先创建一个普通用户并赋予 sudo 权限,这一步不能省,否则关了 root 登录你自己也进不去了。

创建用户并加入 sudo 组:

adduser myadmin
usermod -aG sudo myadmin

然后用这个新用户测试一次 sudo 是否正常,确认无误后再编辑 SSH 配置文件。打开

/etc/ssh/sshd_config
,改以下几个关键项:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Port 2222

把 SSH 端口从 22 改成一个高位端口,不是为了“安全”,而是为了减少日志里海量的自动化扫描噪音。新手经常被这些扫描吓到,改端口后日志会干净很多。改完执行

systemctl restart ssh
,不要关闭当前连接,另开一个终端测试新端口和密钥登录是否正常。确认能登录后再关闭旧会话。

这里强调一下,PasswordAuthentication 设为 no 之前,必须先把公钥放到

~/.ssh/authorized_keys
里并测试密钥登录成功。顺序错了就会把自己锁在门外。对于新手,建议先保留密码登录,等密钥测试通过后再关闭。

防火墙只放行必要端口

Debian 默认没有启用防火墙,iptables 规则是空的。新手不建议直接写 iptables 规则,用 ufw 或者 firewalld 更直观。Debian 上 ufw 更简单:

apt install ufw -y
ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

如果你只跑一个网站,就只开 80 和 443。如果暂时没有网站,只开 SSH 端口。每多开一个端口,就多一个被攻击的面。ufw 的好处是规则清晰,随时可以用

ufw status numbered
查看,用
ufw delete 数字
删除。不要一上来就照着别人的教程开一堆端口,按需放行。

fail2ban 不是必须,但很适合新手

很多安全教程把 fail2ban 当成标配,其实它只是一个日志分析加封禁工具。如果你的 SSH 已经改成密钥登录并且换了端口,fail2ban 的边际收益不大。但 fail2ban 对新手有一个额外价值:它能让你直观看到有多少攻击被挡下来了,增强对服务器安全状态的感知。

安装很简单:

apt install fail2ban -y

默认配置对 SSH 就有效。如果你想调整封禁时间和阈值,复制一份 jail.local 出来改:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

在 jail.local 里找到 [sshd] 段落,设置

maxretry = 3
和
bantime = 3600
即可。注意 fail2ban 依赖日志,如果你的 SSH 端口改了,需要确认 fail2ban 监控的是正确的日志路径,Debian 默认的 sshd 日志在
/var/log/auth.log
,一般不用改。

最小化安装和软件源管理

Debian 安装时如果选了“标准系统工具”和“SSH server”,装完后其实已经比较精简。新手最容易犯的错误是看到教程就装一堆用不上的软件,比如各种监控面板、Web 管理工具。每多一个软件,就多一份维护成本和安全风险。建议只装你当前业务真正需要的东西。

软件源方面,Debian 12 默认的 sources.list 已经包含 main、contrib、non-free-firmware,不需要像老版本那样手动加 non-free。不要随便添加第三方源,尤其是那些来路不明的 PPA 或一键脚本源。如果必须装某个软件,优先用 Debian 官方仓库,其次用软件官方提供的 apt 源,并验证其 GPG 签名。

系统资源限制和基础加固

有几个小配置经常被忽略,但对新手服务器很实用。第一是

/etc/sysctl.conf
里的网络参数,可以加两行:

net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1

第一行开启 SYN cookie 防护,减少 SYN flood 的影响;第二行开启反向路径过滤,防止 IP 欺骗。改完执行

sysctl -p
生效。

第二是限制用户资源,防止某个进程把系统拖垮。编辑

/etc/security/limits.conf
,给普通用户加上合理的限制:

myadmin soft nproc 4096
myadmin hard nproc 8192
myadmin soft nofile 65535
myadmin hard nofile 65535

这些数字不是绝对的,根据你的业务调整。核心目的是防止误操作或恶意进程耗尽系统资源。

日志和审计:出问题才知道发生了什么

新手最怕的不是被攻击,而是被攻击了不知道。Debian 默认的 rsyslog 会把大部分日志写到

/var/log/
下。建议养成定期看
/var/log/auth.log
的习惯,尤其是登录失败记录。可以用一条简单的命令快速查看最近的失败登录:

grep "Failed password" /var/log/auth.log | tail -20

如果看到大量来自同一个 IP 的失败尝试,而 fail2ban 没有拦截,检查 fail2ban 是否在运行。另外,

journalctl -xe
是排查服务问题的利器,遇到服务起不来先看它。

还有一个容易被忽略的细节:时区。服务器时间不准会导致日志时间错乱,出问题时无法对应。执行

timedatectl set-timezone Asia/Shanghai
设置时区,并确保 systemd-timesyncd 服务在运行。

备份策略:安全配置的最后一块拼图

很多新手把安全理解为“防攻击”,其实数据丢失比被攻击更常见。极简安全配置里必须包含备份。不需要复杂的方案,一个简单的 tar 加 cron 就够:

tar czf /backup/etc-$(date +%F).tar.gz /etc /var/www /home

把这条命令放到 crontab 里每天执行,然后把备份文件同步到本地或另一台机器。备份目录不要放在同一块磁盘上,否则磁盘坏了备份也没了。对于新手,至少保证 /etc、/var/www、/home 这三个目录有定期备份,出问题能快速恢复。

总结:极简不是简陋

Debian 服务器的极简安全配置,本质上是把攻击面缩到最小,同时保留足够的可见性。具体来说就是:系统保持更新、SSH 用密钥登录并换端口、防火墙只开必要端口、fail2ban 做辅助封禁、不装多余软件、限制资源、看好日志、做好备份。这八件事做完,你的服务器已经比互联网上大多数裸奔的机器安全得多。剩下的时间,用来观察和学习,而不是折腾更多复杂的安全工具。