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

Apache2在CentOS上的安全设置

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

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

2. 防火墙配置
使用firewalld限制对Apache的访问,仅开放必要端口(HTTP 80、HTTPS 443)。执行以下命令配置:

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

此操作可阻止非法IP访问Apache服务。

3. SELinux设置
若SELinux处于Enforcing模式(默认),需配置策略允许Apache访问必要资源。常见命令:

sudo setsebool -P httpd_can_network_connect 1  # 允许Apache发起网络连接(如数据库访问)
sudo setsebool -P httpd_can_sendmail 1       # 允许Apache发送邮件
sudo chcon -Rt httpd_sys_content_t /var/www/html  # 设置网站目录安全上下文

避免因SELinux策略过严导致Apache无法正常运行。

4. 禁用不必要模块
通过注释或删除/etc/httpd/conf/httpd.conf中不需要的模块加载指令,减少攻击面。常见需禁用的模块:

# LoadModule cgi_module modules/mod_cgi.so      # 禁用CGI(若无需动态脚本)
# LoadModule status_module modules/mod_status.so # 禁用状态页面(避免信息泄露)
# LoadModule info_module modules/mod_info.so    # 禁用信息模块(避免服务器详情暴露)

仅保留mod_rewrite(URL重写)、mod_ssl(HTTPS)、mod_security(安全防护)等必要模块。

5. 启用安全模块
安装并配置mod_security(Web应用防火墙)和mod_evasive(防DDoS/暴力破解):

sudo yum install mod_security mod_evasive -y
  • mod_security:编辑/etc/httpd/conf.d/security2.conf,启用规则引擎并设置审计日志:
    SecRuleEngine On
    SecRequestBodyAccess On
    SecResponseBodyAccess On
    SecAuditLog /var/log/httpd/modsec_audit.log
    
  • mod_evasive:编辑/etc/httpd/conf.d/evasive.conf,配置防暴力破解阈值:
    <
        IfModule mod_evasive20.c>
        
        DOSHashTableSize 3097
        DOSPageCount 2       # 1秒内同一IP访问同一页面超过2次视为攻击
        DOSSiteCount 50      # 1秒内同一IP访问整个站点超过50次视为攻击
        DOSBlockingPeriod 10 # 攻击IP封锁10<
        /IfModule>
        
    
    这两个模块可有效拦截SQL注入、XSS、DDoS等常见攻击。

6. 配置SSL/TLS加密
使用mod_ssl模块启用HTTPS,保护数据传输安全。步骤如下:

  • 安装mod_sslsudo yum install mod_ssl -y
  • 生成自签名证书(生产环境建议使用Let’s Encrypt免费证书):
    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
    
  • 配置HTTPS虚拟主机(/etc/httpd/conf.d/ssl.conf):
    <
        VirtualHost *:443>
        
        ServerName yourdomain.com
        DocumentRoot /var/www/html
        SSLEngine on
        SSLCertificateFile /etc/pki/tls/certs/apache-selfsigned.crt
        SSLCertificateKeyFile /etc/pki/tls/private/apache-selfsigned.key
        SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1  # 禁用旧版不安全协议
    <
        /VirtualHost>
        
    
  • 强制HTTP跳转HTTPS(/etc/httpd/conf.d/redirect.conf):
    <
        VirtualHost *:80>
        
        ServerName yourdomain.com
        Redirect permanent / https://yourdomain.com/
    <
        /VirtualHost>
        
    
    此配置可防止数据在传输过程中被窃取或篡改。

7. 隐藏敏感信息
修改Apache主配置文件(/etc/httpd/conf/httpd.conf),隐藏版本号和服务器信息,减少被针对性攻击的风险:

ServerTokens Prod    # 仅返回"Apache",不显示版本号
ServerSignature Off  # 错误页不显示服务器版本和操作系统信息

此外,禁用目录列表(/etc/httpd/conf/httpd.conf):

<
    Directory "/var/www/html">
    
    Options -Indexes  # 禁止目录自动列出
    AllowOverride None
    Require all granted
<
    /Directory>
    

避免攻击者通过目录列表获取敏感文件(如config.phpbackup.sql)。

8. 访问控制与权限管理

  • 限制目录访问:通过.htaccess或主配置文件控制特定目录的访问权限。例如,保护/admin目录需输入密码:
    sudo htpasswd -cm /etc/httpd/conf/.htpasswd admin  # 创建密码文件
    
    配置/etc/httpd/conf.d/admin.conf
    <
        Directory "/var/www/html/admin">
        
        AuthType Basic
        AuthName "Restricted Area"
        AuthUserFile /etc/httpd/conf/.htpasswd
        Require valid-user
    <
        /Directory>
    
    
  • 设置文件权限:确保网站目录权限合理,避免Apache用户(apache)拥有过高权限:
    sudo chown -R apache:apache /var/www/html  # 所有权归Apache用户
    sudo chmod -R 755 /var/www/html           # 目录权限755(所有者可读写执行,其他用户只读执行)
    sudo find /var/www/html -type f -exec chmod 644 {
    }
         \;
      # 文件权限644(所有者可读写,其他用户只读)
    
    防止攻击者通过上传恶意文件或篡改现有文件获取服务器控制权。

9. 日志监控与审计
配置Apache日志记录,定期分析异常行为。默认日志路径:

  • 访问日志:/var/log/httpd/access_log(记录所有请求)
  • 错误日志:/var/log/httpd/error_log(记录错误信息)
    /etc/httpd/conf/httpd.conf中确认日志配置:
ErrorLog ${
APACHE_LOG_DIR}
/error.log
CustomLog ${
APACHE_LOG_DIR}
    /access.log combined  # 使用combined格式记录IP、时间、请求方法等详细信息

使用tail -f /var/log/httpd/error_log实时监控错误日志,或通过fail2ban等工具自动封禁恶意IP。

10. 强化用户与认证安全

  • 设置强密码:为Apache用户(如apache)和网站管理员账户设置复杂密码(包含大小写字母、数字、特殊字符,长度≥10位)。
  • 禁用root远程登录:编辑/etc/ssh/sshd_config,修改以下配置:
    Port 2222  # 修改默认SSH端口(避免暴力破解)
    PermitRootLogin no  # 禁止root用户直接登录
    PasswordAuthentication no  # 禁用密码认证(仅允许密钥认证)
    
    重启SSH服务:sudo systemctl restart sshd
    减少服务器被暴力破解的风险。

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


若转载请注明出处: Apache2在CentOS上的安全设置
本文地址: https://pptw.com/jishu/723442.html
CentOS下Apache2的并发连接数如何调整 如何配置Apache安全策略

游客 回复需填写必要信息