服务器被黑?黑客最爱攻击这100个端口!(附一键封禁脚本)

服务器被黑?黑客最爱攻击这100个端口!(附一键封禁脚本)

说明:

  • 端口号:网络服务的逻辑入口。
  • 服务/协议:通常使用该端口的应用程序或协议。
  • 风险描述:该端口开放可能带来的主要安全威胁。
  • 封禁必要性:在绝大多数情况下,除非业务明确需要,否则应立即封禁这些端口。

一、经典后门与远程控制类

这些端口常被木马、后门和远程管理软件利用。

端口服务/协议风险描述危险等级
22SSH弱密码、暴力破解的重灾区⚠️ 高危
23Telnet明文传输,极易被嗅探密码🔴 极危
135RPCWindows RPC服务,常被用于漏洞利用⚠️ 高危
139, 445SMB永恒之蓝等重大漏洞的源头,用于共享和AD🔴 极危
1433, 1434MSSQL常被暴力破解,提权漏洞多发⚠️ 高危
3389RDP远程桌面,暴力破解主要目标🔴 极危
4899Radmin远程控制软件,配置不当或版本过旧有风险⚠️ 高危
5631, 5632PCAnywhere老牌远程控制,存在已知漏洞⚠️ 高危
5900+VNC图形化远程控制,弱认证问题普遍⚠️ 高危
6129DameWare远程管理工具,默认端口易被扫描利用⚠️ 高危

二、Web服务与漏洞高发类

Web应用的入口,也是攻击的主要面。

端口服务/协议风险描述危险等级
21FTP明文传输密码和数据,漏洞多🔴 极危
80HTTP明文传输,可被劫持、嗅探⚠️ 中危
443HTTPS加密传输,但Web应用本身的漏洞(如SQLi、XSS)仍存在⚠️ 中危
8000, 8080, 8443HTTP/HTTPS Alt常见的Web应用替代端口,风险同80/443⚠️ 中危
7001, 7002WebLogicJava应用服务器,历史漏洞多且危害大🔴 极危
9090WebSMWebSphere管理等,存在未授权访问风险⚠️ 高危

三、文件传输与共享类

易导致数据泄露和恶意软件传播。

端口服务/协议风险描述危险等级
20FTP DataFTP的数据连接端口🔴 极危
69TFTP简单文件传输,无认证,可任意上传下载🔴 极危
2049NFS网络文件系统,配置不当可导致未授权访问⚠️ 高危
873Rsync配置不当可导致未授权访问和文件泄露⚠️ 高危

四、邮件服务类

钓鱼、垃圾邮件和漏洞利用的通道。

端口服务/协议风险描述危险等级
25SMTP发送邮件,常被用来转发垃圾邮件⚠️ 中危
110POP3收取邮件,明文传输密码和数据⚠️ 高危
143IMAP管理邮件,明文传输⚠️ 高危
993, 995IMAPS/POP3S加密版本,相对安全,但服务本身可能有漏洞⚠️ 低危

五、数据库服务类

承载核心数据,是攻击者的终极目标之一。

端口服务/协议风险描述危险等级
1521Oracle DB强大的数据库,配置复杂,漏洞影响大🔴 极危
3306MySQL流行数据库,常被暴力破解🔴 极危
5432PostgreSQL功能强大的开源数据库,也有安全风险⚠️ 高危
27017, 27018MongoDB曾因默认无认证导致大量数据泄露🔴 极危
6379Redis默认无认证,可被轻易获取权限🔴 极危

六、网络基础服务与易受攻击类

本身是正常服务,但常被错误配置或利用。

端口服务/协议风险描述危险等级
53DNS可被用于DNS隧道、DDoS放大攻击⚠️ 中危
161, 162SNMP默认团体名public/private,泄露网络设备信息⚠️ 高危
389, 636LDAP/LDAPS目录服务,信息泄露和注入漏洞⚠️ 高危
111RPC远程过程调用,可被用于信息收集和攻击⚠️ 高危
512, 513, 514rexec, rlogin, rsh明文传输的远程执行服务🔴 极危

七、木马与后门常用端口(部分列表)

这些端口历史上被特定木马广泛使用,是安全扫描的重点对象。

端口通常关联的恶意软件危险等级
1243, 6711, 6776SubSeven🔴 极危
1999BackDoor🔴 极危
2583WinCrash🔴 极危
3700Portal of Doom🔴 极危
4950, 4951ICQ Trojan🔴 极危
5554Sasser🔴 极危
12345, 12346, 20034NetBus🔴 极危
31337Back Orifice, Elite🔴 极危
54321PCAnywhere后门🔴 极危
65000Devil🔴 极危

