elnet your.IP.or.hostname』
这样就可以进入 Linux 的环境中了!很方便吧!
· telnet 安全性:iptables, TCP_Wrappers, 纯建议,
telnet 这个服务器方便归方便,但总是一个不太好的联机解决方案,因为毕竟他是一个以『明码』传输的协议,什么是『明码』呢?简单的说,当你使用 telnet 的时候,你总是会在屏幕上面输入资料吧!?最简单的例子,就是你总是要登入 telnet 的主机画面吧!那么你总是需要输入帐号与密码吧?当主机接受你的资料后才能进行确认!这个时候,你的资料就会经过 telnet 这个协议来传输到主机上面,这个传输时候的资料基本上是没有加密过的,也就是类似 ASCII 码的咚咚!如此一来的话,只要有心人士在某个 router 点去监听你的封包,而且将该资料封包捉下来,进行解读的工作,哈哈!那么你的帐号与密码就被拿走了!所以下一次,别人就可以利用你的帐号与密码了~很危险对不对~是很危险!除此之外, telnet 由于太老牌了,很多的骇客程序已经都写了破解的方式,所以激活之后,其实也很危险的啦!因此实在是建议不要启用 telnet 说!无论如何,有些朋友还是喜欢以 telnet 来联机,那么我们就提一些基本的注意事项好了!
o root 不能直接以 telnet 连接上主机:
基本上,既然 telnet 不是很安全,自然预设的情况之下就是无法允许 root 以 telnet 登入 Linux 主机的!但是,事实上, telnet 只是利用 PAM 模块来管制 root 的登入而已,因此,如果你确定你的环境够安全(例如你的主机并没有连上 Internet ),并且想要开放 root 以 telnet 登入 Linux 主机的话,请修改 /etc/pam.d/login 这个档案的第二行设定即可:
如此一来, root 将可以直接进入 Linux 主机了!不过,还是不建议如此做的!
o 加上防火墙 iptables:
针对 telnet 加设防火墙 iptables 是一个好主意!如果您已经参考了 VBird 之前写的『简易防火墙架设』一文,并且使用里面的 scripts 的话,那么不用担心 telnet 啦!基本上,他原本就仅对内部开放 telnet ,外部是无法连上您的 telnet 的!但是,若是您自己设定了自己的防火墙机制之后,那么想要针对 192.168.0.0/24 这个网域,及 61.xxx.xxx.xxx 这个 IP 进行 telnet 的开放呢?可以增加这几行在您的 iptables 规则之内(请注意:防火墙的规则顺序是很重要的!所以再回头看看 简易防火墙架设 一文是有必要的!)
上面的规则中,第一、二行是针对来源的 IP 来开放 port 23 亦即是 telnet 的协议啦!而最后一行则是将其它的所有来源的,想要连上 telnet 的联机封包都丢掉的意思!怎么样!很简单吧!
o 加上防火墙 /etc/hosts.allow(deny) 机制:
防火墙的机制是越多越好!永远也不嫌多的啦!这里也可以使用 TCP_Wrappers 的机制呢!刚刚是开放了 192.168.0.0/24 这个网段,但是如果你只想要其中的 192.168.0.1 ~ 192.168.0.5 进入呢?而其它的 IP 只要一经联机,就会被记录该 IP ,以提供 root 查询呢?可以这样做:
更详细的 TCP_Wrappers 用法请参考 简易防火墙架设 一文啰!
o 建议事项:
说真的, telnet 真的不是很安全的!简直应该说为『危险』等级的服务,所以尽量不要激活他啦:
1. 非必要时,不要激活 telnet ,如果真的需要激活 telnet ,那么也请在激活并且使用完毕之后,立即将他关掉!
2. 如果确定真的要激活 telnet 时,请确定好限制的联机范围,使用 iptables 来设定联机的限制区域;
3. 加上 TCP_Wrappers 的辅助,加强防火墙的功能!
4. 随时注意登录档案里面关于 login 的事项!并且不要让 root 能以 telnet 登入 Linux 主机!
返回页首
------------------------------------------------------------------------------------------------
SSH 服务器:
既然 telnet 不是很安全,那么我又需要以远程联机服务来操控我的 Linux 主机,那么应该怎么办呀!?最好的方法当然就是以较为安全的联机机制的方案来解决联机的问题啰!那么该如何解决这样的问题呢?这也不难啦,使用 SSH 即可。那么 SSH 是什么呢?他有什么特异功能?简单的来说,SSH 是 Secure SHell protocol 的简写,他可以经由将联机的封包加密的技术,来进行资料的传递,因此,资料当然就比较安全啰!这个 SSH 可以用来取代 Internet 上面较不安全的 finger, R Shell (rcp, rlogin, rsh 等指令), talk 及 telnet 等联机模式。底下我们将先简介一下 SSH 的联机模式,来说明为什么 SSH 会比较安全呢!
特别注意:这个 SSH 协议,在预设的状态中,本身就提供两个服务器功能:
1. 一个就是类似 telnet 的远程联机使用 shell 的服务器,亦即是俗称的 ssh ;
2. 另一个就是类似 FTP 服务的 sftp-server !提供更安全的 FTP 服务。
· 联机加密技术简介:
基本上,加密的技术通常是藉由所谓的『公钥与私钥』亦即『Public and Private keys』来进行加密与解密的动作!如下图所示,当 SSH 激活服务之后,会产生一支公钥,而身为个人计算机的你,在进行与 server 的联机时,可以藉由自己产生的私钥来提供 server 的联机之用,也可以直接藉由 server 提供的私钥来进行联机!这个与进行联机时选择的加密版本有关,这个等一下我们再提!
在上面的图标中,我们可以知道,当数据由 Server 端传送到 Client 端时,这些资料会先经过『公钥, Public Key』来进行加密的行为,所以,在传输的过程中,这些资料本身是经过加密的,因此,即使这些资料在途中被截取时,要破解这些加密的资料,还是得要花费上好长一段时间的。那么等这些经过公钥加密的资料传送到 Client 端之后,就可以藉由所谓的『私钥, Private Key』来进行解密的动作。需要注意的是,这些公钥与私钥在每一部计算机上面都不一样,所以,你与 Server 的联机对其他人来说,都是很难去破解的呢!那么这些公钥与私钥是如何产生的呢?底下我们来谈一谈目前 SSH 的两种版本的联机模式啰!
o SSH protocol version 1:
每一部主机都可以使用 RSA 加密方式来产生一个 1024-bit 的 RSA Key ,这个 RSA 的加密方式,主要就是用来产生公钥与私钥的演算方法!这个 version 1 的整个联机的加密步骤可以简单的这么看:
1. 当每次 SSH daemon (sshd) 激活时,就会产生一支 768-bit 的公钥(或称为 server key)存放在 Server 中;
2. 若有 client 端的需求传送来时,那么 Server 就会将这一支公钥传给 client ,而 Client 藉由比对本身的 RSA 加密方式来确认这一支公钥;
3. 在 Client 接受这个 768-bit 的 server key 之后,Client 自己也会随机产生一支 256-bit 的私钥(host key),并且以加密的方式将 server key 与 host key 整合成一支完整的 Key ,并且将这支 Key 也传送给 server ;
4. 之后,Server 与 Client 在这次的联机当中,就以这一支 1024-bit 的 Key 来进行资料的传递!
当然啦,因为 Client 端每次的 256-bit 的 Key 是随机取的,所以你这次的联机与下次的联机的 Key 就会不一样啦!
o SSH protocol version 2:
与 version 1 不同的是,在 version 2 当中将不再产生 server key 了,所以,当 Client 端联机到 Server 端时,两者将藉由 Diffie-Hellman key 的演算方式来产生一个分享的 Key ,之后两者将藉由类似 Blowfish 的演算方式进行同步解密的动作!
每一个 sshd 都提供这两个版本的联机,而决定这两种模式联机的,就必需要在 client 端联机时选择联机的模式才能确认。目前预设情况下,会自动使用 version 2 的联机模式喔!而由于我们的联机资料中,经过了这个 Public 与 Private Key 的加密、解密动作,所以在中间的传送过程中,当然就比较安全的多啰!
返回页首
------------------------------------------------------------------------------------------------
激活 ssh 服务:
事实上,在我们使用的 Linux 系统当中,预设就已经含有 SSH 的所有需要的套件了!这包含了可以产生密码等协议的 OpenSSL 套件与 OpenSSH 套件,所以呢,要激活 SSH 真的是太简单了!就直接给他激活就是了!此外,在目前的 Linux Distributions 当中,都是预设激活 SSH 的,所以一点都不麻烦,因为不用去设定,他就已经激活了!哇!真是爽快~无论如何,我们还是得说一说这个激活的方式吧!直接激活就是以 SSH daemon ,简称为 sshd 来激活的,所以,手动可以这样激活:
上面两种方式都可以直接手动激活 sshd 这个服务!然后使用 netstat -tl 看看能不能看到 ssh 的服务在监听呢!?如果出现了上面那一行黄色字体,就表示您的 SSH 已经正确的激活啰!这真是太简单了吧!没错,但是他就是这么简单~
那么我要如何在开机的时候就激活这个 sshd 呢?如果是 Red Hat 的系统,可以使用 ntsysv 这支程序,而 Mandrake 可以使用 chkconfig 这个程序!至于 OpenLinux 则可以到 /etc/sysconfig/daemons 去看看喔!
这个方式仅适合在已经有 OpenSSH 的 Linux Distributions 当中,如果以 Red Hat 6.x 为例,他并没有预设使用