11.8 本章习题
- Telnet 与 SSH 都是远程联机服务器,为何我们都会推荐使用 SSH 而避免使用 Telnet 呢?原因何在?因为 Telnet 除了使用『明码』传送数据外,本身 telnet 就是很容易被入侵的一个服务器,所以当然也就比较危险了。 至于 ssh 其实也不是很安全的!由台湾计算机危机处理小组的文件可以明显的发现 openssl + openssh 也是常常有漏洞在发布!不过,比起 telnet 来说,确实是稍微安全一些!
- 请尝试说明 SSH 在 Server 与 Client 端联机时的封包加密机制;利用 key pair 来达到加密的机制:Server 提供 Public Key 给 Client 端演算 Private key ,以提供封包传送时的加密、解密!
- 请问 SSH 的配置文件是哪一个?如果我要修改让 root 无法使用 SSH 联机进入我的 SSH 主机,应该如何设定?又,如果要让 badbird 这个用户无法登入 SSH 主机,该如何设定?SSH 配置文件档名为 sshd_config ,通常放置在 /etc/ssh/sshd_config 内;如果不想让 root 登入,可以修改 sshd_config 内的参数成为:『PermitRootLogin no 』,并重新启动 ssh 来设定!如果要让 badbird 使用者无法登入,同样在 sshd_config 里面设定为:『DenyUsers badbird』即可!
- 在 Linux 上,预设的 Telnet 与 SSH 服务器使用的埠口(port number)各为多少?telnet 与 ssh 的埠口分别是:23 与 22!请参考 /etc/services 喔!
如果发现我无法在 Client 端使用 ssh 程序登入我的 Linux 主机,但是 Linux 主机却一切正常,可能的原因为何?(防火墙、known_hosts...)无法登入的原因可能有很多,最好先查询一下 /var/log/messages 里面的错误讯息来判断,当然,还有其他可能的原因为:
- 被防火墙挡住了,请以 iptables -L -n 来察看,当然也要察看 /etc/hosts.deny;
- 可能由于主机重新启动过, public key 改变了,请修改你的 ~/ssh/known_hosts 里面的主机 IP ;
- 可能由于 /etc/ssh/sshd_config 里面的设定问题,导致你这个使用者无法使用;
- 在 /etc/passwd 里面,你的 user 不具有可以登入的 shell ;
- 其他因素(如账号密码过期等等)
既然 ssh 是比较安全的资料封包传送方式,那么我就可以在 Internet 上面开放我的 Linux 主机的 SSH 服务了吗?!请说明你选择的答案的原因!最好不要对 Internet 开放你的 SSH 服务,因为 SSH 的加密函式库使用的是 openssl ,一般 Linux distribution 使用的 SSH 则是 openssh ,这两个套件事实上仍有不少的漏洞被发布过,因此,最好不要对 Internet 开放,毕竟 SSH 对于主机的权限是很高的!