加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.1461.cn/)- 应用程序、AI行业应用、CDN、低代码、区块链!
当前位置: 首页 > 服务器 > 安全 > 正文

服务器安全审计:90%漏洞源于3类配置疏漏

发布时间:2026-10-22 14:25:53 所属栏目:安全 来源:DaWei
导读:  跟老板拍桌子那会儿,我手边正开着三台终端:一台连着跳板机卡在sudo su - root的密码输错第三遍,一台跑着nmap扫内网段——扫到一半发现被iptables DROP了,还有一台是那个永远在重连的JumpServer Web SSH,光标在闪烁,但

  跟老板拍桌子那会儿,我手边正开着三台终端:一台连着跳板机卡在sudo su - root的密码输错第三遍,一台跑着nmap扫内网段——扫到一半发现被iptables DROP了,还有一台是那个永远在重连的JumpServer Web SSH,光标在闪烁,但没反应。我说“90%漏洞就仨配置漏”,他敲桌子说“你上个月漏报了Redis未授权”。我笑了一下,没接话,顺手把桌角那杯已经凉透的茉莉花茶往右推了三厘米——杯子底下压着一张没撕干净的便签,上面是我前天写的“检查sshd_config PermitRootLogin”。


  先扔结论后补细节。这个我敢打包票:近两个月,我们做的十六次深度审计,十三次高危漏洞都出自这三类:SSH默认密钥没轮转、nginx里proxy_pass硬编码上游地址、还有Docker daemon.json里那个开了tcp://0.0.0.0:2375的监听。不是代码问题,不是中间件版本低,就是配置文件里几行字——写死了、忘删了、复制粘贴没改。上周五下午三点,后端老张发来一个yaml,说是新集群的初始化模板,我扫了一眼,ProxyPass /api/ http://10.0.1.22:8080/ —— 他把测试环境IP抄进生产镜像了。我截图发群里,配文“这个上线必P0”,然后去倒水。回来发现没人回,Lighthouse跑分截图发在同一个群,也没人看,连个表情都没有。桌面那个录屏还开着,角落小窗里是我的shell,正在tail -f /var/log/auth.log,光标静止在第473行。


  SSH那个真离谱。你见过多少次“/etc/ssh/sshd_config里PasswordAuthentication yes”和“/root/.ssh/authorized_keys权限是644”的组合拳?我们上次复现的那个客户,他们运维自己生成的rsa密钥,用的是ssh-keygen -t rsa -b 2048 -N '',完事不改authorized_keys权限,也不关密码登录,连fail2ban都配成日志路径写错——它压根没在跑。但人家CDN账单倒是每月准时到账,上个月八千四百二十九块,发票抬头还是三年前那个并购过来的子公司名字。这事我没管,反正KPI折算不到我头上。


  nginx这块更搞笑。现在没人手动写server块了,都靠Ansible模板,可模板里有个变量叫{{ upstream_host }},团队约定填域名。结果有三个同事填的是IP。其中俩人填对了,第三个——前端小李,他在Jenkins构建页手输参数时,把test-api.internal写成test-api.interal(少了个n),部署完发现上游502,查了十八分钟,最后在curl -v里看到HTTP/1.1 502 Bad Gateway响应头里带了那个拼错的域名,才想起来是template渲染错了。我原以为是DNS缓存问题,结果翻Ansible日志,发现他提交的那次PR里,vars.yml里那个值是interal,merge前都没人勾选“自动格式化JSON”按钮,也没点“预览差异”,就直接点了合并请求。点了。点了。点了。三次点击,一次鼠标悬停确认,两次回车确定,最后一次点完还顺手关掉了tab。


文章配图,仅供参考

  Docker那个……唉。昨天凌晨一点半收到告警,某台宿主机CPU打满,ps一看,二十多个containerd-shim进程挂了又起,起了又挂。登上去才发现dockerd启动参数里写了-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock,而他们那个监控Agent居然是用docker exec进容器去读cgroup的。于是Agent每30秒启一个新容器,拉完指标立刻删掉,删掉前还顺手run一个curl发心跳到本机2375端口……循环嵌套。对面工程师换了一根红色的Anker充电线,插在MacBook右边那个接口,绿灯亮了,但屏幕右下角Time Machine备份图标一直在转圈。这事我不说了,说了他们要加白名单,加完又得配TLS双向认证,配完又怕影响CI流水线,最后大概率会建个新分支叫“fix-docker-2375-with-tls-v2-temp”。你信不信?


  其实我上周试着写了个脚本,自动扫描这三类:grep -r "PermitRootLogin.yes" /etc/ssh/;find /etc/nginx -name ".conf" -exec grep -l "proxy_pass.http://" {} \\;;以及docker info | grep -i "tcp://0.0.0.0"。跑完发现——它误报太多。比如proxy_pass那一项,有合法的内部HTTP服务调用,也有确实该走HTTPS的反代,脚本分不清。所以现在还是靠人盯,每天早上九点四十七分,我打开那个Excel表,第一列服务器名,第二列SSH状态,第三列nginx upstream模式,第四列docker listen,第五列……第五列空着,我还没想好填什么。可能下周填“谁该买咖啡”,也可能填“谁昨晚又没关VSCode的remote-ssh连接”。无所谓。反正这事儿优胜劣汰——留下的都是懒得改配置的人,走的都是被线上P0逼疯的人。你问我下一步?我刚下单了两个机械键盘,青轴,一个放工位,一个放家里。等下个月开始审k8s集群,估计得加一条:“kubelet --anonymous-auth=true”。但那是下个月的事了。

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!