网站地图
zenghuilan.com
生活小窍门 解释生活中的一切名词
REXEC 发布于:

REXEC是服务的远程计算机上运行命令。rexec 命令在执行指定命令前,验证远程计算机上的用户名,只有安装了 TCP/IP 协议后才可以使用该命令。

rexec的网络通信细节

rexec服务侦听512/TCP口,而512/UDP口对应biff服务。

rexec -a -l <username> -p <password> <host> <command>

rexec建立到rexecd的TCP连接(512/TCP),发送如下请求数据:

[port]\0<username>\0<password>\0<command>\0

port

ANSI字符串形式的端口号,不是短整型形式的端口号。用途同rsh,stderr会重

定向到回连的TCP连接上。但对port没有范围限制,可任意指定。

此外,主连接(512/TCP)的源端口没有范围限制,这与rsh、rlogin通信不同。

username

试图远程使用的服务端用户名,最长16个字符。

password

与username对应的明文口令,最长16个字符。

command

试图远程使用的服务端命令,也有长度限制,不过比较大。

rexecd向rexec发送如下响应数据:

<ret><data>

ret等于0x00表示成功,data对应执行结果,一般是\n分隔、结尾的文本。

ret等于0x01表示失败,data对应错误信息,一般也是\n分隔、结尾的文本。

rexec通信过程与rsh通信过程极其相似,甚至连那个变态的port字段都一个用途。显

然应尽量不提供port字段。rexec通信过程中口令以明文形式传递,很不安全。这个

服务好像并没有考虑暴力穷举猜测口令的事,实在是个不该开放的服务。

1) Linux

rexec -a -l <username> -p <password> <host> <command>

-a的作用就是不提供port字段,缺省没有指定-a。

in.rexecd会对客户端IP进行反向域名解析,解析不成功的话向客户端返回错误信息

并终止服务进程。没有命令行开关改变这种行为,解决方案是在/etc/hosts中为客户

端IP增加相应条目。

2) Solaris

在我手头的Solaris 8上没找到rexec命令。

in.rexecd不会对客户端IP进行反向域名解析。没有命令行开关改变这种行为。

3) Aix

rexec -a -n <host> <command>

-a的作用同上。指定-n,rexec将交互式获取username/password。

rexecd会对客户端IP进行反向域名解析,解析不成功的话向客户端返回错误信息并终

止服务进程。解决方案有两种,一是在/etc/hosts中为客户端IP增加相应条目,二是

修改/etc/inetd.conf中rexecd的命令行,增加命令行开关"-c",取消反向域名解析。


相关文章推荐:
运行命令 | 运行命令 | ANSI | 口令 | 反向域名解析 |