替换不安全协议:Telnet 对比 SSH、FTP 对比 SFTP
了解 Telnet、FTP 和 HTTP 等明文协议为何会暴露凭据,以及其加密替代方案(SSH、SFTP、HTTPS)如何解决这些问题。
替换不安全协议:Telnet 对比 SSH、FTP 对比 SFTP 是 CoddyKit 上的免费 Cloud & IT Cert Prep 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cloud & IT Cert Prep 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cloud & IT Cert Prep 课程共包含 4 节课。
明文协议的问题
许多基础互联网协议是在 20 世纪 70 年代和 80 年代设计的,当时安全性并不是首要考虑因素。明文协议会通过网络以明文传输所有数据——包括用户名、密码和敏感信息。位于同一网络段中的任何设备,或数据包经过的任何系统,都可以使用 Wireshark 等免费工具捕获并读取这些流量。在使用网络交换机的环境中(交换机通常会隔离不同端口之间的流量),ARP 欺骗可以将流量重定向到攻击者的系统,使明文协议即使在“内部”网络中也很危险。
# What an attacker sees on the wire with Telnet
# (captured via Wireshark or tcpdump)
tcpdump -i eth0 -A port 23
# Sample Telnet capture output:
..login: admin..
..password: S3cr3tPa$$...
..$ ls -la /etc/passwd..
# Every keystroke is visible in plaintext
# Credentials, commands, and file contents - all exposedTelnet 与 SSH
Telnet(TCP 端口 23)提供对系统的远程命令行访问,但会以明文传输所有内容。它除了用户名/密码之外没有内置身份验证机制,而用户名和密码都是未经加密发送的。SSH(安全 Shell)(TCP 端口 22)使用加密的、经过身份验证的通道替代 Telnet。SSH 使用非对称密钥交换建立会话密钥,然后使用对称加密保护后续的所有通信。SSH 还会对服务器进行身份验证(防止服务器冒充),并且除了密码身份验证外,还支持公钥身份验证(无需密码且比密码更安全)。
# SSH connection (encrypted, server authenticated)
ssh admin@192.168.1.10
# SSH key-based authentication (no password)
ssh -i ~/.ssh/id_rsa admin@192.168.1.10
# Generate SSH key pair
ssh-keygen -t ed25519 -C 'admin@company.com'
# Copy public key to server
ssh-copy-id -i ~/.ssh/id_rsa.pub admin@192.168.1.10
# Disable Telnet on network devices (Cisco IOS)
no service telnet
line vty 0 4
transport input ssh
login localSSH 密钥交换与身份验证
SSH 的安全性依赖于稳健的密钥交换过程。建立连接时,客户端会将服务器的主机密钥与本地存储的副本进行核对,从而防止服务器冒充。如果主机密钥意外发生变化,SSH 会向用户发出警告(这是中间人攻击的常见迹象)。验证服务器后,客户端身份验证可以使用:密码(传输过程中经过加密,但容易受到暴力破解)、公钥(客户端证明自己持有私钥,安全性强得多),或键盘交互(支持 MFA)。组织应强制使用基于密钥的身份验证,并在面向互联网的 SSH 服务上禁用密码身份验证。
# Harden SSH server configuration
# /etc/ssh/sshd_config
Port 22
PermitRootLogin no
PasswordAuthentication no # Require key auth only
ChallengeResponseAuthentication no
MaxAuthTries 3
AllowUsers admin deploy
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
ClientAliveInterval 300 # Disconnect idle sessions
ClientAliveCountMax 0
# Restart SSH after changes
systemctl restart sshdFTP、SFTP 与 FTPS
FTP(文件传输协议)(TCP 端口 20/21)以明文传输文件——凭据、命令和文件数据都会暴露。FTP 还使用独立的数据通道(被动模式或主动模式),使防火墙规则更加复杂。SFTP(SSH 文件传输协议)通过端口 22 上的 SSH 隧道传输文件——它与 FTP 完全不同,只是名称相似。FTPS(FTP 安全)为原始 FTP 协议增加 TLS 加密。通常更推荐 SFTP,因为它只使用一个端口,并继承 SSH 的身份验证和加密能力。所有生产系统都应禁用 FTP。
# SFTP usage (over SSH, single connection)
sftp admin@fileserver.company.com
sftp> put localfile.zip /uploads/
sftp> get /reports/monthly.pdf .
sftp> ls /uploads/
sftp> exit
# Automated SFTP transfer with key auth
sftp -i ~/.ssh/id_rsa admin@fileserver.company.com <<EOF
put /tmp/report.csv /incoming/
EOF
# Disable FTP on Linux (remove vsftpd)
apt purge vsftpd
# Verify no FTP listener:
ss -tlnp | grep ':21'HTTP 与 HTTPS
HTTP(TCP 端口 80)以明文传输网页内容,包括表单数据、会话 Cookie 和身份验证令牌。HTTPS(TCP 端口 443)使用 TLS 封装 HTTP,提供加密、服务器身份验证和数据完整性保护。组织应在所有地方强制使用 HTTPS:将所有 HTTP 流量重定向到 HTTPS(301 重定向),实施 HSTS 以阻止浏览器通过 HTTP 连接,并配置安全和 HttpOnly Cookie 标志,以防止会话令牌通过 HTTP 或 JavaScript 被窃取。现代浏览器会将 HTTP 网站标记为“不安全”——如今 HTTPS 已成为所有 Web 服务的基本要求。
# nginx: force HTTPS redirect
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
ssl_certificate /etc/ssl/example.crt;
ssl_certificate_key /etc/ssl/example.key;
add_header Strict-Transport-Security
'max-age=31536000; includeSubDomains; preload';
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options SAMEORIGIN;
}SNMP v1/v2 与 SNMPv3
SNMP(简单网络管理协议)用于管理网络设备和服务器。SNMPv1 和 v2c使用以明文发送的团体字符串(本质上是共享密码)——例如“public”(读取)和“private”(写入)这样的团体字符串是攻击者已知的默认值。捕获 SNMP 流量的攻击者可以获知团体字符串,进而读取设备配置或更改设备设置。SNMPv3通过每个用户的凭据增加了身份验证(HMAC-MD5 或 HMAC-SHA)和加密(AES),因此它是唯一适合生产环境的版本。应禁用 SNMPv1/v2c。
# SNMPv3 configuration (Cisco IOS)
snmp-server group MYGROUP v3 priv
snmp-server user MONITORUSER MYGROUP v3 \
auth sha MyAuthP@ss priv aes 128 MyPrivP@ss
# SNMPv3 query from monitoring server
snmpwalk -v3 -l authPriv \
-u MONITORUSER \
-a SHA -A MyAuthP@ss \
-x AES -X MyPrivP@ss \
192.168.1.1 sysDescr
# Disable SNMPv1/v2c:
no snmp-server community public ro
no snmp-server community private rwLDAP 与 LDAPS
LDAP(轻量级目录访问协议)(TCP 端口 389)默认以明文对目录服务(Active Directory、OpenLDAP)进行身份验证和查询,从而暴露凭据和目录数据。LDAPS(基于 SSL/TLS 的 LDAP,TCP 端口 636)使用证书加密连接。StartTLS是另一种方案,它使用同一个 389 端口,将现有 LDAP 连接升级为 TLS。LDAPS 和 StartTLS 都能提供加密,但 LDAPS 通常更简单、更可靠。组织应将所有使用 LDAP 的应用配置为使用 LDAPS,并在防火墙上阻止 389 端口的明文 LDAP。
POP3/IMAP 与加密电子邮件收取
传统电子邮件客户端使用POP3(端口 110)和IMAP(端口 143)以明文收取邮件。加密替代方案包括:POP3S(端口 995,TLS)和IMAPS(端口 993,TLS)。现代电子邮件平台(Exchange Online、Google Workspace)会为所有客户端连接强制使用 TLS,并支持基于 OAuth 2.0 令牌的身份验证,而不是密码。组织应在电子邮件协议上禁用基本身份验证——要求使用现代身份验证(OAuth 2.0 + MFA)可以防止利用传统电子邮件协议明文身份验证机制的凭据填充攻击。
# Protocol port reference card
Protocol Insecure Port Secure Port Replacement
--------- ------------ ---------- -----------
Telnet 23 22 SSH
FTP 20/21 22 SFTP
HTTP 80 443 HTTPS
SMTP 25 587/465 SMTPS
POP3 110 995 POP3S
IMAP 143 993 IMAPS
LDAP 389 636 LDAPS
SNMP 161/162 161/162 SNMPv3
RDP 3389 3389 RDP+NLA+TLS实际替换协议
替换不安全协议不仅仅是启用安全版本——还必须主动禁用不安全版本。步骤如下:审计现有协议的使用情况(Nmap 扫描、防火墙日志);将应用和配置迁移到安全协议;充分测试(业务应用可能会出现故障);然后在防火墙和主机上阻止不安全协议。常见陷阱:旧式打印机和嵌入式设备通常只支持 FTP 或 SNMPv2;旧式工业系统可能依赖 Telnet。对于这些设备,应采用网络隔离或更换供应商设备,而不是简单升级协议。
# Audit for insecure protocol usage
# Nmap: find all Telnet listeners on network
nmap -p 23 10.0.0.0/24 --open -sV
# Find FTP listeners
nmap -p 21 10.0.0.0/24 --open
# Find HTTP (not HTTPS) web services
nmap -p 80 --open 10.0.0.0/24
# Check for SNMPv1/v2c community strings
nmap -sU -p 161 --script snmp-info 10.0.0.0/24
# Block Telnet at firewall after migration
iptables -A FORWARD -p tcp --dport 23 -j DROP
iptables -A INPUT -p tcp --dport 23 -j DROP远程桌面协议安全
RDP(远程桌面协议)(端口 3389)广泛用于远程管理 Windows,是攻击者的主要目标。不安全的 RDP 配置包括:将 3389 端口暴露到互联网、仅使用密码身份验证,以及禁用 NLA。加固 RDP:启用网络级身份验证(NLA),在完整会话打开前进行身份验证(阻止未经身份验证的连接);要求所有 RDP 会话使用TLS 1.2+;将 RDP 放在VPN 或 RDP 网关之后,而不是暴露到互联网;并强制实施账户锁定以防止暴力破解。许多勒索软件活动都是通过暴露且保护不当的 RDP 获得初始访问权限的。
分阶段弃用不安全协议
在生产环境中迁移离开不安全协议需要仔细规划,以避免业务中断。分阶段方法如下:阶段 1——发现:运行 Nmap 扫描并审计防火墙日志,以识别所有明文协议的使用情况。阶段 2——启用安全替代方案:在现有不安全服务旁配置 SSH、SFTP 和 HTTPS。阶段 3——迁移使用方:更新脚本、应用、监控工具和用户工作流程,使其使用安全协议。阶段 4——禁用并阻止:在每台主机上禁用不安全服务,并在防火墙上阻止相应端口。在每个阶段进行测试可以防止生产环境中断。
# Phase 4: Disable and block Telnet permanently
# Disable Telnet service on Linux
systemctl stop telnet.socket
systemctl disable telnet.socket
# Block Telnet at iptables
iptables -A INPUT -p tcp --dport 23 -j DROP
iptables -A OUTPUT -p tcp --dport 23 -j DROP
# Save rules
iptables-save > /etc/iptables/rules.v4
# Block at network firewall (Cisco ASA)
access-list OUTSIDE_IN deny tcp any any eq 23
# Verify: should timeout / connection refused
nc -zv 192.168.1.10 23快速 Check
测试您对本课 CompTIA Security+ (SY0-701) 概念的理解。
课程回顾
在本课中,您学习了:明文协议(Telnet、FTP、HTTP、SNMPv1/v2c、LDAP)会将凭据和数据暴露给网络窃听,因此必须替换;安全替代协议(SSH、SFTP、HTTPS、SNMPv3、LDAPS)使用 TLS 或 SSH 加密来保护相同的功能;替换协议需要在审核旧版依赖后,在防火墙和主机层面禁用不安全版本。接下来,我们将探索 TLS 版本、密码套件和完美前向保密。
常见问题解答
「替换不安全协议:Telnet 对比 SSH、FTP 对比 SFTP」课时是免费的吗?
是的 — 「替换不安全协议:Telnet 对比 SSH、FTP 对比 SFTP」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cloud & IT Cert Prep 课程的其余内容,请升级到 CoddyKit PRO。 Cloud & IT Cert Prep 课程共包含 4 节课。
「替换不安全协议:Telnet 对比 SSH、FTP 对比 SFTP」这节课中我会学到什么?
了解 Telnet、FTP 和 HTTP 等明文协议为何会暴露凭据,以及其加密替代方案(SSH、SFTP、HTTPS)如何解决这些问题。 你通过在浏览器中直接运行的动手代码来练习 Cloud & IT Cert Prep,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Cloud & IT Cert Prep 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Cloud & IT Cert Prep 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「替换不安全协议:Telnet 对比 SSH、FTP 对比 SFTP」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Cloud & IT Cert Prep 课中编写并运行代码吗?
能。每节 Cloud & IT Cert Prep 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 替换不安全协议:Telnet 对比 SSH、FTP 对比 SFTP
- TLS 版本、密码套件与完全前向保密
- 安全 DNS:DNSSEC 与基于 HTTPS 的 DNS(DoH)
- IPsec、VPN 协议与远程访问安全