一台公网机器从开机第一分钟就在被自动扫描——这不是修辞,是常态。 所以第一小时不是拿来装东西的,是拿来把门关上的。 五个动作,顺序有严格依赖。
本文写什么五个动作的顺序与依赖、三个经典翻车。 本文不写我们自己机器的任何配置。示例全是通用占位。
| 序 | 动作 | 为什么必须在这个位置 |
|---|---|---|
| 1 | 密钥登录能用 | 后面每一步都可能把你挡在外面,这一步是你的退路 |
| 2 | 建非 root 用户,给它 sudo | 要在关掉 root 登录之前建好,否则关完就没人能进 |
| 3 | 关掉密码登录(顺带关 root 直登) | 扫描器绝大多数在试密码。这一步的收益最大 |
| 4 | 防火墙:默认拒绝,只开必需 | 要在装服务之前设好,不然会漏掉刚开的端口 |
| 5 | 失败封禁(fail2ban 之类) | 兜底。前面做对了它作用有限,但成本也低 |
每一步都在减少能进来的方式。如果你先关掉密码登录、再去配密钥, 中间那段时间你就一种登录方式都没有——而那台机器在别人的机房里。
铁律一句话:先确认新的进门方式能用,再关掉旧的。 这条对后面所有运维改动都成立,不只是开机第一小时。
改了配置、重启了 SSH、然后关掉终端——结果新配置有错,再也连不上。
正确姿势:改完之后,保持当前这个连接不要关, 另开一个新连接验证能进。新连接成功了,才关旧的。 旧连接就是你的安全绳。
设成「默认拒绝入站」的那一瞬间,你自己的 SSH 也被拒了。
正确姿势:先加放行 SSH 的规则,再改默认策略。 同样是「先开新门,再关旧门」。
建了新用户、关了 root 登录,然后发现新用户什么都干不了。
正确姿势:建完用户立刻验证——用新用户登进去,跑一条需要 sudo 的命令, 确认能行,再去关 root。
三个翻车的共同结构是一样的:在验证新路径之前关掉了旧路径。 记住这一条,比记住任何具体命令都有用。
| 端口 | 开不开 |
|---|---|
| SSH | 开(这是你唯一的入口) |
| 你真的对外提供的服务 | 开 |
| 其他一切 | 不开 |
常驻 agent、数据库、管理面板这类东西只该监听本机地址, 不该绑到公网网卡上。很多软件的默认配置是监听所有网卡—— 那意味着防火墙一旦有个口子,它就暴露了。
两层都要做:服务只绑本机(第一层),防火墙也拦(第二层)。 只做防火墙那一层,规则写错一次就全露了。
| 事 | 怎么做 |
|---|---|
| 系统更新 | 至少开安全更新自动装。不更新的机器,防火墙配得再好也没用 |
| 日志轮转 | 上一篇说的那条:第一天就配,不然迟早盘满 |
| 知道谁登过 | 偶尔看一眼登录记录。不需要监控系统,看一眼就行 |
你迟早要再开一台——换供应商、换区域、或者这台坏了。 那时候这份笔记的价值远超过它花的十分钟。
记的时候有一条纪律:笔记里只写步骤,不写密钥和真实地址。 因为这份笔记多半会进你的备份、甚至进某个仓库。 把可变的东西写成占位符,用的时候替换—— 这也是第 22 篇「一条命令重建」的起点。