确保 Apache2 服务器在 CentOS 系统上运行时具有高度安全性是至关重要的。通过实施适当的安全措施,可以显著减少潜在的安全风险,保护服务器及其数据免受恶意攻击。
在开始之前,请确保你的 CentOS 系统已更新到最新版本,并安装了 Apache2 服务器。如果尚未安装,可以使用以下命令进行安装:
sudo yum update -y
sudo yum install httpd -y
检查系统中的超级用户账户,并删除不必要的账户。
检测具有超级用户权限的账户:
cat /etc/passwd | awk -F ':' '{print $1,$3}' | grep ' 0$'
备份并锁定这些账户:
cp /etc/passwd /etc/passwd_bak
passwd -l <用户名>
删除不必要的账户,如 adm
, lp
, sync
等:
userdel username
groupdel groupname
设置复杂的用户口令,并检查空口令账户。
修改 /etc/login.defs
文件以强制执行口令策略:
PASS_MIN_LEN 10
检查空口令账户:
awk -F ":" '$2 == "" {print $1}' /etc/shadow
使用 chattr
命令防止未授权访问 /etc/passwd
, /etc/shadow
, /etc/group
, 和 /etc/gshadow
文件:
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow
配置防火墙以限制对 Apache 服务器的访问。
允许 HTTP(端口 80)和 HTTPS(端口 443)流量通过:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
在 Apache 配置文件中禁用不必要的模块和功能,以减少潜在的安全风险。
示例:禁用 mod_ssl
和 mod_rewrite
模块:
<IfModule mod_ssl.c>
# SSL模块不需要时应该被禁用
LoadModule ssl_module modules/mod_ssl.so
</IfModule>
<IfModule mod_rewrite.c>
# 重写引擎如果不是必需的也应该被禁用
RewriteEngine Off
</IfModule>
启用 SSL/TLS 以保护数据传输过程中的安全。
生成 SSL 证书并配置相应的虚拟主机:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certs/apache-selfsigned.crt
编辑 Apache 配置文件(例如 /etc/httpd/conf.d/ssl.conf
)并添加以下内容:
<VirtualHost *:443>
ServerName your_domain.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/ssl/certs/apache-selfsigned.crt
SSLCertificateKeyFile /etc/ssl/private/apache-selfsigned.key
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>
重启 Apache 服务:
sudo systemctl restart httpd
定期更新 Apache 及其模块,并监控日志文件以检测异常行为。
更新 Apache 服务器:
sudo yum update -y
启用并检查日志功能:
sudo a2enmod log_config
在 /etc/httpd/conf/httpd.conf
中配置日志路径:
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
通过以上步骤,你可以显著提升 CentOS 上 Apache2 服务器的安全性。确保定期审查和更新安全配置,以应对不断变化的安全威胁。