Chinaunix首页 | 论坛 | 博客
  • 博客访问: 495200
  • 博文数量: 135
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 905
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-24 19:31
文章分类

全部博文(135)

文章存档

2010年(135)

我的朋友

分类: LINUX

2010-05-22 21:44:13

Ubuntu Server 9.10下配置telnet服务心得 

      最近心血来潮地安装了Ubuntu Server 9.10来尝鲜。顺便想在上面建个telnet服务,结果还真费了不少劲。究其原因主要是Ubuntu采用的是debian的那一套东西。第一次用还不太熟悉。另外网上的一些资料中有的要点没有讲清楚,让人走了弯路。下面言归正传,将此次的实践心得汇总如下:

顺便提一下Ubuntu Server 9.10 安装时的注意点: 

1. Ubuntu Server 9.10安装时除非特殊原因,一定要选English,这样默认的语言就是English,到后面的控制台界面上显示时就不会有问题。如果选了中文,安装完重启后在console上会显示小方块,根本没法看命令的提示。网上分析说问题的原因是console下缺少中文字体的支持,看来中国的Linux开发者要加油呀。

2. Ubuntu Server 9.10安装过程中会自动调用aptitude。初次见面真是摸不着头脑,最好在网上先搜下说明,做到心里有数。我装的cd里面好像x11-common这个包解压时有问题,所以安装时报错,不过由于连着互联网,可以在退出aptitude后通过再次运行aptitude联网安装这个安装失败了的包。(在用Ubuntu cd安装系统时要保持互联网的连接,它会自动访问网络,并下载一些包用于安装)

3. 在Ubuntu下的telnet服务需要安装xinetd服务和telnetd服务。这两个服务可以在系统安装完毕后通过以root用户身份(sudo)运行aptitude来安装。要说明的是telnet服务属于不太安全的服务,如果是在生产服务器上装一定要三思,最好用SSH。

4. 在root用户身份下直接运行aptitude会调出一个文本模式的界面,Ctrl t可以选择菜单,上下光标和回车可以选择展开要查看的组直到具体的安装包。输入/可以直接搜索要安装或卸载的包名。当光带罩住了要操作的包名后按Ctrl t可以通过菜单去选择是Install还是Remove等等。一旦回车这选择的包名会变颜色,其前会出现i或r之类的字母表示要对这个包做的操作,Ctrl u可以放弃操作。一旦修改完对包列表的操作设定后按g几次就可以执行了(对没有下载过的包会执行下载和安装动作)。

5. 下面正式开始进入telnet服务的安装:

5.1 运行aptitude,用上下光标键移动光带到Not installed Package组里,回车,输入/,输入xinetd,会自动选中xinetd包。按Ctrl t,按光标左移到package上选Install回车。在xinetd包名前会出现一个i字母,且包名颜色变绿。再次键入/,输入telnetd,会搜索到含telnetd名字的包,按n向下选择,直到出现telnetd,让光带停在其上。Ctrl t调出菜单,左移到package上选Install回车。按g键直到出现连接升级网站开始下载并安装。等待安装完毕。

5.2 其间会出一个窗口说##...是无法识别的记录,否继续?选YES。

5.3 结束后按q键退出aptitude文本界面。

5.4 修改/etc/inetd.conf和/etc/xinetd.conf文件并创建/etc/xinetd.d/telnet,它们的内容如下:

vi /etc/inetd.conf


telnet stream tcp nowait root /usr/sbin/telnetd /usr/sbin/in.telnetd

上面一行的开头可能是##把注释的部分去掉只留如上的内容。

说明:inetd.conf的配置比下面的xinetd.conf的配置要简单的多,每个服务只需配置一行。

各个字段从左至右依次表示:

  ● 服务名称。和xinetd一样,inetd通过查询/etc/service获得该服务的相关信息。

  ● 套接口类型。TCP用stream,UDP用dgram。

  ● 该服务使用的通信协议。

  ● inetd是否等到守护进程结束才继续接管端口。wait表示等待(相当于xinetd的wait = yes),nowait表示不等待,inetd每次接到一个请求就启动守护进程的新副本(相当于xinetd的wait = no)。

  ● 运行该守护进程的用户身份。

  ● 守护进程二进制文件的完整路径及其命令行参数。和xinetd不同,inetd要求把服务器命令作为第一个参数(例如in.telnetd),然后才是真正意义上的“命令行参数”(例如-w)。关键字internal表示服务的实现由inetd自己实现。

