在 Linux 上保護(hù) Apache Web 服務(wù)器的技巧
如果您是系統(tǒng)管理員,則應(yīng)遵循本文中提到的 10 個(gè)提示來保護(hù)您的 Apache Web 服務(wù)器。

1.禁用不必要的模塊
如果您打算從源代碼安裝 apache,則應(yīng)禁用以下模塊。如果您執(zhí)行 ./configure –help,您將看到所有可以禁用/啟用的可用模塊。
userdir – 將請(qǐng)求映射到用戶特定的目錄。即 URL 中的 ~username 將被翻譯到服務(wù)器中的目錄
autoindex – 不存在 index.html 文件時(shí)顯示目錄列表
status – 顯示服務(wù)器統(tǒng)計(jì)信息
env – 清除/設(shè)置 ENV 變量
setenvif – 將 ENV 變量放在標(biāo)題上
cgi – CGI 腳本
actions - 請(qǐng)求觸發(fā)的動(dòng)作
negotiation——內(nèi)容協(xié)商
alias——將請(qǐng)求映射到不同的文件系統(tǒng)部分
include——服務(wù)器端包括
filter – 智能過濾請(qǐng)求
version – 使用 IfVersion 處理配置文件中的版本信息
as-is - 原樣文件類型
執(zhí)行 ./configure 時(shí)禁用所有上述模塊,如下所示
./configure \ --enable-ssl \ --enable-so \ --disable-userdir \ --disable-autoindex \ --disable-status \ --disable-env \ --disable-setenvif \ --disable-cgi \ --disable-actions \ --disable-negotiation \ --disable-alias \ --disable-include \ --disable-filter \ --disable-version \ --disable-asis
如果啟用 ssl 并禁用 mod_setenv,您將收到以下錯(cuò)誤。
錯(cuò)誤:/usr/local/apache2/conf/extra/httpd-ssl.conf 第 223 行的語法錯(cuò)誤:無效命令“BrowserMatch”,可能拼寫錯(cuò)誤或由服務(wù)器配置中未包含的模塊定義
解決方案:如果您使用 ssl,請(qǐng)不要禁用 setenvif。或者,如果禁用 mod_setenvif,請(qǐng)?jiān)?httpd-ssl.conf 中注釋掉 BrowserMatch。
安裝后,當(dāng)您執(zhí)行httpd -l時(shí),您將看到所有已安裝的模塊。
# /usr/local/apache2/bin/httpd -l Compiled in modules: core.c mod_authn_file.c mod_authn_default.c mod_authz_host.c mod_authz_groupfile.c mod_authz_user.c mod_authz_default.c mod_auth_basic.c mod_log_config.c mod_ssl.c prefork.c http_core.c mod_mime.c mod_dir.c mod_so.c
在此示例中,我們安裝了以下 apache 模塊。
core.c – Apache 核心模塊
mod_auth* – 用于各種認(rèn)證模塊
mod_log_config.c – 記錄客戶端請(qǐng)求。提供額外的日志靈活性。
mod_ssl.c – 用于 SSL
prefork.c – 用于 MPM(多處理模塊)模塊
httpd_core.c – Apache 核心模塊
mod_mime.c – 用于設(shè)置文檔 MIME 類型
mod_dir.c – 用于目錄路徑上的斜杠重定向。如果您指定 url/test/,它會(huì)轉(zhuǎn)到 url/test/index.html
mod_so.c - 用于在啟動(dòng)或重啟期間加載模塊
2. 以單獨(dú)的用戶和組運(yùn)行 Apache
默認(rèn)情況下,apache 可能會(huì)作為無人值守或守護(hù)進(jìn)程運(yùn)行。最好在自己的非特權(quán)帳戶中運(yùn)行 apache。例如:阿帕奇。
創(chuàng)建 apache 組和用戶。
groupadd apache useradd -d /usr/local/apache2/htdocs -g apache -s /bin/false apache
修改httpd.conf,適當(dāng)設(shè)置User和Group。
# vi httpd.conf User apache Group apache
在此之后,如果你重新啟動(dòng) apache,然后執(zhí)行 ps -ef,你會(huì)看到 apache 以“apache”的身份運(yùn)行(除了第一個(gè) httpd 進(jìn)程,它總是以 root 身份運(yùn)行)。
# ps -ef | grep -i http | awk '{print }' root apache apache apache apache apache
3.限制對(duì)根目錄的訪問(使用允許和拒絕)
通過在httpd.conf中設(shè)置以下內(nèi)容來保護(hù)根目錄
在上面:
Options None- 將此設(shè)置為無,這將不會(huì)啟用任何可選的額外功能。
Order deny,allow?– 這是處理“拒絕”和“允許”指令的順序。這首先處理“拒絕”,然后處理“允許”。
Deny from all?– 這會(huì)拒絕所有人對(duì)根目錄的請(qǐng)求。根目錄沒有 Allow 指令。所以,沒有人可以訪問它。
4.為conf和bin目錄設(shè)置適當(dāng)?shù)臋?quán)限
bin 和 conf 目錄只能由授權(quán)用戶查看。最好創(chuàng)建一個(gè)組,并將所有允許查看/修改 apache 配置文件的用戶添加到該組。
讓我們稱這個(gè)組為:apacheadmin
創(chuàng)建組。
groupadd apacheadmin
允許訪問此組的 bin 目錄。
chown -R root:apacheadmin /usr/local/apache2/bin chmod -R 770 /usr/local/apache2/bin
允許訪問該組的 conf 目錄。
chown -R root:apacheadmin /usr/local/apache2/conf chmod -R 770 /usr/local/apache2/conf
向該組添加適當(dāng)?shù)某蓡T。在這個(gè)例子中,ramesh 和 john 都是 apacheadmin 的一部分
# vi /etc/group apacheadmin:x:1121:ramesh,john
5.禁用目錄瀏覽
如果您不這樣做,用戶將能夠看到您的根目錄(或任何子目錄)下的所有文件(和目錄)。
例如,如果他們?cè)L問 http://{your-ip}/images/ 并且如果您在圖像下沒有 index.html,他們將看到列出的所有圖像文件(和子目錄)瀏覽器(就像 ls -1 輸出)。從這里,他們可以單擊單個(gè)圖像文件進(jìn)行查看,或單擊子目錄查看其內(nèi)容。
要禁用目錄瀏覽,您可以將Options 指令的值設(shè)置為“None”或“-Indexes”。A - 在選項(xiàng)名稱前面會(huì)將其從為該目錄強(qiáng)制執(zhí)行的當(dāng)前選項(xiàng)列表中刪除。
索引將在瀏覽器的目錄中顯示可用文件和子目錄的列表(僅當(dāng)該文件夾中不存在 index.html 時(shí))。因此,不應(yīng)允許索引。
6. 不允許.htaccess
在 htdocs (或任何外部)下的特定子目錄中使用 .htaccess 文件,用戶可以覆蓋默認(rèn)的 apache 指令。在某些情況下,這是不好的,應(yīng)該避免。您應(yīng)該禁用此功能。
您不應(yīng)允許用戶使用 .htaccess 文件并覆蓋 apache 指令。為此,請(qǐng)?jiān)诟夸浿性O(shè)置“?AllowOverride None ”。
7.禁用其他選項(xiàng)
以下是 Options 指令的可用值:
Options All- 啟用所有選項(xiàng)(多視圖除外)。如果您不指定 Options 指令,則這是默認(rèn)值。
Options ExecCGI?– 執(zhí)行 CGI 腳本(使用 mod_cgi)
Options FollowSymLinks – 如果您在此目錄中有符號(hào)鏈接,它將被跟蹤。
Options Includes- 允許服務(wù)器端包括(使用 mod_include)
Options IncludesNOEXEC – 允許服務(wù)器端包含但不能執(zhí)行命令或 cgi。
Options Indexes- 禁用目錄列表
Options MultiViews - 允許內(nèi)容協(xié)商的多視圖(使用 mod_negotiation)
Options SymLinksIfOwnerMatch – 類似于 FollowSymLinks。但是,只有當(dāng)鏈接和鏈接到的原始目錄之間的所有者相同時(shí),才會(huì)出現(xiàn)這種情況。
永遠(yuǎn)不要指定“全部選項(xiàng)”。始終指定一個(gè)(或多個(gè))上述選項(xiàng)。您可以在一行中組合多個(gè)選項(xiàng),如下所示。
Options Includes FollowSymLinks
當(dāng)您有嵌套的目錄并希望覆蓋父目錄指令中的選項(xiàng)時(shí),選項(xiàng)值前面的 + 和 – 很有幫助。
在此示例中,對(duì)于 /site 目錄,它同時(shí)具有包含和索引:
對(duì)于 /site/en 目錄,如果您只需要來自 /site 的索引(而不是包含),并且如果您只想跟隨符號(hào)鏈接到此目錄,請(qǐng)執(zhí)行以下操作。
/site 將具有包含和索引
/site/en 將有索引和 FollowSymLink
8.刪除不需要的DSO模塊
如果您已將任何動(dòng)態(tài)共享對(duì)象模塊加載到 apache,它們將出現(xiàn)在 httpd.conf 中的“LoadModule”指令下。
請(qǐng)注意,靜態(tài)編譯的 apache 模塊不會(huì)被列為“LoadModule”指令。
在 httpd.conf 中注釋掉任何不需要的“LoadModules”
grep LoadModule /usr/local/apache2/conf/httpd.conf
9. 限制對(duì)特定網(wǎng)絡(luò)(或 IP 地址)的訪問
如果您希望您的站點(diǎn)只能由特定的 IP 地址或網(wǎng)絡(luò)查看,請(qǐng)執(zhí)行以下操作:
要允許特定網(wǎng)絡(luò)訪問您的站點(diǎn),請(qǐng)?jiān)?Allow 指令中提供網(wǎng)絡(luò)地址。
要允許特定 ip-address 訪問您的站點(diǎn),請(qǐng)?jiān)?Allow 指令中提供 ip-address。
10.不顯示或發(fā)送Apache版本(設(shè)置ServerTokens)
默認(rèn)情況下,服務(wù)器 HTTP 響應(yīng)標(biāo)頭將包含 apache 和 php 版本。類似于以下內(nèi)容。這是有害的,因?yàn)槲覀儾幌M粽咧谰唧w的版本號(hào)。
Server: Apache/2.2.17 (Unix) PHP/5.3.5
為避免這種情況,請(qǐng)?jiān)?httpd.conf 中將 ServerTokens 設(shè)置為 Prod。這將顯示“Server: Apache”,沒有任何版本信息。
# vi httpd.conf ServerTokens Prod
以下是可能的 ServerTokens 值:
ServerTokens Prod?displays “Server: Apache”
ServerTokens Major?displays “Server: Apache/2”
ServerTokens Minor?displays “Server: Apache/2.2”
ServerTokens Min?displays “Server: Apache/2.2.17”
ServerTokens OS?displays “Server: Apache/2.2.17 (Unix)”
ServerTokens Full?displays “Server: Apache/2.2.17 (Unix) PHP/5.3.5” (如果您未指定任何 ServerTokens 值,則為默認(rèn)值)
除了以上 10 條提示之外,請(qǐng)確保保護(hù)您的 linux 操作系統(tǒng)。如果您的操作系統(tǒng)不安全,那么保護(hù)您的 apache 毫無意義。此外,始終保持您的 apache 版本是最新的。最新版本的 apache 包含所有已知安全問題的修復(fù)程序。確保經(jīng)常查看您的 apache 日志文件。
Apache linux web前端
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。