久艹视频免费看,亚洲成av人综合在线观看,51久久夜色精品国产水果派解说,gogo全球大胆高清人体444

知識學(xué)堂
  • ·聯(lián)系電話:+86.023-75585550
  • ·聯(lián)系傳真:+86.023-75585550
  • ·24小時手機:13896886023
  • ·QQ 咨 詢:361652718 513960520
當(dāng)前位置 > 首頁 > 知識學(xué)堂 > 網(wǎng)站建設(shè)知識
保證Apache web服務(wù)器安全的十大策略
更新時間:2011-12-14 | 發(fā)布人:本站 | 點擊率:643

如果你是一個系統(tǒng)管理員,你應(yīng)該按照以下的10點建議來保證Apache web服務(wù)器的安全。

1、禁用不必要的模塊

如果你打算源碼編譯安裝apache,你應(yīng)該禁用以下的模塊。如果你運行./configure -help,你將會看到所有可用的你可以禁用/開啟的模塊。

  • userdir –用戶特定用戶的請求映射。例如:帶用戶名的URL會轉(zhuǎn)化成服務(wù)器的一個目錄。
  • autoindex – 當(dāng)沒有默認(rèn)首頁(如index.html)時顯示目錄列表。
  • status –顯示服務(wù)器統(tǒng)計
  • env – 清除或修改環(huán)境變量
  • setenvif –根據(jù)客戶端請求頭字段設(shè)置環(huán)境變量
  • cgi –CGI腳本
  • actions – 根據(jù)特定的媒體類型或請求方法,激活特定的CGI腳本
  • negotiation –提供內(nèi)容協(xié)商支持
  • alias – 提供從文件系統(tǒng)的不同部分到文檔樹的映射和URL重定向
  • include –實現(xiàn)服務(wù)端包含文檔(SSI)處理
  • filter –根據(jù)上下文實際情況對輸出過濾器進行動態(tài)配置
  • version –提供基于版本的配置段支持
  • asis – 發(fā)送自己包含HTTP頭內(nèi)容的文件

當(dāng)你執(zhí)行./configure按照下面禁用以上的所有模塊。

  1. ./configure \
  2. --enable-ssl \
  3. --enable-so \
  4. --disable-userdir \
  5. --disable-autoindex \
  6. --disable-status \
  7. --disable-env \
  8. --disable-setenvif \
  9. --disable-cgi \
  10. --disable-actions \
  11. --disable-negotiation \
  12. --disable-alias \
  13. --disable-include \
  14. --disable-filter \
  15. --disable-version \
  16. --disable-asis

如果激活ssl且禁用mod_setenv,你將會得到以下錯誤。
錯誤: Syntax error on line 223 of /usr/local/apache2/conf/extra/httpd-ssl.conf: Invalid command ‘BrowserMatch’, perhaps misspelled or defined by a module not included in the server configuration
解決方案:如果你使用ssl,不要禁用setenvif模塊;蛘吣憬胹etenvif模塊,可以在httpd-ssl.conf注釋BrowserMatch。
安裝完成全,執(zhí)行httpd -l,會列出所有已安裝的模塊。

  1. # /usr/local/apache2/bin/httpd -l
  2. Compiled in modules:
  3. core.c
  4. mod_authn_file.c
  5. mod_authn_default.c
  6. mod_authz_host.c
  7. mod_authz_groupfile.c
  8. mod_authz_user.c
  9. mod_authz_default.c
  10. mod_auth_basic.c
  11. mod_log_config.c
  12. mod_ssl.c
  13. prefork.c
  14. http_core.c
  15. mod_mime.c
  16. mod_dir.c
  17. mod_so.c

在這個例子里,我們安裝了如下apache模塊:

  • core.c –Apache核心模塊
  • mod_auth* –各種身份驗證模塊
  • mod_log_config.c –允許記錄日志和定制日志文件格式
  • mod_ssl.c – SSL
  • prefork.c – 一個非線程型的、預(yù)派生的MPM
  • httpd_core.c – Apache核心模塊
  • mod_mime.c – 根據(jù)文件擴展名決定應(yīng)答的行為(處理器/過濾器)和內(nèi)容(MIME類型/語言/字符集/編碼)
  • mod_dir.c – 指定目錄索引文件以及為目錄提供”尾斜杠”重定向
  • mod_so.c – 允許運行時加載DSO模塊

