应先绑定127.0.0.1并启用protected-mode,再用UFW默认拒绝入站、仅放行本地访问6379端口,最后通过iptables限制新连接频率为3/分钟。

新手配置防火墙拦截针对 Redis 等敏感服务的本地扫描,核心不是“等扫描发生再拦”,而是提前收缩暴露面、限制连接来源、并阻断高频试探行为。本地扫描(比如用 nmap -sS 127.0.0.1 或脚本反复连 6379 端口)往往发生在攻击者已获取服务器低权限后,目标是找未加固的服务入口。以下操作简单直接、无需复杂工具,适合刚接触系统安全的新手。
只监听本地回环地址(最基础也最关键)
Redis 默认会监听所有网卡(bind 0.0.0.0),等于把钥匙放在门口。必须先改配置文件,让它只响应本机请求:
- 编辑
/etc/redis/redis.conf - 找到
# bind 127.0.0.1 ::1这行,去掉注释,并删掉::1(避免 IPv6 意外暴露),改为:
bind 127.0.0.1 - 同时确认
protected-mode yes已开启(Redis 3.2+ 默认启用,防止无密码裸奔) - 重启服务:
sudo systemctl restart redis-server
用 UFW 快速封死非本地访问(Ubuntu/Debian 推荐)
UFW 是新手友好的防火墙前端,命令少、逻辑清晰,比直接写 iptables 规则更不容易出错:
- 安装并启用:
sudo apt install ufw && sudo ufw enable - 默认拒绝所有入站:
sudo ufw default deny incoming - 仅放行本机对 6379 的访问:
sudo ufw allow from 127.0.0.1 to any port 6379 - 禁止其他任何 IP 访问该端口(包括同局域网其他机器):
sudo ufw deny 6379 - 查看规则是否生效:
sudo ufw status verbose,应看到两条明确的 6379 规则
加一层连接频率限制(防暴力试探)
即使只监听 127.0.0.1,本地恶意进程仍可能高频新建连接(如每秒几十次 ping 或 set)。UFW 本身不支持限速,但可用底层 iptables 补上(只需一条命令):
- 运行:
sudo iptables -I INPUT -p tcp --dport 6379 -m state --state NEW -m limit --limit 3/minute --limit-burst 3 -j ACCEPT - 这条规则意思是:每分钟最多允许 3 个新连接尝试到 6379 端口,超出即丢弃
- 保存规则(Ubuntu):
sudo iptables-save | sudo tee /etc/iptables/rules.v4 - 注意:它不影响已建立的连接(比如你的应用连接池),只管“新握手”
验证是否真正生效
别只信配置,动手测一测:
- 本机测试:
redis-cli ping→ 应返回PONG - 本地扫描模拟:
for i in {1..10}; do nc -zv 127.0.0.1 6379 2>/dev/null; done→ 前几次通,后续快速失败 - 检查日志:
sudo journalctl -u ufw --since "1 minute ago" | grep 6379,能看到被拒绝记录 - 关键一步:用另一台机器执行
nc -zv your_server_ip 6379→ 必须超时或拒绝,否则说明还暴露着











