Operations_&_Zen_Meditation

运维与参禅

乍一看可能会觉得两者毫无关系,但是最近两年的工作下来愈发让我觉得两者是密不可分

安全与底线

老实说跳槽之后的工作内容与安全的关联并不多,更像是闲暇之余的副职,没人关心具体的安全实施还有风险控制

规划、执行、运营、管理,一切都丢到我自己手上

这样也不错吧,至少自己想干啥就能干啥

开头的日子往往是最困难的,困难到服务器都没一台,只能靠着同事的100块钱一年的阿里云服务器来部署官网

到后来别人资助了一台信创CPU的服务器,找了运营商拉了一根互联网专线直接接服务器上配了个静态IP

这台服务器就此启航了

装linux系统,配置yum源,lnm的架构烂熟于心,起docker服务顺便搭了个dify

至于安全?除了我之外没人在乎,每天上千次的SSH爆破,还有裸露的后端接口,搞台WAF设备又不现实,只能自己谋划出路了

首先是SSH爆破,强密码是少不了的,32位大写加数字你就爆破去吧,但是看着log里的ssh login failure还是烦

自己写了个ssh fail2ban的脚本,还挺好用的

至于WEB服务,一开始想拉个雷池WAF社区版下来用下,但是沟槽的信创CPU的指令集不支持,只好作罢

随便找了个uuWAF,简单配置了下后端转发,调试了下WAF规则,效果看着还不错,甚至还DIY了个拦截页面

hajimiwaf

但是问题又来了,没法做日志记录,准确来说是request body的监控缺失

众所周知,nginx的access.log抓不到request body,所以需要改为用openresty,自己写lua脚本去抓request body

抓到了之后又该怎么去日志分析?顺手docker pull了一个wazuh来干这活

到这一步来说算是建立了一个针对应用服务器的比较完整的安全体系(0成本支出)

期间也有很多比较沟槽的问题,比如说搭建的confluence放在openresty下面去转发就有问题,死活用不了,干了一个周末之后决定还是单独监听端口然后加Firewall白名单IP来解决

还有uuWAF用的mysql数据库,在沟槽的麒麟V10 SP2上运行卡死,死活跑不起来,最后换了mariadb才能解决

明明理论上来讲就不该出现这些问题,但是这些问题偏偏出现了

是无可奈何,还是无能为力?

自己过往的无数次经验在此环境下没法解释当下这些千奇百怪的错误,只能学会接受这种范式转移,推倒自己的既有经验与知识体系,从第一性原理出发来思考解决方案

根据自己的一些经验来看,这才是找到特解的最快方法

很多情况下的黑盒问题你根本没法去硬碰硬,反而曲线救国才是明智之举

而安全并不是一劳永逸的,dify的docker网络优先级比firewall高,因为直接用的iptables,后来react2shell把dify的容器给RCE了被人拿去挖矿,搞了一上午干完了应急响应(处置+逆向+溯源+复现)

系统没问题要安全工程师有什么用?系统出问题要安全工程师有什么用?这虽说是个段子但也值得思考

安全,既是意识,也是技术能力

技术能力既是平日里的安全底线建设能力,也是针对底线被突破的事故处置能力,两者缺一不可


技术与心理

每个人在刚接触新方向时,都会不自觉地走过那条著名的"DK曲线"

我很庆幸,我在大学四年走完了它的"愚者之峰"和"绝望之谷"

dk

当自己刚入门时,觉得自己无所不能

跑通了几个架构,写了几行脚本,那种短暂的全能感很容易让人迷失

但现实的耳光总是来得很快,尤其是当碰壁在全新的技术栈和深不见底的黑盒问题上时

真正的痛苦不在于"不知道怎么做",而在于"我以为我知道,但它偏偏跑不通"

这就引发了那个最折磨人的死循环:自我假设、自我质疑、自我否认

这是一种极度反人性的折磨

每一次范式偏移,都意味着要亲手打碎自己刚刚建立起来的知识体系和自信心

在排错的过程中,不仅是在修系统,更是在跟自己的傲慢与固执搏斗——承认自己之前的思路全错,承认自己对底层的理解幼稚得可笑

