Apache安全加固的方法
Apache安全加固的方法
一.賬號(hào)設(shè)置
以專門(mén)的用戶帳號(hào)和組運(yùn)行 Apache。
1、根據(jù)需要為 Apache 創(chuàng)建用戶、組
2、參考配置操作 如果沒(méi)有設(shè)置用戶和組,則新建用戶,并在 Apache 配置文件中指定
(1) 創(chuàng)建 apache 組:groupadd apache
(2) 創(chuàng)建 apache 用戶并加入 apache 組:useradd apache –g apache
(3) 將下面兩行加入 Apache 配置文件 httpd.conf 中
User apache
Group apache
3、檢查 httpd.conf 配置文件。 檢查是否使用非專用賬戶(如 root)運(yùn)行 apache
默認(rèn)一般符合要求,Linux下默認(rèn)apache或者nobody用戶,Unix默認(rèn)為daemon用戶
二.授權(quán)設(shè)置
嚴(yán)格控制Apache主目錄的訪問(wèn)權(quán)限,非超級(jí)用戶不能修改該目錄中的內(nèi)容
1、Apache 的 主目錄對(duì)應(yīng) 于 Apache Server
配置文件 httpd.conf 的
Server Root控制項(xiàng)中,
應(yīng)為:
Server Root /usr/local/apache”
2、判定條件
非超級(jí)用戶不能修改該目錄中的內(nèi)容
3、檢測(cè)操作
嘗試修改,看是否能修改
4、一般為/etc/httpd目錄,默認(rèn)情況下屬主為root:root,其它用戶不能修改文件,默認(rèn)一般符合要求
嚴(yán)格設(shè)置配置文件和日志文件的權(quán)限,防止未授權(quán)訪問(wèn)
1、chmod 600 /etc/httpd/conf/httpd.conf”設(shè)置配置文件為屬主可讀寫(xiě),其他用戶無(wú)權(quán)限。
2、使用命令”chmod 644 /var/log/httpd/*.log”設(shè)置日志文件為屬主可讀寫(xiě),其他用戶只讀權(quán)限。
3、/etc/httpd/conf/httpd.conf默認(rèn)權(quán)限是644,可根據(jù)需要修改權(quán)限為600。
4、/var/log/httpd/*.log默認(rèn)權(quán)限為644,默認(rèn)一般符合要求。
三.日志設(shè)置
設(shè)備應(yīng)配置日志功能,對(duì)運(yùn)行錯(cuò)誤、用戶訪問(wèn)等進(jìn)行記錄,記錄
內(nèi)容包括時(shí)間,用戶使用的 IP 地址等內(nèi)容。
1、編輯 httpd.conf 配置文件,設(shè)置日志記錄文件、記錄內(nèi)容、記錄 格式。
其中,錯(cuò)誤日志:
LogLevel notice #日志的級(jí)別
ErrorLog /…/logs/error_log #日志的保存位置(錯(cuò)誤日志)
訪問(wèn)日志:
LogFormat %h %l %u %t \”%r\” %>s %b “%{Accept}i\”%{Referer}i\” \”%{User-Agent}i\””
combined
CustomLog /…/logs/access_log combined (訪問(wèn)日志)
ErrorLog 指令設(shè)置錯(cuò)誤日志文件名和位置。錯(cuò)誤日志是最重要的 日志文件,
Apache httpd 將在這個(gè)文件中存放診斷信息和處理請(qǐng) 求中出現(xiàn)的錯(cuò)誤。
若要將錯(cuò)誤日志送到 Syslog,則設(shè)置: ErrorLog syslog。
CustomLog 指令指定了保存日志文件的具體位置以及日志的格式。訪問(wèn)日志中會(huì)記錄服務(wù)器所處理的所有請(qǐng)求。
LogFormat 設(shè)置日志格式,建議設(shè)置為 combined 格式。
LogLevel 用于調(diào)整記錄在錯(cuò)誤日志中的信息的詳細(xì)程度,建議設(shè)置為notice。
日志的級(jí)別,默認(rèn)是warn,notice級(jí)別比較詳細(xì),在實(shí)際中由于日志會(huì)占用大量硬盤(pán)空間,一般沒(méi)有設(shè)置
四.禁止訪問(wèn)外部文件
禁止 Apache 訪問(wèn) Web 目錄之外的任何文件。
1、參考配置操作
編輯 httpd.conf 配置文件,
Order Deny,Allow
Deny from all
2、設(shè)置可訪問(wèn)目錄,
Order Allow,Deny
Allow from all
其中/web 為網(wǎng)站根目錄
3、默認(rèn)配置是
Options FollowSymLinks
AllowOverride None
一般可根據(jù)需要設(shè)置
五.目錄列出
禁止 Apache 列表顯示文件
編輯 httpd.conf 配置文件。
Options Indexes FollowSymLinks #刪掉
Indexes
AllowOverride None
Order allow,deny
Allow from all
將Options Indexes FollowSymLinks 中的 Indexes 去掉,就可以禁 止 Apache 顯示該目錄結(jié)構(gòu)。
Indexes 的作用就是當(dāng)該目錄下沒(méi) 有 index.html 文件時(shí),就顯示目錄結(jié)構(gòu)。
2、重新啟動(dòng) Apache 服務(wù)
3、可以設(shè)置 /etc/httpd/httpd.conf 段中刪除Options的Indexes設(shè)置 一般可根據(jù)需要設(shè)置
六.錯(cuò)誤頁(yè)面重定向
Apache 錯(cuò)誤頁(yè)面重定向
1、修改 httpd.conf 配置文件:
ErrorDocument 400 /custom400.html
ErrorDocument 401 /custom401.html
ErrorDocument 403 /custom403.html
ErrorDocument 404 /custom404.html
ErrorDocument 405 /custom405.html
http://www.013188.com
ErrorDocument 500 /custom500.html Customxxx.html 為要設(shè)置的錯(cuò)誤頁(yè)面。
2、重新啟動(dòng) Apache 服務(wù)
3、此項(xiàng)需要應(yīng)用系統(tǒng)設(shè)有錯(cuò)誤頁(yè)面,或者不在httpd中設(shè)置完全由業(yè)務(wù)邏輯實(shí)現(xiàn),可不做
七.拒絕服務(wù)防范
根據(jù)業(yè)務(wù)需要,合理設(shè)置 session 時(shí)間,防止拒絕服務(wù)攻擊
1、編輯 httpd.conf 配置文件,
Timeout 10 #客戶端與服務(wù)器端建立連接前的時(shí)間間隔
KeepAlive On
KeepAliveTimeout 15 #限制每個(gè) session 的保持時(shí)間是 15 秒 注:此處為一建議值,具體的設(shè)定需要根據(jù)現(xiàn)實(shí)情況。
2、重新啟動(dòng) Apache 服務(wù)
3、默認(rèn)Timeout 120 KeepAlive Off,KeepAliveTimeout 15,該項(xiàng)設(shè)置涉及性能調(diào)整,一般不做。
八.隱藏 Apache 的版本號(hào)
隱藏 Apache 的版本號(hào)及其它敏感信息。
1、配置操作
修改 httpd.conf 配置文件: ServerSignature Off ServerTokens Prod
2、默認(rèn)是 ServerSignature On,ServerTokens OS,可以設(shè)置
九.關(guān)閉 TRACE
關(guān)閉 TRACE,防止 TRACE 方法被訪問(wèn)者惡意利用
1、 配置修改vim /etc/httpd/conf/httpd.conf
添加 “TraceEnable Off”
注:適用于 Apache 2.0 以上版本
2、默認(rèn)沒(méi)有該項(xiàng)設(shè)置,可以做。
十.禁用 CGI
如果服務(wù)器上不需要運(yùn)行 CGI 程序,建議禁用 CGI
1、 修改配置vim /etc/httpd/conf/httpd.conf
把 cgi-bin 目錄的配置和模塊都注釋掉
#LoadModule cgi_module modules/mod_cgi.so
#ScriptAlias /cgi-bin/ “/var/www/cgi-bin/”
#
#AllowOverride None
# Options None
#Order allow,deny
#Allow from all
#
2、 根據(jù)需要設(shè)置,如果沒(méi)有CGI程序,可以關(guān)閉
十一.監(jiān)聽(tīng)地址綁定
服務(wù)器有多個(gè) IP 地址時(shí),只監(jiān)聽(tīng)提供服務(wù)的 IP 地址
1、 修改配置vim /etc/httpd/conf/httpd.con
修改
Listen x.x.x.x:80
2、檢測(cè)操作
使用命令”cat /etc/httpd/conf/httpd.conf|grep Listen”查看是否 綁定 IP 地址
3、默認(rèn)設(shè)置是Listen 80監(jiān)聽(tīng)所有地址,如果服務(wù)器只有一個(gè)IP地址可不做該項(xiàng)設(shè)置,如果有多個(gè)IP可以按照需要設(shè)。
十二.刪除缺省安裝的無(wú)用文件
刪除缺省安裝的無(wú)用文件。
1、參考配置操作刪除缺省 HTML 文件:
# rm -rf /usr/local/apache2/htdocs/*
刪除缺省的 CGI 腳本:
# rm –rf /usr/local/apache2/cgi-bin/*
刪除 Apache 說(shuō)明文件:
# rm –rf /usr/local/apache2/manual
刪除源代碼文件:
( http://www.620788.com )
# rm -rf /path/to/httpd-2.2.4* 根據(jù)安裝步驟不同和版本不同,某些目錄或文件可能不存在或位置不同。
2、可根據(jù)實(shí)際情況刪除,一般是 /var/www/html /var/www/cgi-bin 默認(rèn)就是空的
十三.禁用非法 HTTP 方法
禁用PUT、DELETE等危險(xiǎn)的HTTP 方法;
1、 編輯 httpd.conf 文件。
只允許 get、post 方法
Deny from all
2、檢測(cè)操作
查看 httpd.conf 文件,
檢查如下內(nèi)容,是否只允許 get、post
方法
Deny from all
3、根據(jù)需要可設(shè)置,如果沒(méi)有不需要用到put delete HTTP 方法的話,
加在/etc/httpd/conf/httpd.conf的段中。