位置:海鸟网 > IT > linux/Unix >

巧用OpenSSH穿透你的防火墙

即使系统管理员在仔细地过滤了除22号端口(SSH)以外的所有通信,攻击者仍有可以通过渗透防火墙,获得计算机的访问权。本文将展示远程Linux和Windows用户如何访问防火墙后的Samba、邮件和Web服务器。实际上,本文展示了无需对防火墙投资的情况下,如何将openSSH和PuTTY用作一个简单的VPN方案。本文并不是要建议你关闭22号端口,这些措施仅对服务器上的合法账户有效。不过,请您继续读下去,你会因为不用找到防火墙上额外的漏洞而执行的操作而感到惊奇,而且找到更多的漏洞并非一个好主意。先看图:

     

防火墙拓扑图

  OpenSSH 和 Linux

  从Linux笔记本电脑(我们假定其IP地址为192.168.1.106)上 ,我们就可以直接访问防火墙后的资源,包括Samba 服务器、 Web 服务器,甚至由防火墙对外锁定的邮件服务器。防火墙仅允许通过22号端口对SSH服务器的访问,不过笔记本电脑仍然可以访问其它的服务器:

      ## Linux Laptop .ssh/config ##
  Host work
  HostName 66.35.250.203
  User sporkey
  LocalForward 20000 192.168.0.66:80
  LocalForward 22000 192.168.0.66:22
  LocalForward 22139 192.168.0.8:139
  LocalForward 22110 192.168.0.5:110
  Host http
  HostName localhost
  User donkey
  Port 22000

  这个文件必须恰当地设置其权利:

  $ chmod 600 ~/.ssh/config

  可以看一下上面的文件。注意到条目“LocalForward 22000 192.168.0.66:22”,并将其与网络图表相对比。到SSH服务器的连接是通过从Linux笔记本电脑上运行下面的命令实现的:

  $ ssh -l sporkey 66.35.250.203

  小提示:上面的命令可以被缩写,因为用户名“sporkey”和“主机名”已经在配置文件中指定了。因此,你可用下面显示的“SSH work”:

  $ ssh work

  在完成这个连接之后,就有可能直接访问HTTP服务器,假定账户“donkey”可以访问这个服务器。下面的命令是在Linux笔记本电脑(192.168.1.106)上执行的。是的,那是一个处于新窗口中的Linux笔记本电脑。此外,这是在IP地址为192.168.1.106的主机中的一个新的会话中执行的。因此,请注意这儿的Linux笔记本电脑可以直接访问192.168.0.66。请注意,这儿的SSH会话起始于Linux笔记本电脑。

  $ ssh -l donkey localhost -p 22000

  因为配置文件将“HTTP”映射到localhost 端口2200上,所以上面的命令可以简写如下:

  $ ssh http

  不过,别急。有一个更好的方法。其实,我们不用创建两个终端会话,一个用于ssh work,另外一个用于ssh http,我们为什么不能将其用在一个命令中呢:

  $ ssh -N -f -q work; ssh http

  上面的命令将建立连接,从所需的端口转发到其它的服务器。“-N”表示“不要执行远程命令”,而“-f”要求ssh转到后台,“-q”是禁止所有的警告和诊断信息。那么这对你来说是不是还太繁琐?那就创建一个别名(alias)吧:

  alias http=‘ssh -N -f -q work; ssh http’,并将其放置到~.bashrc文件中,这样就可以使它尽可能地简短,因为在命令行键入http将使你达到HTTP服务器。

  要将文件复制到这个服务器,就要使用下面的命令(注意:scp之后的大写P)。如果你在.ssh目录中,你就会看到一个授权的authorized_keys2或者是一个授权的authorized_keys,你可能想要将其追加到目标服务器的类似文件上。这些文件仅仅作为一个示例而列示。可以复制任何文件,不过如果你将这些文件复制到远程服务器上,并将内容追加到远程服务器的authorized_key*文件,那么在下次你建立连接时,就不会被提示要求口令。