ITSWE博客

新服务器的前二十四小时:一份可复用的开荒清单

开机第一小时被爆破七十七次。从安全基线到性能验证,一份从真实开荒中长出来的清单,以及每个步骤背后的故事。

新服务器到手,第一件事不是装网站,是活下来。这台香港机开机第一个小时,SSH 端口被爆破七十七次——公网的现实就是这样,没有缓冲期。这篇是一份从真实开荒中长出来的清单,每一步都带着事故背景。

第一小时:门禁

顺序是死的:改默认端口、装暴力破解防护且封禁时长设为永久、防火墙默认拒绝一切入站、只放行明确要用的口。永久封禁曾有过犹豫——万一封了自己?实践中靠两层保底:管理端口的地域白名单(只放行常用出口的网段,上万条规则做成地址集合,开机自动加载),以及万一被锁死的应急通道预案。

认证方式我们选了纯密码而不是密钥,这是个有争议的决定,理由要讲清楚:多设备随时救火的场景下,密钥的 loses 成本(换机、重装、私钥丢失)高于强密码加永久封禁加地域门禁的组合风险。安全方案没有标准答案,只有与使用模式匹配的答案。

内核与资源的持久化

两个系统级调优也要在开荒期做完并入档。拥塞控制:把拥塞算法换成对高延迟弱网更友好的方案,配合排队策略,一并写进系统参数的持久化配置——重启不丢。交换文件:小内存机器配两 G 交换文件,并把换页倾向调低(内存紧张时才用交换,平时不碰),同样持久化。这两项都有个共同点:不写进持久化配置,重启就打回原形,而验证它们是否还在,要跑实际参数而不是看配置文件——这与全篇“以实测为准”的原则一脉相承。

第一晚:基线

系统层面的坑在这一晚集中爆发。软件包升级卡死在两个地方:一个升级触发器死锁,要用跳过触发器的方式强推;云镜像的交互确认不受常规环境变量控制,要加保留旧配置的强制参数。时间同步的默认服务器在这台机上全部超时,换成国内源才正常——机器时间不准,证书验证、日志排序全是后续隐患。

网络层开了拥塞控制优化,配好交换文件并压低换页倾向。测速也有一套方法论:通用测速工具对这类机房的地理定位全错,自动选节点不可用;大陆方向的测速节点又会拒绝境外探测。可靠的办法是从大陆的镜像源拉大文件,用下载速度反推——实测到大陆方向走优质线路,接近端口上限。

第二天:盖房

环境层的关键决策是存储分区:系统盘只留系统,一切增长类的东西——容器镜像、数据库、站点文件——全部落在数据盘,配置和数据彻底分离,重装系统时数据盘安然无恙。这里的坑有两个,都属于“配置写了不等于真搬了”:容器运行时的镜像实体不走主配置里的数据目录,要把运行时自己的根也改掉;目录挂载树里的软链接只在宿主机命名空间生效,进容器就断。验证以磁盘占用实测为准,不看配置文件。

证书用自动化工具签发泛域名,一次管所有子域名;续期动作在签发时就写死成钩子:换新证书、同步副本、平滑重载,一条龙无人值守。

地域门禁的双层架构

管理端口的地域白名单值得单独展开,因为它是双层结构,两层职责不同。第一层在暴力破解防护的配置里:一份巨大的忽略名单——上万个网段、千万级地址——命中名单的来源无论怎么试都不会被封。第二层在防火墙:一个地址集合加上一条规则,名单之外的一切来源访问管理端口直接丢弃,连尝试的机会都不给;同时关掉第六版协议对管理端口的全部访问,因为白名单数据只有第四版。

为什么两层都要?第一层防“误伤自己人”——自己人手滑试错几次不会被永久封;第二层防“陌生人试错”——他们连认证界面都看不到。两层各自的坑也记下了:暴力防护的忽略名单要写在它自己的配置区,写到防火墙规则里无效;地址集合的更新要有脚本与备份,手工维护必乱。

测速方法论

验收线路质量有一套绕开工具坑的土办法。通用测速工具对这类机房的定位错得离谱——定位到别的大洲,自动选节点完全不可用;改用指定节点,大陆方向的节点又普遍拒绝境外探测。最终可靠的方法是土的:从大陆的公共镜像源拉一个大文件,用下载速度和耗时反推线路质量。实测这台机到大陆走优质回程线路,上海方向三十毫秒,下载接近端口上限;而老美西机到大陆一百五十毫秒开外。数字入库,选型就有据;顺带发现自动测速的各类脚本里硬编码的节点全部失效,这条路是唯一稳的。

验收:证明它活着且健康

开荒的验收清单:爆破日志归零;防火墙规则逐条外网实测(包括“该拒的拒了”和“该放的放了”两个方向);时间同步就位;磁盘格局以实际占用复核;到目标用户区域的线路质量用拉大文件的方式实测。全部通过,才允许第一个网站上线。

一点反思

这份清单最大的特点是顺序:安全先行,功能靠后。顺序错了的代价,我们见过别人的案例——先上业务再补安全,补的时候业务已经带着裸奔的数据库跑了半个月。开荒期的每一天都应该问同一个问题:**现在这个状态,敢不敢把地址发到网上?**敢,才进入下一步。

运维安全
返回全部文章