温馨提示×

centos lamp如何防范网络攻击

小樊
46
2025-10-17 19:23:14
栏目: 网络安全

一、系统级基础安全强化

  • 账户与权限管理:禁用不必要的系统账户(如admlpsync等默认账户),删除无用账户;设置强密码策略(包含大小写字母、数字、特殊字符,长度≥10位),并通过/etc/login.defs限制密码有效期(如最短90天)。锁定不必要的超级用户账户,避免权限滥用。
  • SELinux配置:启用SELinux(setenforce 1),并修改/etc/selinux/configSELINUX设为enforcing模式,通过强制访问控制(MAC)限制进程权限,防止非法访问系统资源。
  • 系统更新:定期使用yum update命令更新操作系统及所有软件包,及时修补已知安全漏洞,降低被攻击风险。

二、网络层防护:防火墙精细化配置

  • 防火墙工具选择:使用firewalld(CentOS默认)或iptables配置防火墙,优先选择firewalldzone机制管理规则。
  • 端口与服务控制:仅开放必要端口(HTTP 80、HTTPS 443、SSH 22),关闭其他无关端口(如FTP 21、Telnet 23);通过firewall-cmd --set-default-zone=drop设置默认拒绝策略,仅允许明确允许的流量。
  • IP白名单与精细规则:使用rich规则限制特定IP访问敏感服务(如SSH),例如firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' port port=22 protocol=tcp accept";将服务器接口绑定到public zone,隔离内外网流量。

三、Web服务器(Apache)安全配置

  • 基础安全设置:修改Apache默认配置文件(/etc/httpd/conf/httpd.conf),关闭ServerTokens(设为Prod,隐藏服务器版本)、ServerSignature(设为Off,禁用错误页面显示服务器信息)、TraceEnable(设为Off,禁用TRACE/TRACK方法);使用专用用户(如apache)和用户组运行Apache,设置DocumentRoot目录权限为750(所有者可读写执行,组可读执行,其他用户无权限)。
  • 模块与功能限制:禁用不必要的Apache模块(如cgiautoindex,通过a2dismod或注释httpd.conf中的模块行),减少攻击面;限制客户端连接数(MaxClients设为服务器内存能承受的最大值,如150),防止资源耗尽攻击。
  • Web应用防火墙(WAF):安装并配置mod_security模块(sudo yum install mod_security),启用OWASP核心规则集(CRS),拦截SQL注入、跨站脚本攻击(XSS)、文件包含等常见Web攻击;通过SecRuleEngine On开启规则引擎,定期更新规则库以应对新威胁。

四、数据库(MySQL/MariaDB)安全加固

  • 账户与访问控制:运行mysql_secure_installation脚本,移除匿名用户、禁止远程root登录(UPDATE mysql.user SET Host='localhost' WHERE User='root'; FLUSH PRIVILEGES;);创建专用数据库用户(如webapp),仅授予必要权限(如SELECTINSERTUPDATE),避免使用root账户连接数据库。
  • 数据安全与审计:为root用户设置强密码(包含特殊字符,长度≥12位),定期更换密码(每90天);启用MySQL日志(log_error = /var/log/mysql/error.logslow_query_log = 1long_query_time = 2),记录错误和慢查询,便于排查异常;对敏感数据(如用户密码、银行卡信息)进行加密存储(如使用AES加密)。

五、PHP安全配置优化

  • php.ini关键设置:关闭expose_php(设为Off,隐藏PHP版本信息)、display_errors(设为Off,避免在错误页面泄露敏感信息),将错误日志记录到/var/log/php_errors.log;禁用危险函数(如execsystemshell_exec,通过disable_functions = exec,system,shell_exec),防止命令注入;限制文件上传大小(upload_max_filesize = 2Mpost_max_size = 8M),避免大文件攻击。
  • 代码与扩展安全:删除不必要的PHP扩展(如php_ldapphp_oci8,通过yum remove php-ldap),减少漏洞点;使用预处理语句(PDO或MySQLi)防止SQL注入,例如$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?"); $stmt->execute([$email]);;定期更新PHP版本(如从7.4升级到8.2),修复已知安全漏洞。

六、SSH与远程访问安全

  • SSH加固:修改/etc/ssh/sshd_config,禁用root远程登录(PermitRootLogin no)、更改默认端口(如Port 2222)、启用密钥认证(PasswordAuthentication no);限制登录IP(AllowUsers user@192.168.1.100),仅允许信任IP访问;设置登录失败次数限制(MaxAuthTries 3),防止暴力破解。
  • 密钥管理:为用户生成SSH密钥对(ssh-keygen -t rsa -b 4096),将公钥(id_rsa.pub)添加到服务器~/.ssh/authorized_keys文件,禁用密码认证,提升远程访问安全性。

七、安全监控与应急响应

  • 日志监控与审计:开启auditd服务(sudo yum install auditdsudo systemctl enable --now auditd),记录系统调用、文件访问、用户登录等关键活动;使用fail2ban工具监控日志(如/var/log/secure),自动封禁频繁失败的IP地址(如SSH登录失败超过3次,封禁1小时);定期检查日志(last -i查看登录记录,grep "Failed password" /var/log/secure查看失败登录),及时发现异常行为。
  • 应急响应流程:定期备份重要数据(系统配置、数据库、网站文件),使用tar -czvf backup_$(date +%F).tar.gz /etc /var/www/html /var/lib/mysql命令备份到外部存储;制定事件响应计划(如发现入侵后,立即隔离服务器、分析日志、恢复数据、修补漏洞),确保快速应对安全事件。

0