小萝卜干的技术分享

15 object(s)
 

CentOS7 启用Telnet的正确姿势

最近公司托管在异地的若干台服务器的OpenSSH被服务商通知存在用户枚举漏洞(CVE-2018-15473),于是就开始着手升级服务器上的OpenSSH。

由于服务器的安全设定,只能通过外网的VPN进行访问,服务器本身是上不了网的,所以升级包只能在本地下载好之后,用SCP复制上去

查询相关资料的时候,看到说启用telnet后再更新,以防止ssh挂掉无法远程,于是接下来就是开启telnet的过程。

安装telnet

准备好telnet的相关安装包

telnet-server-0.17-65.el7_8.x86_64.rpm
telnet-0.17-65.el7_8.x86_64.rpm
xinetd-2.3.15-14.el7.x86_64.rpm

然后用rpm命令去安装

[root@linux-node3 ~]# rpm -ivh telnet-server-0.17-65.el7_8.x86_64.rpm
[root@linux-node3 ~]# rpm -ivh telnet-0.17-65.el7_8.x86_64.rpm
[root@linux-node3 ~]# rpm -ivh xinetd-2.3.15-14.el7.x86_64.rpm

配置telnet

安装完成之后,接下来就是配置环节了。

启动telnet服务,并设置开机自动启动:

[root@linux-node3 ~]# systemctl enable xinetd
[root@linux-node3 ~]# systemctl enable telnet.socket
Created symlink from /etc/systemd/system/sockets.target.wants/telnet.socket to /usr/lib/systemd/system/telnet.socket.
[root@linux-node3 ~]# systemctl start telnet.socket
[root@linux-node3 ~]# systemctl start xinetd

启动后,查看端口23号是否已经打开:

[root@linux-node3 ~]# netstat -lntp|grep 23
tcp6       0      0 :::23                   :::*                    LISTEN      1/systemd  

如上所示,telnet已经启动成功。

防火墙配置

Centos7 默认是启用防火墙的,所以想要访问23号端口,得在防火墙上打开23号端口,或者干脆关掉防火墙

关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

允许telnet端口

firewall-cmd --zone=public --add-port=23/tcp --permanent
firewall-cmd --reload

注意,一定要reload,才能让规则生效

配置用户登录

默认情况下,telnet是不允许root用户进行登录的,表现在用户名和密码都正确,但是服务器提示Login incorrect。

为了能够正常使用,有下面两种办法:

  1. 建立一个普通用户,使用该用户通过telnet登录,然后使用su切换到root用户(推荐)
  2. 直接配置root用户登录(不安全,不推荐)

由于我们是内网环境,所以就直接使用第二种办法,配置root登录。

然后重点来了,不要轻信网上的修改/etc/pam.d/login文件。我这边的服务器情况则是:使用该方法,连着SSH的时候telnet也可以连接,ssh断开后telnet也没法连接😓。另外搭建了一台同样环境的虚拟机测试则是完全不起作用,即使你输入了正确的用户名和密码,但是服务器依然提示Login incorrect

不应该修改/etc/pam.d/login文件

我严重怀疑,你们真的就试过了可以,还是只是单纯的复制粘贴,所以,没试过的别去浪费时间了

真正能起作用的是修改/etc/pam.d/remote文件:

[root@localhost ~]# cat /etc/pam.d/remote 
#%PAM-1.0
auth       required     pam_securetty.so
auth       substack     password-auth
auth       include      postlogin
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    include      postlogin

auth required pam_securetty.so这行注释掉然后保存,telnet就可以用root用户连接了!

测试连接

可以直接在服务器上进行测试

[root@localhost ~]# telnet 127.0.0.1 23
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

Kernel 3.10.0-1160.45.1.el7.x86_64 on an x86_64
localhost login: root
Password: 
Last login: Tue Nov  2 16:48:37 from 10.37.129.2
[root@localhost ~]# 

也可以使用远程计算机进行测试

root@5df89c0059d7:/# date
Tue Nov  2 16:50:21 CST 2021
root@5df89c0059d7:/# telnet 10.37.129.3 
Trying 10.37.129.3...
Connected to 10.37.129.3.
Escape character is '^]'.

Kernel 3.10.0-1160.45.1.el7.x86_64 on an x86_64
localhost login: root
Password: 
Last login: Tue Nov  2 16:48:57 from localhost
[root@localhost ~]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@localhost ~]# 

题外话

致谢

[telnet使用root登陆报“Login incorrect”_Aevery的博客-CSDN博客](