埋了八個假文件等著看誰上門:十二天,五百零二次掃描的全紀錄
一名開發者在伺服器上埋了八個假配置文件,十二天內記錄到五百零二次掃描,本文回顧這場小型蜜罐實驗揭示了什麼。
2026年10月5日,掘金作者「變量探索SEQVEC」刊出一篇長文,題目直白得很:「我埋了8個假文件,看誰會上鉤」。文末的數字也一樣直白:十二天,五百零二次訪問,一百一十九個獨立IP,天天都有人來。這篇文章在開發者社羣裡被轉發圍觀,原因不難理解:它把每天撞在每臺公網伺服器上的那些「敲門聲」,第一次攤開來給人看清楚。
為什麼要埋誘餌
一般伺服器日誌是被動的。作者在文中描述,一臺公網機器每天有幾千次掃描撞上來,日誌裡滿滿的404。問題在於,你分不清誰是「隨手掃一下」,誰是「盯著你在找東西」。這兩種情況在日誌裡長得一模一樣,都是一條GET請求加上404。
於是他換了個思路:既然擋不住被掃,那就把掃描引到一個專門的地方去,看對方到底想要什麼。這就是文章裡說的蜜罐。不是那種要部署一整套系統的重型方案,就是幾個假文件。
埋什麼:做他們以為自己撿到漏的東西
關鍵原則只有一條,做他們以為自己撿到漏的東西。放一個readme.txt沒人理;要放的是那種「正常項目裡絕不該出現在公網,一旦出現就是事故」的文件。
他埋的誘餌主要分幾類。第一類是環境配置,也就是各種框架通用的.env文件,裡面放資料庫密碼、連線字串、密鑰。這一個文件最後佔了全部記錄的一半以上,排名比第二名高出將近一倍。
做得像真的是門學問。格式要對,內容要專業,還得有點「人味」。作者在文件裡留了一行運維備註,大意是「這是割接時臨時放的,割完記得刪」。他自己形容這一行是整個誘餌裡最值錢的部分,因為它傳遞了一個訊息:這不是設計如此,這是有人疏忽了。看到「臨時」「忘了刪」這種字眼,判斷力會立刻下降一階,來訪者會覺得自己撞上的是別人的失誤,而非陷阱。
第二類是內部文件,一份寫著架構說明、待辦清單的「運維筆記」,裡面刻意留了「換掉臨時密鑱」這類TODO。第三類則是偽裝成後臺接口的路徑,與其讓掃描器喫404,不如回一個JSON。
怎麼知道誰來過
光記錄IP沒什麼意思,作者自己也說,對方多半走代理、走雲主機,不會用真實IP。所以他在每一次響應裡塞進一個唯一的追蹤標識,把這個隨機串和「誰在什麼時間訪問了什麼」一起記進日誌。
這東西的價值在事後追溯。假設一年後網上流出某份「某公司內部配置」的截圖,裡面帶著那個串,就能反查出這份東西是從哪一次訪問漏出去的。作者說得很坦白:這不是為了抓人,追不到;是為了搞清楚洩露路徑。安全事件裡最難的部分從來不是「被偷了什麼」,而是「從哪漏的」。
十二天裡看到了什麼
來訪的絕大多數是自動化工具。作者能識別出來的包括:一個專門做洩露情報的平臺,掃了四十八次;一家知名安全廠商的攻擊面掃描服務,來過八次,User-Agent裡直接寫著「這是我們的掃描行為」,態度很坦蕩;還有一個網絡空間測繪搜尋引擎的爬蟲。
偽裝的也好認。有用戶代理寫著「iPod touch加火狐瀏覽器」,然後專程來請求.env。作者註解得很妙:iPod上裝火狐,還專門來翻配置文件,這種組合是不存在的。
有人則真的上鉤了。一個明顯的動作是路徑變形:有人不滿足於直接請求,開始嘗試各種繞過伺服器路徑匹配規則的寫法,包括URL編碼和路徑穿越。會做到這一步,代表前面已經掃到了響應,正在琢磨怎麼拿到更多。
這件事對一般項目意味著什麼
這篇長文沒有講什麼大道理,但幾個數字本身就足夠說話:一臺放在公網上的機器,不需要任何宣傳,十二天內就會被五百次敲門,而敲門的人最想要的那個文件,恰恰是很多項目裡真實存在、卻不該被放到公網的.env。
對開發者社羣來說,這篇文章的另一層看點在於方法本身。一個下午就能架好的幾個假文件,加上一層追蹤標識,就把原本糊成一團的日誌噪音,變成了能讀出意圖的情報。被掃是擋不住的日常,但被掃的時候對方在想什麼、找什麼、下一步會做什麼,原來是可以設計出來觀察的。
這篇文章刊出後在掘金被圍觀討論,閱讀門檻不高,結論也克制:作者沒有宣稱抓到誰,也沒有把掃描者一律描繪成攻擊者。他只是把十二天的記錄攤開,讓人看見公網上那個平時看不見的、持續運轉的掃描生態。對任何一臺掛在公網上的伺服器來說,那些敲門聲從來沒停過,只是多數人從來沒聽清楚過。
主題: 社群現象
標籤: #蜜罐實驗+資安觀察#.env文件+掃描現象#掘金長文+開發者社羣