然后推翻一切,深吸一口气,再去重新假设,再去质疑,再去否认……

而且,那个时代还没有AI这玩意,没有捷径,没有喂饭式的解答

只能花费大量的时间,去搜索互联网上某些角落的Blog、古早的论坛,或者是某个不起眼的YouTube视频

在半夜一点,翻到Google的第十三页搜索结果,死磕某个可能相关的术语,只为寻求一丝飘渺的线索

直到所有的不可能的情况都排除了,剩下的唯一可能性就是真相

听起来可能很简单,但是很多时候,剩下的那个事实不仅反直觉,甚至反常识

把配置文件检查了几十遍,日志被从头翻到尾,所有的技术经验都在心底咆哮着"这样绝对没问题"……

但是现实的一次次报错,就像一个个耳光,无声地打在脸上

这种时候,就和技术能力没多大关系了,考验的反而是心理能力

是否敢于接受那个被自己的经验与潜意识认为最不可能的结论?是否敢于推翻一切官方文档的说法,从代码的层面去找寻问题的根本原因?

技术能力教的是"如何使用排除法",它是有尽头的

不论是抓包还是探针,只要愿意学,总能掌握

但心理能力决定了,当排除法走到尽头,面对那个荒谬绝伦、颠覆过往所有认知的真相时,敢不敢去直视它、接受它,并死死压抑住砸键盘的冲动,从零开始寻找特解

技术能力与心理能力,谁更重要?谁更难?

如果在初学者时期,我会毫不犹豫地说技术更重要

但这两年的"全栈背锅"经历告诉我:心理能力远比技术能力重要,且培养难度呈指数级倍增

技术是有说明书的,无论是配置yum源、写lua脚本抓request body,还是部署Wazuh,哪怕再难,它都有官方文档、有开源社区,到现在甚至有AI可以问

技术的培养是线性的,只要愿意投入时间去Debug,总能找到那个true或false

但心理是无字天书,心理能力的培养是非线性的,它只能在一次次高压、背锅、崩溃边缘的实战中被"淬炼"出来

没有哪本书能教会:当公司核心业务停摆,老板站在身后盯着屏幕,而SSH都连不上时,如何控制住颤抖的手指不敲错命令

技术能力就像一把枪,而心理能力就像拿枪的手

枪平时可以打得快、打得远、打得准

但是面对火力压制、火炮覆盖、地毯式轰炸时,手又是否能够拿稳这把枪?

这种临危不乱的定力,本身就是让技术敏锐度闪现的温床

当过往的经验没法解释千奇百怪的错误时,只有心态稳住了,才能跳出经验主义的牢笼,去寻找那条曲线救国的路

技术的瓶颈在于智力和时间

而心理的瓶颈,在于能不能在一千次自我否认的废墟上,第一千零一次地重建世界观

能熬过这个循环的人,技术早已不是问题,因为心性已经不可战胜

正是应对了那句"What doesn’t kill you makes you stronger"

一个道理


退步与妥协

除了在绝望之谷里死磕的抗压能力,心理修行的最后一道关卡,是学会退步

这种退步不是摆烂,而是一种极高境界的妥协

每一个搞技术的人,骨子里大概都住着一个极端的理想主义者

希望架构绝对优雅、代码绝对规范、安全绝对无死角,甚至希望日志里连一个黄色的Warning都不出现

这种技术上的强迫症和精神洁癖,在顺境和资源充足时,被称作工匠精神

但身处开荒期,这就成了作茧自缚的业障

现实是什么?现实是连一台像样的物理机都没有,是靠着同事凑的100块钱阿里云,和别人施舍的信创CPU服务器强行拉起业务的草台班子

在这个真实得有些残酷的物理世界里,资源永远匮乏,需求永远畸形

没有任何系统是按照教科书里的完美拓扑图生长出来的

相反,所有真实的、承载着真金白银业务的系统,永远都是千疮百孔的,是用胶带、补丁、过期的开源组件和各种临时脚本强行缝合起来的"科学怪人"

如果紧紧抱着那套"绝对正确"的技术规范不放,心理上无法接受这种"不完美",每天都会活在"为什么这么烂"的内耗与怨气中

