centos

CentOS下Apache安全设置怎么做

小樊
38
2025-08-18 17:09:54
栏目: 智能运维

以下是CentOS下Apache的安全设置关键步骤:

  1. 更新系统与软件

    sudo yum update -y  
    sudo yum install httpd mod_ssl mod_security mod_evasive -y  # 安装Apache及安全模块  
    
  2. 禁用不必要的模块
    编辑/etc/httpd/conf/httpd.conf,注释或删除不需要的模块(如mod_rewrite可按需禁用):

    # <IfModule mod_rewrite.c>  
    #     RewriteEngine Off  
    # </IfModule>  
    
  3. 配置SSL/TLS加密

    • 生成自签名证书(或使用Let’s Encrypt):
      sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/apache.key -out /etc/pki/tls/certs/apache.crt  
      
    • /etc/httpd/conf.d/ssl.conf中启用SSL:
      <VirtualHost *:443>  
          SSLEngine on  
          SSLCertificateFile /etc/pki/tls/certs/apache.crt  
          SSLCertificateKeyFile /etc/pki/tls/private/apache.key  
      </VirtualHost>  
      
  4. 配置防火墙
    开放HTTP(80)和HTTPS(443)端口:

    sudo firewall-cmd --permanent --add-service=http  
    sudo firewall-cmd --permanent --add-service=https  
    sudo firewall-cmd --reload  
    
  5. 设置文件与目录权限
    确保网站目录权限正确,仅允许Apache用户访问:

    sudo chown -R apache:apache /var/www/html  
    sudo chmod -R 755 /var/www/html  
    
  6. 隐藏版本信息
    httpd.conf中添加:

    ServerTokens Prod  
    ServerSignature Off  
    
  7. 启用安全模块

    • mod_security:在/etc/httpd/conf.d/security2.conf中启用规则引擎:
      SecRuleEngine On  
      SecAuditLog /var/log/httpd/security_audit.log  
      
    • mod_evasive:在/etc/httpd/conf.d/evasive.conf中配置防暴力攻击规则:
      <IfModule mod_evasive20.c>  
          DOSPageCount 2  
          DOSSiteCount 50  
          DOSBlockingPeriod 10  
      </IfModule>  
      
  8. 限制访问权限

    • 禁用目录列表:在/etc/httpd/conf/httpd.conf或虚拟主机配置中添加:
      <Directory "/var/www/html">  
          Options -Indexes  
      </Directory>  
      
    • 通过.htaccess限制IP访问(可选):
      Require ip 192.168.1.0/24  
      
  9. 定期备份与监控

    • 备份配置文件与网站数据:
      sudo tar -czvf apache-backup.tar.gz /etc/httpd /var/www/html  
      
    • 启用日志记录并定期审查:
      ErrorLog /var/log/httpd/error_log  
      CustomLog /var/log/httpd/access_log combined  
      

完成配置后重启Apache

sudo systemctl restart httpd  

以上步骤参考自,可根据实际需求调整。

0
看了该问题的人还看了