🕸️ 第七章 Web网站的创建
📄 一句话概括

域管理员、网站管理员、服务器管理员是三种不同权限;进来的主路是 SSH,而它天天被打——关掉密码登录是唯一能一次性解决大面积攻击的开关。

📝 本节和前面几节的关系

这是第七章最后一节,也是【应检查的项目】里最需要动手的一项。教材 7-13 的并列关键词是【域管理员、网站管理员、SSH】——先把称呼分清,再说怎么进来。

一、三种管理员,权限完全不同

教材里出现的好几个【管理员】是不同层级的东西,混着叫会出安全事故:

身份 管什么
域管理员 整个域的用户、密码策略、组权限
网站管理员 只有这个网站的内容与配置
服务器管理员 这台机器的全部:系统、服务、日志

权限从小到大的顺序是:网站管理员 < 服务器管理员 < 域管理员。

两条实践纪律:日常维护网站只需要网站管理员账号,把服务器权限交出去是常见事故源头;服务器管理员也不要直接用 root,用普通账号登录再用 sudo 提权——这样每一次提权都有日志,出事能查到人。

二、进来的通道有这几条

通道 干什么用
SSH(22 端口) 命令行管服务器,最标准的方式
SFTP(走 22 端口) 加密传文件;老 FTP 已被浏览器淘汰
远程桌面(3389) Windows 服务器的图形界面
管理面板 cPanel / Plesk 这类网页后台,改配置、装证书
云控制台 SSH 连不上时的救急入口

SSH 是主路,也是唯一一个长期暴露在公网上、必须自己加固的通道。管理面板看着方便,但它本身也是一个网页应用——面板被爆破,整台机器就一起交出去了。

云控制台的【VNC / 串口登录】是个保险:SSH 配置改错、防火墙把自己挡住的时候,它是唯一还能进去的路。改 SSH 配置之前,先确认这条救急路是可用的。

三、SSH 为什么天天被打

现象 数字
Linux 端点攻击中涉及 SSH 的比例 89%
一台公网服务器每天被尝试登录 500~2000 次
单个 IP 单日最高认证尝试 超 14000 次
云服务器入侵中 SSH 弱口令占比 62.3%(连续四年第一)
僵尸网络一个月拿下的机器 近 7000 台

这些攻击一点不高级:拿一份常见密码字典,对着 22 端口一直试。 有记录显示,从建立连接到完成入伙只要几秒。

所以【密码足够复杂】不是策略。 只要还允许密码登录,就存在被撞开的那一天——真正的开关是【关掉密码登录,只认密钥】。

密钥认证的原理在课程里讲过:公开密钥加密,私钥永远不离开你的电脑,服务器只存公钥。 它不像密码那样可以被猜、被撞、被钓鱼——没有私钥文件,试多少次都没用。

四、加固清单:改一遍能拦住绝大多数自动化攻击

设置 作用
PasswordAuthentication no 关掉密码登录,只认密钥
密钥用 Ed25519 比 RSA 更短更快更难破
PermitRootLogin no 禁止用 root 直连,改用 sudo
MaxAuthTries 3 一次连接最多试三次
LoginGraceTime 20 20 秒没登进来就断开
AllowUsers 白名单 只允许指定账号登录
改端口 减少扫描噪音,但不算安全措施
Fail2ban 自动封禁 同一 IP 连错几次就临时拉黑

关于改端口要说明白:它不会挡住有目标的攻击者(扫一遍端口就找到了),但能过滤掉绝大多数只扫 22 端口的小僵尸,日志会干净很多。它是减噪,不是防护。

还有一条纪律,比上面所有设置都重要:改 SSH 配置前,先开第二个终端把新配置登一遍,确认能进,再关掉原来那个窗口。把自己锁在服务器外面,是这条路上最常见的翻车方式。

服务器多了之后(比如几十台),逐个分发公钥会很快失控——这时候改用 SSH 证书:由一台证书签发机给每个员工的密钥签名,服务器只信任这台签发机。离职时注销一次就行,不用挨台清理。

五、动手 Demo:把 SSH 被尝试的频率算出来

把【每天 500 到 2000 次】换算成更容易有感觉的单位。

print("  每天 500~2000 次,每月约 %.1f 万~%.1f 万次" % (500 * 30 / 10000, 2000 * 30 / 10000))
print("  14000 次/天 = 每 %.1f 秒一次" % (86400 / 14000))

实跑输出:

