在CentOS系统上为Apache2进行安全设置,可以遵循以下步骤:
1. 禁用非必要的超级用户
- 检测方法:使用
cat /etc/passwd
查看具有超级用户权限的账户。 - 备份方法:使用
cp -p /etc/passwd /etc/passwd_bak
备份。 - 加固方法:使用
passwd -l <用户名>
锁定不必要的超级账户,使用passwd -u <用户名>
解锁需要恢复的超级账户,或者将用户shell改为/sbin/nologin
。
2. 删除不必要的账户
- 删除所有不必要的默认账户,如
adm
,lp
,sync
等,以减少系统受攻击的风险。
3. 强化用户口令
- 设置复杂的口令,包含大写字母、小写字母、数字和特殊字符,并且长度大于10位。可以通过修改
/etc/login.defs
文件来强制执行这些要求。
4. 保护口令文件
- 使用
chattr +i
命令给/etc/passwd
,/etc/shadow
,/etc/group
, 和/etc/gshadow
文件加上不可更改属性,以防止未授权访问。
5. 设置root账户自动注销时限
- 通过修改
/etc/profile
文件中的TMOUT
参数,设置root账户的自动注销时限。
6. 限制su命令
- 通过编辑
/etc/pam.d/su
文件,限制只有特定组的用户才能使用su
命令切换为root。
7. 禁用ctrl+alt+delete重启命令
- 通过修改
/etc/inittab
文件,禁用ctrl+alt+delete组合键重启机器的命令。
8. 设置开机启动服务权限
- 设置
/etc/rc.d/init.d/
目录下所有文件的权限,以确保只有root用户可以操作这些服务。
9. 防止信息泄露
- 隐藏Apache的版本信息,通过修改
/etc/httpd/conf/httpd.conf
文件中的ServerTokens
和ServerSignature
指令。
10. 隐藏PHP版本信息
- 编辑
/etc/php.ini
文件,将expose_php
参数设置为off
。
11. 禁用自动索引模块
- 编辑
/etc/httpd/conf/httpd.conf
文件,搜索LoadModule
关键字,关闭不需要的模块。
12. 配置Apache使用SSL/TLS
- 安装
mod_ssl
模块:sudo yum install mod_ssl
。 - 生成SSL证书和私钥:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/server.key -out /etc/pki/tls/certs/server.crt
。 - 配置Apache使用SSL:编辑
/etc/httpd/conf.d/ssl.conf
文件,设置SSLCertificateFile
和SSLCertificateKeyFile
指向生成的证书和私钥文件。
13. 配置防火墙
- 安装
firewalld
:sudo yum install firewalld
。 - 配置防火墙规则,允许HTTP和HTTPS流量:
sudo firewall-cmd --zone=public --add-service=http --permanent
和sudo firewall-cmd --zone=public --add-service=https --permanent
。
以上步骤可以帮助你提升CentOS上Apache2服务器的安全性。请根据你的具体环境和需求调整配置。