xinetd 模式下启动 telnet 服务
一、xinetd 模式的介绍
网络服务主要靠服务名以及服务端口号进行区分。 Linux系统中的网络服务模型有两种 ,一种是独立的守护进程工作模式(stand-alone),另一种是基于xinetd的工作模式。
在一般的独立守护进程模式下,对于系统所要提供的每一种网络服务,都必须运行一个监听某个端口连接情况的守护进程, 这通常意味着资源浪费,因为对于于访问量小、并发访问不多的情况下,守护进程的实际工作时间很少。
故 Linux 引进了“网络守护进程服务程序” (eXtended InterNET daemon)的概念,也就是 xinetd 。
xinetd 的目的是减少系统资源消耗,所以设计理念上 xinetd 就是一个管理启动网络服务的总控制中心程序,运行一个 xinetd 程序就可以同时监听所有服务端口,这样 就降低了系统开销,保护系统资源,xinetd 接受到用户请求时,根据用户请求的端口不同,从而启用不同的网络服务进程来处理这些服务请求。但是对于访问量大、经常出现并发访问的场景,xinetd 会频繁启动对应的网络服务进程,反而会导致系统性能下降,此时选择独立守护进程才比较适合。
二、xinetd 的特点
- 支持对TCP、UDP、RPC(远程调用函数服务)服务的管理。
- 可以实施基于时间段的访问控制。
- 功能完备的 log 功能,可以记录连接成功、连接失败的行为。
- 能够有效地防止拒绝服务(DoS)的攻击。
- 能够限制同时运行的同一类型的服务器的数目。
- 能够限制log文件大小。
- 能够将某个服务绑定在特定的系统接口上,从而实现只能 允许私有网络访问某项服务。
- 能够实现作为其它系统的代理。
三、xinetd 使用
用 VM 虚拟机安装前,最好拍摄快照。
xinetd 作为Linux 系统上一些轻量级网络服务的管理程序,主要管理的网络服务有 FTP、Telnet 等短暂的、低频率的服务和一些基于TCP或UDP协议的网络服务。下面介绍 xinetd 的配置文件和启动 telnet 服务示例
3.1 xinetd 的安装
环境:CenOS7
安装 xinetd,命令如下:
yum install -y xinetd
配置文件说明:
-
/etc/xinetd.conf:控制 xinetd 程序运行的配置文件。其中,提供了所有服务的缺省配置(默认设置的意思),一般不需要更改
# 查看该配置文件 cat /etc/xinetd.conf | grep -v '#'
-
/etc/xinetd.d/*:该目录包括所有由xinetd程序启动的服务的配置文件,每个服务都有自己单独的配置文件, 配置文件名与服务名一致。一般给 xinetd 添加管理网络服务时,添加网络的配置文件到该目录
3.2 telnet 的安装使用
Telnet 是一种远程登录应用,常用于系统远程维护,端口 23 ,但是安全性无 SSH 高,因为其明文传输报文,默认禁用。该服务是基于 xinetd 的一种服务,受 xinetd 管理。使用步骤如下:
-
安装 telnet ,命令如下:
yum install -y telnet telnet-server
-
检查当前电脑安全环境是否允许 telnet,因为 telnet 安全性不高,启动 telnet 需要关闭防火墙和 SELinux 的安全增强。
关闭防火墙
systemctl status firewalld #查看防火墙状态 systemctl disable firewalld #取消开机自启动 systemctl stop firewalld #关闭防火墙
关闭SELinux安全增强
#查看是否关闭 cat /etc/selinux/config
#临时关闭 setenforce 0
#长期关闭 vi /etc/sysconfig/selinux #修改 SELINUX=disabled #然后重启 reboot
-
新建 telnet 的配置文件
vi /etc/xinetd.d/telnet
添加以下内容
service telnet { flags = REUSE #表示当中断或重启 xinetd 时,TCP/IP Socket 可重用 socket_type = stream #表示使用 TCP 的 Socket 类型 wait = no #表示该服务提供多线程功能 user = root #设置进程的 UID ,由 root 用户操作 server = /usr/sbin/in.telnetd #设置服务程序文件 log_on_failure += USERID #连接失败时,记录用户 ID disable = no #允许 xinetd 启动本项服务 }
-
开启 xinetd 和 telnet 服务,同时把虚拟机中的防火墙清一下
systemctl enable xinetd --now systemctl enable telnet.socket --now sudo iptables -F
-
查看是否开启成功
chkconfig --list
-
尝试本机 telnet,看是否成功
telnet 127.0.0.1