扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
一、 SSH服务器工作原理
1.传统远程登录安全隐患
在异构网络中,很多用户选择Solaris 10作为网络操作系统,利用其简单的配置和用户熟悉的图形界面提供Internet服务,Telnet便是其提供的服务之一。Telnet最基本应用就是 用于Internet的远程登录,共享远程系统中的资源。它可以使用户坐在已上网的电脑键盘前通过网络进入的另一台已上网的电脑,并负责把用户输入的每个字符传递给主机,再将主机输出的每个信息回显在屏幕上。这种连通可以发生在同一房间里面的电脑或是在世界各范围内已上网的电脑。Telnet服务与其他网络应用一样属于客户机/服务器模型,一旦连通后,客户机可以享有服务器所提供的一切服务。
但是传统的网络服务程序telnet在本质上都是不安全的,因为它在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式,就是“中间人”冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”转手后做了手脚之后,就会出现很严重的问题。
2.SSH能保护什么
SSH可以防止IP地址欺骗、DNS欺骗和源路径攻击。SSH提供给用户身份认证的主要方法就是使用公共密钥加密法。根据所用SSH版本的不同,可以采用RSA或者Diffie-Helman和数字签名标准来实现。也可以选择使用各种不同的身份认证方法,包括公共密钥法、rhosts/shosts认证法和密码认证,这些方法都很简单安全。的确,利用SSH即便是使用.rhosts认证方式也能确保安全性。SSH所提供的是通过网络进入某个特定账号的安全方法。每个用户都拥有自己的RSA密钥。通过严格的主机密钥检查,用户可以核对来自服务器的公共密钥同先前所定义的是否一致。这样就防止了某个用户访问一个他没有相应公共密钥的主机。注意如果你想了解更多有关RSA、公共密钥加密和身份认证的知识,只需进行很小的修补,SSH就能保护一些不安全的连接,如X窗口。这将帮助你提高所管理的网络连接的安全性。由于SSH提供了主机身份认证,利用公共密钥而不是IP地址,所以它使网络更加安全可靠,并且不容易受到IP地址欺骗的攻击。这有助于辨认连接到你系统上的访问者身份,从而防止非法访问者登录到你的系统中。如果用户或系统打算采用rhosts/shosts的身份认证方式,主机就面临着公共密钥和私人密钥信息交换的挑战。否则,就得使用其他认证方式。在认证发生之前,会话已经通过对称密钥技术进行了加密,如DES、三重DES、IDEA、Twofish或Blowfish。这就使得会话自身被加密,从而防止了别人在你输入或同别人聊天时截取你的信息。同时也意味着你所输入的密码不会被他人读取,因为它也被加密了。加密技术基本上可以防止有人监听你的数据,同时也确保了数据的完整性,即防止有人肆意篡改你的信息和数据。表1列出了SSH所能防范的网络攻击。
表1 SSH可以防范的网络攻击类型
网络攻击类型 |
网络攻击简述 |
数据包欺骗 |
某IP数据包并不是你的,但被伪造成了你的。 |
IP或者主机欺骗 |
IP或主机名被中间人使用了。 |
口令截获 |
中间人从网上截获了含有你口令的数据包。 |
网络嗅探 |
中间人从网上读取你的包,破解分析其内容。SSH通信是加密的,即使截获会话内容,也不能将其解密。 |
插入攻击 |
这种攻击可以客户和服务器之间发送的正文数据流之间插入任意数据。ssh1 1.2.25后和openssh的所有版本都专门进行了设计,来检测并防止这种攻击。这种检测程序增大了插入攻击的难度,但是并不能完全防止。ssh2使用强加密完整性检测手段来防止这个问题。可以用3DES算法来防止这种攻击。 |
说明:3DES算法是系统加密算法,其符合OpenPGP标准。它基于DES,使用3个独立的56bit密钥对交换的信息进行3次DES加密,使其有效长度达到168bit。 3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),是DES的一个更安全的变形。它以DES为基本模块,通过组合分组方法设计出分组加密算法,多年来,它在对付强力攻击时是比较安全的。
SSH所不能保护的网络攻击:尽管SSH提供了大量的安全措施,但它仍不能为你的系统提供完全的在线保护。SSH并不
能堵住所有其他端口上的全部漏洞:包括NFS攻击等。
3. SSH服务器和客户端工作流程
SSH服务器和客户端工作流程如图13-1。
图1 SSH服务器和客户端工作流程
1. SSH客户端发出请求连接SSH服务器,通常使用22端口;
2. SSH检查申请SSH客户端数据包和IP地址;
3. 如果客户端通过安全验证,SSH服务器发送密钥给ssh客户;
4. 本地sshd守护进程将密钥会送到远程sshd 服务器。
客户端会生成一个或者文件,其中储存服务器的密钥。密钥内容通常如下:
server1024 35 0744831885522065092886345918214809000874876031312
6632026365561406995692291726767198155252016701986067549820423736
3937365939987293508473066069722639711474295242507691974151195842
9560631766264598422692206187855359804332680624600001698251375726
2927556592987704211810142126175715452796748871506131894685401576
4183
另外客户端的私有密钥存储在Identity 文件中。客户端的公共密钥存储在Identity.pub文件中, 密钥内容通常如下:
1024 37 25909842022319975817366569029015041390873694788964256567
2146422966722622743739836581653452906032808793901880289422764252
4259614636549518998450524923811481002360439473852363542223359868
1146192539619481853094466819335629797741580708609505877707742473
7311773531850692230437799694611176912728474735224921771041151
这样至此为止ssh客户端和远程SSH服务器建立了一个加密会话。
二、在Solaris 10服务器上配置ssh服务
SSH(Secure Shell)最初由芬兰的一家公司开发,但由于受版权和加密算法的限制,很多人转而使用免费的替代软件OpenSSH。SSH是由客户端和服务端的软件组成的,有两个不兼容的版本,分别是:1.x和2.x。用SSH 2.x的客户程序是不能连接到SSH 1.x的服务程序上去的。OpenSSH 2.x同时支持SSH 1.x和2.x
solaris10使用的ssh服务器是opensshd,当然也有付费的商业版本的sshd出售。就目前的情况看来,openssh已经在你安装操作系统的时候默认安装在系统上了,而且这个服务会随系统自动运行。可以使用命令svcs查看ssh是否正常运行,如图2 如果已经正常运行可以关闭不安全的telnet服务。
图2 关闭不安全的telnet服务
下面需要理解OPENSSH配置文件/etc/ssh/sshd_config。
“/etc/ssh/sshd_config” 配置文件是OpenSSH的配置文件,允许设置选项改变这个守护进程的运行。这个文件的每一行包含“关键词-值”的匹配,其中“关键词”是忽略大小写的。下面列出来的是最重要的关键词。编辑“sshd_config”文件(vi /etc/ssh/sshd_config),加入或改变下面的参数(#后是说明文字):
Protocol 2 #使用版本2协议#
Port 22
# “Port”设置sshd监听的端口号。#
ListenAddress ::
#“ListenAddress”设置sshd服务器绑定的IP地址。#
AllowTcpForwarding no#是否许可端口转发#GatewayPorts no #是否许可使用网关端口#X11Forwarding yesX11DisplayOffset 10X11UseLocalhost yes
#“X11Forwarding”设置是否允许X11转发。#
PrintMotd no
#“PrintMotd”设置sshd是否在用户登录的时候显示“/etc/motd”中的信息。#
KeepAlive yes SyslogFacility authLogLevel info
#“LogLevel”设置记录sshd日志消息的层次。INFO是一个好的选择。查看sshd的man帮助页,已获取更多的信息。#
HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key
#“HostKey”设置包含计算机私人密匙的文件。#
ServerKeyBits 768 #“ServerKeyBits”定义服务器密匙的位数。#
KeyRegenerationInterval 3600
#“KeyRegenerationInterval”设置在多少秒之后自动重新生成服务器的密匙(如果使用密匙)。重新生成密匙是为了防止用盗用的密匙解密被截获的信息。#
StrictModes yes
# StrictModes”设置ssh在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有权。这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限#
LoginGraceTime 600MaxAuthTries 6MaxAuthTriesLog 3PermitEmptyPasswords no#是否许可空密码登录#PasswordAuthentication yes
#“PasswordAuthentication”设置是否允许口令验证。#
PAMAuthenticationViaKBDInt yesPermitRootLogin no#是否许可root用户登录## sftp subsystemSubsystem sftp /usr/lib/ssh/sftp-serverIgnoreRhosts yesRhostsAuthentication noRhostsRSAAuthentication no
#“RhostsAuthentication”设置只用rhosts或“/etc/hosts.equiv”进行安全验证是否已经足够。#
RSAAuthentication yes
#“RSAAuthentication”设置是否允许只有RSA安全验证。#
另外一个配置文件是“/etc/ssh/ssh_config”文件是OpenSSH系统范围的配置文件,允许你通过设置不同的选项来改变客户端程序的运行方式下面逐行说明上面的选项设置:
Host * :选项“Host”只对能够匹配后面字串的计算机有效。“*”表示所有的计算机。
ForwardAgent no :“ForwardAgent”设置连接是否经过验证代理(如果存在)转发给远程计算机。
ForwardX11 no :“ForwardX11”设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAY set)。
RhostsAuthentication no :“RhostsAuthentication”设置是否使用基于rhosts的安全验证。
RhostsRSAAuthentication no :“RhostsRSAAuthentication”设置是否使用用RSA算法的基于rhosts的安全验证。
RSAAuthentication yes :RSAAuthentication”设置是否使用RSA算法进行安全验证。
PasswordAuthentication yes :“PasswordAuthentication”设置是否使用口令验证。
FallBackToRsh no:“FallBackToRsh”设置如果用ssh连接出现错误是否自动使用rsh。
UseRsh no :“UseRsh”设置是否在这台计算机上使用“rlogin/rsh”。
BatchMode no :“BatchMode”如果设为“yes”,passphrase/password(交互式输入口令)的提示将被禁止。当不能交互式输入口令的时候,这个选项对脚本文件和批处理任务十分有用。
CheckHostIP yes :“CheckHostIP”设置ssh是否查看连接到服务器的主机的IP地址以防止DNS欺骗。建议设置为“yes”。
StrictHostKeyChecking no :“StrictHostKeyChecking”如果设置成“yes”,ssh就不会自动把计算机的密匙加入“$HOME/.ssh/known_hosts”文件,并且一旦计算机的密匙发生了变化,就拒绝连接。
IdentityFile ~/.ssh/identity :“IdentityFile”设置从哪个文件读取用户的RSA安全验证标识。
Port 22 :“Port”设置连接到远程主机的端口。
Cipher blowfish :“Cipher”设置加密用的密码。
EscapeChar ~ :“EscapeChar”设置escape字符。
你可以修改这两个配置文件以获得更好的安全性。
三、使用Windows客户端管理服务器
作为远程访问的那些机器,必须要有ssh客户端才可以连接到sshd服务器上。大部分情况下,我们的远程访问机器的系统都可能是windows环境,windows自己没有自带ssh客户端程序,这需要我们自己在windows上安装ssh客户端程序。有很多ssh客户端程序可供选择,笔者个人的偏好是WinSCP和putty,考虑到会经常从windows机器复制文件到solaris 10上或者下载文件,为方便操作起见,建议使用 WinSCP。
WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能就是在本地与远程计算机间安全的复制文件。这是一个中文版的介绍。使用WinSCP可以连接到一台提供SFTP (SSH File Transfer Protocol)或SCP (Secure Copy Protocol)服务的SSH (Secure Shell)服务器,通常是SOLARIS 10服务器。SFTP包含于SSH-2包中,SCP在SSH-1包中。两种协议都能运行在以后的SSH版本之上。WinSCP同时支持SSH-1和SSH-2。 WinSCP通过构建于ssl或ssh2安全认证的客户机/服务器系统进行传输,为vpn、wan、extranet开发管理人员提供最经济的解决方案。
1. 获得与安装WinSCP
中文版WinSCP的汉化工作已经基本结束。可到WinSCP下载页面下载最新版本,选择多语言安装包(下载链接)。在安装过程语言选择中文。你也可以选择安装英文版,到WinSCP下载页面下载安装包。然后到翻译页面选择下载简体中文插件,将ZIP包解压缩到WinSCP安装路径。具体情况请阅读完全指导。此软件还可以结合putty,以方便用户的远程登录。
2. 主要特性
· 图形用户界面 。
· 多语言支持包括中文、英文、西班牙文、德文、意大利文、法文、捷克文 。
· 与Windows完美集成(拖拽, URL, 快捷方式) 。
· 支持所有常用文件操作 。
· 支持基于SSH-1、SSH-2的SFTP和SCP协议。
· 支持批处理脚本和命令行方式 。
· 多种半自动、自动的目录同步方式 。
· 内置文本编辑器 。
· 支持SSH密码、键盘交互、公钥和Kerberos(GSS) 验证 。
· 通过与Pageant(PuTTY Agent)集成支持各种类型公钥验证 。
· 提供Windows Explorer与Norton Commander界面 。
· 可选地存储会话信息 。
· 可将配置文件存于注册表,适合在移动介质上操作 。
3. WinSCP软件安装和使用
WinSCP软件安装过程中首先是语言选择(中文)然后设置WinSCP其他选项。然后一直按「下一步」直到完成。 WinSCP登录设置如图-3.。
图3 WinSCP登录设置
注意此时应当打开防火墙的相应端口。第一次使用WinSCP来连接远程服务器,WinSCP 会出现一询问对话框,问你是否要将远程服务器的公钥 ( 为了避免远程机器被仿冒,每台 SSH 服务器均有不同的公钥 ) 储存在本地计算机的登录文件中,若要继续联机,请按下“是”按钮,如图4。
图4 首次登录界面设定
如果你是第一次使用WinSCP,建议选择Windows Explorer界面,因为Windows用户比较熟悉这个界面。当然,如果你习惯Norton Commander风格,就选择Norton Commander界面,它注重于方便的键盘操作,你完全可以脱离鼠标,更快地进行操作。这两种可选界面都允许用户管理远程或本地的文件。笔者更加喜欢后者所以以后操作以Norton Commander界面为例。你可以在安装时选择喜欢的界面。也可以以后改变设置。 WinSCP可以执行所有基本的文件操作,例如下载和上传。同时允许为文件和目录重命名、改变属性、建立符号链接和快捷方式。如果要从Solaris 10服务器下载文件直接使用鼠标从远程窗口拖曳到windows桌面即可。然后在对话框选择“”即可。
图5 从Solaris 10服务器下载文件
上传文件到Solaris 10服务器也可以直接使用鼠标从windows目录拖曳到远程Solaris 10目录窗口即可。
4. 在WinSCP中使用Solaris 10命令
虽然Solaris 10桌面应用发展很快,但是命令在Solaris 10中依然有很强的生命力。Solaris 10是一个命令行组成的操作系统,精髓在命令行,无论图形界面发展到什么水平这个原理是不会变的,Solaris 10命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。在WinSCP中使用Solaris 10命令方法如下使用鼠标点击“主菜单“-“命令”-“打开终端”命令执行界面如图6。
图6在WinSCP中使用Solaris 10命令
WINSCP常用快捷键:
F2 重新命名文件或者目录;
F4 编辑文件;
F5 复制 文件或者目录;
F6 移动文件或者目录;
F7 创建目录 ;
F8 删除文件或者目录
F9 查看文件属性;
F10 强行退出WINSCP;
F1打开在线线帮助文档:http://winscp.net/eng/docs/
另外WinSCP可以自动调用putty软件执行Solaris 10的绝大多数命令。方法如下使用鼠标点击“主菜单“-“命令”-“在Putty中打开”命令执行界面如图-11 。
图7 WinSCP自动调用putty
5.使用putty
Windows环境下的putty工具目前使用得相当普遍,可以从网上免费下载(下载地址)。目前网上的最新版本为: putty 0.58,对该版本进行安装后,Putty是一个免费的Windows 32平台下的telnet、rlogin和ssh客户端,但是功能丝毫不逊色于商业的类工具。用它来远程管理unix十分好用,其主要优点如下:
· 完全免费;
· 在Windows 9x/NT/2000/XP/2003下运行的都非常好;
· 全面支持ssh1和ssh2;
· 绿色软件,无需安装,下载后在桌面建个快捷方式即可使用;
· 操作简单,所有的操作都在一个控制面板中实现。
(1)应用入门
以 windows 2003为例,其他 windows 操作系统依此类推。
启动 putty,屏幕上将弹出图8所示窗口
图8 putty配置窗口
在“Host Name (or IP address)”栏中填入OPENSSH的IP地址或者域名,选择SSH方式登录确保22端口点击右下角的“Open”即可。见图9 。
图9 putty登录配置窗口
6.首次登录界面设定
第一次使用 PuTTY 来连接远程服务器, PuTTY 会出现一询问对话框,问你是否要将远程服务器的公钥 ( 为了避免远程机器被仿冒,每台 SSH服务器均有不同的公钥 ) 储存在本地计算机的登录文件中,若要继续联机,请按下“是”按钮,见图10。
图10 首次登录界面设定
登录过程界面截图见图11 。
图11 登录过程截图
说明:首先输入使用者名称 (若输入错误,无法更改,请重新开启 PuTTY会话) 然后输入密码即可完成连接。
7、其他软件包
PUTTY实际包括一组软件共6个。其中使用最多的是putty.exe ,现在就开始介绍 PuTTY 所提供的其它各项软件及其功能。
PSCP :提供 SCP client 的功能(安全加密的网络档案拷贝,使用命令提示列)。
PSFTP :提供 PSFTP client 的功能。
PuTTYtel :PuTTYtel 软件是 PuTTY 的简化版本,它仅少了 SSH 联机功能,其它的功能以及操作接口都与 PuTTY 相同,
Plink :提供 SSH client ,使用命令提示列。
Pageant :SSH 认证通行码的代理程序。
PuTTYgen :提供产生RSA金钥的工具。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。