本標準是信息系統安全技術標準的一部分,主要目的是根據信息安全管理政策要求,爲我司apache配置提供安全標準。php
本規範適用於我司全部apache。html
使用較新的穩定版本java
使用非root賬號啓動,例如web
User daemon Group daemon
只加載必須的模塊,無關模塊所有註釋或刪除。apache
記錄access log和error log,按日期切分,至少按天切分。示例以下:安全
ErrorLog "| /usr/local/apache/bin/rotatelogs /var/log/httpd/default.qunar.com/%Y-%m-%d_error.log 86400 480"CustomLog "| /usr/local/apache/bin/rotatelogs /var/log/httpd/default.qunar.com/%Y-%m-%d_access.log 86400 480" common
如需支持php,應以模塊方式加載,示例以下:app
LoadModule php5_module modules/libphp5.so AddType application/x-httpd-php .php
禁止以CGI方式加載php,錯誤示例:ide
ScriptAlias /php/ "/usr/local/php/"AddType application/x-httpd-php .php Action application/x-httpd-php "/php/php-cgi"
禁止以FASTCGI方式加載php,錯誤示例:spa
<IfModule fastcgi_module> ScriptAlias /fcgi-bin/ "/usr/local/apache2/fcgi-bin/" FastCgiServer /usr/local/apache2/fcgi-bin/php-cgi -processes 10 AddType application/x-httpd-php .php AddHandler php-fastcgi .php Action php-fastcgi /fcgi-bin/php-cgi <Directory "/usr/local/apache2/fcgi-bin/" > SetHandler fastcgi-script Options FollowSymLinks Order allow,deny Allow from all </Directory> </IfModule>
在全局配置(server config)裏面增長以下配置日誌
<Files ~ "\.php."> Order Allow,Deny Deny from all </Files>
注意:這個配置要放在全局,不能放在"<VirtualHost *></VirtualHost>"。放在全局,將對全部VirtualHost生效。
上述配置將攔截相似這樣的URL請求(若是不攔截,這些文件將以php類型執行):
/x.php1 /x.php2 /x.php3 /x.php4 /x.php5 /x.phps /x.php.jpg
apache啓動賬號應對web目錄下全部文件及子目錄無寫權限,若是web應用需寫日誌文件,不該該放在web目錄下。
標準配置:apache以nobody/daemon/apache賬號啓動,WEB目錄下全部文件及子目錄的屬主應該爲root.root,權限爲0755(-rwxr-xr-x)。
若是web應用確實須要支持文件上傳功能,或者因其它緣由須要對WEB目錄有寫權限,應在配置文件裏面限制可寫目錄無腳本執行權限。假設可寫目錄絕對路徑爲"/var/www/html/upload",配置示例以下:
<Directory "/var/www/html/upload"> AllowOverride None <Files ~ "\.php"> Order Allow,Deny Deny from all </Files> .... </Directory>
假設web服務啓動賬號爲nobody,可寫目錄是/var/www/html/upload,正確的權限設置應該是:
chown -R nobody:nobody /var/www/html/upload && chmod -R 0755 /var/www/html/upload
便可寫目錄的屬主應該爲web啓動賬號,權限應該爲0755,子目錄的權限應該跟父目錄徹底一致。
應在每一個Directory下面增長以下配置,阻止用戶經過.htaccess修改系統安全設置:
<Directory "*"> AllowOverride None .... </Directory>
應在每一個Directory下面刪除"Indexes",禁止目錄瀏覽。或者設置爲:
<Directory "*"> Options -Indexes .... </Directory>
注意:前面有"-"號,表示禁用。
刪除默認的icons、cgi-bin和manual,在配置文件中刪除相似這些項:
Alias /icons/ "/var/www/icons/"<Directory "/var/www/icons"> * </Directory> ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"<Directory "/var/www/cgi-bin"> * </Directory> AliasMatch ^/manual(?:/(?:de|en|es|fr|ja|ko|pt-br|ru))?(/.*)?$ "/usr/local/apache-2.2.3.cache/manual$1"<Directory "/usr/local/apache-2.2.3.cache/manual"> * </Directory>
注意:絕對路徑可能有區別,但配置是相似的。
這個配置默認就有,保持不變便可。相似以下:
<Files ~ "^\.ht"> Order allow,deny Deny from all </Files>
有些版本的相似以下:
<FilesMatch "^\.ht"> Order allow,deny Deny from all Satisfy All </FilesMatch>
在http頭裏面默認會顯示apache版本號,經過以下配置來關閉:
ServerTokens Prod ServerSignature Off
在全局配置(server config)裏面把Trace禁用,默認是啓用,配置以下:
TraceEnable Off
注意:這個功能在1.3.34,2.0.55及以後的版本才存在