Debian 12服务器初始安全配置与SSH加固

为什么新装Debian 12服务器就要做安全配置

很多新手拿到一台 Debian 12服务器 后,直接用 root 远程操作,SSH 端口保持默认 22,甚至关闭了防火墙。
这样做非常危险——服务器在上线后的几分钟内就可能被扫描工具探测并尝试暴力破解。
本文面向零基础用户,从零开始做完基础安全加固,之后建站、跑服务才能真正放心。

前置准备:你需要的东西

  • 一台已安装 Debian 12 的服务器(云服务器或本地虚拟机均可)
  • 能通过 SSH 用 root 账户登录(默认密码或密钥登录)
  • 本地电脑有终端工具(Windows 可以用 PowerShell 或 Putty;macOS/Linux 直接用终端)

如果你还没有服务器,建议先购买一台最低配置的云服务器或自己用 VirtualBox 安装一个 Debian 12 系统。

第1步:更新系统并安装基础工具

登录 root 后,第一件事就是更新软件源和系统包,修复已知漏洞。

apt update && apt upgrade -y

更新完成后,顺手安装几个后面会用到的工具:

apt install sudo ufw curl wget -y
  • sudo:让普通用户也能执行管理员命令。
  • ufw:Uncomplicated Firewall,简化 iptables 的前端工具。
  • curlwget:运维必备的网络工具。

第2步:创建普通用户并赋予 sudo 权限

为什么不能用 root 直接日常操作?
因为 root 权限太大,一旦误操作或者被黑,后果严重。
你应该创建一个普通用户,只在需要时使用 sudo 提权。

adduser yourname

按提示设置密码,其他信息可以直接回车跳过。
然后把它加入 sudo 组:

usermod -aG sudo yourname

测试是否成功:先退出 root 会话(用 exit),再用新用户登录(ssh yourname@服务器IP),然后执行 sudo whoami,如果输出 root 就说明提权正常。

第3步:禁用 root 远程登录,配置 SSH 密钥

这是 Debian 12服务器 加固最关键的一步。
我们将让 SSH 只允许密钥登录,并且禁止 root 直接登录。

3.1 生成 SSH 密钥对(在本地电脑上执行)

Windows 用户请打开 PowerShell,macOS/Linux 用户打开终端:

ssh-keygen -t ed25519 -C "your_email@example.com"

一路回车即可(不设密码更省事,但建议设密码更安全)。
这会在本地 ~/.ssh/ 目录下生成两个文件:id_ed25519(私钥,谁都不能看)和 id_ed25519.pub(公钥)。

3.2 把公钥放到服务器上

登录到你刚才创建的普通用户账户(已经用 sudo 权限了),然后手动创建 .ssh 目录并粘贴公钥:

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

将本地 id_ed25519.pub 文件里的完整内容复制粘贴进来,Ctrl+O 保存,Ctrl+X 退出。
设置正确权限:

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

3.3 修改 SSH 配置文件

执行 sudo nano /etc/ssh/sshd_config,找到并修改以下参数(没有则直接添加):

PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no

保存后重启 SSH 服务生效:

sudo systemctl restart sshd

注意: 修改前请保持一个已登录的 root 终端不要关闭,避免配置错误导致自己无法登录。
测试正常后再关闭。

第4步:配置 UFW 防火墙仅开放必要端口

Debian 12 默认没有防火墙规则,我们需要手动限制。
先允许 SSH 连接(注意你之后如果改了 SSH 端口,这里要对应修改):

sudo ufw allow OpenSSH

如果以后你需要运行 Web 服务,还需要开放 HTTP 和 HTTPS:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

然后启用防火墙:

sudo ufw enable

检查规则:sudo ufw status verbose,应该看到类似输出:

Status: active
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere

注意: 如果在操作 UFW 前你通过其他端口(比如云服务商控制台有安全组),需要先确认你的 SSH 端口没有被 UFW 拒绝。
最好保持至少两个终端会话以防万一。

第5步:验证安全加固效果

  1. 测试 SSH 密钥登录:在本地用 ssh yourname@服务器IP 登录,如果不再提示输入密码,说明密钥认证成功。如果还要求密码,请检查 sshd_configPasswordAuthentication 是否被注释掉或为 no。
  2. 测试 root 登录:故意用 ssh root@服务器IP,应该被拒绝(Permission denied (publickey).)。
  3. 检查防火墙:执行 sudo ufw status,确认规则已加载。尝试从外部扫描 22 端口应该能连通,其他非开放端口则被拒绝。
  4. 最后更新检查apt list --upgradable 应无输出,说明系统已是最新。

常见问题与避坑指南

Q1:我修改 sshd_config 后重启 SSH 服务,自己断开了且无法再登录怎么办?
A:如果你有云服务商后台的 VNC(网页控制台),可以通过它登录排错。如果没有,建议在云服务商安全组中保留一个原始端口(比如 22)允许访问,或者直接先在防火墙里放行 IP。操作前绝对不要关闭最后一个 root 会话。

Q2:为什么我添加了 UFW 规则后依然连不上 SSH?
A:大概率是防火墙规则顺序问题,或者你放行的端口与你实际 SSH 端口不一致。执行 sudo ufw status numbered 查看规则编号,用 sudo ufw delete 编号 删除错误的规则。确认后用 sudo ufw reload 重载。

Q3:我可以在 Debian 12 上用 fail2ban 增强防御吗?
A:完全可以。本文给出的基础加固已经大幅提升安全性,但加上 fail2ban 能进一步阻止暴力破解。安装方法:sudo apt install fail2ban -y,默认配置即可生效。

Q4:为什么我禁用 root 远程登录后,普通用户 sudo 时需要输入密码?
A:这是正常的。如果想让特定命令免密,可以在 /etc/sudoers.d/ 下添加配置,但不建议新手修改,保持默认即可。

结尾

如果你正在配置 Debian 12服务器,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
这套基础安全配置可以挡住大多数恶意扫描,为后续搭建网站或应用服务打好地基。
坚持下去,你会发现运维其实没那么难。

分享到:
上一篇
Ubuntu 24.04运维新手实战:从基础配置到安全加固
下一篇
Rocky Linux替代CentOS
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意