100个网络危险端口整理说明:
端口号:网络服务的逻辑入口。服务/协议:通常使用该端口的应用程序或协议。风险描述:该端口开放可能带来的主要安全威胁。封禁必要性:在绝大多数情况下,除非业务明确需要,否则应立即封禁这些端口。一、经典后门与远程控制类这些端口常被木马、后门和远程管理软件利用。
端口
服务/协议
风险描述
危险等级
22
SSH
弱密码、暴力破解的重灾区
⚠️ 高危
23
Telnet
明文传输,极易被嗅探密码
🔴 极危
135
RPC
Windows RPC服务,常被用于漏洞利用
⚠️ 高危
139, 445
SMB
永恒之蓝等重大漏洞的源头,用于共享和AD
🔴 极危
1433, 1434
MSSQL
常被暴力破解,提权漏洞多发
⚠️ 高危
3389
RDP
远程桌面,暴力破解主要目标
🔴 极危
4899
Radmin
远程控制软件,配置不当或版本过旧有风险
⚠️ 高危
5631, 5632
PCAnywhere
老牌远程控制,存在已知漏洞
⚠️ 高危
5900+
VNC
图形化远程控制,弱认证问题普遍
⚠️ 高危
6129
DameWare
远程管理工具,默认端口易被扫描利用
⚠️ 高危
二、Web服务与漏洞高发类Web应用的入口,也是攻击的主要面。
端口
服务/协议
风险描述
危险等级
21
FTP
明文传输密码和数据,漏洞多
🔴 极危
80
HTTP
明文传输,可被劫持、嗅探
⚠️ 中危
443
HTTPS
加密传输,但Web应用本身的漏洞(如SQLi、XSS)仍存在
⚠️ 中危
8000, 8080, 8443
HTTP/HTTPS Alt
常见的Web应用替代端口,风险同80/443
⚠️ 中危
7001, 7002
WebLogic
Java应用服务器,历史漏洞多且危害大
🔴 极危
9090
WebSM
WebSphere管理等,存在未授权访问风险
⚠️ 高危
三、文件传输与共享类易导致数据泄露和恶意软件传播。
端口
服务/协议
风险描述
危险等级
20
FTP Data
FTP的数据连接端口
🔴 极危
69
TFTP
简单文件传输,无认证,可任意上传下载
🔴 极危
2049
NFS
网络文件系统,配置不当可导致未授权访问
⚠️ 高危
873
Rsync
配置不当可导致未授权访问和文件泄露
⚠️ 高危
四、邮件服务类钓鱼、垃圾邮件和漏洞利用的通道。
端口
服务/协议
风险描述
危险等级
25
SMTP
发送邮件,常被用来转发垃圾邮件
⚠️ 中危
110
POP3
收取邮件,明文传输密码和数据
⚠️ 高危
143
IMAP
管理邮件,明文传输
⚠️ 高危
993, 995
IMAPS/POP3S
加密版本,相对安全,但服务本身可能有漏洞
⚠️ 低危
五、数据库服务类承载核心数据,是攻击者的终极目标之一。
端口
服务/协议
风险描述
危险等级
1521
Oracle DB
强大的数据库,配置复杂,漏洞影响大
🔴 极危
3306
MySQL
流行数据库,常被暴力破解
🔴 极危
5432
PostgreSQL
功能强大的开源数据库,也有安全风险
⚠️ 高危
27017, 27018
MongoDB
曾因默认无认证导致大量数据泄露
🔴 极危
6379
Redis
默认无认证,可被轻易获取权限
🔴 极危
六、网络基础服务与易受攻击类本身是正常服务,但常被错误配置或利用。
端口
服务/协议
风险描述
危险等级
53
DNS
可被用于DNS隧道、DDoS放大攻击
⚠️ 中危
161, 162
SNMP
默认团体名public/private,泄露网络设备信息
⚠️ 高危
389, 636
LDAP/LDAPS
目录服务,信息泄露和注入漏洞
⚠️ 高危
111
RPC
远程过程调用,可被用于信息收集和攻击
⚠️ 高危
512, 513, 514
rexec, rlogin, rsh
明文传输的远程执行服务
🔴 极危
七、木马与后门常用端口(部分列表)这些端口历史上被特定木马广泛使用,是安全扫描的重点对象。
端口
通常关联的恶意软件
危险等级
1243, 6711, 6776
SubSeven
🔴 极危
1999
BackDoor
🔴 极危
2583
WinCrash
🔴 极危
3700
Portal of Doom
🔴 极危
4950, 4951
ICQ Trojan
🔴 极危
5554
Sasser
🔴 极危
12345, 12346, 20034
NetBus
🔴 极危
31337
Back Orifice, Elite
🔴 极危
54321
PCAnywhere后门
🔴 极危
65000
Devil
🔴 极危
八、完整端口清单(共100个)完整列表:
代码语言:javascript复制22, 23, 25, 53, 69, 79, 80, 110, 111, 113, 119,
135, 137, 138, 139, 143, 161, 162, 389, 443, 445,
512, 513, 514, 515, 993, 995, 1080, 1433, 1434,
1521, 1723, 1900, 2049, 2301, 2375, 2376, 2389, 3000,
3128, 3306, 3389, 4444, 4505, 4506, 4789, 4800, 4899,
4900, 5000, 5432, 5631, 5632, 5800, 5900, 5901, 5984,
5985, 5986, 6379, 7001, 7002, 8000, 8008, 8009, 8080,
8081, 8090, 8180, 8443, 8686, 9000, 9042, 9080, 9090,
9092, 9200, 9300, 9418, 11211, 15672, 25565,
27017, 27018, 28015, 28017, 50000, 50030, 50060,
50070, 60010, 60030Linux系统封禁操作前准备工作必须完成的检查:
确认当前业务对哪些端口有依赖备份现有防火墙规则准备回退方案在测试环境先验证
检查当前开放端口:
代码语言:javascript复制# 查看所有监听端口
ss -tulnp | grep LISTEN
# 检查特定高危端口
ss -tulnp | grep -E ':(23|135|445|3389|6379)'
# 扫描本机开放端口
nmap -sT 127.0.0.1
方法一:防火墙层封禁(推荐)1. iptables方式(CentOS 6/7及传统系统)单端口封禁:
代码语言:javascript复制# 封禁Telnet端口
iptables -A INPUT -p tcp --dport 23 -j DROP
iptables -A INPUT -p udp --dport 23 -j DROP
# 保存规则
service iptables save
批量封禁脚本:
代码语言:javascript复制#!/bin/bash
# 高危端口批量封禁脚本
DANGER_PORTS="23 69 135 139 445 1433 3389 4899 5631 5900 6379 27017"
echo"开始封禁高危端口..."
for port in$DANGER_PORTS; do
iptables -A INPUT -p tcp --dport $port -j DROP
iptables -A INPUT -p udp --dport $port -j DROP
echo"已封禁端口: $port"
done
# 保存规则
service iptables save
echo"封禁完成!"
仅允许特定IP访问(白名单):
代码语言:javascript复制# MySQL仅允许内网访问
iptables -A INPUT -p tcp --dport 3306 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP
验证规则:
代码语言:javascript复制# 查看所有规则
iptables -L -n --line-numbers
# 查看封禁的端口
iptables -L INPUT -n | grep DROP
2. firewalld方式(CentOS 7+/RHEL 8+/Fedora)单端口封禁:
代码语言:javascript复制# 移除Telnet端口
firewall-cmd --permanent --remove-port=23/tcp
firewall-cmd --permanent --remove-port=23/udp
# 重载规则
firewall-cmd --reload
批量封禁脚本:
代码语言:javascript复制#!/bin/bash
DANGER_PORTS="23 69 135 139 445 1433 3389 4899 5631 5900 6379"
for port in$DANGER_PORTS; do
firewall-cmd --permanent --remove-port=${port}/tcp
firewall-cmd --permanent --remove-port=${port}/udp
done
firewall-cmd --reload
echo"端口封禁完成!"
限制访问源:
代码语言:javascript复制# SSH仅允许指定IP访问
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="22" protocol="tcp" accept'
firewall-cmd --permanent --remove-service=ssh
firewall-cmd --reload
验证配置:
代码语言:javascript复制# 查看所有规则
firewall-cmd --list-all
# 查看已移除的端口
firewall-cmd --list-ports
3. ufw方式(Ubuntu/Debian系)单端口封禁:
代码语言:javascript复制# 拒绝Telnet
ufw deny 23/tcp
ufw deny 23/udp
批量封禁:
代码语言:javascript复制#!/bin/bash
PORTS="23 69 135 139 445 3389 5900 6379"
for port in$PORTS; do
ufw deny ${port}/tcp
ufw deny ${port}/udp
done
ufw reload
限制访问源:
代码语言:javascript复制# SSH仅允许内网访问
ufw allow from 192.168.1.0/24 to any port 22
ufw deny 22/tcp
启用防火墙:
代码语言:javascript复制ufw enable
ufw status numbered
方法二:服务层关闭(彻底方式)停止并禁用危险服务服务
停止命令
禁用开机启动
关联端口
Telnet
systemctl stop telnet.socket
systemctl disable telnet.socket
23
FTP
systemctl stop vsftpd
systemctl disable vsftpd
21, 20
TFTP
systemctl stop tftp
systemctl disable tftp
69
Samba
systemctl stop smb nmb
systemctl disable smb nmb
139, 445
NFS
systemctl stop nfs-server
systemctl disable nfs-server
2049
RPC
systemctl stop rpcbind
systemctl disable rpcbind
111
批量停止脚本:
代码语言:javascript复制#!/bin/bash
SERVICES="telnet vsftpd tftp smb nmb nfs-server rpcbind"
for svc in$SERVICES; do
systemctl stop $svc 2>/dev/null
systemctl disable$svc 2>/dev/null
echo"已停止服务: $svc"
done
卸载不必要的服务CentOS/RHEL系:
代码语言:javascript复制yum remove telnet-server -y
yum remove vsftpd -y
yum remove tftp-server -y
yum remove samba -y
yum remove nfs-utils -y
Ubuntu/Debian系:
代码语言:javascript复制apt remove telnetd -y
apt remove vsftpd -y
apt remove tftpd-hpa -y
apt remove samba -y
apt remove nfs-kernel-server -y
方法三:配置层加固(针对必需服务)1. SSH端口更改(端口22)代码语言:javascript复制# 编辑配置文件
vi /etc/ssh/sshd_config
# 修改端口
Port 22222
# 禁用root登录
PermitRootLogin no
# 仅允许密钥认证
PasswordAuthentication no
# 重启服务
systemctl restart sshd
# 防火墙放行新端口
firewall-cmd --permanent --add-port=22222/tcp
firewall-cmd --permanent --remove-service=ssh
firewall-cmd --reload
2. MySQL限制监听地址(端口3306)代码语言:javascript复制# 编辑配置
vi /etc/my.cnf
# 添加配置
[mysqld]
bind-address = 127.0.0.1
skip-networking
# 重启服务
systemctl restart mysqld
3. Redis设置密码并绑定IP(端口6379)代码语言:javascript复制# 编辑配置
vi /etc/redis.conf
# 修改配置
bind 127.0.0.1
requirepass 复杂密码!@#123
protected-mode yes
# 重启服务
systemctl restart redis
4. MongoDB启用认证(端口27017)代码语言:javascript复制# 编辑配置
vi /etc/mongod.conf
# 添加配置
net:
bindIp: 127.0.0.1
security:
authorization: enabled
# 重启服务
systemctl restart mongod
一键封禁100个高危端口脚本完整自动化脚本:
代码语言:javascript复制#!/bin/bash
# Linux高危端口一键封禁脚本
# 适用于CentOS 7+/RHEL 8+(firewalld)
# 100个高危端口列表
ALL_DANGER_PORTS="23 25 69 79 110 111 113 119 135 137 138 139 161 162 512 513 514 515 1080 1433 1434 1521 1723 1900 2049 2301 2375 2376 2389 3000 3128 3389 4444 4505 4506 4789 4800 4899 4900 5000 5631 5632 5800 5900 5901 5984 5985 5986 7001 7002 8008 8009 8090 8180 8686 9042 9080 9092 9300 9418 11211 15672 25565 27018 28015 28017 50000 50030 50060 50070 60010 60030"
# 需要保留但限制访问的端口(根据实际业务调整)
KEEP_PORTS="22 80 443 3306 6379 27017"
echo"========================================="
echo"Linux高危端口封禁脚本"
echo"========================================="
# 检查防火墙类型
if systemctl is-active --quiet firewalld; then
FW_TYPE="firewalld"
elif systemctl is-active --quiet iptables; then
FW_TYPE="iptables"
elifcommand -v ufw &> /dev/null; then
FW_TYPE="ufw"
else
echo"错误:未检测到防火墙服务!"
exit 1
fi
echo"检测到防火墙类型: $FW_TYPE"
# 封禁端口
echo"开始封禁高危端口..."
for port in$ALL_DANGER_PORTS; do
case$FW_TYPEin
firewalld)
firewall-cmd --permanent --remove-port=${port}/tcp 2>/dev/null
firewall-cmd --permanent --remove-port=${port}/udp 2>/dev/null
;;
iptables)
iptables -A INPUT -p tcp --dport $port -j DROP
iptables -A INPUT -p udp --dport $port -j DROP
;;
ufw)
ufw deny ${port}/tcp 2>/dev/null
ufw deny ${port}/udp 2>/dev/null
;;
esac
echo"已封禁端口: $port"
done
# 重载防火墙
case$FW_TYPEin
firewalld)
firewall-cmd --reload
;;
iptables)
service iptables save
;;
ufw)
ufw reload
;;
esac
echo"========================================="
echo"封禁完成!"
echo"========================================="
# 验证结果
echo"当前监听端口:"
ss -tulnp | grep LISTEN
echo""
echo"建议:"
echo"1. 检查业务是否正常"
echo"2. 对保留端口设置访问源限制"
echo"3. 定期扫描验证端口状态"
使用方法:
代码语言:javascript复制# 赋予执行权限
chmod +x block_danger_ports.sh
# 执行脚本
./block_danger_ports.sh
验证与测试内部验证代码语言:javascript复制# 检查监听端口
ss -tulnp | grep LISTEN
# 检查防火墙规则
iptables -L -n | grep DROP
firewall-cmd --list-all
ufw status
# 检查是否还有高危端口开放
ss -tulnp | grep -E ':(23|69|445|3389|6379)'
外部扫描代码语言:javascript复制# 从其他机器扫描本机
nmap -sT 目标IP
# 扫描特定端口
nmap -sT 目标IP -p 23,445,3389,6379
# 扫描前100个端口
nmap -sT 目标IP --top-ports 100