这就叫"执迷于相"

真正的运维参禅,是彻底承认现实的粗糙,并学会与这坨千疮百孔的系统和解

当WAF在麒麟系统上跑不起来导致卡死时,不去为了所谓的"安全架构规范"死磕,而是果断换上MariaDB

当买不起防护设备时,不用去抱怨公司不给预算,而是用一个简陋却管用的Fail2ban脚本先把SSH的命保住

妥协,是在极度受限的泥沼里寻找最优解的智慧

真正的技术功力,不是在无菌实验室里造火箭,而是身处破破烂烂的系统之中,依然能信手拈来一个简单的脚本、一个违背常规但能绕开Bug的奇招,硬生生地维持住整个业务的齿轮继续流转

必须残忍地杀死那个有"技术洁癖"的自己

技术,终究是渡河的筏子,是用来解决现实生存问题的工具,而不是用来满足工程师个人审美和完美主义情结的艺术品

只要河渡过去了,筏子再破再丑,也是好筏子

若有一天,可以毫无心理障碍地在一个优雅的系统里打上一个粗暴的补丁

不再为代码不够优美而心生烦恼,只为业务能够在风雨飘摇中平稳运行而会心一笑时,就真的悟了

接受了残缺本身就是一种常态,此时,深夜机房里的风扇轰鸣便如梵音

而敲击键盘的声音,自然也就带上了一点木鱼的空灵


求不得

回想起来,那种"心理上无法接受不完美,每天活在内耗中"的状态,其实早在大学初接触CTF时就已经刻骨铭心

当时的学校和学院对网络安全根本不上心,而其他学校都有对应的社团或者院队

CTF这条路纯粹是靠自己在网上的野路子一点点从零开始摸索

找资源、找靶场,像个无头苍蝇一样乱撞

那时的我,可以说是一个标准的脚本小子

眼光死死局限在表层的攻击手法上:去哪里找 Payload,怎么用现成的工具去扫,怎么套公式一样的去注入

至于底层的应用代码逻辑是什么?内存里到底发生了什么?根本没去研究过

结果是惨烈的

大一大二参加了数次比赛,基本都是陪跑,拿不到任何成绩

那是一段极度内耗的日子

看着计分板上别人的分数,再看看自己手里打不出去的Payload,强烈的自我怀疑能把人吞噬

在心里反复质问自己:是不是我不够聪明?是不是我没有天赋?为什么我投入了这么多时间,却依然是个连门槛都跨不过去的废物?

在CTF这种拿到Flag就是1,拿不到就是0的绝对二元世界里,结果成了唯一的标尺

得不到结果,所有的努力似乎都成了笑话

真正的转折点,发生在疫情居家那半年

既然在表层找不到答案,我决定向下走

半年的闭关里,死磕了三十多台Vulnhub机器,强行把自己踹进了渗透测试的大门

更重要的是,开始自己动手写CTF靶场

这是一个极其痛苦但又极其通透的范式转移

不再以攻击者的视角去盲猜漏洞,而是以开发者的视角,从最底层的代码逻辑去审视一个系统时,一切都变了

终于明白了一个漏洞为何而生,也清楚了在代码层面该如何去阻止

也就是在那个时候,表层的迷雾散开了

后来,找到了两个同样研究CTF的学弟,一个Web,一个Pwn

为了弥补团队的技术短板,又开始学习Crypto和Reverse

最后,迎来了那场意义非凡的比赛

比赛结束时,距离冠军,只有一题之差

按理说,对于一个曾经极度内耗、极度渴望证明自己的人来说,这是最残酷的剧本——倒在离顶点只有一步之遥的地方,这难道不是最应该感到惋惜和痛苦的时刻吗?

但在那一瞬间,看着屏幕上的排名,内心竟然出奇地平静,连一丝惋惜都没有,内心只有与自己曾经的内耗和解

因为我突然意识到,那个为了分数而内耗的自己已经死了

在这几年的折腾里,我手搓了靶场,摸透了底层逻辑,补齐了逆向与密码学的短板,还拉起了一支队伍

