验证并保留访问权限
通过可信渠道确认服务器身份,并添加你的 SSH 公钥。创建具名管理用户。在测试新会话时保持原会话开启,并在更改身份验证前记录恢复方法。
修补并减少暴露
安装受支持的安全更新,并在需要时重启。检查监听服务,仅在防火墙中允许必要的端口,包括 IPv6。移除未使用的守护进程,避免仅仅为了让设置更简单而公开开放数据库。
分离用户与机密
在各自账户下运行应用程序。将私有配置放在公共 Web 目录之外,并排除在版本控制之外。使用范围较窄的数据库权限,并为生产环境和实验使用单独的凭据。
保留可用的恢复路径
设置日志轮转、磁盘告警和独立备份。重启一次以验证应用正确启动。记录更改内容,以便在干净镜像上重建配置。
关闭会话前先检查
使用新账户打开第二个连接,验证管理权限提升,并从另一客户端测试防火墙。确认服务在重启后恢复。记录提供商恢复路由,以免错误的网络规则需要临时恢复。
首日验证清单
检查开放套接字、近期认证事件、更新状态、备份时效和磁盘使用情况。确认私有配置和版本控制元数据无法通过 HTTP 获取。使用支持实际工作负载的最小已安装工具集。
ss -lntup
df -h
free -h
systemctl --failed以可逆顺序进行访问变更
首先确认控制台或救援路径,并通过可信的提供商渠道验证 SSH 主机密钥。为指定管理员安装公钥,然后打开第二个连接并测试权限提升。在重新加载服务前,验证 SSH 配置语法。仅在允许预期的 SSH 路由后,才应用防火墙更改。在替换方法从全新会话中生效后,禁用旧的身份验证方法,并包含任何所需的第二因素流程。
- 检查生效配置和包含的片段;一个文件中的设置可能不是最终策略。
- 在审查基于密钥的登录设计时,同时检查密码认证和键盘交互策略。
- 非默认的 SSH 端口可减少背景噪音,但不能替代已验证的密钥、访问限制或更新。
- 使用适用于你的发行版的服务名称和重载流程。在新策略得到验证前保持原会话开启。
# Validate before applying a changed SSH configuration.
sudo /usr/sbin/sshd -t
# Read effective settings; adapt user, host and client address to the test.
sudo /usr/sbin/sshd -T -C user=admin,host=server.example,addr=198.51.100.10官方文档:OpenSSH:服务器配置手册
从主机外部验证防火墙
将提供商网络防火墙和客户机防火墙作为独立控制措施进行审查。从另一台授权机器通过 IPv4 和 IPv6 测试预期服务。本地连接只能证明有进程在监听。不要盲目拒绝所有 ICMP 数据包:正常网络运行也需要适当的控制流量。对照实际规则检查容器发布的端口,因为应用暴露情况可能与你认为防火墙前端已应用的策略不一致。
- 如果 SSH 失败,请先检查源地址限制、监听接口和提供商防火墙,而不是反复更换密钥。
- 如果 HTTPS 失败,请依次检查 DNS、进程监听器以及本地/代理防火墙。
- 在首次生产数据集之前,请验证更新状态、干净重启、磁盘告警以及可独立恢复的备份。
- 设置已记录的时区并验证时间同步。在未检查工作负载的内存和保留需求之前,不要添加任意交换或日志设置。
官方文档:Ubuntu 服务器:防火墙管理