vi /etc/xinetd.conf


defaults
{
instances = 60
log_type = SYSLOG daemon info
log_on_success = HOST PID
log_on_failure = HOST
cps = 25 30
}
includedir /etc/xinetd.d

关于上述内容的说明:

- instances = 60:表示最大连接进程数为60个。
- log_type = SYSLOG daemon info:表示使用syslog进行服务登记。
- log_on_success= HOST PID:表示设置成功后记录客户机的IP地址的进程ID。
- log_on_failure = HOST:表示设置失败后记录客户机的IP地址。
- cps = 25 30:表示每秒25个入站连接,如果超过限制,则等待30秒。主要用于对付拒绝服务攻击。
- includedir /etc/xinetd.d:表示告诉xinetd要包含的文件或目录是/etc/xinetd.d。

vi /etc/xinetd.d/telnet


service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}

关于上述内容的说明:

- disable = no:表示启用这个服务。
- socket_type = stream:表示服务的数据包类型为stream。
- wait = no:表示不需等待,即服务将以多线程的方式运行。
- user = root:表示执行此服务进程的用户是root。
- server = /usr/bin/in.telnetd:启动程序的位置。
- log_on_failure += USERID:表示设置失败时,在/etc/xinetd.conf中设置的default值基础之上还把UID添加到系统登记表。

表22.3  xinetd配置的常用参数

参    数

取    值

含    义

id

有意义的字符串

该服务的唯一名称

type

RPC/INTERNAL/UNLISTED

指定特殊服务的类型。RPC用于RPC服务;INTERNAL用于构建到xinetd内部的服务;UNLISTED用于非标准服务

disable

yes/no

是否禁用该服务

socket_type

stream/dgram

网络套接口类型。TCP服务用stream,UDP服务用dgram

protocol

tcp/udp

连接使用的通信协议

wait

yes/no

xinetd是否等待守护进程结束才重新接管该端口

server

路径

服务器二进制文件的路径

server_args

参数

提供给服务器二进制文件的命令行参数

port

端口号

该服务所在的端口

user

用户名

服务器进程应该由哪个用户身份运行

nice

数字

服务器进程的谦让度。参考10.7节

instances

数字/UNLIMITED

同时启动的响应数量。UNLIMITED表示没有限制

max_load

数字

调整系统负载阈值。如果实际负载超过该阈值,就停止服务

only_from

IP地址列表

只接受来自该地址的连接请求

no_access

IP地址列表

拒绝向该IP地址提供服务

log_on_failure

列表值

连接失败时应该记录到日志中的信息

log_on_success

列表值

连接成功时应该记录到日志中的信息

表22.4  和日志记录有关的取值

适  用  于

描    述

HOST

二者皆可

记录远程主机的地址

USERID

二者皆可

记录远程用户的ID

PID

log_on_success

记录服务器进程的PID

EXIT

log_on_success

记录服务器进程的退出信息

DURATION

log_on_success

记录任务持续的时间

ATTEMPT

log_on_failure

记录连接失败的原因

RECORD

log_on_failure

记录连接失败的额外的信息

注意:USERID标志会向远程主机询问建立连接的用户信息,这样总会造成明显的延时,因此应该尽可能避免使用USERID。

这三个文件,前两个是配置xinetd的,telnet则是在xinetd里放开telnet服务用的。类debian的系统如Ubuntu里必须配置inetd.conf,这点和Redhat这类系统里通过chkconfig telnet on来实现的做法不同。

5.5 service xinetd restart 重启xinetd服务(telnet服务是由xinetd守护进程来管理的)

5.6 执行命令netstat -tna 查看监听端口是否已经起来了。

tcp 0 0 0.0.0.0:23  0.0.0.0:*    LISTEN  出现类似的这一行表示开始监听端口23 (默认的telnet服务监听的TCP端口)

5.7 执行命令ifconfig eth0 查看服务器的ip地址。

inet addr:192.168.1.10  (addr:后面就是服务器的ip)

5.8 在远程客户机的终端窗口里执行 telnet 192.168.1.10 即可。

关于telnet服务的安全性问题及xinetd的配置请参考以下网页

阅读(2355) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~