1.賬號設定
1.1.防止 webshell 越權使用
修改 httpd.conf:/etc/httpd/conf/httpd.conf 或編譯路徑下 /conf/httpd.conf
檢查程式啟動賬號和使用者組
user apache或nobody
group apache或nobody
一般情況下預設使用者符合安全要求
1.2.非超級使用者許可權禁止修改 apache 主目錄
在 httpd.conf 檔案中查詢主目錄位置:grep "ServerRoot" /etc/httpd/conf/httpd.conf
修改許可權:
chmod -R 700 /etc/httpd/
chmod 644 /var/log/httpd/*.log
2.日誌設定
2.1.修改日誌級別,記錄格式
修改 httpd.conf 檔案
更改錯誤日誌:
LogLevel notice(更多的記錄資訊,但會佔用大量空間)
ErrorLog /logs/error_log(可根據磁碟規劃更改)
更改訪問日誌
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Accept}i\"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog /logs/access_log combined(可根據磁碟規劃更改)
3.禁止訪問外部檔案
防止訪問網站目錄以外的檔案
開啟 httpd.conf 檢查關鍵語法
<Directory /> AllowOverride none Require all denied </Directory> <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>
4.禁止列出目錄
防止使用 web 直接瀏覽目錄內容
修改 httpd.conf 檔案
去掉站點配置資訊中的 Indexes 選項(Indexes:無法在當前目錄下找到首頁檔案,就顯示目錄內容)
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
5.錯誤頁面重定向
防止透過預設錯誤回饋洩露敏感資訊
修改 httpd.conf 檔案
編輯錯誤頁面配置:
ErrorDocument 400 /error400.html ErrorDocument 401 /error401.html ErrorDocument 403 /error403.html ErrorDocument 404 /error404.html ErrorDocument 405 /error405.html ErrorDocument 500 /error500.html 錯誤頁面在站點根目錄下建立,也可以在子目錄中 錯誤資訊還可以使用 ”直接輸出提示“
6.拒絕服務防範
合理設定會話時間,防 止拒絕服務
編輯 httpd.conf
修改內容:
Timeout 10
KeepAlive On
KeepAliveTimeout 15
此處的連線間隔和 session 保持時間單位都是秒,一定要根據實際情況,分析後再設定
7.隱藏程式版本號
避免被針對漏洞
編輯 httpd.conf
修改資訊:
ServerSignature Off
ServerTokens Prod
8.關閉 TRACE 功能
防止 trace 方法被惡意利用洩露資訊
編輯 httpd.conf
修改資訊:TraceEnable Off
9.禁用 CGI 功能
確保不適用 cgi 程式的情況下,關閉 cgi 功能(開啟狀態下,可執行指令碼)
編輯 httpd.conf
註釋資訊如下
ScriptAlias /cgi-bin/ "/var/www/cgi-bin" <Directory "/var/www/cgi-bin"> AllowOverride Nonde Options None Require all granted </Directory> LoadModule cgi_module modules/mod_cgi.so
10.繫結監聽地址
伺服器多個 IP 時,繫結業務介面 IP
編輯 httpd.conf
新增監聽
Listen xx.xx.xx.xx:80
如果頁面為私有頁面,還可以更改預設埠值
11.禁用非法 HTTP 方法
禁用 put、delete 等危險的 http 方法
編輯 httpd.conf
加入資訊:
除了這些方法,以外都可以使用
<Location /> <LimitExcept GET POST CONNECT OPTIONS> AllowOverride None Require all granted </LimitExcept> </Location>
12.防止 apache 解析漏洞
防止非法檔案繞過合法性檢查
編輯 httpd.conf
新增配置資訊
將檔案字尾定死了
<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch "\.phps$"> SetHandler application/x-httpd-php-source </FilesMatch>
13.防止 sql 注入
禁止 PHP 頁面對 sql 注入給予反饋
修改 php.ini 檔案:/etc/php.ini
加入或修改資訊:magic_quotes_gpc=On
14.限制請求訊息長度
防止溢位漏洞
編輯 httpd.conf
新增資訊:LimitRequestBody 102400