我如何用单个脚本实现乌班图服务器加固的自动化

发布日期:2026-07-31 10:02:19  浏览量 :0
发布日期:2026-07-31 10:02:19  
0

保护云服务器的安全并实现自动化

当我第一次启动云服务器时,我以为最困难的部分已经结束了。事实并非如此。该服务器对全世界开放:启用了根用户登录,端口 22 向互联网上的每个扫描器广播自身,没有防火墙,也没有证书。

几小时后,我检查了 /var/log/auth.log,发现了数百次失败的登录尝试。那一刻,我明白了为什么 SSH 加固不是可选项。

为什么 SSH 加固至关重要

SSH 是通往您服务器的大门。默认情况下,这扇门是大开着的:端口 22,允许密码认证,并允许根用户登录。自动化机器人每小时扫描数百万个 IP 地址,寻找的正是这种情况。

加固 SSH 意味着在任何其他事物接触服务器之前先堵住这个漏洞:

  • 禁用根用户登录:PermitRootLogin no
  • 禁用密码认证并仅使用密钥:PasswordAuthentication no
  • 将 SSH 移出端口 22——我使用端口 2247
  • 限制仅一个用户可以登录:AllowUsers deploy
  • 在 10 分钟后断开空闲会话:

    • ClientAliveInterval 300
    • ClientAliveCountMax 2

这五项更改消除了绝大多数自动化攻击。您并非隐形,但不再是一个容易下手的目标。

UFW 的作用

UFW(非复杂防火墙)是 Ubuntu 提供的易于使用的 iptables 接口。您无需编写底层规则,而是直接表达意图:

ufw default deny incoming
ufw default allow outgoing

ufw allow 2247/tcp   # 自定义端口上的 SSH
ufw allow 80/tcp     # HTTP
ufw allow 443/tcp    # HTTPS

ufw --force enable

所有未明确允许的流量都会被阻止。这是应用于网络的最小权限原则,也是管理良好的 Kubernetes NetworkPolicies、身份和访问管理角色以及基于角色的访问控制所遵循的相同原则。

从这里开始学习。

Let's Encrypt 的工作原理

Let's Encrypt 是一家免费、自动化的证书颁发机构,受主流浏览器信任。其流程简单明了:

  1. 您将域名指向服务器的 IP 地址。
  2. Certbot 通过 HTTP 提供挑战文件,以证明您拥有该域名的控制权。
  3. Let's Encrypt 颁发有效期为 90 天的证书。
  4. Certbot 重写您的 Nginx 配置,以提供 HTTPS 服务并自动重定向 HTTP。
  5. 计划任务会在证书过期前续订——无需人工操作。

结果是一个免费且自动维护的 HTTPS 网站。

以下命令确认续订流程正常工作,且不会修改您当前的有效证书:

certbot renew --dry-run

幂等性的含义及其重要性

幂等性意味着运行同一操作两次产生的结果与运行一次相同。

这听起来很学术化。其实不然。

在实践中,这意味着:

  • 如果 deploy 用户已存在,则跳过创建步骤,而不是返回错误。
  • 如果证书已存在,则跳过申请步骤,而不是请求重复证书。
  • 如果软件包已安装,apt-get 会妥善处理。

如果没有幂等性,在部分失败后重新运行设置脚本可能会导致您将自己锁在系统之外

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

分享到:

长按或扫码识别 分享给好友

长按或扫码识别 分享给好友
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据