宝塔 Redis 安全配置 + 可用性完整检查步骤
硬件 / 网络 / 系统
一一、阿里云 ECS 本机基础检查
1. ECS 控制台检查(阿里云网页后台)
- 实例状态:运行中,CPU / 内存 / 磁盘使用率是否长期飙高(负载高会导致若依接口超时)
- 磁盘:云盘剩余空间,若根分区满会直接无法写入日志、打包项目
- 安全组(重中之重)
- 只放行必要端口:80 (http)、443 (https)、22 (SSH)、3306 (MySQL 建议只内网访问)、宝塔端口默认 8888、Redis 6379 内网
- 绝对不要:0.0.0.0/0 开放 3306、6379、8888 全公网
- 宝塔面板端口建议改成非 8888,避免批量扫描爆破
- 带宽:看出入带宽是否跑满,若依图片、文件上传下载耗带宽
2. SSH 登录服务器命令行核查(Xshell/FinallShell)
1.查询等待 CPU 去处理的任务队列长度
输入
uptime
一般显示都是这样
重点看load average后面三个数字:0.26 0.26 0.19
- 左升右降 = 压力回落,左降右升 = 压力加重;
具体的分析和延伸知识点可以参考这个:
阿里云服务器负载状态查询-uptime查询出load average的解释(查询等待 CPU 去处理的任务队列长度)-CSDN博客
2.查询top
top 是 Linux 系统实时资源监视器,相当于服务器的「任务管理器」。可以实时查看整机CPU、内存、IO状态,以及每一个进程的资源占用,是排查若依Java服务卡顿、CPU飙高、内存溢出的核心命令。输入进去后可查看,再按q退出。
具体的分析和延伸知识点可以参考这个:
Linux 系统实时资源监视器 top 命令详解(进程级实时资源监控)-CSDN博客
3.df -h
df -h 用于查看服务器所有磁盘分区使用率、剩余空间、挂载位置。磁盘满是生产环境最常见宕机原因:项目无法写入日志、数据库无法写入、文件上传失败、服务直接卡死。
具体的分析和延伸知识点可以参考这个:
阿里云服务器-命令3- df -h 和du -sh 命令详解(磁盘空间巡检)-CSDN博客
4.查询top
5.查询top
6.查询top
7.查询top
8.查询top
9.查询top
10.查询top
# 一. 系统负载 uptime top # 二. 磁盘占用 df -h # 三. 内存 free -h # 四. 监听端口(看有没有异常端口对外开放) netstat -tulnp ss -tulnp # 五. 登录日志,排查是否被暴力破解 last /var/log/secure 或者 /var/log/auth.log # 六. 系统版本、防火墙状态 cat /etc/redhat-release systemctl status firewalld二、宝塔面板环境完整配置核查(核心)
打开http://服务器IP:宝塔端口登录面板
(一)软件环境版本 & 可用性检查
1. 已安装环境(若依 Java 版必备)
- Nginx:用于反向代理、静态资源、域名绑定
- MySQL 5.7 / 8.0(看你项目用哪个)
- Redis(必须,若依缓存、登录会话依赖)
- JDK 1.8(强烈推荐,兼容性最好)
- Maven(打包用)
- PM2(前端 vue 打包后部署)
逐个点进去验证:
- MySQL:设置 root 强密码,删除空账号,不允许公网访问
- Redis:设置密码,关闭外网访问,只 127.0.0.1 / 内网 IP 访问
- JDK:
java -version面板终端执行确认版本
2. 网站站点配置检查(若依前后端分离)
后端 Java 服务两种部署方式核对
宝塔 Java 项目管理器部署(推荐)
- 启动命令、JVM 参数是否合理:
-Xms512m -Xmx1024m - 日志输出路径、是否自动滚动
- 开机自启是否勾选
- 测试重启:停止→启动→查看日志有无报错
- 启动命令、JVM 参数是否合理:
Jar 包用 shell 后台启动 nohup进入项目目录看启动脚本,检查是否宕机自重启
前端 Vue 站点(Nginx 站点)
- 根目录指向 dist 打包文件夹
- 伪静态选择
Vue history模式规则 - 反向代理配置:
/prod-api/转发到后端 Java 端口(如 8080) - SSL 证书是否配置、强制 HTTPS 跳转
3. 数据库专项检查
- 新建独立数据库给若依,不要用 root 账号直接连接项目
- 创建专用数据库用户,仅授权对应库,限制访问 IP
- 备份计划:开启每日自动数据库备份,保留 7-30 天
- 磁盘备份目录不要放在系统盘,建议挂载数据盘
4. 文件与 FTP(你用到 Pure-Ftpd)
- FTP 账号仅给必要人员,禁止 root 登录 FTP
- 目录权限:网站目录 755,文件 644,禁止 777 高危权限
- 检查是否有陌生上传目录、可执行脚本
(二)宝塔基础设置核查
- 面板账号密码:高强度密码,开启两步验证
- 面板端口修改:安全→面板设置,改掉默认 8888
- 绑定登录 IP:只允许你的办公 IP 登录面板(阿里云安全组再叠加一层)
- 禁用面板外网数据库管理
- 定时任务:检查有无陌生定时脚本(挖矿、木马常用)
三、若依项目本身配置与运行校验(上传代码前必看)
1. 配置文件敏感信息检查(上传前自查)
application.yml / application-dev.yml / application-prod.yml
- ✅ 生产环境关闭 swagger、druid 监控页面
- ✅ 数据库地址、账号密码、Redis 密码不硬编码(可放宝塔环境变量)
- ✅ 密钥
ruoyi.token.secret不要用默认值 - ✅ 文件上传路径配置为服务器合法路径,限制上传后缀(禁止 php/sh/jsp)
- ✅ 关闭 SQL 打印日志,避免泄露表结构
2. 打包 & 部署校验
- 后端:
mvn clean package -Dmaven.test.skip=true正常打出 jar - 前端:
npm run build:prod正常生成 dist - 上传后权限:jar 包不要 777,nginx 静态资源权限正常
- 启动后访问测试:
- 后端接口文档地址能否正常打开(生产建议关闭)
- 前端登录、菜单、文件上传、导出全部测一遍
- 日志查看:有没有频繁报错、数据库连接池耗尽、Redis 连接失败
3. 上传代码注意避坑
- 不要上传
.git、node_modules、本地配置文件、.env 本地密钥文件 - 前后端分开上传,前端丢 Nginx 站点,后端用 Java 项目管理器部署
- 覆盖前先备份旧 jar 包、旧 dist 目录,回滚方案准备好
四、宝塔 + 阿里云双层安全加固(最重要)
第一层:阿里云 ECS 安全组
只开放最小必要端口示例:
- 22 SSH(仅限自己 IP)
- 80、443 全站访问
- 自定义宝塔端口(仅限自己 IP)3306、6379、8080 后端端口全部不公开放通,内网 / Nginx 转发访问
第二层:宝塔防火墙(软件防火墙)
- 开启防火墙,只放行上面端口
- 拦截高频异常访问、单 IP 大量请求
- 封禁海外 IP(国内业务直接封禁)
第三层:宝塔安全插件一键加固
- 安装宝塔防火墙、网站防篡改、恶意文件扫描
- 定期全盘扫描木马、webshell
- Nginx 开启:防盗链、禁止目录浏览、限制请求频率
- MySQL:开启慢日志,禁止远程 root 登录
- Redis:设密码 + 仅本地访问,禁用危险命令(keys、flushall)
第四层:系统账号与入侵防范
- 服务器 SSH 禁用密码登录,改用密钥登录
- 修改 SSH 默认 22 端口(可选)
- 宝塔定期更新系统补丁、宝塔面板本身、所有环境软件
- 关闭服务器不必要开机自启服务
五、极简快速自检执行步骤(你现在立刻能做)
- 阿里云后台:看 ECS 负载→核对安全组端口
- SSH 登录服务器:df -h 看磁盘、top 看负载
- 登录宝塔:
- 检查 MySQL/Redis 密码与外网访问权限
- 查看现有网站、Java 项目是否正常运行
- 查看定时任务、防火墙规则
- 检查若依配置文件敏感内容,清理本地多余文件再上传
- 上传部署后启动,查看运行日志,测试全功能
- 宝塔执行一次病毒木马全盘扫描
六、常见坑提前规避
- Redis 无密码公网暴露 → 极易被挖矿植入
- MySQL 3306 全公网开放 → 数据库被拖库删库
- 宝塔 8888 默认端口 + 弱密码 → 面板被入侵篡改网站
- 若依生产开 swagger、默认密钥 → 接口被遍历攻击
- 磁盘占满导致项目宕机、数据库锁死
一、先做安全加固(必须操作)
步骤 1:进入 Redis 设置页面
- 保持当前页面:左侧菜单【数据库】→顶部标签【Redis】
- 点击页面上方Redis 8.0.5 右边的绿色播放按钮下拉框→ 选择设置
步骤 2:设置访问密码(强密码保存好)
- 在配置页找到Requirepass 访问密码,输入复杂度高的密码,复制保存下来(后面登录要用)
- 找到Bind 绑定 IP 地址,把默认
0.0.0.0修改为127.0.0.1
作用:只允许服务器本地程序访问 Redis,彻底杜绝外网扫描爆破 Redis 漏洞
步骤 3:保存配置并重启 Redis
- 拉到页面底部点击保存
- 回到 Redis 首页,点版本右侧下拉箭头 →重启,等待服务重启完成、状态显示正常
二、终端命令行检查 Redis 是否可用(验证最终是否生效)
1. 登录服务器终端(宝塔左侧【终端】工具)
2. 执行连接测试命令
把命令里密码替换成刚才设置的真实密码:
redis-cli -a 密码验证成功标志:
- 直接进入
127.0.0.1:6379>命令行提示符,无报错 - 输入
ping,返回PONG代表 Redis 服务完全正常
127.0.0.1:6379> ping PONG补充两个校验命令(可选)
- 查看当前密码是否生效:
config get requirepass - 查看绑定地址是否为本地:
config get bind
三、额外兜底检查(避坑)
- 端口放行:宝塔【安全】→防火墙,确认6379 端口没有放行,因为已经绑定 127.0.0.1,放不放行外网都无法访问
- 若依项目配置同步: Java 若依项目
application.yml里 Redis 密码、host 要改成127.0.0.1和新密码,否则项目连不上缓存 - 测试外网连接(验证封禁效果):本地电脑用 Redis 工具填服务器公网 IP+6379,会直接连接超时,说明外网拦截生效
四、配置文件安全项详解
1. 已正确配置的安全加固
- 网络绑定 IP
bind 127.0.0.1只允许本地回环地址访问,彻底禁止公网 / 其他服务器直连 Redis,这一步已经做到位。
- 保护模式开启
protected-mode yes在无密码、多网卡绑定场景下二次拦截外网访问,双重保险。
- 后台守护进程运行
daemonize yesRedis 后台常驻运行,宝塔管理正常。
- 端口默认 6379
port 6379只要宝塔防火墙不放开 6379 端口,外网无法探测。
2. 必须补充修改的核心项(当前缺失)
(1)设置访问密码(最重要)
找到这一行:
# requirepass foobared取消注释,替换为高强度密码(字母 + 数字 + 符号,长度≥16 位),示例:
requirepass MiaoMiao@Redis2025#Server警告:Redis 跑在高性能服务器上,暴力破解速度极快,弱密码等于没加。
(2)高危命令重命名(生产环境推荐)
在requirepass下方添加,防止入侵后通过 CONFIG/FLUSHALL 删库、改配置:
# 重命名CONFIG为随机字符串,彻底隐藏 rename-command CONFIG "4re986qj9k9pb8qMiao4ghvui4vy8975pnq83" # 直接禁用清空所有库命令 rename-command FLUSHALL "" # 直接禁用清空单个库命令 rename-command FLUSHDB ""(3)内存策略优化(若依项目必改)
当前默认:
# maxmemory <bytes> # maxmemory-policy noeviction修改为限制内存 + 淘汰策略,避免 Redis 占满服务器内存宕机:
# 限制最大使用内存,根据服务器配置调整,2G机器设1g,4G设2g maxmemory 1gb # 优先淘汰带过期时间的LRU最少使用key(最适合缓存业务) maxmemory-policy volatile-lru(4)AOF 持久化开启(数据防丢失)
当前appendonly no,断电会丢失最近写入数据,改为:
appendonly yes appendfsync everysecRDB 快照保留即可,AOF 做增量持久化,双保险。
二、修改后生效操作步骤(宝塔面板)
- 保存这份
redis.conf文件 - 回到宝塔 → 数据库 → Redis → 点击
Redis 8.0.5下拉箭头 →重启 - 等待状态变为【正常】
三、逐项校验检查命令(宝塔终端执行)
1. 带密码登录验证
redis-cli -a 你设置的密码进入127.0.0.1:6379>提示符代表连通正常。
2. 检查绑定地址是否为本地
CONFIG GET bind # 返回结果应为 127.0.0.13. 检查密码是否生效
CONFIG GET requirepass # 返回你设置的密码串4. 连通性健康检查
PING # 返回 PONG 代表服务运行正常5. 测试高危命令是否被禁用 / 改名
redis
# 直接输入CONFIG会报错,证明重命名生效 CONFIG GET bind6. 外网阻断验证(可选)
在自己本地电脑 Redis 客户端,填写服务器公网 IP:6379,直接连接超时,代表外网访问彻底拦截成功。
四、若依项目 yml 配套修改(否则项目连不上 Redis)
spring: redis: host: 127.0.0.1 port: 6379 password: MiaoMiao@Redis2025#Server # 和配置文件一致 database: 0五、
最终安全总结清单(可直接归档)
✅ bind 绑定 127.0.0.1,禁止外网 TCP 访问
✅ protected-mode 保护模式开启
✅ 设置强访问密码 requirepass
✅ FLUSHALL/FLUSHDB 禁用、CONFIG 命令重命名
✅ 内存上限限制 + 合理淘汰策略
✅ AOF 持久化开启,防止数据丢失
✅ 防火墙关闭 6379 端口外网放行
✅ 重启服务后 cli 密码登录验证通过