随着系统管理员逐渐放弃运行telnetd和FTPD服务,转而采用SSHD服务,许多管理员正从>system>stcp>services文件中移除"telnet"和"FTP"服务行。
#Name port Service Alias#ftpdata 20/tcpftp 21/tcp ftpdtelnet 23/tcp telnetdsmtp 25/tcpbootps 67/udp bootpdbootpc 68/udp bootp. . . . . . |
图1 – >system>stcp>services 文件中的 telnet 和 FTP 条目
若您仍需运行telnet和/或FTP客户端与其他主机通信,这将引发问题。
telnet 172.16.1.34telnet: tcp/telnet: unknown serviceready 09:30:15 ftp 172.16.1.34ftp: ftp/tcp: unknown serviceready 09:30:26 |
图2 – 因缺少服务条目导致的telnet和FTP客户端错误
原因是telnet和FTP客户端使用getservbyname函数来确定应连接的端口号。该函数会读取服务文件,若该文件中不存在"telnet"和/或"ftp"服务名称,函数将不返回端口号,导致客户端终止连接。
Telnet客户端允许您通过在命令行上提供端口号来绕过此函数调用。
telnet 172.16.1.34 23Trying...Connected to 172.16.1.23.Escape character is '^]'. login: |
图3 – 为Telnet客户端提供端口号
FTP客户端没有此选项。
服务文件仅是一个将服务名称映射到端口号和协议的平面文件数据库。删除其中的“telnet”和“ftp”行并不能有效提升模块的安全级别,因为这些条目存在于文件中并不意味着相关服务会自动运行。除非您确定所有用户都永远不需要使用telnet和FTP客户端,否则应保留服务文件中的这些条目。
