在CentOS系统上设置Apache2的安全配置,可以遵循以下步骤:
1. 关闭SELinux和防火墙
- 关闭SELinux:
sudo setenforce 0 sudo nano /etc/selinux/config # 将SELINUX=enforcing改为SELINUX=disabled,然后保存退出
- 关闭防火墙:
sudo systemctl stop firewalld sudo systemctl disable firewalld
2. 安装Apache和SSL模块
sudo yum install httpd mod_ssl
3. 配置Apache
- 修改Apache配置文件:
编辑
/etc/httpd/conf/httpd.conf
文件,设置用户和用户组为webuser
:User webuser Group webuser
- 限制资源使用:
编辑
/etc/systemd/system/multi-user.target.wants/httpd.service
文件,限制Apache使用的内存:memory_limit_in_bytes=500*1024*1024
然后重启Apache:sudo systemctl daemon-reload sudo systemctl restart httpd
4. 启用TLS访问
- 创建SSL证书和密钥:
sudo openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout /etc/pki/tls/private/apache-selfsigned.key -out /etc/pki/tls/certs/apache-selfsigned.crt
- 配置Apache使用SSL:
在
/etc/httpd/conf.d/ssl.conf
中添加或修改以下内容:ServerName www.example.com DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /etc/pki/tls/certs/apache-selfsigned.crt SSLCertificateKeyFile /etc/pki/tls/private/apache-selfsigned.key SSLCertificateChainFile /etc/pki/tls/certs/ca-bundle.crt Options Indexes FollowSymLinks AllowOverride All Require all granted - 强制HTTPS重定向:
在网站根目录下创建或编辑
.htaccess
文件,添加以下内容:RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]
5. 配置防火墙
- 开放必要的端口:
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --permanent --add-port=443/tcp sudo firewall-cmd --reload
- 设置防火墙开机自启:
sudo systemctl enable firewalld sudo systemctl start firewalld
6. 隐藏Apache版本信息
在 /etc/httpd/conf/httpd.conf
中添加或修改以下行:
ServerTokens Prod ServerSignature Off
7. 创建认证口令文件
使用 htpasswd
命令创建认证口令文件:
sudo htpasswd -cm /etc/httpd/conf/passwd users
然后在 httpd.conf
中配置认证:
AuthName "Restricted Access" AuthType Basic AuthUserFile /etc/httpd/conf/passwd Require valid-user
8. 重启Apache服务
完成所有配置后,重启Apache服务以应用更改:
sudo systemctl restart httpd
以上步骤可以帮助你增强CentOS上Apache2服务器的安全性。请根据实际需求调整配置,并定期更新和检查安全设置。