温馨提示×

lamp在centos上的安全漏洞防范

小樊
46
2025-09-20 07:54:07
栏目: 网络安全

账户与权限管理

  • 禁用非必要超级用户与删除默认账户:通过查看/etc/passwd文件检测并锁定不必要的超级账户(如未使用的管理员账户);删除admlpsync等默认账户,减少系统受攻击的风险。
  • 强化用户口令策略:设置复杂口令(包含大写字母、小写字母、数字和特殊字符,长度≥10位);通过修改/etc/login.defs文件强制执行口令复杂度要求,启用口令有效期(如每90天更换一次)。
  • 最小化权限分配:创建普通用户并分配必要的权限,避免直接使用root用户登录;通过visudo编辑/etc/sudoers文件,设置sudo超时(如15分钟),限制sudo权限的使用范围。

系统与软件更新

  • 定期更新系统与软件包:使用sudo yum update -y命令定期更新操作系统内核、Apache、MySQL、PHP等软件包,修复已知安全漏洞(如Apache的HTTP请求走私漏洞、MySQL的SQL注入漏洞)。
  • 启用自动安全更新:通过yum-cron工具配置自动下载并安装安全更新,确保系统及时修补高危漏洞(如CentOS官方发布的安全公告)。

防火墙与端口管理

  • 配置防火墙规则:使用firewalld(推荐)或iptables限制对服务器的访问,仅开放必要端口(如HTTP 80、HTTPS 443、SSH 22);通过firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="攻击IP" drop'命令屏蔽恶意IP地址。
  • 关闭不必要服务与端口:通过systemctl disable命令停止未使用的服务(如FTP、Telnet、Samba),减少攻击面(如Telnet的明文传输漏洞)。

SSH安全加固

  • 禁用root远程登录:修改/etc/ssh/sshd_config文件,将PermitRootLogin设置为no,禁止root用户通过SSH直接登录,降低暴力破解风险。
  • 使用密钥认证替代密码认证:生成SSH密钥对(ssh-keygen -t rsa -b 4096),将公钥复制到服务器(ssh-copy-id username@server_ip),禁用密码登录(PasswordAuthentication no),防止密码泄露导致的账户沦陷。
  • 更改SSH默认端口:将SSH默认端口22改为非标准端口(如2222),减少自动化扫描工具的探测概率(如Nmap的默认端口扫描)。
  • 配置登录失败限制:通过/etc/ssh/sshd_config文件设置MaxAuthTries 3(最多尝试3次)和LoginGraceTime 2m(登录时间为2分钟),防止暴力破解。

Apache Web服务器安全配置

  • 禁用不必要模块:编辑/etc/httpd/conf/httpd.conf文件,注释掉不需要的模块(如mod_imapmod_ldap),减少潜在的安全风险(如模块漏洞导致的远程代码执行)。
  • 设置正确文档根目录权限:将Web应用目录(如/var/www/html)的所有者设为普通用户(如apache:apache),权限设为750(所有者可读写执行,组用户可读执行,其他用户无权限),防止未授权访问。
  • 限制客户端连接与请求:通过MaxClients参数限制并发连接数(如150),通过MaxRequestsPerChild参数限制每个子进程处理的请求数(如1000),防止资源耗尽攻击(如DDoS)。
  • 禁用目录列表:在Apache配置中添加Options -Indexes,禁止目录自动列出,避免敏感文件(如配置文件、备份文件)被直接查看。

MySQL/MariaDB数据库安全配置

  • 设置强密码策略:运行mysql_secure_installation脚本,为root用户设置强密码(包含大小写字母、数字和特殊字符);定期更换密码(如每3个月一次)。
  • 移除匿名用户与远程root登录:通过mysql_secure_installation脚本删除匿名用户(DELETE FROM mysql.user WHERE User='';),禁止root用户从远程主机登录(REVOKE ALL PRIVILEGES ON *.* FROM 'root'@'%';),仅允许本地登录(GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost';)。
  • 定期备份数据库:使用mysqldump命令定期备份数据库(如mysqldump -u root -p dbname > dbname_backup.sql),并将备份文件存储在安全位置(如异地服务器、云存储),防止数据丢失或被篡改。

PHP配置安全

  • 禁用不必要PHP模块:通过yum remove命令移除不需要的PHP模块(如php-xmlrpcphp-gmp),减少攻击面(如XML-RPC漏洞导致的远程代码执行)。
  • 关闭危险函数:编辑php.ini文件,禁用eval()exec()system()等危险函数(disable_functions = eval,exec,system,passthru,shell_exec),防止恶意代码执行。
  • 隐藏错误信息:将display_errors设置为Offdisplay_errors = Off),避免在错误页面泄露敏感信息(如数据库用户名、密码、路径);将错误日志记录到指定文件(error_log = /var/log/php_errors.log),便于后续审计。
  • 限制文件上传大小:通过upload_max_filesize(如2M)和post_max_size(如8M)参数限制上传文件的大小,防止上传恶意脚本(如PHP木马)。

SELinux与文件系统安全

  • 启用SELinux:编辑/etc/selinux/config文件,将SELINUX设置为enforcingSELINUX=enforcing),启用强制访问控制(MAC),限制进程的权限(如Apache只能访问/var/www/html目录)。
  • 配置SELinux策略:使用semanage命令调整SELinux策略(如允许Apache访问自定义目录:semanage fcontext -a -t httpd_sys_content_t "/data/web(/.*)?";重新标记文件:restorecon -Rv /data/web)。
  • 最小化安装原则:仅安装必要的软件包(如yum groupinstall "Minimal Install"),避免安装不必要的组件(如图形界面、游戏),减少系统暴露的漏洞。

日志监控与应急响应

  • 开启日志监控:使用rsyslogsystemd-journald收集系统日志(/var/log/messages)、Apache访问日志(/var/log/httpd/access_log)、错误日志(/var/log/httpd/error_log)、MySQL日志(/var/log/mariadb/mariadb.log),定期检查日志中的异常活动(如大量404错误、暴力破解尝试)。
  • 检查入侵痕迹:使用last命令查看系统登录日志(last -f /var/log/wtmp),使用lastb命令查看失败登录日志(lastb -f /var/log/btmp),识别可疑IP地址(如短时间内多次登录失败的IP)并及时封禁。
  • 应急响应流程:若发现入侵迹象(如异常进程、文件被篡改),立即隔离受影响的服务器(如断开网络连接),备份重要数据(如数据库、配置文件),分析入侵原因(如通过ps aux查看异常进程、find / -mtime -1查找最近修改的文件),修复漏洞(如更新软件包、修改密码),恢复系统运行(如重启服务、恢复备份)。

0