--------------------------------------------------------------------
管理员怎么进服务器——先把名字分清
--------------------------------------------------------------------
  教材里出现三种【管理员】,权限范围完全不同,别混着叫:

  身份             管什么
  --------------------------------------------------
  域管理员         整个域的用户、密码策略、组权限
  网站管理员       只有这个网站的内容与配置
  服务器管理员     这台机器的全部:系统、服务、日志
  --------------------------------------------------
  权限从小到大的顺序是:网站管理员 < 服务器管理员 < 域管理员。
  日常维护网站只需要网站管理员,把服务器权限交出去是常见事故源头。

  进的通道有这几条,用哪条看要干什么:

  通道                   干什么用
  -------------------------------------------------------------------
  SSH(22 端口)         命令行管服务器,最标准的方式
  SFTP(走 22 端口)     加密传文件;老 FTP 已被浏览器淘汰
  远程桌面(3389)       Windows 服务器的图形界面
  管理面板               cPanel / Plesk 这类网页后台,改配置、装证书
  云控制台               SSH 连不上时的救急入口
  -------------------------------------------------------------------
  SSH 之所以是重点,是因为它一旦敞开在公网上,就会被当成靶子:

  现象                                数字
  ----------------------------------------------------------
  Linux 端点攻击中涉及 SSH 的比例     89%
  一台公网服务器每天被尝试登录        500~2000 次
  单个 IP 单日最高认证尝试            超 14000 次
  云服务器入侵中 SSH 弱口令占比       62.3%(连续四年第一)
  僵尸网络一个月拿下的机器            近 7000 台
  ----------------------------------------------------------
  这些攻击一点不高级:拿一份常见密码字典,对着 22 端口一直试。
  有的记录里,从建立连接到完成入伙只要四秒。
  所以【弱口令】三个字,就是服务器被端走的原因。

  照这份清单改一遍,能拦住绝大多数自动化攻击:

  设置                          作用
  -----------------------------------------------------------
  PasswordAuthentication no     关掉密码登录,只认密钥
  密钥用 Ed25519                比 RSA 更短更快更难破
  PermitRootLogin no            禁止用 root 直连,改用 sudo
  MaxAuthTries 3                一次连接最多试三次
  LoginGraceTime 20             20 秒没登进来就断开
  AllowUsers 白名单             只允许指定账号登录
  改端口                        减少扫描噪音,但不算安全措施
  Fail2ban 自动封禁             同一 IP 连错几次就临时拉黑
  -----------------------------------------------------------
  最后一条纪律,比上面所有设置都重要:改 sshd 配置前,
  先开第二个终端把新配置登一遍,确认能进再关掉原来那个窗口。
  把自己锁在服务器外面,是这条路线上最常见的翻车方式。

看第一行:一个月 1.5 万到 6 万次。这个量级说明:只要 22 端口开着密码登录,被撞开只是时间问题。 看第二行:每 6.2 秒一次。这是单个 IP 的峰值记录——攻击是自动化的,你不主动加固,它就一直试下去。 所以那张加固清单里,性价比最高的是第一条:关掉密码登录。它一次性消灭了整个撞库攻击面,其余的设置都是补充。 最后回到开头的三种管理员:权限要给到刚好够用。 让运营用管理员账号改内容,比让所有人都拿服务器权限安全得多。

30 秒实验

  1. 如果你有云服务器,打开登录日志(/var/log/auth.log)看看最近的失败尝试有多少条。
  2. 检查你的服务器是不是还允许密码登录 SSH——如果是,今天就换成密钥。
  3. 数一数公司里有几个人知道服务器的 root 密码,再想想这个数字应该是一还是十几。

常见误区

  1. 错误:SSH 端口改掉就安全了。——纠正:改端口只减少扫描噪音。 有针对目标的攻击者扫一遍端口就能找到——真正的开关是【关掉密码登录】。
  2. 错误:密码设得复杂一点就够了。——纠正:撞库用的是泄漏密码库,不是猜。 只要允许密码登录,就有被撞开的可能——换成密钥,攻击面直接归零。
  3. 错误:管理员就是管理员,权限一样。——纠正:域管理员、服务器管理员、网站管理员是三个层级。 按需授权、日常不用最高权限,是防止【一次事故毁掉全部】的基本做法。
自测三问(点开对答案) 1. 域管理员、网站管理员、服务器管理员,权限顺序是什么? —— **网站管理员 < 服务器管理员 < 域管理员。** 日常维护网站只该用网站管理员,**服务器权限不外借。** 2. 为什么说【关掉密码登录】是最有效的一步? —— 因为**绝大多数攻击是拿泄漏密码库撞 22 端口**(SSH 占 Linux 端点攻击的 89%)。**关掉密码登录后,没有私钥文件就进不来——攻击面直接消失。** 3. 改 SSH 配置时最该防的是什么? —— **把自己锁在外面。** 改之前先开第二个终端验证新配置能登录,**并确认云控制台的救急通道可用**,再去关掉旧会话。

相关笔记