温馨提示×

Linux Apache2安全设置怎么做

小樊
46
2025-11-11 07:16:31
栏目: 智能运维

Linux Apache2安全设置关键步骤

1. 系统与Apache更新

定期更新系统和Apache2至最新版本,安装安全补丁以修复已知漏洞。

  • Ubuntu/Debiansudo apt update && sudo apt upgrade -y
  • CentOS/RHELsudo 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模块

禁用未使用的模块(如autoindexcgistatus),减少攻击面。

# 查看已启用模块: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):
    <Directory "/var/www/html/admin">
        AuthType Basic
        AuthName "Restricted Access"
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
    </Directory>
    
    创建密码文件:sudo htpasswd -c /etc/apache2/.htpasswd username(替换username为实际用户名)。
  • IP白名单:仅允许可信IP访问敏感目录:
    <Directory "/var/www/html/confidential">
        Require ip 192.168.1.100 192.168.1.101
    </Directory>
    

7. 强化HTTP安全头

通过mod_headers模块添加安全头,防范XSS、点击劫持等攻击。

  • 编辑/etc/apache2/conf-available/security.conf(Ubuntu/Debian)或/etc/httpd/conf/httpd.conf(CentOS/RHEL):
    <IfModule mod_headers.c>
        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'"  # 内容安全策略
    </IfModule>
    
  • 启用配置: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.phpconfig.php),设置权限为600:
    sudo chmod 600 /var/www/html/wp-config.php
    

0