如何配置Apache安全策略
通过配置隐藏Apache版本、操作系统等细节,降低攻击者针对性探测风险。在Apache主配置文件(如httpd.conf或apache2.conf)中添加:
ServerTokens Prod(仅显示“Apache”版本标识)
ServerSignature Off(关闭错误页面、目录列表中的服务器签名)
可选:通过Header指令进一步隐藏服务器信息:
Header always unset "Server" Header always set Server "Unknown"
<Directory>指令中移除Indexes选项,防止用户直接查看目录结构:<Directory "/var/www/html">Options -Indexes</Directory>FilesMatch指令拦截对.htaccess、.htpasswd、.ini、.log等敏感文件的访问:<FilesMatch "\.(htaccess|htpasswd|ini|log|sh|inc|bak)$">Require all denied</FilesMatch>../等符号穿越至系统目录:<DirectoryMatch "/\.|%">Require all denied</DirectoryMatch>通过mod_headers模块添加安全头,缓解XSS、点击劫持、MIME嗅探等攻击:
Header always set X-XSS-Protection "1; mode=block"(启用浏览器XSS过滤器并阻止页面加载)Header always set X-Frame-Options "SAMEORIGIN"(仅允许同源页面嵌入)Header always set X-Content-Type-Options "nosniff"(禁止浏览器自动推断MIME类型)Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"(要求浏览器仅通过HTTPS访问,有效期1年)Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'"(限制资源加载来源,逐步收紧规则)LimitRequestBody指令防止大文件上传导致的DoS攻击,默认值通常为0(无限制),建议设置为合理范围(如10MB):LimitRequestBody 10485760LimitRequestFields、LimitRequestFieldSize、LimitRequestLine指令防止畸形请求:LimitRequestFields 40(最大请求数量)LimitRequestFieldSize 4094(单个请求头最大大小)LimitRequestLine 4094(请求行最大大小)Timeout 60(连接超时60秒)KeepAliveTimeout 15(Keep-Alive连接超时15秒)LoadModule security2_module modules/mod_security2.soSecRuleEngine On(开启规则引擎)SecAuditLog /var/log/httpd/modsec_audit.log(记录审计日志)LoadModule evasive20_module modules/mod_evasive20.soDOSHashTableSize 3097(哈希表大小)DOSPageCount 2(单IP单页面1秒内超过2次请求则触发)DOSSiteCount 50(单IP全站1秒内超过50次请求则触发)DOSBlockingPeriod 10(触发后封禁10秒)sudo apt install certbot python3-certbot-apachesudo certbot --apache -d yourdomain.com -d www.yourdomain.comSSLProtocol -all +TLSv1.2 +TLSv1.3SSLCipherSuite ECDHE+AESGCM:ECDHE+CHACHA20:DHE+AESGCM:DHE+CHACHA20:!aNULL:!MD5:!DSSSSLHonorCipherOrder on(优先使用服务器端加密套件)SSLCompression off(禁用压缩,防止CRIME攻击)SSLSessionTickets off(禁用会话票证,防止重放攻击)<VirtualHost *:80>ServerName yourdomain.com Redirect permanent / https://yourdomain.com/</VirtualHost>Require指令限制特定IP或网段的访问,适用于后台管理目录:<Directory "/var/www/admin">Require ip 192.168.1.0/24</Directory>AuthType BasicAuthName "Restricted Area"AuthUserFile /etc/apache2/.htpasswdRequire valid-user(需提前通过htpasswd命令创建用户)www-data),避免以root权限启动服务:httpd.conf中设置:User www-data Group www-datachown -R www-data:www-data /var/www/htmlchmod -R 755 /var/www/htmlchmod 755 /var/www/uploads(上传目录)a2dismod(Debian/Ubuntu)或修改配置文件(CentOS)禁用不必要模块(如autoindex、cgi、userdir),减少攻击面:sudo a2dismod autoindex cgi userdirsudo systemctl restart apache2LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\" %D" combinedCustomLog "/var/log/apache2/access.log" combinedErrorLog "/var/log/apache2/error.log"warn或更高,捕获异常请求:LogLevel warnsudo apt update && sudo apt upgrade apache2sudo yum update httpdhttpd.conf、ssl.conf、虚拟主机配置),防止误操作或攻击导致配置丢失:sudo cp -r /etc/apache2 /etc/apache2.baksudo cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak