Asp.net

監控 ASP.NET 和 SQL Server 的安全性

  • August 4, 2011

監視 ASP.NET 應用程序以確保其安全并快速檢測入侵的最佳(或任何好的)方法是什麼?我們如何確定,截至目前,我們的應用程序是完全不妥協的?

我們即將啟動一個 ASP.NET 4 Web 應用程序,數據儲存在 SQL Server 上。Web 伺服器在 Windows Server 2008 實例上的 IIS 中執行,數據庫伺服器在單獨的 Win 2008 實例上的 SQL Server 2008 上執行。

我們已經審查了 Microsoft 的安全建議,我認為我們的應用程序非常安全。我們已經實施了“深度防禦”並考慮了一系列攻擊向量。

所以我們“感覺”很自信,但對我們系統的安全性還沒有真正的了解。我們如何能立即知道是否有人侵入?我們如何知道某個包是否已存放在我們的一台伺服器上?我們如何知道數據洩露是否正在進行?

有哪些概念、工具、最佳實踐等?

在此先感謝,布賴恩

額外的想法 2011 年 4 月 22 日

克里斯,感謝以下非常有用的個人觀察和提示。

什麼是監控目前應用程序活動以確保安全的良好、全面的方法?除了在應用最佳實踐、更新檔等方面始終保持警惕之外,我還想確切地知道我的系統現在正在發生什麼。我希望能夠以一種清楚地向我展示哪些流量是可疑的,哪些不是可疑的方式來觀察和分析它的活動。最後,我希望這些資訊完全準確且易於消化。

我們如何有效地接近它?除了網路上的數據包之外,一個好的解決方案難道不是還包括監視登錄、數據庫活動、ASP.NET 活動等嗎?有哪些範例可以說明如何建立強大的安全態勢?

布賴恩

您正在尋找的術語是入侵檢測系統(IDS)。有一個相關的術語稱為入侵防禦系統(IPS)。

IDS 在 IP 級別監控進入您的伺服器的流量,並將根據對流量的複雜分析發送警報。

IPS 是實際上試圖阻止某些活動的下一代 IDS。

有許多商業和開源系統可用,包括SnortSourceFireEndace等。

簡而言之,您應該考慮將這些系統之一添加到您的組合中,以進行實時監控和潛在地阻止危險活動。


我想在這裡添加更多資訊,因為評論區有點小。

您需要了解的主要內容是您將看到的攻擊類型。這些範圍從相對簡單的自動化腳本到高度複雜的針對性攻擊。他們還將訪問從網站本身到 IIS、.Net、郵件伺服器、SQL(如果可訪問),一直到您的防火牆和其他暴露的機器/服務,他們可以看到的所有內容。整體方法是真正監控正在發生的事情的唯一方法。

一般來說,一個新的站點/公司將在上線後的幾分鐘(我最多說 30 分鐘)內被自動化腳本擊中。這是新安裝的 MS Windows 使網路在安裝過程中嚴重鎖定的第一大原因。哎呀,我看到機器在第一次開機後 30 秒內就被釘死了。

黑客/蠕蟲採取的方法是不斷掃描範圍廣泛的 IP 地址,然後對響應者進行機器指紋辨識。根據個人資料,他們會以您的方式發送某些類型的攻擊。在某些情況下,分析步驟會被跳過,它們會攻擊某些埠而不管響應如何。埠 1443 (SQL) 是一個常見的埠。

儘管是最常見的攻擊形式,但自動化攻擊是迄今為止最容易處理的。關閉未使用的埠、關閉 ICMP(ping 響應)並安裝合適的防火牆將使大多數掃描器遠離。

對於腳本式攻擊,請確保您沒有暴露常見安裝的軟體包,例如 PhpMyAdmin、IIS 的 Web 管理工具,甚至是防火牆之外的遠端桌面。此外,擺脫任何名為“admin”、“administrator”、“guest”、“sa”、“dbo”等的帳戶最後確保您的密碼不允許是某人的名字,並且絕對不是預設密碼隨產品一起發貨。

