Linux Apache2安全设置步骤
导读:Linux Apache2 安全设置步骤 一 基础加固 更新系统与软件包:保持系统及 Apache2 为最新版本,及时修补漏洞。 最小权限运行:确保以非特权用户/组运行(如 www-data),避免使用 root。 精简模块:禁用不需要的...
Linux Apache2 安全设置步骤
一 基础加固
- 更新系统与软件包:保持系统及 Apache2 为最新版本,及时修补漏洞。
- 最小权限运行:确保以非特权用户/组运行(如 www-data),避免使用 root。
- 精简模块:禁用不需要的模块以减少攻击面,例如 autoindex、status、userdir、cgi 等;需要时再启用。
- 目录与权限:对网站根目录设置合理权限,禁止目录浏览,限制 .ht* 文件覆盖。
- 隐藏版本信息:降低信息泄露风险,设置 ServerTokens Prod 等。
- 日志与监控:启用并定期检查访问与错误日志,便于审计与告警。
二 网络与访问控制
- 防火墙放行:仅开放必要端口(如 80/443)。
- Ubuntu/Debian(UFW):
sudo ufw allow 'Apache Full' & & sudo ufw enable - CentOS/RHEL(firewalld):
sudo firewall-cmd --permanent --add-service=http --add-service=https & & sudo firewall-cmd --reload
- Ubuntu/Debian(UFW):
- 访问控制示例:对管理路径或敏感目录限制来源 IP。
< Directory "/var/www/html/admin"> Require all denied Require ip 203.0.113.0/24 198.51.100.10 < /Directory> - 目录列表:全局或指定目录禁用列目录。
< Directory "/var/www/html"> Options -Indexes +FollowSymLinks AllowOverride None Require all granted < /Directory> - 可选端口变更:如需变更监听端口,修改 ports.conf 的 Listen 80/443,并同步防火墙放行新端口。
三 加密与认证
- 启用 HTTPS/TLS:优先使用 Let’s Encrypt 自动签发并配置证书。
- Ubuntu/Debian:
sudo apt install certbot python3-certbot-apache - CentOS/RHEL:
sudo yum install certbot python2-certbot-apache(或 python3 版本) - 获取证书:
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
- Ubuntu/Debian:
- 手动配置 SSL(自签名,测试用):
在虚拟主机 VirtualHost 段启用:sudo a2enmod ssl sudo mkdir -p /etc/apache2/ssl sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crtSSLEngine on SSLCertificateFile /etc/apache2/ssl/apache.crt SSLCertificateKeyFile /etc/apache2/ssl/apache.key - 基础认证示例:
< Directory "/var/www/html/secret"> AuthType Basic AuthName "Restricted" AuthUserFile /etc/apache2/.htpasswd Require valid-user < /Directory>
四 安全头与请求限制
- 安全响应头(建议启用):
< IfModule mod_headers.c> Header always set X-Content-Type-Options "nosniff" Header always set X-Frame-Options "SAMEORIGIN" Header always set X-XSS-Protection "1; mode=block" Header always set Referrer-Policy "no-referrer-when-downgrade" Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; object-src 'none'; " < /IfModule> - 请求限制与抗 DoS:
- 安装并配置 mod_evasive 缓解暴力与 DoS:
示例参数(/etc/apache2/mods-available/evasive.conf 或相应加载配置):sudo apt install libapache2-mod-evasive sudo mkdir -p /var/log/apache2/evasive sudo chown www-data:root /var/log/apache2/evasiveDOSHashTableSize 2048 DOSPageCount 20 DOSPageInterval 1.0 DOSSiteCount 300 DOSSiteInterval 1.0 DOSBlockingPeriod 10.0 DOSLogDir "/var/log/apache2/evasive" - 可选:安装 mod_qos 做连接速率与并发控制(按业务调优)。
- 安装并配置 mod_evasive 缓解暴力与 DoS:
五 运行时防护与审计
- Web 应用防火墙:部署 mod_security 并加载规则集,增强对 SQLi、XSS 等的拦截能力。
sudo apt install libapache2-mod-security2 sudo a2enmod security2 sudo systemctl restart apache2 - 入侵防护:使用 Fail2Ban 监控日志并自动封禁恶意来源(SSH/HTTP 等)。
sudo apt install fail2ban sudo systemctl enable --now fail2ban - SELinux/AppArmor:在 RHEL/CentOS 启用并调优 SELinux 布尔与上下文;在 Ubuntu/Debian 可使用 AppArmor 对 Apache 进程进行最小权限约束。
- 日志与备份:
- 日志级别与路径:
LogLevel warn ErrorLog ${ APACHE_LOG_DIR} /error.log CustomLog ${ APACHE_LOG_DIR} /access.log combined - 定期备份配置与站点:
sudo tar -czvf /backup/apache2-backup_$(date +%F).tar.gz /etc/apache2 /var/www/html
- 日志级别与路径:
- 变更生效与验证:每次修改后执行
sudo systemctl reload apache2(或 restart),并使用apache2ctl configtest检查语法;通过浏览器或命令行工具验证 HTTP/HTTPS 访问、响应头与安全策略是否生效。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux Apache2安全设置步骤
本文地址: https://pptw.com/jishu/757686.html
