Apache安全配置方法

2022-10-03    分類: 網(wǎng)站建設

令Apache占領Web服務器半壁江山的一個重要原因就是它可以提供一個安全的Web操作環(huán)境。Apache團體為保證其安全性做了大量的工作。想當年,在此產(chǎn)品被發(fā)現(xiàn)存在一個安全缺陷時,Apache的開發(fā)人員就盡快地搞出了一個補丁。

然而,即管Apache已經(jīng)堪稱安全的產(chǎn)品,如果你在構(gòu)建你的服務器時沒有采取一些安全預防措施,這種Web服務器仍易于受到很多攻擊。

在本文中,筆者將為你提供10個技巧,借此你可以保護自己的Apache Web服務器免于受到許多攻擊。不過,必須謹記,你需要仔細地評估每一個技巧,以確保其適合于你的組織。

只安裝所需要的

Apache的一個大的特點是其靈活性和大量的可選擇安裝模塊,這在涉及到安全問題時可成為一個極大的弱點。你安裝的越多,也就為潛在的攻擊者創(chuàng)造了越大的攻擊面。一個標準的Apache安裝包含20多個模塊,包括CGI特性,以及一些身份驗證機制。如果你不打算采用CGI,并且你只想采用靜態(tài)的Web 站點,不需要用戶身份驗證,你可能就不需要這些模塊所提供的任何服務,因此在安裝Apache時請禁用這些模塊。

如果你沿用了一個正在運行的Apache服務器,并且不想重新安裝它,就應當仔細檢查httpd.conf配置文件,查找以LoadModule開頭的行。請檢查Apache的文檔(也可以用Google、Yahoo等搜索),查找每個模塊的目的信息,找出那些你并不需要的模塊。然后,重新啟動 Apache。

暴露程度最小化

Apache易于安裝并且相當容易管理。不幸的是,許多Apache的安裝由于為完全的陌生者提供了關于自己服務器的太多"有幫助”的信息,例如 Apache的版本號和與操作系統(tǒng)相關的信息。通過這種信息,一個潛在的攻擊者就可以追蹤特定的可以影響你的系統(tǒng)的破壞性漏洞,特別是你沒有能夠保持所有補丁的更新的話情況更為嚴重。如此一來,攻擊者無需反復試驗就可以確切地知道你在運行什么,從而可以調(diào)整其攻擊方法。

要防止服務器廣播敏感信息,一定要保證將httpd.conf中的"ServerSignature”指令設置為"off”。一次默認的Apache安裝會將此指令設置為"off”,不過許多管理員卻啟用了它。

同樣地,禁用目錄瀏覽也是一個不錯的注意。在目錄瀏覽被啟用時,訪問一個并不包含其所需要文檔的目錄的用戶,會看到此目錄中完整的內(nèi)容列表。無疑,你不應當將敏感材料以純文本的形式存儲到一個Web服務器上,除非你必須這樣做,你也不應該允許人們看到超過其需要的內(nèi)容。

目錄瀏覽默認地是被啟用的。要禁用這個特性,應編輯http.conf文件,而且對每一個"Directory”指令,應清除"Indexs”。

例如,在筆者的做實驗用的Apache 2.2.4服務器上,這是默認的目錄命令:

復制代碼 代碼如下:

<Directory "/usr/local/apache/htdocs">
Options Indexes FollowSymLinks
AllowOverrride None
Order allow,deny
Allow from all
</Directory>

清除Indexes后的樣子:

復制代碼 代碼如下:

<Directory "/usr/local/apache/htdocs">
Options FollowSymLinks
AllowOverrride None
Order allow,deny
Allow from all
</Directory>

你也可以保留Indexes指令,并用一個破折號引導,從而禁用此指令(也就是"-Indexes”)。

禁用符號連接追蹤

如果你是唯一一個校對Web內(nèi)容的人員,而你在創(chuàng)建新的符號連接時又幾乎不犯錯誤,你可能不會擔心此措施。不過,如果你有很多人員能夠向你的站點增加內(nèi)容,并非所有的人都像你一樣謹慎從事,那么就會有一種風險,即某個用戶可能偶然會創(chuàng)建一個符號連接指向你的文件系統(tǒng)的一部分,而你又確實不想讓人們看到這些文件。例如,如果你的Apache服務器的根目錄中的某人創(chuàng)建了一個指向 "/”文件夾的符號連接,你該怎么辦?

為了取消Apache服務器允許用戶追蹤符號連接的請求,應該在Directory命令中清除FollowSymlinks指令。

例如,在筆者的試驗性的Apache 2.2.4服務器中,Directory命令如下:

復制代碼 代碼如下:

<Directory "/usr/local/apache/htdocs">
Options Indexes FollowSymLinks
AllowOverrride None
Order allow,deny
Allow from all
</Directory>

在清除了FollowSymLinks后,就成為如下的樣子:

復制代碼 代碼如下:

<Directory "/usr/local/apache/htdocs">
Options Indexes
AllowOverrride None
Order allow,deny
Allow from all
</Directory>

如果一些用戶需要跟蹤符號連接的能力,可以考慮使用SymLinksIfOwnerMatch代替。

Listen指令具體化

在你第一次安裝Apache時,httpd.conf包含一個"Listen 80”指令。應將其改變?yōu)?"Listen mn.xx.yy.zz:80”,在這里"mn.xx.yy.zz”是你想讓Apache監(jiān)聽其請求的IP地址。如果你的Apache運行在一個擁有多個IP地址的服務器上時,這一點尤其重要。如果你不采取預防措施,默認的"Listen 80”指令告訴Apache監(jiān)聽每一個IP地址的 80端口。

不過,這項措施有可能不適用于你的環(huán)境,應根據(jù)需要而定。

從httpd.conf中清除默認的注釋

Apache 2.2.4中默認的httpd.conf文件有400多行。在這400行中,只有一小部分是實際的Apache指令,其余的僅是幫助用戶如何恰當?shù)卦趆ttpd.conf中放置指令的注釋。根據(jù)筆者的經(jīng)驗,這些注釋有時起負面作用,甚至將危險的指令留存于文件中。筆者在所管理的許多 Apache服務器上將httpd.conf文件復制為其它的文件,如httpd.conf.orig等,然后完全清除多余的注釋。文件變得更加容易閱讀,從而更好地解決了潛在的安全問題或者錯誤地配置文件。

沒作任何設置前,查看web服務器請求文件頭

HTTP/1.1 200 OK
Date: Sun, 27 Apr 2008 11:56:46 GMT
Server: Apache/2.2.8 (Unix) DAV/2 PHP/5.2.5 with Suhosin-Patch
Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
ETag: "387a5-2c-3e9564c23b600"
Accept-Ranges: bytes
Content-Length: 44
Content-Type: text/html

幾乎把web服務器詳細信息都暴出來了,如果沒個版本的apache和php爆出嚴重漏洞,會給攻擊者提供最有攻擊價值的安全信息,這是非常危險的

將apache的配置文件加上兩行

ServerTokens ProductOnly
ServerSignature Off
重啟apache讓設置生效
再次發(fā)出apache頭信息請求

HTTP/1.1 200 OK
Date: Sun, 27 Apr 2008 11:57:40 GMT
Server: Apache
Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
ETag: "387a5-2c-3e9564c23b600"
Accept-Ranges: bytes
Content-Length: 44
Content-Type: text/html

可以看到apache版本號于已經(jīng)沒有了

做到這點,我們還可以改變apache的版本,這就要修改apache的源代碼了,在apache的源碼包中找到ap_release.h 將#define AP_SERVER_BASEPRODUCT "Apache" 修改為#define AP_SERVER_BASEPRODUCT "Microsoft-IIS/5.0”
或者#define AP_SERVER_BASEPRODUCT "Microsoft-IIS/6.0”

然后找到os/unix下的os.h文件,將其#define PLATFORM "Unix"修改為#define PLATFORM "Win32"

然后重新編譯,安裝apache。
最后修改httpd.conf配置文件,添加兩行ServerTokens Prod
ServerSignature Off
在發(fā)送頭請求,會有什么,就不用我說了吧,嘿嘿,這叫偷天換日,從這點來說,php也是一樣,同樣可以通過這種方式改變一些系統(tǒng)信息,不過根據(jù)GPL開源的精神,這樣做貌似不太好,還是保留apache和php版權(quán)信息吧。

附:
ServerSignature 三個選項
On|Off|EMai 主要起開關作用

ServerTokens 四個選項
Minimal|ProductOnly|OS|Full 四個選項隱藏信息依次增加

下面對php的配置文件php.ini進行配置

默認情況下expose_php = On
將其改為 expose_php = Off

為什么,可以看這段解釋

; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header). It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.

然后禁止一些涉及php安全的函數(shù)

disable_functions = phpinfo, get_cfg_var //禁止phpinfo和get_cfg_var等函數(shù)
display_errors = Off //禁止爆出錯誤
allow_url_fopen = Off //這個關閉,就沒有辦法取遠程內(nèi)容了,但是可以用變通,用curl遠程讀取的方法做到
safe_mode = On //開啟安全模式,這個開了,可能會有些php功能沒辦法使用了

無論如何,還是要我們的程序設計的好,一般來說,單純更具對系統(tǒng)攻擊很難,如果是程序有漏洞,那攻擊就簡單了。

當前文章:Apache安全配置方法
當前網(wǎng)址:http://www.muchs.cn/news25/201275.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、響應式網(wǎng)站、網(wǎng)站導航、品牌網(wǎng)站制作品牌網(wǎng)站設計、外貿(mào)網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設