我非常清楚自己掌握了什么,也清楚自己能解决什么问题

学有所成这四个字,在心里稳稳当当地扎下了根

我不需要那个冠军的头衔来证明我行不行了

从那一刻起,我真正走出了CTF带来的精神内耗

这也为我后来面对工作中那些千疮百孔的破烂系统、面对千奇百怪的黑盒报错时,埋下了一颗定海神针

不执着于表面的"相"(分数、报错、完美的架构),而是去探求底层的"理"(代码逻辑、第一性原理)

不去强求那个虚无缥缈的完美结果,而是笃定地走在解决问题的因果链路中时,所有的焦虑与内耗,便会在这敲击键盘的木鱼声中,烟消云散


殊途同归

每次复盘曾经踩过的坑时,视线里总会不可避免地浮现出一条未曾设想的捷径

伴随而来的,往往是对那条未择之路的过度美化,以及对当初决定的懊恼与遗憾

站在事后的上帝视角回望,那条捷径清晰、笔直,仿佛在无声地嘲笑自己当初的迟钝

但其实,那条所谓的捷径大多只是理论上的最优解

它之所以看起来完美无瑕,仅仅是因为它没有被真正走过,没有机会在粗糙的现实环境里报错、卡死或是抛出异常

当身处局内、面对千头万绪的复杂状况时,本就没有全知全能的视角

只能像个在迷雾中摸黑过河的人,依靠最原始的笨办法,用一次次的试错去排雷,用肉身一点点剥离干扰项

仔细想想,为什么现在能一眼看出捷径所在?

恰恰是因为亲自把那条最绕、最远的弯路走绝了

那些看似无意义的死磕,补齐了认知里的盲区,从底层构建起了对整个事件完整的逻辑拓扑图

如果没有真正走过那条弯路,根本连"捷径"的入口都看不见

因此,把这种后知后觉视作遗憾,对当初那个在迷雾里死磕的自己并不公平

走过的远路从来都不是浪费时间,那是为了破除黑盒、揭开信息迷雾而必须支付的成本

那条未曾踏足的捷径,根本不是错失的遗憾,而是用漫长的远路,真刀真枪换来的战利品

人生又何尝不是如此

人生无需纠结标准答案,因为只有特定条件、特定状况、特定资源下的特解

天时不可求,地利不可遇,只有自己脚下的路由自己做主


何为禅道

这篇文章的标题叫"运维与参禅",但到底什么是"禅",什么是"道"?

心即为禅,物即为道。

对于技术人来说,"物"就是那台冷冰冰的物理机、那段正在执行的代码、那个跑出未知异常的黑盒系统

而"心",就是脑海中固有的经验、既定的知识体系,以及那份"事情理应如此"的执念

心随物动,即为禅道。

身处绝望之谷,被千奇百怪的Error逼到崩溃时,痛苦的根源其实都在于"心与物"的对抗

总是习惯性地拿自己已有的知识体系,去死磕"物"的现实逻辑

试图强迫现实的系统,去顺从自己脑海中那个完美的理论模型

但"物"是客观的,它不以人的意志为转移

所以,什么是真正的参禅?

参禅,就是放下"我执"

是不再拿既有的经验去死磕物体的逻辑,而是让自己的内心彻底沉静下来,顺从物体的逻辑去运转

去顺着网卡的流量,顺着底层的系统调用,顺着日志的蛛丝马迹,去感受并理解这个系统在当下的特定环境中,究竟是如何活着的

放弃了对抗,开始通过"物"的真实逻辑,来推翻并反写自己的知识体系时,参禅的动作便真正发生了

在这个瞬间,个人的主观情绪被剥离了,偏见与傲慢消失了

人与系统融为一体,代码的运转成为了思维的延伸,系统的指令与人的呼吸同进退

不再有因为未知而产生的恐慌,也不再有急于求成的焦虑,只有在一行行排查命令中流淌的极度专注

这个物我两忘、顺应系统呼吸的过程,即是心流


今天整理了一下自己的经历之后才发现自己早已参禅悟道

寻解不识禅中意

除虫已是禅中人

Bufferfly

2026年 春末夏初某日 晴