CentOS Apache安全设置的要点主要包括以下几个方面:
-
定期更新系统和软件:
- 定期更新Apache及其模块以修补已知的安全漏洞。
- 使用
yum update httpd
命令更新Apache。
-
设置和保护SSH:
- 修改SSH默认端口,禁用root用户直接登录。
- 使用密钥对进行SSH登录,增强安全性。
-
禁用未使用的服务和端口:
- 检查并禁用服务器上所有不需要的服务和端口。
- 使用
service --status-all
和iptables -L
命令查看服务和端口状态。
-
禁用不必要的Apache模块:
- 关闭和精简不需要的Apache模块,以减少攻击面。
- 编辑
httpd.conf
文件,禁用不需要的模块。
-
使用指定的用户和组运行Apache:
- 以最小权限原则,为Apache分配专门的用户和组,避免使用系统预置账号如
nobody
。 - 编辑
httpd.conf
文件,设置User
和Group
指令。
- 以最小权限原则,为Apache分配专门的用户和组,避免使用系统预置账号如
-
防止信息泄露:
- 隐藏Apache的版本信息和操作系统信息,减少被攻击的风险。
- 修改
httpd.conf
文件,设置ServerSignature
和ServerTokens
指令为Off
或Prod
。
-
隐藏PHP版本信息:
- 修改
php.ini
文件,将expose_php
参数设置为Off
。
- 修改
-
禁用自动索引模块:
- 防止用户通过目录列表查看服务器上的文件。
-
强化用户口令:
- 设置复杂的口令,包含大写字母、小写字母、数字和特殊字符,并且长度大于10位。
- 编辑
/etc/login.defs
文件,设置PASS_MIN_LEN
和PASS_MAX_DAYS
参数。
-
保护口令文件:
- 使用
chattr
命令给/etc/passwd
,/etc/shadow
,/etc/group
, 和/etc/gshadow
文件加上不可更改属性。 - 命令示例:
chattr +i /etc/passwd
。
- 使用
-
设置root账户自动注销时限:
- 通过修改
/etc/profile
文件中的TMOUT
参数,设置root账户的自动注销时限。 - 示例:
TMOUT=300
。
- 通过修改
-
限制su命令:
- 编辑
/etc/pam.d/su
文件,限制只有特定组的用户才能使用su
命令切换到root。 - 示例:
usermod –G wheel username
。
- 编辑
-
禁用ctrl+alt+delete重启命令:
- 修改
/etc/inittab
文件,禁用ctrl+alt+delete组合键重启机器的命令。
- 修改
-
设置开机启动服务权限:
- 设置
/etc/rc.d/init.d/
目录下所有文件的权限,确保只有root用户可以操作这些服务。
- 设置
-
防止IP欺骗和DoS攻击:
- 编辑
host.conf
文件和设置资源限制,如最大进程数和内存使用量。 - 示例:
tcp_max_syn_backlog
,tcp_syncookies
,tcp_synack_retries
和tcp_syn_retries
。
- 编辑
-
启用HTTPS:
- 使用SSL/TLS证书加密通信,配置SSL模块并设置VirtualHost使用SSL。
-
限制HTTP方法和POST数据大小:
- 通过
Limit
或LimitExcept
指令限制不必要的HTTP方法,如PUT, DELETE等。 - 设置
LimitRequestBody
指令限制POST请求的数据大小。
- 通过
-
配置访问控制和认证:
- 使用
.htaccess
文件或全局配置中的AuthType
,AuthName
,AuthUserFile
, 和Require
指令实施认证。
- 使用
-
错误页面定制:
- 重定向HTTP错误页面,避免泄露服务器信息。
- 示例:
ErrorDocument 404 /errors/404.html
。
-
日志监控和审计:
- 确保访问日志和错误日志记录完整,并定期审查日志以发现异常行为。
-
禁用服务器签名:
- 在配置文件中设置
ServerSignature Off
和ServerTokens Prod
以隐藏服务器的版本信息。
- 在配置文件中设置
-
优化文件和目录权限:
- 确保Apache运行用户仅拥有必要的文件和目录权限,避免使用高权限用户运行Apache服务。
-
防火墙规则:
- 配置操作系统或网络防火墙,仅允许必要的端口开放。
-
禁用或限制使用.htaccess文件:
- 在全局配置中设置
AllowOverride None
,以提高性能并减少潜在的安全风险。
- 在全局配置中设置
-
使用ModSecurity或其他WAF:
- 部署Web应用防火墙模块来进一步增强安全防护。
通过这些安全配置方法,可以显著提高CentOS上Apache Web服务器的安全性。