一、telnet服务介绍
telnet协议是tcp/ip协议族中的一员,是internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。
在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。
可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。telnet是常用的远程控制web服务器的方法。
二、开启telnet服务的安全隐患
虽然telnet较为简单实用也很方便,但是在格外注重安全的现代网络技术中,telnet并不被重用。
原因在于telnet是一个明文传送协议,它将用户的所有内容,包括用户名和密码都明文在互联网上传送,具有一定的安全隐患,因此许多服务器都会选择禁用telnet服务。
如果我们要使用telnet的远程登录,使用前应在远端服务器上检查并设置允许telnet服务的功能。
三、开始telnet服务操作方法
如果确实想用telnet来连接服务的话,首先需要在服务器上确定是否安装了telnet-server和xinetd(telnet服务需要依赖它来完成)。
3.1、检查服务端telnet情况
[root@app ~]# rpm -qa|grep telnet-server [root@app ~]# rpm -qa|grep xinetd
执行完以上命令,如果没有输出内容说明没有安装telnet-server和xinetd。
3.2、安装telnet-server和xinetd的准备工作
telnet-server和xinetd一般都在操作系统的镜像中,可以先检查一下,主机上是否配置好了镜像源或是yum源。
[root@app ~]# cd /etc/yum.repos.d/ [root@app yum.repos.d]# ls centos76.repo repo [root@app yum.repos.d]# cat centos76.repo [centos7.6_x64] name=centos7.6_x64.iso baseurl=file:///mnt/iso enabled=1 gpgcheck=0 [root@app yum.repos.d]#
以上操作是对yum源的配置,如果在安装过程中有其它的依赖包的话,可以通过yum源的配置摆脱依赖包的烦恼。
3.3、检查yum源中的telnet-server和xinetd安装文件是否存在
3.3.1、检查telnet-server和xinetd
[root@app yum.repos.d]# yum list telnet-server 已加载插件:fastestmirror, langpacks loading mirror speeds from cached hostfile 可安装的软件包 telnet-server.x86_64 1:0.17-64.el7 centos7.6_x64 [root@app yum.repos.d]# yum list xinetd 已加载插件:fastestmirror, langpacks loading mirror speeds from cached hostfile 可安装的软件包 xinetd.x86_64 2:2.3.15-13.el7 centos7.6_x64
出现以上结果,说明操作系统的镜像中存在telnet-server和xinetd安装文件,接下来就可以使用yum命令进行安装了。
3.4、安装telnet-server和xinetd
安装telnet-server:
[root@app yum.repos.d]# yum install -y telnet-server 已加载插件:fastestmirror, langpacks loading mirror speeds from cached hostfile 正在解决依赖关系 --> 正在检查事务 ---> 软件包 telnet-server.x86_64.1.0.17-64.el7 将被 安装 --> 解决依赖关系完成 依赖关系解决 ================================================================================================================================================================= package 架构 版本 源 大小 ================================================================================================================================================================= 正在安装: telnet-server x86_64 1:0.17-64.el7 centos7.6_x64 41 k 事务概要 ================================================================================================================================================================= 安装 1 软件包 总下载量:41 k 安装大小:55 k downloading packages: running transaction check running transaction test transaction test succeeded running transaction 正在安装 : 1:telnet-server-0.17-64.el7.x86_64 1/1 验证中 : 1:telnet-server-0.17-64.el7.x86_64 1/1 已安装: telnet-server.x86_64 1:0.17-64.el7 完毕! [root@app yum.repos.d]#
安装xinetd:
[root@app yum.repos.d]# yum install -y xinetd 已加载插件:fastestmirror, langpacks loading mirror speeds from cached hostfile 正在解决依赖关系 --> 正在检查事务 ---> 软件包 xinetd.x86_64.2.2.3.15-13.el7 将被 安装 --> 解决依赖关系完成 依赖关系解决 ================================================================================================================================================================= package 架构 版本 源 大小 ================================================================================================================================================================= 正在安装: xinetd x86_64 2:2.3.15-13.el7 centos7.6_x64 128 k 事务概要 ================================================================================================================================================================= 安装 1 软件包 总下载量:128 k 安装大小:261 k downloading packages: running transaction check running transaction test transaction test succeeded running transaction 正在安装 : 2:xinetd-2.3.15-13.el7.x86_64 1/1 验证中 : 2:xinetd-2.3.15-13.el7.x86_64 1/1 已安装: xinetd.x86_64 2:2.3.15-13.el7 完毕! [root@app yum.repos.d]#
3.4.1、检查telnet-server和xinetd是否安装成功
[root@app yum.repos.d]# rpm -qa|grep telnet-server telnet-server-0.17-64.el7.x86_64 [root@app yum.repos.d]# rpm -qa|grep xinetd xinetd-2.3.15-13.el7.x86_64
出现以上结果,说明telnet-server和xinetd已安装成功。
3.4.2、安装telnet客户端
这一步可以不用操作,安装telnet客户端主要的作用,是为了测试telnet服务是否可以正常使用,大家也可以用windows的telnet客户端进行测试,或是ssh终端工具进行测试。
[root@app xinetd.d]# yum install -y telnet 已加载插件:fastestmirror, langpacks loading mirror speeds from cached hostfile 正在解决依赖关系 --> 正在检查事务 ---> 软件包 telnet.x86_64.1.0.17-64.el7 将被 安装 --> 解决依赖关系完成 依赖关系解决 ================================================================================================================================================================= package 架构 版本 源 大小 ================================================================================================================================================================= 正在安装: telnet x86_64 1:0.17-64.el7 centos7.6_x64 64 k 事务概要 ================================================================================================================================================================= 安装 1 软件包 总下载量:64 k 安装大小:113 k downloading packages: running transaction check running transaction test transaction test succeeded running transaction 正在安装 : 1:telnet-0.17-64.el7.x86_64 1/1 验证中 : 1:telnet-0.17-64.el7.x86_64 1/1 已安装: telnet.x86_64 1:0.17-64.el7 完毕! [root@app xinetd.d]#
3.4.3、启动telnet-server和xinetd服务
启动telnet-server,并设为开机启动:
[root@app xinetd.d]# systemctl start telnet.socket //启动telnet-server [root@app xinetd.d]# systemctl status telnet.socket //查看telnet-server启动状态 ● telnet.socket - telnet server activation socket loaded: loaded (/usr/lib/systemd/system/telnet.socket; enabled; vendor preset: disabled) active: active (listening) since 日 2024-09-08 15:57:46 cst; 15s ago docs: man:telnetd(8) listen: [::]:23 (stream) accepted: 0; connected: 0 9月 08 15:57:46 app systemd[1]: listening on telnet server activation socket. [root@app xinetd.d]# systemctl enable telnet.socket //把telnet-server设为开机启动 [root@app xinetd.d]# systemctl list-unit-files telnet.socket //查看telnet-server设为开机启动是否成功 unit file state telnet.socket enabled 1 unit files listed.
这里需要注意的是启动telnet-server服务的文件是telnet.socket。有些同学会认为应该是telnet.service这个文件,telnet-server和其它服务不太一样,它是以超级服务进行启动的。
具体介绍大家可以参考一下xinetd的介绍:xinetd_百度百科 (baidu.com)
启动xinetd,并设为开机启动:
[root@app xinetd.d]# systemctl start xinetd.service //启动xinetd服务 [root@app xinetd.d]# systemctl status xinetd.service //查看xinetd服务启动状态 ● xinetd.service - xinetd a powerful replacement for inetd loaded: loaded (/usr/lib/systemd/system/xinetd.service; enabled; vendor preset: enabled) active: active (running) since 日 2024-09-08 16:03:55 cst; 9s ago process: 22314 execstart=/usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid $extraoptions (code=exited, status=0/success) main pid: 22315 (xinetd) tasks: 1 cgroup: /system.slice/xinetd.service └─22315 /usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid 9月 08 16:03:55 app xinetd[22315]: removing discard 9月 08 16:03:55 app xinetd[22315]: removing discard 9月 08 16:03:55 app xinetd[22315]: removing echo 9月 08 16:03:55 app xinetd[22315]: removing echo 9月 08 16:03:55 app xinetd[22315]: removing tcpmux 9月 08 16:03:55 app xinetd[22315]: removing time 9月 08 16:03:55 app xinetd[22315]: removing time 9月 08 16:03:55 app xinetd[22315]: xinetd version 2.3.15 started with libwrap loadavg labeled-networking options compiled in. 9月 08 16:03:55 app xinetd[22315]: started working: 0 available services 9月 08 16:03:55 app systemd[1]: started xinetd a powerful replacement for inetd. [root@app xinetd.d]# systemctl enable xinetd.service //把xinetd服务设为开机启动 [root@app xinetd.d]# systemctl list-unit-files xinetd.service //查看xinetd服务设为开机启动是否成功 unit file state xinetd.service enabled 1 unit files listed.
3.5、telnet-server服务测试
[root@app xinetd.d]# telnet 192.168.10.2 23 trying 192.168.10.2... connected to 192.168.10.2. escape character is '^]'. kernel 3.10.0-957.el7.x86_64 on an x86_64 app login:
当看到以上连接结果,说明telnet-server和xinetd服务已经正常工作了。下面试着输入用户名和密码看是否能正常连接进入。
[root@app xinetd.d]# telnet 192.168.10.2 23 trying 192.168.10.2... connected to 192.168.10.2. escape character is '^]'. kernel 3.10.0-957.el7.x86_64 on an x86_64 app login: root password: login incorrect app login:
root用户登录被拒绝登录了。
这是因为telnet-server服务默认情况下,redhat和centos系统是不允许root用户通过telnet的方式远程登陆系统的(这是为了安全起见做的默认设定)。
如果要使用root用户登录系统,需要修改/etc/securetty文件内容,把以下内容添加到该文件的最下方,保存即可。
pts/0 pts/1 pts/2 pts/3 pts/4
如下,这里把以上内容添加到 /etc/securetty文件内容的结果:
[root@app xinetd.d]# tail -5 /etc/securetty pts/0 pts/1 pts/2 pts/3 pts/4 [root@app xinetd.d]#
重启telnet-server和xinetd服务:
[root@app xinetd.d]# systemctl restart telnet.socket [root@app xinetd.d]# systemctl restart xinetd.service
再次尝试连接telnet-server:
[root@app xinetd.d]# telnet 192.168.10.2 23 trying 192.168.10.2... connected to 192.168.10.2. escape character is '^]'. kernel 3.10.0-957.el7.x86_64 on an x86_64 app login: root password: last failed login: sun sep 8 16:11:58 cst 2024 from ::ffff:192.168.10.2 on pts/2 there was 1 failed login attempt since the last successful login. last login: sun sep 8 15:23:58 from 192.168.10.1 [root@app ~]#
输入root用户的密码,已经正常连接进来了。说明telnet-server已经可以正常连接使用了。
大家也可以用ssh终端工具进行测试,以下是使用xshell工具进行连接的测试。
ssh工具也可以正常连接了。
知识扩展
如果大家使用的是redhat或centos操作系统的版本是7.0以下的,安装完xinetd和telnet-server后,后面的操作稍微有点不一样,7.0以下的版本是通过修改/etc/xinetd.d/telnet配置文件来实现的。
如下:
# vi /etc/xinetd.d/telnet // 把disable中的yes改成no service telnet { flags = reuse socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += userid disable = yes } service telnet { flags = reuse socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += userid disable = no } # /etc/init.d/xinetd reload //重新加载xinetd服务。
其中是否能让root用户登录的方法和3.5小节点中,给/etc/securetty配置文件中添加内容的操作一样,添加完成之后执行 /etc/init.d/xinetd reload,让其重新加载xinetd服务即可。
注:以上方法操作都没有问题,但是在连接telnet-server的23端口时,一直连接不上,有可能是主机的防火墙阻止了23端口的连接,大家可以把防火墙关闭,或是放开23端口即可。
大家可以参照下面方法通过防火墙放开23端口。
redhat和centos 系统版本是7.0的,默认采用 firewalld 防火墙。6.0采用iptables防火墙,下面分别简单的介绍一下操作方法。
以下是7.0版本的操作方法:
查询防火墙是否开启了 23 端口:
[root@app xinetd.d]# firewall-cmd --query-port=23/tcp no
执行结果为“no” 表示未开启,通过以下命令开启 23 端口:
[root@app xinetd.d]# firewall-cmd --zone=public --add-port=23/tcp --permanent //永久(--permanent)开启23端口 success //开启成功 [root@app xinetd.d]# firewall-cmd --complete-reload // 重载防火墙配置,使变更生效 success //重载成功 [root@app xinetd.d]# firewall-cmd --query-port=23/tcp // 查询开启状态 yes //开启
或是直接使用以下命令关闭防火墙:
[root@app ~]# systemctl stop firewalld.service //停止防火墙 [root@app ~]# systemctl status firewalld.service //查看防火墙运行状态 ● firewalld.service - firewalld - dynamic firewall daemon loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) active: inactive (dead) docs: man:firewalld(1) 9月 08 16:48:18 app systemd[1]: starting firewalld - dynamic firewall daemon... 9月 08 16:48:18 app systemd[1]: started firewalld - dynamic firewall daemon. 9月 08 16:48:23 app systemd[1]: stopping firewalld - dynamic firewall daemon... 9月 08 16:48:24 app systemd[1]: stopped firewalld - dynamic firewall daemon. [root@app ~]# systemctl disable firewalld.service //关闭防火墙开始启动
6.0版本的操作如下:
- 停止防火墙:service iptables stop
- 查看防火墙状态:service iptables status
- 禁止开机启动:chkconfig iptables off
- 查看开机启动状态:chkconfig --list iptables
- 放开访问端口:iptables -i input -p tcp --dport 23 -j accept
注:使用iptables这种方式放开端口的操作,不会写入配置文件 /etc/sysconfig/iptables 中,重启系统会失效(重启防火墙服务也会失效)
可以再执行一次保存命令,将通过命令添加的开放端口保存到配置中:service iptables save
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论