首页主机资讯CentOS上Apache2的安全设置指南

CentOS上Apache2的安全设置指南

时间2025-11-13 19:17:04发布访客分类主机资讯浏览980
导读:1. 系统与Apache软件更新 定期更新CentOS系统和Apache2及其依赖模块,及时修补已知安全漏洞。执行sudo yum update -y命令更新所有软件包,确保Apache运行最新稳定版本。 2. 防火墙配置(限制访问端口)...

1. 系统与Apache软件更新
定期更新CentOS系统和Apache2及其依赖模块,及时修补已知安全漏洞。执行sudo yum update -y命令更新所有软件包,确保Apache运行最新稳定版本。

2. 防火墙配置(限制访问端口)
使用firewalld限制对Apache的访问,仅开放HTTP(80端口,用于普通网页访问)和HTTPS(443端口,用于加密网页访问)流量。执行以下命令配置:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

此操作可阻止非法IP通过其他端口(如FTP、SSH)扫描或攻击服务器。

3. 禁用不必要的Apache模块
禁用不使用的Apache模块以减少攻击面。常见需禁用的模块包括mod_cgi(动态脚本支持,易引发代码注入)、mod_status(显示服务器状态,泄露敏感信息)。通过编辑/etc/httpd/conf/httpd.conf,注释或删除对应LoadModule指令(如#LoadModule cgi_module modules/mod_cgi.so),然后重启Apache:sudo systemctl restart httpd

4. 隐藏Apache版本与敏感信息
修改Apache配置文件(/etc/httpd/conf/httpd.conf),设置ServerTokensProd(仅显示“Apache”而非版本号)和ServerSignatureOff(禁用错误页面中的服务器版本信息),降低被针对性攻击的风险。配置示例如下:

ServerTokens Prod
ServerSignature Off
```。  

**5. 配置SSL/TLS加密(启用HTTPS)**  
使用`mod_ssl`模块为网站配置HTTPS,加密客户端与服务器之间的数据传输(如密码、支付信息)。步骤如下:  
- 安装`mod_ssl`:`sudo yum install mod_ssl -y`;  
- 生成自签名证书(或购买CA证书):`sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/apache-selfsigned.key -out /etc/pki/tls/certs/apache-selfsigned.crt`;  
- 编辑虚拟主机配置(`/etc/httpd/conf.d/ssl.conf`),添加以下内容:  
  ```apache
  <
    VirtualHost *:443>

      ServerName yourdomain.com
      SSLEngine on
      SSLCertificateFile /etc/pki/tls/certs/apache-selfsigned.crt
      SSLCertificateKeyFile /etc/pki/tls/private/apache-selfsigned.key
      DocumentRoot /var/www/html
      ErrorLog ${
APACHE_LOG_DIR}
/ssl_error.log
      CustomLog ${
APACHE_LOG_DIR}
    /ssl_access.log combined
  <
    /VirtualHost>
    
  • 重启Apache:sudo systemctl restart httpd

6. 启用安全模块(WAF与DDoS防护)

  • mod_security:作为Web应用防火墙(WAF),拦截SQL注入、XSS等恶意请求。安装后编辑/etc/httpd/conf.d/security2.conf,开启规则引擎:
    SecRuleEngine On
    SecRequestBodyAccess On
    SecAuditLog /var/log/httpd/security_audit.log
    
  • mod_evasive:防御DDoS攻击和暴力破解,限制同一IP的请求频率。编辑/etc/httpd/conf.d/evasive.conf,设置以下参数:
    <
        IfModule mod_evasive20.c>
        
        DOSHashTableSize 3097
        DOSPageCount 2  # 1秒内2次相同请求触发
        DOSSiteCount 50 # 1秒内50次请求触发
        DOSPageInterval 1
        DOSSiteInterval 1
        DOSBlockingPeriod 10 # 触发后封禁10<
        /IfModule>
        
    
    重启Apache使配置生效。

7. 访问控制与权限管理

  • 目录权限限制:通过< Directory> 指令限制对网站目录的访问,禁用目录列表(Options -Indexes),防止敏感文件(如配置文件、上传文件)泄露。示例:
    <
        Directory "/var/www/html">
        
        Options -Indexes +FollowSymLinks
        AllowOverride None
        Require all granted
    <
        /Directory>
        
    
  • IP限制:使用Require指令限制敏感目录(如/admin)的访问,仅允许特定IP或网段访问。示例:
    <
        Directory "/var/www/html/admin">
        
        Require ip 192.168.1.0/24  # 仅允许内网IP访问
    <
        /Directory>
    
    
  • 用户认证:对敏感区域启用基本认证(Basic Authentication),设置强密码。使用htpasswd创建密码文件:sudo htpasswd -c /etc/apache2/.htpasswd username,然后在配置中添加:
    AuthType Basic
    AuthName "Restricted Access"
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
    ```。  
    
    

8. SELinux配置(可选但推荐)
若系统启用SELinux(默认开启),需配置策略允许Apache访问必要资源(如网站目录、日志文件)。常见命令:

  • 允许Apache写入日志:sudo setsebool -P httpd_can_write_log 1
  • 允许Apache访问网络(如数据库):sudo setsebool -P httpd_can_network_connect_db 1
  • 更改网站目录的安全上下文:sudo chcon -Rt httpd_sys_content_t /var/www/html

9. 日志监控与定期审计
启用详细日志记录,定期分析异常行为(如大量404错误、频繁登录失败)。配置日志路径:

ErrorLog ${
APACHE_LOG_DIR}
/error.log
CustomLog ${
APACHE_LOG_DIR}
    /access.log combined

使用tail -f /var/log/httpd/error.log实时监控错误日志,或通过logwatch等工具定期生成报告。

10. 备份与恢复策略
定期备份Apache配置文件(/etc/httpd/conf/httpd.conf/etc/httpd/conf.d/*.conf)和网站数据(/var/www/html),使用tar命令打包:

sudo tar -czvf apache_backup_$(date +%F).tar.gz /etc/httpd/conf /var/www/html

将备份文件存储到异地(如云存储),以便在服务器遭受攻击或数据丢失时快速恢复。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS上Apache2的安全设置指南
本文地址: https://pptw.com/jishu/747342.html
CentOS Apache2模块如何加载与禁用 Apache2日志文件在哪里查看

游客 回复需填写必要信息