2、以單獨的用戶和用戶組運行Apache

Apache可能默認(rèn)地以nobody或daemon運行。讓Apache運行在自己沒有特權(quán)的帳戶比較好。例如:用戶apache。
創(chuàng)建apache用戶組和用戶。

  1. groupadd apache
  2. useradd -d /usr/local/apache2/htdocs -g apache -s /bin/false apache

更改httpd.conf,正確地設(shè)置User和Group。

  1. # vi httpd.conf
  2. User apache
  3. Group apache

之后重啟apache,執(zhí)行ps -ef命令你會看到apache以“apache”用戶運行(除了第一個都是以root運行之外)。

  1. # ps -ef | grep -i http | awk '{print $1}'
  2. root
  3. apache
  4. apache
  5. apache
  6. apache
  7. apache

3、限制訪問根目錄(使用Allow和Deny)

在httpd.conf文件按如下設(shè)置來增強根目錄的安全。

  1. <Directory />
  2. Options None
  3. Order deny,allow
  4. Deny from all
  5. </Directory>

在上面的:

  • Options None –設(shè)置這個為None,是指不激活其它可有可無的功能。
  • Order deny,allow – 這個是指定處理Deny和Allow的順序。
  • Deny from all –阻止所有請求。Deny的后面沒有Allow指令,所以沒人能允許訪問。

4、為conf和bin目錄設(shè)置適當(dāng)?shù)臋?quán)限

bin和conf目錄應(yīng)該只允許授權(quán)用戶查看。創(chuàng)建一個組和把所有允許查看/修改apache配置文件的用戶增加到這個組是一個不錯的授權(quán)方法。
下面我們設(shè)置這個組為:apacheadmin
創(chuàng)建組:

  1. groupadd apacheadmin

允許這個組訪問bin目錄。

  1. chown -R root:apacheadmin /usr/local/apache2/bin
  2. chmod -R 770 /usr/local/apache2/bin

允許這個組訪問conf目錄。

  1. chown -R root:apacheadmin /usr/local/apache2/conf
  2. chmod -R 770 /usr/local/apache2/conf

增加合適的用戶到這個組。

  1. # vi /etc/group
  2. apacheadmin:x:1121:user1,user2

5、禁止目錄瀏覽

如果你不關(guān)閉目錄瀏覽,用戶就能看到你的根目錄(或任何子目錄)所有的文件(目錄)。
比如,當(dāng)他們?yōu)g覽http://{your-ip}/images/而images下沒有默認(rèn)首頁,那么他們就會在瀏覽器中看到所有的images文件(就像ls -l輸出)。從這里他們通過點擊就能看到私人的圖片文件,或點點擊子目錄看到里面的內(nèi)容。
為了禁止目錄瀏覽,你可以設(shè)置Opitons指令為“None“或者是“-Indexes”。在選項名前加“-”會強制性地在該目錄刪除這個特性。
Indexes選項會在瀏覽器顯示可用文件的列表和子目錄(當(dāng)沒有默認(rèn)首頁在這個目錄)。所以Indexes應(yīng)該禁用。

  1. <Directory />
  2. Options None
  3. Order allow,deny
  4. Allow from all
  5. </Directory>
  6. (or)
  7. <Directory />
  8. Options -Indexes
  9. Order allow,deny
  10. Allow from all
  11. </Directory>

6、禁用.htaccess

在htdocs目錄下的特定子目錄下使用.htaccess文件,用戶能覆蓋默認(rèn)apache指令。在一些情況下,這樣不好,應(yīng)該禁用這個功能。
我們可以在配置文件中按如下設(shè)置禁用.htaccess文件來不允許覆蓋apache默認(rèn)配置。

  1. <Directory />
  2. Options None
  3. AllowOverride None
  4. Order allow,deny
  5. Allow from all
  6. </Directory>

7、禁用其它選項

