阅读量:20
Linux Apache2安全设置关键步骤
1. 系统与Apache更新
定期更新系统和Apache2至最新版本,安装安全补丁以修复已知漏洞。
- Ubuntu/Debian:
sudo apt update && sudo apt upgrade -y - CentOS/RHEL:
sudo yum update -y
更新后重启Apache服务使变更生效:sudo systemctl restart apache2(Ubuntu/Debian)或sudo systemctl restart httpd(CentOS/RHEL)。
2. 配置防火墙限制访问
使用防火墙(UFW或firewalld)仅允许必要端口(HTTP 80、HTTPS 443),阻断非法访问。
- Ubuntu(UFW):
sudo apt install ufw -y sudo ufw allow 'Apache Full' # 允许HTTP/HTTPS sudo ufw enable # 启用防火墙 - CentOS(firewalld):
sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --reload
3. 禁用不必要的Apache模块
禁用未使用的模块(如autoindex、cgi、status),减少攻击面。
# 查看已启用模块:sudo a2enmod -l
# 禁用模块(以autoindex为例):
sudo a2dismod autoindex
# 重启Apache生效:
sudo systemctl restart apache2
常见需禁用的模块:autoindex(目录列表)、cgi(CGI脚本执行)、status(服务器状态显示)。
4. 隐藏Apache版本与敏感信息
修改配置文件隐藏服务器版本、操作系统信息及错误详情,降低针对性攻击风险。
- 编辑
/etc/apache2/apache2.conf(Ubuntu/Debian)或/etc/httpd/conf/httpd.conf(CentOS/RHEL):ServerTokens Prod # 仅显示"Apache",隐藏版本号 ServerSignature Off # 关闭错误页面的服务器版本信息 - 重启Apache使配置生效。
5. 启用SSL/TLS加密(HTTPS)
使用Let’s Encrypt免费证书加密HTTP流量,防止数据窃听或篡改。
- 安装Certbot:
sudo apt install certbot python3-certbot-apache -y # Ubuntu/Debian sudo yum install certbot python3-certbot-apache -y # CentOS/RHEL - 获取并安装证书:
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com - 按提示选择“Redirect to HTTPS”(强制跳转HTTPS),确保证书自动续期。
6. 配置访问控制
通过.htaccess或主配置文件限制目录访问权限,防止未授权访问。
- 禁用目录列表:在网站根目录配置中添加
Options -Indexes(如/var/www/html)。 - 基本认证:保护敏感目录(如
/admin):创建密码文件:"/var/www/html/admin" > AuthType Basic AuthName "Restricted Access" AuthUserFile /etc/apache2/.htpasswd Require valid-usersudo htpasswd -c /etc/apache2/.htpasswd username(替换username为实际用户名)。 - IP白名单:仅允许可信IP访问敏感目录:
"/var/www/html/confidential" > Require ip 192.168.1.100 192.168.1.101
7. 强化HTTP安全头
通过mod_headers模块添加安全头,防范XSS、点击劫持等攻击。
- 编辑
/etc/apache2/conf-available/security.conf(Ubuntu/Debian)或/etc/httpd/conf/httpd.conf(CentOS/RHEL):Header always set X-Content-Type-Options "nosniff" # 防止MIME类型嗅探 Header always set X-Frame-Options "SAMEORIGIN" # 防止点击劫持 Header always set X-XSS-Protection "1; mode=block" # 启用XSS防护 Header always set Referrer-Policy "no-referrer-when-downgrade" # 控制Referer信息 Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; object-src 'none'" # 内容安全策略 - 启用配置:
sudo a2enconf security(Ubuntu/Debian),重启Apache。
8. 配置日志与监控
确保日志记录详细,便于追踪异常行为。
- 日志配置:在
/etc/apache2/apache2.conf中设置:LogLevel warn # 日志级别(warn及以上) ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined - 实时监控:使用
tail命令查看实时日志:tail -f /var/log/apache2/error.log(Ubuntu/Debian)或tail -f /var/log/httpd/error_log(CentOS/RHEL)。 - Fail2Ban:安装Fail2Ban防止暴力破解(如SSH、Apache登录):
sudo apt install fail2ban -y # Ubuntu/Debian sudo systemctl enable fail2ban sudo systemctl start fail2ban
9. 使用安全模块增强防护
启用mod_security(Web应用防火墙)拦截恶意请求。
- 安装mod_security:
sudo apt install libapache2-mod-security2 -y # Ubuntu/Debian sudo yum install mod_security -y # CentOS/RHEL - 配置规则:编辑
/etc/modsecurity/modsecurity.conf,启用规则集(如OWASP Core Rule Set),重启Apache。
10. 文件与目录权限管理
严格限制网站目录权限,避免敏感信息泄露。
- 设置目录权限:
sudo chown -R www-data:www-data /var/www/html # Ubuntu/Debian(Apache用户为www-data) sudo chown -R apache:apache /var/www/html # CentOS/RHEL(Apache用户为apache) sudo chmod -R 755 /var/www/html # 目录权限755(所有者可读写执行,其他用户可读执行) - 敏感文件权限:如数据库配置文件(
wp-config.php、config.php),设置权限为600:sudo chmod 600 /var/www/html/wp-config.php