扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
来源: 2007年09月27日
关键字:unix telnet ssh Solaris Solaris 10
一、SSH和telnet的对比
SSH对于传统的远程访问工具,比telnet是一个巨大的进步,所有的站点都应该断开telnet而使用SSH。使用 SSH 工具将会增进你的系统安全性。 所有使用 SSH 工具的通讯,包括口令,都会被加密。 telnet 和 ftp 使用纯文本口令,并被明文发送。这些信息可能会被截取,口令可能会被检索,然后未经授权的人员可能会使用截取的口令登录进你的系统而对你的系统造成危害。你应该尽可能地使用 SSH 的工具集合来避免这些安全问题。 另一个使用SSH 的原因是,它自动把 DISPLAY 变量转发给客户机器。换一句话说,如果你在本地机器上运行 X 窗口系统,并且使用 ssh 命令登录到了远程机器上,当你在远程机器上执行一个需要 X 的程序时,它会显示在你的本地机器上。如果你偏爱图形化系统管理工具,却不能够总是亲身访问该服务器,这就会为你的工作大开方便之门。
二、解读Unix的 r 命令集
最初,UNIX的r命令集是为了提高Telnet的安全性而开发的,使用时不必在网上以明码方式输入密码(那时它是非常成功的)。r服务也提供了主机名或IP地址认证,Telnet却不能做到这些。r命令的主机名和用户名认证标志着伯克利服务是在网络安全连接方面有着重大影响的一步。UNIX的r命令引用了一系列的文件,允许与另一个主机建立一种无缝连接。这些命令包括远程登录(rlogin)、远程shell(rsh)和远程拷贝(rcp)。这三种服务都有属于自己的端口。可以查看你系统中的/etc/services文件,以确定实际的端口号。最普遍的是512用作rsh的端口号;513给rlogin;514给rexec。余下的命令使用各种不同的端口,一般通过远程过程调用(RPC服务)。这些客户端大多有自己的守护进程来完成控制,如远程shell守护进程rshd,远程执行守护进程in.rexecd、远程查询命令in.rwhod。这些进程大多可由超级进程inetd来维护。图1显示了rlogin识别与验证过程:
图1 rlogin识别与验证过程
三、SSH在Solaris 10 的工作流程SSH是简单的基于安全的客户端和服务器的解决方法。它提供了远程访问的身份验证序列的对称的和不对称的加密。它可以在客户端替代Telnet应用程序,这里的客户端可以是Solaris、windows以及其他的操作系统。SSH工作在TCP/IP层上使用一般的传输层加密机制,它使用流行的Blowflsh或者DES算法作为加密引擎。加密技术的使用使得客户程序和服务器端会话的内容容除了他们自己以外,不可能被别人知道除了对会话数据进行加密和验证序列也可以使用RSA加密进行,这意味用户名和口令不可能被第三方探测。ssH还自动提供了图形应用程序,它基于X11窗口系统,是对只有文个形式的Telnet客户程序是一个很大的提高。图2显示了SSH客户程序与服务器进行连接的过程:
图2 SSH客户程序与服务器进行连接的过程
客户端连接到服务器的端口(通常是22端口)
服务器可以使用标准公共RsA主机密钥(1024位).也可以使用每个小时更换一次的768位RSA服务器密钥回复。因为服务器密钥诲小时更换一次,即使是一个会话通信的密钥被被解,历史数据仍然处加密状态,这限制了攻击的效能。
服务器可以配置为拒绝不能识别的卞机的连接,但是在默认情况下,它接受任何客户端的连接。
如果连接请求被接受,客户产生一个由256位随机数字组成的会话密钥,并选择一种服务器支持的加密算法(三重DEs,或者Blowfish)。
客户使用主机和服务器密钥利用RsA加密会话密钥,向服务器返回加密后的密钥。
服务器解密会话密钥启动服务器和客户的加密功能。
如果选择了默认的安全机制,客户通过安全通道向服务器发送用户名和口令。
只要服务器具有一个可接受的密钥列表,我们可以允许具有恰当私有Rsn密钥的客户登录而个需要用户名/口令身份验证序列。然而如果客户的计算机被偷,私有密钥被恶意用户窃取,他们需使用有效的用户名和口令就可以访问服务器。客户端会生成一个或者文件,其中储存服务器的密钥。另外客户端的私有密钥存储在Identity 文件中。客户端的公共密钥存储在Identity.pub文件中, 这样至此为止ssh客户端和远程SSH服务器建立了一个加密会话。
四 、启用ssh服务器solaris10使用的ssh服务器是openssh,当然也有付费的商业版本的sshd出售。就目前的情况看来,openssh已经在你安装操作系统的时候默认安装在系统上了,而且这个服务会随系统自动运行。可以使用命令svcs查看ssh是否正常运行。
1 启动ssh服务
svcs –a|grep ssh
svcs -l network/ssh:default
2 关闭不安全的telnet
查看telnet服务的状态:
# inetadm |grep telnet
enabled online svc:/network/telnet:default
禁用telnet服务
# inetadm -d telnet
重新查看telnet服务的状态:
# inetadm |grep telnet
3 关闭不安全rlogin服务
# svcs -D network/login:rlogin
# svcadm disable network/login:rlogin
STATE STIME FMRI
# svcs network/login:rlogin
STATE STIME FMRI
disabled 11:17:24 svc:/network/login:rlogin
4 命令行使用ssh 客户端命令
要登录到远程计算机host.example.com的smith用户账号中,可以使用这个命令:
# ssh -l smith host.example.com
客户端可以对用户进行认证,让用户使用一个加密连接连往远程计算机的SSH服务器上(也就是说用户名和密码在离开本地主机之前都是经过加密的)。然后SSH服务器就允许用户登录进来,整个登录会话在客户端和服务器之间传输时都是经过加密的。因为加密是透明的,所以用户根本就觉察不出telnet和这种类似于telnet的SSH客户端之间有什么区别。
五、使用putty远程登录ssh服务器Windows环境下的putty工具目前使用得相当普遍,可以从网上免费下载。官方網站:http://www.chiark.greenend.org.uk/~sgtatham/putty/;目前网上的最新版本为: putty 0.58,对该版本进行安装后,Putty是一个免费的Windows 32平台下的telnet、rlogin和ssh客户端,但是功能丝毫不逊色于商业的类工具。用它来远程管理unix十分好用。
图3使用putty远程登录ssh服务器
sshd的默认配置是不用许root用户直接登录,如果你想冒这个风险用root来登录,可以通过修改sshd的配置文件sshd_config打开这个配置文件,把行”permitrootlogin no”改成“permitrootlogin yes”,重启sshd服务即可生效。
“/etc/ssh/sshd_config” 配置文件是OpenSSH的配置文件,允许设置选项改变这个守护进程的运行。另外一个配置文件是“/etc/ssh/ssh_config”文件是OpenSSH系统范围的配置文件,允许你通过设置不同的选项来改变客户端程序的运行方式。具体参数可以查看笔者前文:使用OPENSSH构建安全的远程登录服务器 。
总结:
对于商业应用程序强制使用ssH远程访问策略进行交互式登录是明智的。在服务器上使用ssH守护进程,并且删除在/etc/services 和/etc/inetd.conf.文件中的Telnet和rlogin。