1. 禁用Telnet服务(最彻底的安全措施)
Telnet传输数据(包括用户名、密码)为明文,易被窃听或篡改,优先选择禁用该服务。执行以下命令停止并禁用Telnet:
sudo systemctl stop telnet.socket # 停止Telnet服务
sudo systemctl disable telnet.socket # 禁止开机自启
通过systemctl status telnet.socket确认服务状态(显示“inactive (dead)”且“disabled”即为生效)。
2. 使用防火墙限制Telnet端口访问
即使服务未禁用,也可通过防火墙阻断未授权访问。针对CentOS常用防火墙工具:
sudo firewall-cmd --permanent --remove-service=telnet # 移除Telnet服务规则(若已存在)
sudo firewall-cmd --reload # 重新加载配置
sudo iptables -A INPUT -p tcp --dport 23 -j DROP # 拒绝23端口的TCP连接
sudo service iptables save # 保存规则(CentOS 6及以下)
此操作可有效阻止外部IP访问Telnet端口。
3. 用SSH替代Telnet(最佳替代方案)
SSH提供加密通信通道,彻底解决Telnet的安全缺陷。配置步骤如下:
sudo yum install openssh-server -y
sudo systemctl start sshd
sudo systemctl enable sshd
/etc/ssh/sshd_config):PermitRootLogin no # 禁止root远程登录
PubkeyAuthentication yes # 启用公钥认证(更安全)
PasswordAuthentication no # 可选:禁用密码认证(需提前配置公钥)
MaxAuthTries 3 # 限制登录尝试次数(防止暴力破解)
sudo systemctl restart sshd
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload
通过SSH反向隧道或密钥认证进一步提升安全性。
4. 使用SELinux增强安全防护
SELinux可通过强制访问控制(MAC)限制Telnet服务的权限:
sudo setenforce 1 # 临时设置为Enforcing模式
sudo sed -i 's/SELINUX=disabled/SELINUX=enforcing/g' /etc/selinux/config # 永久生效
sudo setsebool -P telnetd_disable_trans on # 阻止Telnet的网络传输
通过getsebool -a | grep telnet验证策略是否生效。
5. 监控与入侵防御
/var/log/secure(CentOS)中的Telnet登录记录,识别异常尝试:sudo grep 'telnet' /var/log/secure
sudo yum install fail2ban -y
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
编辑/etc/fail2ban/jail.local,添加Telnet监控规则:[telnet]
enabled = true
port = 23
filter = telnetd
logpath = /var/log/secure
maxretry = 3
bantime = 600
重启Fail2Ban使配置生效。6. 限制Telnet登录用户(若必须使用)
若因特殊需求需保留Telnet,可通过以下方式缩小攻击面:
telnetuser),并设置强密码。/etc/securetty文件:注释或删除root用户的登录权限,防止root通过Telnet登录:sudo vi /etc/securetty
# 注释掉类似“tty1”“tty2”的行(或添加“#”前缀)
/etc/xinetd.d/telnet,添加only_from指令限制允许访问的IP段:service telnet
{
disable = no
only_from = 192.168.1.0/24 # 仅允许内网IP访问
}
重启xinetd服务使配置生效:sudo systemctl restart xinetd
注意:此方法仍无法解决明文传输问题,仅作为临时缓解措施。