不可不說
          隨心所欲,無往不利!
          posts - 88,  comments - 92,  trackbacks - 0
          Apache服務器走到那里,unix/linux就跟到那里,這足以說明在WEB服務器領域Apache的優(yōu)良性能與市場占有率
          這今天互聯(lián)網(wǎng)的大環(huán)境下,web服務已經(jīng)成為公司企業(yè)必不可少的業(yè)務,大多數(shù)的安全問題也跟隨而來,攻擊重點也轉移為web攻擊,許多web與頗有價值的客戶服務與電子商業(yè)活動結合在一起,這也是吸引惡意攻擊重要原因。

          先來了解下web所面臨的安全風險

          HTTP拒絕服務攻擊
          攻擊者通過某些手段使服務器拒絕對http應答,這使Apache對系統(tǒng)資源(cup時間與內(nèi)存)需求巨增,最終造成系統(tǒng)變慢甚至完全癱瘓,Apache服務器最大的缺點是,它的普遍性使它成為眾矢之的,Apache服務器無時無刻不受到DoS攻擊威脅,主要有下邊幾種
          1.數(shù)據(jù)包洪水攻擊
          一種中斷服務器或本地網(wǎng)絡的方法是數(shù)據(jù)包洪水攻擊,它通常使用internet控制報文協(xié)議(ICMP,屬于網(wǎng)絡層協(xié)議)
          包或是udp包,在最簡單的形式下,這些攻擊都是使服務器或網(wǎng)絡負載過重,這意味這攻擊者的網(wǎng)絡速度必須比目標主機網(wǎng)絡速度要快,使用udp包的 優(yōu)勢是不會有任何包返回到黑客的計算機(udp效率要比tcp高17倍),而使用ICMP包的優(yōu)勢是攻擊者能讓攻擊更加富與變化,發(fā)送有缺陷的包會搞亂并 鎖住受害者的網(wǎng)絡,目前流行的趨勢是攻擊者欺騙服務器,讓其相信正在受來自自身的洪水攻擊
          2.磁盤攻擊
          這是一種很不道德的攻擊,它不僅影響計算機的通信,還破壞其硬件,偽造的用戶請求利用寫命令攻擊目標計算機硬盤,讓其超過極限,并強制關閉,結局很悲慘
          3.路由不可達
          通常DoS攻擊,集中在路由器上,攻擊者首先獲得控制權并操縱目標機器,當攻擊者能更改路由表條目時候,會導致整個網(wǎng)絡無法通信,這種攻擊很陰險,隱蔽,因為網(wǎng)絡管理員需要排除的網(wǎng)絡不通原因很多,其中一些原因需要詳細分辨
          4.分布式拒絕服務攻擊
          這也是最具有威脅的DDoS攻擊,名稱很容易理解,簡單說就是群歐,很多客戶機同時單條服務器,你會發(fā)現(xiàn)你將傷痕累累,Apache服務器特別容 易受到攻擊,無論是DDos還是隱藏來源的攻擊,因為Apache無處不在,特別是為Apache特意打造的病毒(特選SSL蠕蟲),潛伏在許多主機上, 攻擊者通過病毒可以操縱大量被感染的機器,對特定目標發(fā)動一次浩大的DDoS攻擊,通過將蠕蟲散播到大量主機,大規(guī)模的點對點攻擊得以進行,除非你不提供 服務,要不然幾乎無法阻止這樣的攻擊,這種攻擊通常會定位到大型的網(wǎng)站上。

          緩沖區(qū)溢出,這種攻擊很普遍,攻擊者利用CGI程序編寫一些缺陷程序偏離正常的流程,程序使用靜態(tài)的內(nèi)存分配,攻擊者就可以發(fā)送一個超長的請求使緩沖區(qū)溢出,比如,一些perl編寫的處理用戶請求的網(wǎng)關腳本,一但緩沖區(qū)溢出,攻擊者就可以執(zhí)行惡意指令

          非法獲取root權限
          如果Apache以root權限運行,系統(tǒng)上一些程序的邏輯缺陷或緩沖區(qū)溢出漏洞,會讓攻擊者很容易在本地系統(tǒng)獲取linux服務器上的管理者權 限,在一些遠程情況下,攻擊者會利用一些以root身份執(zhí)行的有缺陷的系統(tǒng)守護進程來取得root權限,或利用有缺陷的服務進程漏洞來取得普通用戶權限, 以遠程登陸,進而控制整個系統(tǒng)。

          這邊這些都是服務將會遇到的攻擊手段,下邊來說,如何打造安全的Apache服務器
          如果你能遵守下邊這些建議,那么你將得到一臺相對安全的apache服務器

          一:勤打補丁
          你必須要相信這個是最有用的手段,緩沖區(qū)溢出等漏洞都必須使用這種手段來防御,勤快點相信對你沒有壞處
          在http:www.apache.org上最新的changelog中都寫有:bug fix ,security bug fix的字樣,做為負責任的管理員要經(jīng)常關注相關漏洞,及時升級系統(tǒng)添加補丁。使用最新安全版本對加強apache至關重要

          二:隱藏和偽裝Apache的版本
          打亂攻擊者的步驟,給攻擊者帶來麻煩,相信是管理員愿意看到的。軟件的漏洞信息和版本是相關的,在攻擊者收集你服務軟件信息時候給與迷惑是個不錯的選擇,何況版本號,對攻擊者來說相當與GPS定位一樣重要
          默認情況,系統(tǒng)會把apache版本模塊都顯示出來(http返回頭),如果列舉目錄的話,會顯示域名信息(文件列表正文),去除Apache版本號的方法是修改配置文件,找到關鍵字,修改為下邊
          ServerSignature off
          ServerTokens prod

          通過分析web服務器類型,大致可以推測操作系統(tǒng)類型,win使用iis,linux普遍apache,默認的Apache配置里沒有任何信息保 護機制,并且允許目錄瀏覽,通過目錄瀏覽,通常可以得到類似“apache/1.37 Server at apache.linuxforum.net Port 80”或“apache/2.0.49(unix)PHP/4.3.8”的信息
          通過修改配置文件中的ServerTokens參數(shù),可以將Apache的相關信息隱藏起來,如果不行的話,可能是提示信息被編譯在程序里了,要隱藏需要修改apache的源代碼,然后重新編譯程序,以替換內(nèi)容
          編輯ap_release.h文件,
          修改"#define AP_SERVER_BASEPRODUCT""Apache"""為
          "#define AP_SERVER_BASEPRODUCT""Microsoft-IIS/5.0""
          編輯os/unix/os.h文件
          修改"#define PLATFORM""Unix"""為
          "#define PLATFORM"'Win32"
          修改完成后,重新編譯,安裝apache,在修改配置文件為上邊做過的,再次啟動apache后,用工具掃描,發(fā)現(xiàn)提示信息中已經(jīng)顯示為windows操作系統(tǒng)了
          順便說下,現(xiàn)在這個論壇,就有點不太講究,這是論壇錯誤的返回信息,看了有點汗地感覺
          Apache/2.2.8 (Ubuntu) DAV/2 SVN/1.4.6 mod_ssl/2.2.8 OpenSSL/0.9.8g Server at forum.ubuntu.org.cn Port 80

          這個等于告訴惡意用戶很多有用信息,雖然說不算開了門,但等于被告訴了門在那里,還是相當危險的

          三:建立安全的目錄結構apache服務器包括四個目錄結構
          ServerRoot #保存配置文件,二進制文件與其他服務器配置文件
          DocumentRoot #保存web站點內(nèi)容,包括HTML文件和圖片等
          ScripAlias #保存CGI腳本
          Customlog 和 Errorlog #保存日志和錯誤日志
          建議的目錄結構為,以上四種目錄相互獨立并且不存在父子邏輯關系
          注:
          ServerRoot目錄只能為root用戶訪問
          DocumentRoot目錄應該能夠被管理web站點內(nèi)容的用戶訪問和使用apache服務器的apache用戶與組訪問
          ScripAlias目錄應該只能被CGI開發(fā)人員和apache用戶訪問
          Customlog 和 Errorlog只能被root訪問
          下邊是一個安全目錄結構的事例
          +-------/etc/
          |
          | +----/http (ServerRoot)
          | +----/logs (Customlog 和 Errorlog)
          |
          +-------var/www
          |
          | +---/cgi-bin (ScripAlias)
          | +---/html (DocumentRoot)

          這樣的目錄結構是比較安全的,因為目錄之間獨立,某個目錄權限錯誤不會影響到其他目錄

          四:為apache使用專門的用戶與組
          按照最小特權的原則,需要給apache分配一個合適的權限,讓其能夠完成web服務
          注:
          最小特權原則是系統(tǒng)安全中最基本的原則之一,限制使用者對系統(tǒng)及數(shù)據(jù)進行存取所需要的最小權限,保證用戶可以完成任務,同時也確保被竊取或異常操作所造成的損失

          必須保證apache使用一個專門的用戶與組,不要使用系統(tǒng)預定的帳戶,比如nobody用戶與nogroup組
          因為只有root用戶可以運行apache,DocumentRoot應該能夠被管理web站點內(nèi)容的用戶訪問和使用apache服務器的 apache用戶與組訪問,例如,希望“test”用戶在web站點發(fā)布內(nèi)容,并且可以以httpd身份運行apache服務器,可以這樣設定
          groupadd webteam
          usermod -G webteam test
          chown -R httpd.webteam /www/html
          chmod -R 2570 /www/htdocs
          只有root能訪問日志,推薦這樣的權限
          chown -R root.root /etc/logs
          chown -R 700 /etc/logs

          五:web目錄的訪問策略
          對于可以訪問的web目錄,要使用相對保守的途徑進行訪問,不要讓用戶查看任何目錄索引列表
          禁止使用目錄索引:
          apache在接到用戶對一個目錄的訪問時,會查找DirectoryIndex指令指定的目錄索引文件,默認為index.html,如果該文件不存在,那么apache會創(chuàng)建動態(tài)列表為用戶顯示該目錄的內(nèi)容,這樣就會暴露web站點結構,因此需要修改配置文件禁止顯示動態(tài)目錄索引,修改httpd.conf
          Options -Indexes FollowSymLinks
          Options指令通知apache禁止使用目錄索引,F(xiàn)ollowSymLinks表示不允許使用符號連接。
          禁止默認訪問:
          要的安全策略必須要禁止默認訪問的存在,只對指定的目錄開放權限,如果允許訪問/var/www/html目錄,使用如下設定
          Order deny,allow
          Allow from all
          禁止用戶重載:
          為了禁止用戶對目錄配置文件(htaccess)進行重載(修改),可以這樣設定
          AllowOverride None

          六:apache服務器訪問控制
          apache的access.conf文件負責設置文件的訪問權限,可以實現(xiàn)互聯(lián)網(wǎng)域名和ip地址的訪問控制
          如允許192.168.1.1到192.168.1.254的主機訪問,可以這樣設定
          order deny,allow
          deny from all
          allow from pair 192.168.1.0/255.255.255.0

          七:apache服務器的密碼保護
          .htaccess文件是apache上的一個設置文件,它是一個文本文件,.htaccess文件提供了針對目錄改變配置的方法
          既通過在一個特定的文檔目錄中放置一個包含一個或多個指令的文件(.htaccess文件),以作用于此目錄和子目錄。
          .htaccess的功能包括設置網(wǎng)頁密碼,設置發(fā)生錯誤時出現(xiàn)的文件,改變首業(yè)的文件名(如,index.html),禁止讀取文件名,重新導向文件,加上MIME類別,禁止目錄下的文件等。
          注:.htaccess是一個完整的文件名,不是***.htaccess或其他格式,在/abc目錄下放置一個.htaccess文件,那么/abc與它的子目錄都會被這個文件影響,但/index.html不會被影響

          .htaccess的建立和使用比較復雜點,如果感興趣的朋友可以回帖發(fā)問,這里就不 具體寫出來了,這種保護要比某些程序實現(xiàn)的保護安全,那種方法可以通過被猜測方法獲取密碼,用.htaccess很難被破解,但文本方式的驗證會比較慢, 對少量用戶沒影響,但對大量用戶就必須使用帶數(shù)據(jù)模塊的驗證了,這需要編譯源代碼時候開啟模塊,默認是不開啟的

          八:讓apache運行在“監(jiān)牢”中
          “監(jiān)牢”的意思是指通過chroot機制來更改某個軟件運行時所能看到的根目錄,簡單說,就是被限制在指定目錄中,保證軟件只能對該目錄與子目錄文件有所動作,從而保證整個服務器的安全,即使被破壞或侵入,損傷也不大
          以前,unix/linux上的daemon都是以root權限啟動的,當時,這是一件理所當然的事情,像apache這樣的服務器軟件,需要綁 定到80端口上來監(jiān)聽請求,而root是唯一有這種權限的用戶,隨著攻擊手段和強度的增加,這樣會使服務器受到相當大的威脅,一但被利用緩沖區(qū)溢出漏洞, 就可以控制整個系統(tǒng)。現(xiàn)在的服務器設計通常以root啟動,然后進程放棄root權限,改為某個低級的帳號運行。這種方式顯然會降低對系統(tǒng)的危害,但攻擊 者還是會尋找漏洞提升權限,即使無法獲得root權限,也可以刪除文件,涂改主頁等
          為了進一步提高系統(tǒng)安全性,linux內(nèi)核引入chroot機制,chroot是內(nèi)核中的一個系統(tǒng)調(diào)用,軟件可以通過調(diào)用函數(shù)庫的chroot 函數(shù),來更改某個進程所能見到的跟目錄,比如,apache軟件安裝在/usr/local/httpd目錄,以root啟動apache,這個root 權限的父進程會派生數(shù)個以nobody權限運行的子進程,父進程監(jiān)聽80端口,然后交給某個子進程處理,這時候子進程所處的目錄續(xù)承父進程,即/usr /local/httpd目錄,但是一但目錄權限設定錯誤,被攻擊的apache子進程可以訪問/usr/local , /usr ,/tmp甚至整個文件系統(tǒng),因為apache進程所處的跟目錄仍然是整個文件系統(tǒng)的跟目錄,如果可以用chroot將apache限制在/usr /local/httpd/下,那么apache所存取的文件都被限制在/usr/local/httpd下,創(chuàng)建chroot監(jiān)牢的作用就是將進程權限 限制在文件目錄樹下,保證安全。
          如果自己手動apache的監(jiān)牢,將是很煩瑣和復雜的工作,需要牽扯到庫文件,這里可以使用jail包來簡化監(jiān)牢的實現(xiàn)
          jail的官方網(wǎng)站為: 有興趣可以逛逛
          這里也不寫出具體的創(chuàng)建過程稍微麻煩,如果對安全有需要的話,請回帖,會及時補上

          九:apache服務器防范Dos
          apache服務經(jīng)常會碰到Dos攻擊,防范的主要手段是通過軟件,apahce Dos Evasive Maneuvers Module
          來實現(xiàn)的,它是一款mod_access的代替軟件,可以對抗DoS攻擊,該軟件可以快速拒絕來自相同地址對同一URL的重復請求,通過查詢內(nèi)部一張各子進程的哈希表來實現(xiàn)
          可以到網(wǎng)址:http://online/.securityfocus.com/tools/ 上下載軟件

          十:減少CGI和SSI風險
          CGI腳本的漏洞已經(jīng)成為WEB服務器的首要安全隱患,通常是程序編寫CGI腳本產(chǎn)生了許多漏洞,控制CGI的漏洞除了在編寫時候注意對輸入數(shù)據(jù) 的合法檢查,對系統(tǒng)調(diào)用的謹慎使用等因素外,首先使用CGI程序所有者的ID來運行這些程序,即使被漏洞危害也僅限于該ID能訪問的文件,不會對整個系統(tǒng) 帶來致命的危害,因此需要謹慎使用CGI程序。
          1.3版的apache集成了suEXEC程序,可以為apache提供CGI程序的控制支持,可以把suEXEC看做一個包裝器,在Apache接到CGI程序的調(diào)用請求后,把這個請求交給suEXEC來負責完成具體調(diào)用,并從suEXEC返回結果,suEXEC可以解決一些安全問題,但會影響速度
          如果是對安全性要求很高時候,建議使用suEXEC,此外還有一個軟件CGIWrap,它的安全性要高與suEXEC

          減少SSI腳本風險,如果用exec等SSI命令運行外部程序,也會存在類似CGI腳本風險,除了內(nèi)部調(diào)試程序時,應使用
          option命令禁止其使用:
          Option IncludesNOEXEC

          十一:使用ssl加固Apache
          使用具有SSL功能的服務器,可以提高網(wǎng)站敏感頁的安全性能,SSL工作與TCP/IP協(xié)議和HTTP協(xié)議之間
          SSL可以加密互聯(lián)網(wǎng)上傳遞的數(shù)據(jù)流,提供身份驗證,在線購物而不必擔心別人竊取信用卡信息,在基于電子商務和基于web郵件的地方非常重要。
          SSL的應用相對還是比較麻煩的,有需要的話,可以發(fā)貼或查看資料,這幾就不多寫,篇幅不夠
          posted on 2009-09-03 18:01 藍劍 閱讀(13680) 評論(1)  編輯  收藏

          FeedBack:
          # re: Apache安全設置
          2014-12-07 01:45 | JOESON
          "這里也不寫出具體的創(chuàng)建過程稍微麻煩,如果對安全有需要的話,請回帖,會及時補上" 能補上嗎?想看看創(chuàng)建過程。謝謝你。  回復  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           


          <2014年12月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          常用鏈接

          留言簿(6)

          隨筆分類(62)

          隨筆檔案(90)

          文章檔案(9)

          相冊

          友情鏈接

          搜索

          •  

          積分與排名

          • 積分 - 325284
          • 排名 - 172

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 昆山市| 垣曲县| 洪雅县| 荣昌县| 仙居县| 利辛县| 张家口市| 增城市| 罗江县| 阳新县| 舞阳县| 西平县| 黎川县| 准格尔旗| 昌黎县| 云林县| 左贡县| 松滋市| 繁昌县| 正宁县| 金平| 杭州市| 滦南县| 郎溪县| 灵川县| 西丰县| 慈利县| 财经| 磐安县| 平乐县| 酒泉市| 海盐县| 永新县| 鹤庆县| 台东市| 神木县| 延安市| 九寨沟县| 大埔县| 罗甸县| 天柱县|