檢查服務是否存在漏洞
我需要編寫某種 bash 腳本來檢查服務的 conf 文件(通常用作 nginx apache mongodb cassandra ssh 等)並蒐索模式(即檢查 mongod.conf 是否具有授權:啟用行或檢查 ssh 是否通過鍵登錄已啟用,還會檢查每個服務是否都在最新版本中,禁用預設使用者)以確保服務是安全的。
但這是我無法解決的一個問題(還 ;)) - 我需要證明我的腳本有效 - 你知道任何可以檢查常用服務漏洞的應用程序嗎?我不是指網站 - 服務。我可以在執行我的腳本之前和之後執行該測試,然後 - 瞧 - 我的腳本正在拯救世界;)
我會非常感謝任何答案。
非常感謝:3
您對我的要求似乎是編寫標準監控腳本。
處理它的最好方法是選擇某種程式語言並用它來編寫它們。
Bash 腳本不是最好的選擇,因為它對於某些操作來說是不穩定的——它可以做很多事情,但是維護它是個大問題,而且由於使用了各種外部二進製文件和處理錯誤等等,它非常混亂,它不好其他語言的異常處理。
我建議使用其中一種 JVM 語言——Java、Scala、Groovy——你有適用於每個數據庫和其他東西的驅動程序。C# 也是不錯的選擇,因為它擁有所有庫。
如果沒有,那麼 Python、PHP、Perl - 這裡還有很多驅動程序和 API。
因此,您需要認真對待這個主題,
one of the most important things
並確保對每項服務進行適當的測試。當您只編寫腳本時,您可以使用任何現有的網路監控前端(如 Nagios 和 Thruk)來支持這些和通知/報告的計劃執行。
此外,您可以使用 pnp4nagios 繪製指標。
另請注意,漏洞掃描和監控是兩個不同的東西。第一個是 OpenVAS 和 Nessus,第二個是 Nagios、Solar Winds 等。您想要做的是使用自定義腳本,例如 Nagios。
這也是學習程式的好方法。您只需要編寫非常簡單的腳本,這樣您就可以在沒有太大壓力的情況下學到很多東西。每天花費 2-3 小時,這樣您就可以深入了解您的基礎架構。您可以從 Eclipse 或 IntelliJ 開始,並使用 Gradle 建構簡單的項目。由於 Gradle 具有良好的自動化和 Java 的良好支持,因此從長遠來看,您應該很高興。你可以向開發團隊尋求幫助。檢查 Nagios 外掛文件應該返回哪些字元串來使用 pnp4nagios 繪製圖形。
您也可以嘗試將日誌攝取到數據庫中,這也很有幫助。
現在一些更實用的資訊。您可以遠端執行 java 小程序(Nagios 外掛),也可以在 Nagios 機器上本地執行它(首選)。因此,您可以通過 ssh(在 Java 或 Python 中)連接到系統,讀取文件,下載並解析它。所以在某些場景下需要一些網路操作。
您還可以使用雲 API。
您也可以將 SNMP 與現有的 Nagios 外掛一起使用,因此您不需要 Java 來處理所有事情。
您可以使用專用解決方案監控一些數據庫,如果您不手動編寫腳本(Nagios 是最好的),您可以在網上找到可以監控您的數據庫性能的東西。
最後,監控腳本可以檢查您的數據庫是否有密碼。這是它通常用來做的事情。而且它不會耗盡記憶體、磁碟空間等。
這是如何正確完成的。
- 您的基礎設施數據庫,例如所有主機等,可能具有自動檢測功能。這與建構基礎設施/自動化有關。如果您使用雲,這可以是多個數據庫。
- 另一個帶有日誌和其他文件的數據庫,因此它包含 Nagios 的執行日誌和在 (4) 中執行的腳本的結果。在這裡,您可以攝取任何其他日誌。MongoDB會很好。Cassandra 也可以做到。
- 納吉奧斯
- 執行檢查數據庫 (2) 並查看檢查是否成功以及結果如何
- 通過檢查數據庫中的日誌來檢查後台腳本是否正在執行 (2)
- 執行密碼/訪問檢查的後台腳本
- 如果數據庫 (1) 中的每個系統都沒有空的 root 密碼或預設密碼設置
- 如果數據庫 (1) 中的每個系統都允許某些登錄
- 將結果和日誌攝取到數據庫 (2)
- 這也可以執行 OpenVAS,結果可以被攝取到 (2)
- 因此,如果有預設密碼或沒有密碼,您可以從 (1) 更新建構 (1) 或伺服器。您還可以建構 (1) 為 Nagios 生成檢查以監控和生成特定指標。您可以執行許多 Nagios 系統。數據庫 (2) 可用於從各種來源攝取日誌(為此您需要適配器)。根據這些日誌,您可以查看暴力破解的內容並調整策略等。
Nessus 和 OpenVAS 也是巨大的豬。因此,使用帶有專用主機檢查的 Nagios 是一種簡單而有效的方法。Nessus 和 OpenVAS 也不是檢查預設密碼或缺少密碼的好解決方案。專用腳本是解決此問題的更好方法。