按照這些構想,請確保您的數據庫伺服器不能在防火牆之外直接訪問。如果由於某種原因您必須直接訪問,那麼至少更改它響應的埠號並強制加密。

一旦所有這些都正確完成並得到保護,唯一暴露的服務應該是 Web 服務(埠 80 / 443)。仍然可以利用的項目是 IIS、.Net 或您的 Web 應用程序中的錯誤。

對於 IIS 和 .net,您必須在 MS 發布 Windows 更新後立即安裝它們。MS 在推動 Windows、IIS 和 .Net 的質量更新方面做得非常好。此外,大部分更新是針對已經在野外利用的漏洞。我們的伺服器已設置為在更新可用時立即自動安裝更新,我們從未為此煩惱過(至少可以追溯到伺服器 2003 發佈時)。

此外,您需要隨時了解防火牆的更新。不久前,思科的一個防火牆有一個漏洞,它可能會不堪重負。不幸的是,發生這種情況時,它讓所有流量都通過了。儘管修復得很快,但一年多後人們仍然受到重創,因為管理員未能跟上 IOS 更新檔的步伐。windows更新也有同樣的問題。很多人被黑只是因為他們沒有應用可以阻止它的更新。

更有針對性的攻擊更難處理。相當多的黑客正在攻擊自定義 Web 應用程序。諸如張貼聯繫我們和登錄表格之類的事情。這些文章可能包含 JavaScript,一旦管理員查看,可能會導致憑據被傳出或可能導致在收件人電腦上安裝鍵盤記錄器或木馬程序。

這裡的問題是,您甚至可能在不知情的情況下受到損害。防禦措施包括確保不能通過您的網站送出 HTML 和 JavaScript;在郵件伺服器等處進行堅如磐石(並且不斷更新)的垃圾郵件和病毒檢查。基本上,您需要查看外部實體向您發送某些內容並對其採取措施的所有可能方式。許多財富 500 強公司不斷受到這樣的打擊……包括Google。

希望以上對某人有所幫助。如果是這樣,它會帶來一個更安全的環境,那麼我會是一個快樂的人。不幸的是,大多數公司不監控流量,因此他們不知道他們的機器花費了多少時間來抵禦這些垃圾。

我可以說一些想法——但我會很高興聽到更多的想法。

我們如何能立即知道是否有人侵入?

這不是那麼容易,在我看來,一個想法是在你的後台設置一些陷阱,同時監控來自不同 ips 的雙重登錄

陷阱可以是您能想到的任何東西,例如後台**顯示“創建新管理員”**或“更改管理員密碼”的非真實頁面,並且任何人都可以進入並嘗試創建新管理員是肯定的一個穿透者——當然這個陷阱必須只有你知道,否則沒有任何意義。

為了提高安全性,對管理員的任何更改都必須需要第二個密碼,如果有人試圖對管理員帳戶進行真正的更改,或者嘗試添加任何新的管理員,並且第二個密碼失敗,則必須將其視為滲透者。

監視 ASP.NET 應用程序的方法

我認為任何監控頁面文本更改的工具都可以對此有所幫助。例如,此網路監視器可以監視您頁面上的特定文本並提醒您,或者如果找不到此文本,則採取一些措施,這意味著有人更改了頁面。

因此,您可以添加一些特殊的隱藏文本,如果您沒有找到,那麼您可以確定某些人更改了您的頁面的核心,並且可能是更改文件。

我們如何知道某種包裹是否已存放在我們的一台伺服器上

這可以是在您的伺服器上傳入的任何 aspx 頁面,並充當文件瀏覽器。對於這種情況,我建議將 web.config 文件添加到用於上傳數據的目錄中,並且在此 web.config 上不允許執行任何東西。

<configuration>
   <system.web>
     <authorization>
       <deny users="*" />
     </authorization>
   </system.web>
</configuration>

引用自:https://stackoverflow.com/questions/5745262