用Apache的CGI封裝器來加強安全性(轉)
用Apache的CGI封裝器來加強安全性(轉)[@more@]如果要加強Apache伺服器的安全性,就應該檢查CGI(公共閘道器介面)的使用。一個應用程式中的漏洞通常在使用者接觸資料庫時的某個地方暴露出來,而這個地方正是CGI。它是Web伺服器和外部程式之間的橋樑,用來告知這些程式該如何執行以滿足瀏覽器的需求。CGI控制著兩個方向的資料格式。它是一個協議,而不是一種語言,可以用很多方法來實現。尋找安全漏洞CGI指令碼的一個大問題是伺服器的預設設定很容易被利用。下面一些是最危險的:*以Web伺服器使用者執行。預設地,所有的 CGI指令碼以相同的使用者身份執行,即Web伺服器本身。雖然這看起來像一個安全性的大敵,卻是有意義的。CGI指令碼控制著擁護和伺服器之間的介面,因此這些指令碼需要不同的檔案訪問許可權。給所有的指令碼以Web伺服器本身的許可權,然後再由管理員逐個程式來限制,這樣的預設設定簡單明瞭。問題是,管理員永遠也完成不了這些限制工作。*指令碼目錄很容易被找到。導致指令碼易於被訪問和操縱。伺服器上預設存放CGI指令碼的目錄是cgi-bin。如果駭客知道了指令碼的位置,就等於擁有了開啟寶藏庫的鑰匙。*副檔名眾所周知。預設的,CGI指令碼副檔名為.cgi。Apache伺服器將所有副檔名為.cgi的檔案都當作CGI來處理。如果整個伺服器都這樣透過副檔名來識別指令碼而且不將指令碼限制在某個目錄中的話,駭客就可以執行未經授權的CGI指令碼而不需要經過管理員的允許。緊密封裝起來CGI指令碼嵌入在Web應用程式中,帶著使用者直接進入伺服器內部,在這裡指令碼擁有許可權,能夠訪問伺服器資源,惡意的使用者會濫用這些許可權。但是你可以在此增加一層保護層,辦法是將CGI指令碼封裝隔離起來,從而使CGI指令碼、應用程式以及使用者無法利用伺服器的設定缺陷。封裝器可以擁有訪問CGI指令碼所必須的許可權和資源,這樣駭客最多隻能擁有封裝器的許可權和資源,而不是指令碼本身。SuEXEC可以解決大多數問題Switch User for Exec(suEXEC)是一個用來對付很多CGI危險的管理工具。它允許伺服器管理員以使用者而不是Web伺服器使用者身份執行CGI指令碼。一個使用者的程式將以其ID執行。使用CGI指令碼的應用程式就能被限制在它們特定的使用者環境下。這就解決了許可權問題。你已經有效地建立了一個封裝,將使用者與系統root許可權隔離起來。另外,每次有指令碼執行時,suEXEC包裝器都將檢查其安全性,動態驗證程式呼叫、使用者、檔案位置和許可權,以及所有由管理員定義的東西。啟用suEXEC從1.2版開始,suEXEC成為Apache的一部分。1.3.x版本以後,它的啟用成為Apache配置的一部分內容,鍵入以下命令:enable-suexec指定名字和路徑(區別於使用者路徑)也很簡單:suexec-caller=USERNAMEsuexec-docroot=DIR (default is htdocs)你可以設定其他引數來加強使用者ID的安全性。這包括設定合法的檔案路徑、使用者ID限制以及合法的使用者根目錄。更多請參考文件說明。其它CGI包裝器一個名為FastCGI的基於庫的包裝器也是一種選擇。它更像一個對付駭客面向程式設計師的工具而不是一個管理員工具。FastCGI擴充套件了CGI規範,提供了包含安全I/O方法的程式外掛。這就允許開發者可以將使用其他方法來加強CGI指令碼安全性,例如調整記憶體段的使用以防其被誤用。CGIWrap在Web伺服器和可執行程式之間建立了一個附加層,它與suEXEC在很多方面相似,例如以非Web伺服器使用者身份執行CGI指令碼。它也在每個指令碼執行時進行安全性檢查。使用別名可以透過為指令碼目錄起晦澀難懂的名字來阻止惡意使用者查詢CGI指令碼。除了cgi-bin目錄,伺服器不會執行其它目錄下的CGI指令碼。但是使用別名,就可以隱藏它。在配置檔案httpd.conf中這樣做:ScriptAlias? /cgi-bin/? "/alternate_directory/cgi-bin/"這就使得伺服器將這個替換目錄中的檔案作為CGI指令碼對待,而正常情況下伺服器只認cgi-bin目錄下的檔案。當然要確保限制使用者訪問這個目錄,否則使用者能夠透過root許可權將自己的CGI指令碼放進這個目錄,而伺服器還會允許其執行。名字包含什麼意思另一個CGI預設設定是伺服器被動地假定任何CGI指令碼(例如,副檔名為.cgi的檔案)在所有Web伺服器可以訪問的目錄下都是可以使用的。(這種情況只在已經啟用了用這種方式鑑別CGI指令碼的處理器才會出現,設定於httpd.conf。)使 CGI在特定目錄執行比在整個伺服器中都可以執行要容易。只需為每個可以執行指令碼的目錄的Options新增ExecCGI就行。這樣,就為特定使用者和程式限制了CGI指令碼的I/O和資源分配。記住這種功能是一把雙刃劍,粗心大意的使用會給駭客入侵提供有效的途徑,如同正確使用可以阻止他們一樣
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-937276/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 陣列方法的封裝/程式碼的複用加強陣列封裝
- 在Linux下使用TCP封裝器來加強網路服務安全LinuxTCP封裝
- web server apache tomcat11-14-CGIWebServerApacheTomcat
- JS加減乘除位移方法封裝JS封裝
- Dozer封裝物件或List的轉換封裝物件
- 華納雲 :ubuntu如何配置apache執行cgi指令碼UbuntuApache指令碼
- AFNetworking的簡易封裝,含字典轉模型封裝模型
- 商城購物車加減控制元件的簡單封裝控制元件封裝
- 用裝飾器封裝Flask-WTF表單驗證邏輯封裝Flask
- 分享:用promise封裝ajaxPromise封裝
- uni-app快取器的封裝APP快取封裝
- Apache Flink 在蔚來汽車的應用Apache
- Linux伺服器---安裝apacheLinux伺服器Apache
- 【封裝小技巧】is 系列方法的封裝封裝
- 【JavaScript框架封裝】公共框架的封裝JavaScript框架封裝
- 給DevOps加點料——融入安全性的DevSecOpsdev
- SqlSugar 多資料來源的簡單封裝SqlSugar封裝
- 工廠模式-將物件的建立封裝起來模式物件封裝
- 用promise封裝一個ajaxPromise封裝
- 伺服器安裝Linux中安裝 Apache伺服器LinuxApache
- 用phpStudy配置apache伺服器PHPApache伺服器
- JSONObject應用Json字串和Object物件之間的轉換,Map封裝資料思路JSONObject字串物件封裝
- 加強版二進位制讀寫器
- Dapper的封裝、二次封裝、官方擴充套件包封裝,以及ADO.NET原生封裝APP封裝套件
- 強大的dio封裝,可能滿足你的一切需要封裝
- Web 應用安全性: 瀏覽器是如何工作的Web瀏覽器
- 使用 js 修飾器封裝 axiosJS封裝iOS
- ACE之(二)ACE Socket封裝器封裝
- iOS 面向協議封裝全屏旋轉功能iOS協議封裝
- 代理天鈺FR9886降壓轉換器晶片,SOP8封裝晶片封裝
- 應用Promise封裝Ajax實踐Promise封裝
- 基於iOS 10、realm封裝的下載器iOS封裝
- 【封裝那些事】 缺失封裝封裝
- 增強邊緣計算的安全性
- 用原生JS封裝外掛的方式有哪些?JS封裝
- Python裝飾器-給你的咖啡加點料Python
- 封裝、許可權修飾符、封裝的案例封裝
- 【封裝小技巧】列表處理函式的封裝封裝函式
- Apache Hudi在Hopworks機器學習的應用Apache機器學習