CentOS上Apache2的安全设置指南
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),设置ServerTokens为Prod(仅显示“Apache”而非版本号)和ServerSignature为Off(禁用错误页面中的服务器版本信息),降低被针对性攻击的风险。配置示例如下:
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,设置以下参数:重启Apache使配置生效。< IfModule mod_evasive20.c> DOSHashTableSize 3097 DOSPageCount 2 # 1秒内2次相同请求触发 DOSSiteCount 50 # 1秒内50次请求触发 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 # 触发后封禁10秒 < /IfModule>
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