下面是一些Options指令的可用值。

  • Options All –所有的選項被激活(除了MultiViews)。如果你不指定Options指令,這個是默認(rèn)值。
  • Options ExecCGI –執(zhí)行CGI腳本(使用mod_cgi)。
  • Options FollowSymLinks –如果在當(dāng)前目錄有符號鏈接,它將會被跟隨。
  • Options Includes –允許服務(wù)器端包含文件(使用mod_include)。
  • Options IncludesNOEXEC –允許服務(wù)器端包含文件但不執(zhí)行命令或cgi。
  • Options Indexes –允許目錄列表。
  • Options MultiViews -允許內(nèi)容協(xié)商多重視圖(使用mod_negotiation)
  • Options SymLinksIfOwnerMatch – 跟FollowSymLinks類似。但是要當(dāng)符號連接和被連接的原始目錄是同一所有者是才被允許。

絕不要指定“Options All”,通常指定上面的一個或多個的選項。你可以按下面代碼把多個選項連接。
Options Includes FollowSymLinks
當(dāng)你要嵌入多個Directory指令時,“+”和“-”是有用處的。也有可能會覆蓋上面的Directory指令。
如下面,/site目錄,允許Includes和Indexes。

  1. <Directory /site>
  2. Options Includes Indexes
  3. AllowOverride None
  4. Order allow,deny
  5. Allow from all
  6. </Directory>

對于/site/en目錄,如果你需要繼承/site目錄的Indexes(不允許Includes),而且只在這個目錄允許FollowSymLinks,如下:

  1. <Directory /site/en>
  2. Options -Includes +FollowSymLink
  3. AllowOverride None
  4. Order allow,deny
  5. Allow from all
  6. </Directory>
  • /site目錄允許IncludesIndexes
  • /site/en目錄允許Indexes和FollowSymLink

8、刪除不需要的DSO模塊

如果你加載了動態(tài)共享對象模塊到apache,他們應(yīng)該在httpd.conf文件在“LoadModule”指令下。
請注意靜態(tài)編譯的Apache模塊是不在“LoadModule”指令里的。
在httpd.conf注釋任何不需要的“LoadModules”指令。

  1. grep LoadModule /usr/local/apache2/conf/httpd.conf

9、限制訪問特定網(wǎng)絡(luò)(或IP地址)

如果你需要只允許特定IP地址或網(wǎng)絡(luò)訪問你的網(wǎng)站,按如下操作:
只允許特定網(wǎng)絡(luò)訪問你的網(wǎng)站,在Allow指令下給出網(wǎng)絡(luò)地址。

  1. <Directory /site>
  2. Options None
  3. AllowOverride None
  4. Order deny,allow
  5. Deny from all
  6. Allow from 10.10.0.0/24
  7. </Directory>

只允許特定IP地址訪問你的網(wǎng)站,在Allow指令下給出IP地址。

  1. <Directory /site>
  2. Options None
  3. AllowOverride None
  4. Order deny,allow
  5. Deny from all
  6. Allow from 10.10.1.21
  7. </Directory>

10、禁止顯示或發(fā)送Apache版本號(設(shè)置ServerTokens)

默認(rèn)地,服務(wù)器HTTP響應(yīng)頭會包含apache和php版本號。像下面的,這是有危害的,因為這會讓黑客通過知道詳細(xì)的版本號而發(fā)起已知該版本的漏洞攻擊。

  1. Server: Apache/2.2.17 (Unix) PHP/5.3.5

為了阻止這個,需要在httpd.conf設(shè)置ServerTokens為Prod,這會在響應(yīng)頭中顯示“Server:Apache”而不包含任何的版本信息。

  1. # vi httpd.conf
  2. ServerTokens Prod

下面是ServerTokens的一些可能的賦值:

  • ServerTokens Prod 顯示“Server: Apache”
  • ServerTokens Major 顯示 “Server: Apache/2″
  • ServerTokens Minor 顯示“Server: Apache/2.2″
  • ServerTokens Min 顯示“Server: Apache/2.2.17″
  • ServerTokens OS 顯示 “Server: Apache/2.2.17 (Unix)”
  • ServerTokens Full 顯示 “Server: Apache/2.2.17 (Unix) PHP/5.3.5″ (如果你這指定任何的值,這個是默認(rèn)的返回信息)

除了上面10個apache的安全建議,你還必要確保你的UNIX/Linux操作系統(tǒng)的安全。如果你的操作系統(tǒng)不安全,那么只是確保apache的安全就沒有任何意義了。通常的我們要保持apache版本的更新,最新的apahce版本會修復(fù)所有已知的安全問題。還有就是要確保時常查看apache日志文件。