八、完整端口清单(共100个)

完整列表:

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, 60030

Linux系统封禁操作前准备工作

必须完成的检查:

  • 确认当前业务对哪些端口有依赖
    • 备份现有防火墙规则
    • 准备回退方案
    • 在测试环境先验证

检查当前开放端口:

# 查看所有监听端口
ss -tulnp | grep LISTEN

# 检查特定高危端口
ss -tulnp | grep -E ':(23|135|445|3389|6379)'

# 扫描本机开放端口
nmap -sT 127.0.0.1

方法一:防火墙层封禁(推荐)

1. iptables方式(CentOS 6/7及传统系统)

单端口封禁:

# 封禁Telnet端口
iptables -A INPUT -p tcp --dport 23 -j DROP
iptables -A INPUT -p udp --dport 23 -j DROP

# 保存规则
service iptables save

批量封禁脚本:

#!/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访问(白名单):

# 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

验证规则:

# 查看所有规则
iptables -L -n --line-numbers

# 查看封禁的端口
iptables -L INPUT -n | grep DROP

2. firewalld方式(CentOS 7+/RHEL 8+/Fedora)

单端口封禁:

# 移除Telnet端口
firewall-cmd --permanent --remove-port=23/tcp
firewall-cmd --permanent --remove-port=23/udp

# 重载规则
firewall-cmd --reload

批量封禁脚本:

#!/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"端口封禁完成!"

限制访问源:

# 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

验证配置:

# 查看所有规则
firewall-cmd --list-all

# 查看已移除的端口
firewall-cmd --list-ports

3. ufw方式(Ubuntu/Debian系)

单端口封禁:

# 拒绝Telnet
ufw deny 23/tcp
ufw deny 23/udp

批量封禁:

#!/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

限制访问源:

# SSH仅允许内网访问
ufw allow from 192.168.1.0/24 to any port 22
ufw deny 22/tcp

启用防火墙:

ufw enable
ufw status numbered

方法二:服务层关闭(彻底方式)

停止并禁用危险服务

服务停止命令禁用开机启动关联端口
Telnetsystemctl stop telnet.socketsystemctl disable telnet.socket23
FTPsystemctl stop vsftpdsystemctl disable vsftpd21, 20
TFTPsystemctl stop tftpsystemctl disable tftp69
Sambasystemctl stop smb nmbsystemctl disable smb nmb139, 445
NFSsystemctl stop nfs-serversystemctl disable nfs-server2049
RPCsystemctl stop rpcbindsystemctl disable rpcbind111

批量停止脚本:

#!/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系:

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系:

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)

# 编辑配置文件
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)

# 编辑配置
vi /etc/my.cnf

# 添加配置
[mysqld]
bind-address = 127.0.0.1
skip-networking

# 重启服务
systemctl restart mysqld

3. Redis设置密码并绑定IP(端口6379)

# 编辑配置
vi /etc/redis.conf

# 修改配置
bind 127.0.0.1
requirepass 复杂密码!@#123
protected-mode yes

# 重启服务
systemctl restart redis

4. MongoDB启用认证(端口27017)

# 编辑配置
vi /etc/mongod.conf

# 添加配置
net:
  bindIp: 127.0.0.1

security:
  authorization: enabled

# 重启服务
systemctl restart mongod

一键封禁100个高危端口脚本

完整自动化脚本:

#!/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. 定期扫描验证端口状态"

使用方法:

# 赋予执行权限
chmod +x block_danger_ports.sh

# 执行脚本
./block_danger_ports.sh

验证与测试

内部验证

# 检查监听端口
ss -tulnp | grep LISTEN

# 检查防火墙规则
iptables -L -n | grep DROP
firewall-cmd --list-all
ufw status

# 检查是否还有高危端口开放
ss -tulnp | grep -E ':(23|69|445|3389|6379)'

外部扫描

# 从其他机器扫描本机
nmap -sT 目标IP

# 扫描特定端口
nmap -sT 目标IP -p 23,445,3389,6379

# 扫描前100个端口
nmap -sT 目标IP --top-ports 100

原创文章,作者:lishengli,如若转载,请注明出处:https://www.lishengli.com/lee/5203.html

Like (1)
lishengli的头像lishengli
Previous 1小时前
Next 1小时前

相关推荐

发表回复

Please Login to Comment