Apache httpd安全配置標準

1、目的

本標準是信息系統安全技術標準的一部分,主要目的是根據信息安全管理政策要求,爲我司apache配置提供安全標準。php

2、範圍

本規範適用於我司全部apache。html

3、內容

3.1 版本

使用較新的穩定版本java

3.2 啓動用戶

使用非root賬號啓動,例如web

User daemon
Group daemon

3.3 加載模塊

只加載必須的模塊,無關模塊所有註釋或刪除。apache

3.4 日誌

記錄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

3.5 php加載方式

如需支持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>

3.6 預防php文件名解析漏洞

在全局配置(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

3.7 目錄權限

apache啓動賬號應對web目錄下全部文件及子目錄無寫權限,若是web應用需寫日誌文件,不該該放在web目錄下。

標準配置:apache以nobody/daemon/apache賬號啓動,WEB目錄下全部文件及子目錄的屬主應該爲root.root,權限爲0755(-rwxr-xr-x)。

3.8 可寫目錄禁止執行

若是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,子目錄的權限應該跟父目錄徹底一致。

注意:這裏指的不是去除文件系統rwx權限中的x,文件系統權限中的x能夠保留,無危害。
3.9 阻止用戶修改系統設置

應在每一個Directory下面增長以下配置,阻止用戶經過.htaccess修改系統安全設置:

<Directory "*">
    AllowOverride None
    ....
</Directory>

3.10 禁止目錄瀏覽

應在每一個Directory下面刪除"Indexes",禁止目錄瀏覽。或者設置爲:

<Directory "*">
    Options -Indexes
    ....
</Directory>

注意:前面有"-"號,表示禁用。

3.11 刪除默認文件

刪除默認的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>

注意:絕對路徑可能有區別,但配置是相似的。

3.12 禁止訪問.ht規則文件

這個配置默認就有,保持不變便可。相似以下:

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>

有些版本的相似以下:

<FilesMatch "^\.ht">
    Order allow,deny
    Deny from all
    Satisfy All
</FilesMatch>

3.13 關閉apache版本號

在http頭裏面默認會顯示apache版本號,經過以下配置來關閉:

ServerTokens Prod
ServerSignature Off

3.14 禁止Trace請求

在全局配置(server config)裏面把Trace禁用,默認是啓用,配置以下:

TraceEnable Off

注意:這個功能在1.3.34,2.0.55及以後的版本才存在

相關文章
相關標籤/搜索