在一些设置中,我们常会遇到Telnet服务的问题。这里我们主要讲解一下Linux下的Telnet的替换问题。那么首先让我们了解一下系统环境。不知道您有没有发现,最近的Linux套件中,都将Telnet的功能自『预设启动』的条件,改为需要由使用者开启的状态?也就是说,RedHat在7.x版本以后,如果您需要Telnet服务,那么你就必须要自行启动他,因为他已经被排除在『预设启动』的服务项目之外了!为什么呢?这是由于Telnet服务本身在传送资料或者是在进行任何工作的时候,都是以『明码』的状态来传送指令,这样一来,当有心人士以listen的功能监听你的资料封包时,那么你所传送的资料将会被撷取而遭到窃取了!所以,基本上,那是非常不安全的一种传输资料方式!因此,在最近所释出的Linux版本中,例如RedHat7.x版本,他们的Telnet服务就已经不再是『预设启动』的功能了!
那如果我们要从远端连线到主机的话,应该怎么办?既然使用Telnet这种明码的方式行不通的话,那么我们要使用何种方式呢?呵呵,现在有更好的方式来提供喔!那就是使用openssh这个套件啦!这个SSH的服务,最重要的是可以使用『非明码』的方式来传送你所键入的资料封包,也就是说,你的资料在网路上,即使被监听而遭窃取了,由于SSH是一种加密过后的封包,故而即使被窃取了,该资料要经过解密也不是三天两头的事情,所以呢,就可以比较安全的工作啦!此外,SSH同时也提供配合PAM的安全模组,与TCPWrappers的封包限制(也就是/etc/hosts.allow与/etc/hosts.deny的机制),因此呢,安全性也就比较高一些啰!此外,最便利的一点是,你可以使用root的身份经由ssh登入你的主机喔!
好了!底下我们就来说一说,要如何将你的Telnet改成以ssh来连接呢?由于RedHat7.x以后,预设的ssh是『开启』的状态,所以你几乎不需要任何设定就可以使用ssh啰,那如果是RedHat6.x以前的系统呢?那也很简单的,你只要安装底下两个套件(假如您安装RedHat6.x是以完全安装为主)就可以啰!
主机系统的SSH建置:
◆RedHat7.x系统:
由于RedHat7.x系统本身就已经开启了sshd了,所以你可以直接以ssh来连上你的主机啰!不过,如果没有正常开启SSH的话,那样要如何启动呢?也是很简单的,你可以这样:
1.以『/usr/sbin/setup』程式进入setup的话面中;
2.选择『SystemServices』这个项目;
3.然后向下移动到『[*]sshd』,将[*]勾选(按下空白键即可);
4.然后以tab按键移动到『OK』按下enter;
这样就设定完开机启动了!然后以底下的方式来启动ssh服务:
/etc/rc.d/init.d/sshdstart
来启动sshd这个服务,要知道有没有正常的启动ssh呢?呵呵,只要输入底下的指令:
netstat-a|more
如果一切正常的话,你将会看到类似底下的这一行:
tcp00*:ssh*:*LISTEN
那就表示ssh已经成功的启动了!不过,如果万一你的Linux系统并没有安装ssh这个服务呢?呵呵!那就安装他吧!其实,ssh这支服务的主要程式称为openSSH啰!然后,如果您想要重先安装openssh来提供ssh的服务,那么RedHat的网站上随时更新的Errata您就不能不去看看!你可以按底下的连结上去RedHat下载属于您系统的***的openssh这个套件!
小红帽的Errata网页
然后按下您的RedHat版本,进入后,去寻找openssh字眼的套件,那个就是啦!然后按下连结之后,直接找到属于您的系统版本,例如我都是直接捉i386的RPM档案,然后回来以root身份执行:
rpm-ivhopenssh*
如果您只是要升级openssh的话,那就使用:
rpm-Uvhopenssh*
更有甚者,直接以up2date来升级,(不过会比较慢一些喔!)
up2date-iopenssh
升级成功之后,就可以直接的以上面的方式来启动ssh这个服务了!
VBird的经验在上一次更新openSSH套件的时候,那是因为网路上发表了旧的openssh可能有些安全方面的问题,所以VBird就去更新了,但是没想到更新完成之后SSH竟然不会动!当真是吓了一大跳!后来,找了一些档案之后,才发现,原来预设的PAM模组的属性搞错了!你可以到/etc/pam.d这个目录下去看一下,会发现sshd的属性竟然是600,与其他的档案属性都不同,后来执行了:chmod644sshd就OK啰!如果你也更新之后发现有这个问题,可以参考看看啰!
◆RedHat6.x以前版本的Linux启动ssh服务:
好了,那么要如何的在RedHat6.x以前的版本上执行ssh这个服务呢?其实也是很简单的,如前所说的,ssh其实是openssh套件的一种,而openssh有使用到openssl这个资料保密的套件,(其实还有其他的套件需要安装,不过,由于我这里预设条件是您已经用『完整安装』来安装您的Linux系统,所以其他的套件应该都已经安装完整了才对!)VBird不是很建议使用RPM来安装openssh,因为在RedHat6.x以前的版本上面安装openssh的RPM实在是太麻烦了!所以,我们就使用tarball的方式来安装吧!#p#
下载openssl与openssh:
到哪里下载呢?直接到他们的网站上去看看相关的讯息吧!到目前为止(2002/01/18),openssh***版本为3.0.2(2001/12/3释出),而openssl***则是0.9.6c(2001/12/21)这个版本:
openSSH网站
openSSL网站
或者您也可以在这里下载OpenSSH与OpenSSL这两个档案.
安装:
由于openssh会使用到openssl的资料,所以当然需要先安装openssl之后,在安装openssh啰:
[root@tsairoot]#cd/usr/local/src[root@tsaisrc]#tar-zxvf/root/openssh-3.0.2p1.tar.gz[root@tsaisrc]#tar-zxvf/root/openssl-0.9.6c.tar.gz[root@tsaisrc]#cdopenssl-0.9.6c[root@tsaiopenssl-0.9.6c]#./config--prefix=./usr/local/openssl将资料安装在/usr/local/openssl这个目录,这样安装的好处是,往后在移除该套件较为容易!直接移除该目录就好了!.[root@tsaiopenssl-0.9.6c]#make开始编译啰![root@tsaiopenssl-0.9.6c]#maketest测试一下是否正常,应该不会有问题才是![root@tsaiopenssl-0.9.6c]#makeinstall安装到/usr/local/openssl中啰!安装好openssl之后,他的函式库马上就自动启动了!然后开始安装openssh吧![root@tsaiopenssl-0.9.6c]#cd./openssh-3.0.2p1[root@tsaiopenssh-3.0.2p1]#./configure--prefix=/usr/local/openssh--with-pam--with-tcp-wrappers注意喔!上面是同一行喔!--with-pam在加入PAM模组的安全防护,而--with-tcp-wrappers则是加入TCPWrappers的安全防护啰!.[root@tsaiopenssh-3.0.2p1]#cdcontrib/redhat[root@tsairedhat]#cpsshd.pam/etc/pam.d/sshd这个步骤在将PAM这个安全模组拷贝到PAM的预设路径去,也就是/etc/pam.d这个目录啦!另外,特别注意,sshd这个档案的属性必须为644,而所有人是root才行,否则ssh不会动!![root@tsairedhat]#cd./.[root@tsaiopenssh-3.0.2p1]#make<==编译[root@tsaiopenssh-3.0.2p1]#makeinstall
上面这样就安装完毕啦!
启动:
再来就是需要启动SSH这个套件了,你应该可以到/usr/local/openssh去,进入/usr/local/openssh/sbin去执行sshd这个档案,也就是:
/usr/local/openssh/sbin/sshd
就完成启动的程序啰!如果不相信的话,那就执行netstat-a|more看看有没有ssh这个服务吧!
既然启动了ssh那么Telnet服务自然就不需要继续存在啰!没错,因为ssh可以完全取代Telnet的功能的!所以呢,请:
vi/etc/inetd.conf
找到底下这一行:
Telnetstreamtcpnowaitroot/usr/sbin/tcpdin.Telnetd
在前面加上一个注解符号『#』就可以啦!然后退出之后,执行:
/etc/rc.d/init.d/inetrestart
重新启动inet这个服务,然后以netstat-a|more看一下,Telnet服务就不见了,那我们就用ssh来取代。#p#
用户端的SSH连线软体
Linuxsysem:
好了,现在我们知道主机可以使用ssh来进行连线的服务,但是怎样在用户端(Client)执行连线的软体呢?哈哈!很简单,如果你是以Linux系统来连线的话,那么你应该可以在/usr/bin里面找到一个ssh的软体,(如果是使用tarball的话,那么ssh就会在/usr/local/openssh/bin里面啰!)你可以这样来执行连线程式:
ssh-lusernamehost.name.domain
假设我要以vbird这个帐号登入一个名为testing.adsldns.org的主机,那么就以:ssh-lvbirdtesting.adsldns.org来执行登入连线的程序!然后如果是***次登入的话,你会发现到有一个讯息,告诉你要不要接受一个认证码,直接选择yes就可以连线啰!使用ssh***的另一个好处,root也可以登入喔!
Windowssystem:
那万一你是使用Windows为Client呢?那也没问题,你可以到PuTTy的网站上下载putty这支程式:
http://www.chiark.greenend.org.uk/~sgtatham/putty/
或者是在这里下载.这支程式完全不需要安装,直接以滑鼠双击他,就会自动的执行了!
安全性的设定
好了!虽然openssh是比较安全没错,但是并不是一定安全的!所以,你仍然可以设定一些简单的安全防护来防止一些问题的发生!其实,说穿了,就是将一些你不想要让他登入的IP挡掉他就是了,然后只开放一些可以登入的IP就是了!
防火墙:
由于ssh这个服务是开启在port22,所以你可以使用ipchains或iptables来开放一些你允许的IP以port22进入!
TCPWrappers:
如果不会设定ipchains或iptables,那也没关系!刚刚我们在安装的时候不是有选择--with-tcp-wrappers吗?呵呵,这个时候就派的上用场了!你可以到/etc/hosts.allow去设定你允许的IP连线到你的主机里面,例如你允许192.168.1.1-192.168.1.255连线到你的主机,那么你可以:
sshd:192.168.1.0/24:Allow
而将其他的IP都挡掉在/etc/hosts.deny当中:
sshd:ALL:Deny
如此一来则ssh只会开放给192.168.1.1-255之间的电脑啰!以后要再开放的话,那就再将其他的IP加到/etc/hosts.allow当中去就好啰!