等保扫描报告列了三条:6379、3389、8080 对外开放,要求一周内整改。运维第一反应是上防火墙堵,结果本机进程还在跑,换个端口照样通。

关闭端口有三层意思:停掉监听进程、改监听地址、在防火墙上丢弃。三件事效果不同,只做最后一层,漏洞还在机器上。

先查是谁在听

Windows 上 netstat -ano | findstr :6379 拿到 PID,再 tasklist /fi 查进程名。Linux 用 ss -lntp,输出里直接带进程名。云主机的安全组是另一道门,先看入方向规则,很多时候端口是安全组放开的,机器上并没有服务。

停服务,顺手禁自启

Windows:sc stop 服务名,确认停稳了再 sc config 服务名 start= disabled,等号后面必须有空格。Linux:systemctl stop redis,再 systemctl disable redis。容器环境要改 compose 里的端口映射,只停容器,重启以后又回来了。

防火墙规则怎么写

  • Windows:netsh advfirewall firewall add rule name=deny6379 dir=in action=block protocol=TCP localport=6379
  • firewalld:firewall-cmd --remove-port=6379/tcp --permanent,然后 reload
  • ufw:ufw deny 6379/tcp
  • iptables:iptables -A INPUT -p tcp --dport 6379 -j DROP,规则要持久化

Redis 和远程桌面两个高频项

6379 暴露在公网又没密码,基本等于把服务器交出去,挖矿脚本几分钟就能进来。至少要 bind 127.0.0.1、设 requirepass、protected-mode yes。3389 关之前先确认有带外管理或者 VNC,远程桌面一断就进不去机器,只能重装。

验证必须从外网做

本机 telnet 127.0.0.1 通不通没有意义。换一台外网机器 nc -zv 公网 IP 6379,或者用在线端口检测。改完安全组和防火墙都要复查,规则顺序也可能让 deny 失效。

关端口是结果,不是目的。该问的是这个服务为什么对公网监听,能收到内网就别放公网。