#【Day 5】安全防护配置完整指南:从系统层到应用层的防御体系(2026版)
系列《中小企业云服务器7天运维实战》Day 5/7标签安全防护 | Fail2ban | WAF | 安全组 | WordPress安全 | 运维发布时间2026-06-15阅读时长20分钟适用版本CentOS 7.9 / Ubuntu 22.04 / 宝塔v8.0摘要本文从系统层、网络层、Web层、应用层四个维度详细记录服务器安全防护的完整配置过程。包含Fail2ban防暴力破解、安全组最小权限配置、宝塔WAF、WordPress安全加固等实操内容以及可执行的定期安全检查清单。一、安全威胁分析1.1 攻击类型与技术原理攻击类型技术原理目标组件检测方法暴力破解字典/撞库攻击认证接口SSH/MySQL/面板分析/var/log/secureSQL注入构造恶意SQL绕过过滤Web应用数据库Web日志分析XSS注入客户端脚本用户浏览器输入验证文件上传漏洞上传可执行脚本Web服务器文件类型限制DDoS资源耗尽型攻击带宽/连接数流量监控勒索软件漏洞入侵后加密文件系统文件文件完整性监控1.2 防御层次模型┌─────────────────────────────────────────────┐ │ 第4层应用层WordPress安全插件、代码审计 │ ├─────────────────────────────────────────────┤ │ 第3层Web层宝塔WAF、输入过滤、CSP │ ├─────────────────────────────────────────────┤ │ 第2层网络层安全组、Fail2ban、IDS │ ├─────────────────────────────────────────────┤ │ 第1层系统层系统更新、最小权限、SELinux │ └─────────────────────────────────────────────┘二、系统层安全加固2.1 SSH安全加固修改默认端口# 编辑SSH配置vi/etc/ssh/sshd_config# 修改以下参数Port22222# 改为非常用端口PermitRootLogin no# 禁止root登录需先创建普通用户PasswordAuthentication no# 禁用密码仅使用密钥可选MaxAuthTries3# 最大尝试次数ClientAliveInterval300# 5分钟无操作断开ClientAliveCountMax2# 检测次数# 重启SSHsystemctl restart sshd安全提示修改端口后保持当前SSH会话不关闭新开窗口测试新端口连接成功后再关闭原会话。创建普通用户如禁用root登录# 创建用户useradd-m-s/bin/bash adminpasswdadmin# 添加到sudo组usermod-aGwheel admin# CentOSusermod-aGsudoadmin# Ubuntu# 配置sudo免密可选谨慎使用echoadmin ALL(ALL) NOPASSWD:ALL/etc/sudoers2.2 Fail2ban配置安装# CentOSyuminstall-yepel-release yuminstall-yfail2ban fail2ban-systemd# Ubuntuaptinstall-yfail2ban配置jail.localcat/etc/fail2ban/jail.localEOF [DEFAULT] # 封禁时间1小时 bantime 3600 # 检测窗口10分钟 findtime 600 # 最大失败次数3 maxretry 3 # 忽略本地IP ignoreip 127.0.0.1/8 [sshd] enabled true port ssh,22222 filter sshd logpath /var/log/secure backend systemd [nginx-http-auth] enabled true filter nginx-http-auth port http,https logpath /www/server/nginx/logs/error.log [wordpress] enabled true filter wordpress port http,https logpath /www/wwwroot/*/wp-content/debug.log maxretry 5 EOF启动服务systemctlenablefail2ban systemctl start fail2ban# 查看状态fail2ban-client status fail2ban-client status sshd自定义WordPress过滤规则# 创建WordPress过滤规则cat/etc/fail2ban/filter.d/wordpress.confEOF [Definition] failregex ^HOST .* POST .*wp-login.php.* 200 ^HOST .* POST .*xmlrpc.php.* 200 ignoreregex EOF2.3 系统自动更新CentOS# 安装自动更新yuminstall-yyum-cron# 配置仅安装安全更新cat/etc/yum/yum-cron.confEOF [commands] update_cmd security update_messages yes download_updates yes apply_updates yes random_sleep 360 EOFsystemctlenableyum-cron systemctl start yum-cronUbuntu# 安装无人值守更新aptinstall-yunattended-upgrades# 配置仅安全更新cat/etc/apt/apt.conf.d/50unattended-upgradesEOF Unattended-Upgrade::Allowed-Origins { ${distro_id}:${distro_codename}-security; }; Unattended-Upgrade::AutoFixInterruptedDpkg true; Unattended-Upgrade::MinimalSteps true; Unattended-Upgrade::InstallOnShutdown false; Unattended-Upgrade::Remove-Unused-Dependencies true; EOFdpkg-reconfigure-plowunattended-upgrades三、网络层安全加固3.1 阿里云安全组最小权限配置生产环境规则模板方向协议端口授权对象用途优先级入方向TCP22222个人IP/32SSH100入方向TCP800.0.0.0/0HTTP100入方向TCP4430.0.0.0/0HTTPS100入方向TCP58888个人IP/32宝塔面板100入方向TCP3306127.0.0.1/32MySQL100入方向TCP21个人IP/32FTP110入方向TCP888127.0.0.1/32phpMyAdmin110入方向全部全部0.0.0.0/0拒绝200安全提示最后一条拒绝全部规则确保未明确允许的流量都被拒绝。3.2 系统防火墙iptables/firewalldfirewalld配置CentOS# 设置默认区域为drop默认拒绝firewall-cmd --set-default-zonedrop# 添加允许规则firewall-cmd--permanent--zonedrop --add-port22222/tcp firewall-cmd--permanent--zonedrop --add-port80/tcp firewall-cmd--permanent--zonedrop --add-port443/tcp firewall-cmd--permanent--zonedrop --add-rich-rulerule familyipv4 source address你的IP/32 port protocoltcp port58888 accept# 重载配置firewall-cmd--reload# 查看配置firewall-cmd--zonedrop --list-all四、Web层安全加固4.1 宝塔WAF配置安装软件商店 - 堡塔网站防火墙配置建议功能推荐设置说明CC攻击防护开启阈值100/分钟防止恶意刷流量SQL注入防护开启过滤恶意SQLXSS防护开启过滤恶意脚本上传文件检查开启阻止可执行文件上传敏感文件访问开启阻止访问.git/.env等恶意蜘蛛屏蔽开启屏蔽非搜索引擎爬虫4.2 Nginx安全头配置宝塔 - 网站 - 设置 - 配置文件添加# 安全响应头 add_header X-Frame-Options SAMEORIGIN always; add_header X-Content-Type-Options nosniff always; add_header X-XSS-Protection 1; modeblock always; add_header Referrer-Policy strict-origin-when-cross-origin always; add_header Content-Security-Policy default-src self; script-src self unsafe-inline unsafe-eval; style-src self unsafe-inline; always; # 隐藏Nginx版本号 server_tokens off; # 限制请求体大小防止超大请求攻击 client_max_body_size 10M; # 限制连接数防止单IP占用过多资源 limit_conn_zone $binary_remote_addr zoneaddr:10m; limit_conn addr 10;五、应用层安全加固WordPress5.1 安全插件配置Wordfence安装与配置后台 - 插件 - 安装 Wordfence Security激活后运行初始扫描配置防火墙为扩展保护模式关键配置项配置项推荐值说明登录安全开启限制失败尝试防火墙规则更新自动保持最新规则扫描频率每周平衡安全与性能实时IP黑名单开启自动封禁恶意IP阻止恶意爬虫开启减少资源消耗5.2 wp-config.php安全加固?php// 数据库配置略// 安全密钥使用官方生成器define(AUTH_KEY,put your unique phrase here);define(SECURE_AUTH_KEY,put your unique phrase here);// ... 其他密钥// 禁用文件编辑防止后台被入侵后修改文件define(DISALLOW_FILE_EDIT,true);// 禁用自动更新可选建议手动控制define(AUTOMATIC_UPDATER_DISABLED,true);// 限制POST大小ini_set(post_max_size,10M);ini_set(upload_max_filesize,10M);// 禁用XML-RPC如不需要add_filter(xmlrpc_enabled,__return_false);// 表前缀安装时已设置不要修改$table_prefixwp_a1b2c3_;5.3 文件权限安全设置cd/www/wwwroot/yourdomain.com# 设置文件权限文件644目录755find.-typef-execchmod644{}\;find.-typed-execchmod755{}\;# wp-config.php只读甚至root不可写chmod444wp-config.php# 上传目录可写chmod755wp-content/uploads# 设置正确用户组chown-Rwww:www.# 验证权限ls-lawp-config.phpls-lawp-content/uploads5.4 删除默认内容cd/www/wwwroot/yourdomain.com# 删除默认主题保留当前使用的rm-rfwp-content/themes/twentytwenty/rm-rfwp-content/themes/twentytwentyone/rm-rfwp-content/themes/twentytwentytwo/# 删除默认插件rm-fwp-content/plugins/hello.phprm-fwp-content/plugins/akismet/# 删除安装文件rm-fwp-admin/install.php六、定期安全检查清单6.1 自动化检查脚本创建/root/scripts/security_check.sh#!/bin/bashLOG_FILE/var/log/security_check.logDATE$(date%Y-%m-%d\%H:%M:%S)echo[$DATE] 安全检查开始 $LOG_FILE# 检查系统更新echo[$DATE] 检查系统更新...$LOG_FILEyum check-update$LOG_FILE21# 检查Fail2ban状态echo[$DATE] Fail2ban状态$LOG_FILEfail2ban-client status$LOG_FILE21# 检查最近登录失败echo[$DATE] 最近登录失败Top 10 IP$LOG_FILEgrepFailed password/var/log/secure|awk{print $11}|sort|uniq-c|sort-rn|head-10$LOG_FILE# 检查磁盘空间echo[$DATE] 磁盘空间$LOG_FILEdf-h$LOG_FILE# 检查异常进程echo[$DATE] 异常进程检查$LOG_FILEpsaux|grep-E(nc|netcat|wget|curl)|grep-vgrep$LOG_FILE21echo[$DATE] 安全检查完成 $LOG_FILE加入定时任务每周一执行chmodx /root/scripts/security_check.shecho0 9 * * 1 /root/scripts/security_check.sh|crontab-6.2 手动检查清单每日5分钟□ 网站能否正常打开HTTP 200 □ 宝塔面板无异常告警 □ 无异常登录通知邮件 □ 磁盘使用率 80%每周15分钟□ 备份任务成功完成 □ 安全日志无新增异常IP □ 系统有安全更新待安装 □ WordPress插件/主题有更新 □ Fail2ban封禁列表正常每月30分钟□ 安装系统安全补丁 □ 检查SSL证书有效期30天需续期 □ 分析访问日志查找异常请求 □ 清理无用文件和日志 □ 检查用户权限删除无用账号 □ 运行安全扫描Wordfence/Sucuri □ 检查文件完整性对比备份 □ 更新安全插件规则库七、版本与兼容性说明组件本文适用版本兼容性注意Fail2ban0.11CentOS 7默认0.9需升级firewalld0.6CentOS 7默认支持Wordfence最新版免费版功能足够宝塔面板v8.0WAF功能需安装插件Nginx1.24配置语法兼容八、常见问题排查Q1Fail2ban启动失败# 检查日志journalctl-ufail2ban# 常见原因日志路径不存在mkdir-p/var/logtouch/var/log/secure# 重新启动systemctl restart fail2banQ2安全组规则不生效# 检查安全组是否关联实例# 检查规则优先级数字小的优先# 检查是否有冲突规则# 测试端口连通性nc-zv你的IP22222Q3Wordfence导致网站变慢优化方案Wordfence - 选项 - “防火墙优化” - 选择学习模式完成后的优化调整扫描频率为每周而非每日在所有选项中禁用实时流量监控如不需要Q4修改SSH端口后密钥登录失败# 检查SELinuxgetenforce# 如为Enforcing临时关闭测试setenforce0# 检查sshd_config语法sshd-t# 检查密钥权限chmod700~/.sshchmod600~/.ssh/authorized_keys九、明日预告Day 6性能优化与加速技术要点图片优化WebP转换、懒加载、响应式图片Gzip压缩与Brotli压缩浏览器缓存策略Cache-Control阿里云CDN全站加速配置数据库查询优化与索引十、总结Day 5的核心任务是建立多层安全防御体系✅ 系统层SSH加固、Fail2ban、自动更新✅ 网络层安全组最小权限、firewalld✅ Web层宝塔WAF、Nginx安全头✅ 应用层WordPress安全插件、文件权限✅ 运维层定期检查清单、自动化脚本明天进入性能优化阶段提升网站访问速度。本文技术内容基于开源工具和标准云产品。版本信息更新于2026-06-15请以官方最新版本为准。如有技术问题欢迎在评论区交流。