Linux服务器端口安全核心在于服务配置而非端口号本身:22端口必须保留但需加固(密钥认证、禁root、IP限制);6379等高危端口若绑定0.0.0.0且无密码,风险远超关机。

Linux服务器上开放的端口不是“开着就危险”,而是“服务没管好才危险”。真正要做的,不是盲目封端口,而是先看清谁在用、为什么开、能不能缩范围——22端口必须留,但得加固;6379端口若绑定了0.0.0.0且没密码,比直接关机还危险。
一、哪些端口最常被盯上?风险在哪?
攻击者扫描时有固定套路,以下端口是高频目标,风险本质来自服务配置而非端口号本身:
- 21/tcp(FTP):明文传账号密码,匿名登录开启后可上传Webshell;vsftpd旧版本存在RCE漏洞(如CVE-2011-2523)
- 23/tcp(Telnet):所有通信裸奔,无加密无认证,已淘汰,必须停用
- 139/445(SMB):“永恒之蓝”类漏洞高发区,Windows混合环境尤其敏感,非必要不启
- 3306/5432(MySQL/PostgreSQL):默认监听0.0.0.0 + 弱密码 = 数据库裸奔,拖库秒完成
- 6379/27017(Redis/MongoDB):未设密码+绑定公网=黑客可写入SSH公钥或清空全部数据
- 3389(RDP):虽多见于Windows,但Linux上若运行xrdp等服务,同样面临暴力破解风险
二、动手前必做三件事:别关错、别误伤、别白忙
直接执行systemctl stop xxx可能让网站挂掉、数据库连不上。先确认再操作:
- 查端口谁在用:
ss -tulpn | grep ':3306'看进程名和PID,再用ps -p PID -o comm=确认是不是 mysqld - 看服务是否真对外:用
curl -I http://127.0.0.1:6379或nc -zv 127.0.0.1 6379测试本地能否通,再从外网nc -zv your-ip 6379判断是否暴露 - 检查是否被容器占用:Docker映射的
-p 3306:3306不会出现在宿主机服务列表里,需查docker ps和docker-compose.yml
三、安全关闭的三种方式(按推荐顺序)
优先级从高到低:改配置 → 停服务 → 防火墙拦。防火墙只是兜底,不能替代服务加固:
-
改服务监听地址:把
0.0.0.0改成127.0.0.1最彻底。例如 Redis 编辑/etc/redis/redis.conf,设bind 127.0.0.1;MySQL 修改my.cnf中bind-address = 127.0.0.1,然后systemctl restart redis mysql -
停用非必要服务:Telnet 直接卸载:
sudo apt remove inetutils-telnetd(Ubuntu)或sudo yum remove telnet-server(CentOS);FTP 若不用,执行systemctl stop vsftpd && systemctl disable vsftpd -
防火墙精准拦截:Ubuntu用ufw:
sudo ufw deny 21/tcp;CentOS用firewalld:sudo firewall-cmd --permanent --remove-port=21/tcp && sudo firewall-cmd --reload;注意云服务器务必同步配置安全组
四、22端口不能关,但可以更安全
SSH是管理命脉,关了就失联。加固比关闭重要得多:
- 禁用密码登录,只用密钥:
PubkeyAuthentication yes+PasswordAuthentication no,写入/etc/ssh/sshd_config - 禁止root远程登录:
PermitRootLogin no - 限制登录IP(如仅允许运维网段):
AllowUsers admin@192.168.10.* - 改非标端口(可选):
Port 2222,改完记得更新防火墙放行规则 - 装fail2ban防爆破:
sudo apt install fail2ban,启用jail-sshd并设maxretry = 3


















