在您的路由器上设置SSH,以便从任何地方进行安全的Web访问

从Wi-Fi热点、工作场所或离家之外的任何地方连接到互联网会使您的数据面临不必要的风险。您可以轻松配置您的路由器以支持安全隧道并屏蔽您的远程浏览器流量-请继续阅读了解如何操作。

什么是安全隧道?为什么要设置安全隧道?

您可能会好奇,为什么要设置从设备到家庭路由器的安全隧道,以及这样的项目会给您带来什么好处。让我们展示几个不同的场景,这些场景涉及到您使用Internet来说明安全隧道的好处。

情景一:你在咖啡馆用笔记本电脑通过免费的Wi-Fi连接浏览互联网。数据离开你的Wi-Fi调制解调器,不加密地通过空中传输到咖啡厅的Wi-Fi节点,然后传递到更大的互联网。在从您的计算机传输到更大的互联网的过程中,您的数据是完全开放的。任何在该地区拥有Wi-Fi设备的人都可以嗅探您的数据。这是如此的简单,以至于一个有动力的12岁的孩子拿着一台笔记本电脑和一份Firesheep副本,可以抢走你做各种事情的资格证书。这就像你在一个满是只会说英语的房间里,对着说普通话的电话说话。一旦有会说普通话的人进来(Wi-Fi嗅探器),你的伪隐私就被打破了。

情景二:你又在咖啡馆用笔记本电脑通过免费Wi-Fi上网。这一次,您已经使用SSH在笔记本电脑和家庭路由器之间建立了加密隧道。您的流量通过此隧道直接从您的笔记本电脑路由到充当代理服务器的家庭路由器。这条管道对Wi-Fi嗅探者来说是无法穿透的,他们只能看到乱码的加密数据流。无论机构多么变化无常,Wi-Fi连接多么不安全,你的数据都会留在加密的隧道里,只有在到达你家的互联网连接并退出到更大的互联网之后才会离开。

在第一种情况下,你的冲浪是敞开的;在第二种情况下,你可以像在家里的电脑上一样自信地登录你的银行或其他私人网站。

虽然我们在我们的示例中使用了Wi-Fi,但是您可以使用SSH隧道来保护硬线连接,例如,在远程网络上启动浏览器并在防火墙上打一个洞,以便像在您的家庭连接上一样自由地冲浪。

听起来不错,不是吗?它非常容易设置,所以没有比现在更好的时间了--您可以在一小时内完成SSH通道的设置和运行。

您需要的是什么

有许多方法可以设置SSH通道来保护您的Web浏览。在本教程中,我们将重点介绍如何以最简单的方式设置SSH隧道,为拥有家庭路由器和基于Windows的计算机的用户提供最少的麻烦。要学习我们的教程,您需要以下内容:

运行番茄或DD-WRT修改固件的路由器。 像PuTTY这样的SSH客户端。 兼容SOCKS的网络浏览器,如Firefox。

在我们的指南中,我们将使用Tomato,但是说明几乎与您在DD-WRT中遵循的说明相同,所以如果您正在运行DD-WRT,请随意遵循。如果您的路由器上没有修改固件,请查看我们的DD-WRT和Tomato安装指南,然后再继续。

为我们的加密隧道生成密钥

尽管我们甚至在配置SSH服务器之前就直接开始生成密钥似乎有些奇怪,但是如果我们已经准备好密钥,我们将能够一次性配置服务器。

下载完整的PuTTY包并将其解压缩到您选择的文件夹。在文件夹中,您将找到PUTTYGEN.EXE。启动应用程序,然后单击Key->Generate Key Pair。您将看到一个与上图非常相似的屏幕;移动鼠标为密钥创建过程生成随机数据。该过程完成后,PuTTY Key Generator窗口应如下所示;继续输入强密码:

输入密码后,继续并单击保存私钥。将生成的.PPK文件存放在安全的地方。复制粘贴“粘贴…公钥”的内容。暂时放到一个临时TXT文档中。

如果您计划在SSH服务器上使用多个设备(如笔记本电脑、上网本和智能手机),则需要为每个设备生成密钥对。继续生成、设置密码并保存您现在需要的其他密钥对。确保将每个新公钥复制并粘贴到临时文档中。

为SSH配置您的路由器

Tomato和DD-WRT都有内置的SSH服务器。这很棒,有两个原因。首先,过去远程登录到您的路由器手动安装和配置SSH服务器是一件非常痛苦的事情。其次,因为您在路由器上运行SSH服务器(这可能比灯泡消耗的电力更少),所以您永远不必只为轻量级SSH服务器而让主计算机开机。

在连接到本地网络的计算机上打开Web浏览器。导航到您的路由器的Web界面,对于我们的路由器-运行番茄的Linksys WRT54G-地址为http://192.168.1.1.。登录到Web界面,然后导航到Administration->SSH Daemon。在这里,您需要选中“启动时启用”和“远程访问”。如果愿意,您可以更改远程端口,但这样做的唯一好处是,如果任何端口扫描您,都会稍微混淆端口打开的原因。取消选中允许密码登录。我们不会使用密码登录从远处访问路由器,我们将使用密钥对。

将您在本教程最后部分中生成的公钥粘贴到“授权密钥”框中。每个键都应该是由换行符分隔的自己的条目。密钥SSH-RSA的第一部分非常重要。如果您没有将其包含在每个公钥中,则它们对于SSH服务器而言将显得无效。

单击立即开始,然后向下滚动到界面底部,然后单击保存。此时,您的SSH服务器已启动并正在运行。

配置远程计算机以访问SSH服务器

这就是魔术发生的地方。您有一个密钥对,您已经启动并运行了一台服务器,但是除非您能够从现场远程连接并通过隧道连接到您的路由器,否则这些都没有任何价值。是时候拿出我们值得信赖的运行Windows7的上网本开始工作了。

首先,将您创建的PuTTY文件夹复制到您的另一台计算机(或者简单地再次下载并解压缩它)。从这里开始,所有指令都集中在您的远程计算机上。如果您在家庭计算机上运行了PuTTY Key Generator,请确保在本教程的其余部分中已切换到您的移动计算机。在您结算之前,您还需要确保您有您创建的.PPK文件的副本。一旦您提取了PuTTY并拿到了.PPK,我们就可以继续了。

启动油灰。您将看到的第一个屏幕是会话屏幕。您需要在此处输入家庭互联网连接的IP地址。这不是您的路由器在本地LAN上的IP,而是外界看到的调制解调器/路由器的IP。您可以通过查看路由器Web界面中的主状态页找到它。将端口更改为2222(或您在SSH守护程序配置过程中替换的任何内容)。确保选中SSH。继续为您的会话命名,这样您就可以保存它以供将来使用。我们把我们的番茄命名为SSH。

通过左侧窗格导航到Connection->Auth。在这里,您需要单击Browse按钮并选择您保存并带到远程计算机的.PPK文件。

在SSH子菜单中,继续向下选择SSH->隧道。在这里,我们将配置PuTTY作为您的移动计算机的代理服务器。选中端口转发下面的两个框。在下面的添加新转发端口部分中,输入80作为源端口,输入路由器的IP地址作为目的地。选中自动和动态,然后单击添加。

仔细检查转发端口框中是否显示了条目。导航回Sessions部分,然后再次单击Save以保存您所做的所有配置工作。现在单击打开。PuTTY将启动一个终端窗口。此时您可能会收到一条警告,指示服务器的主机密钥不在注册表中。继续并确认您信任主机。如果您担心这个问题,可以将它在警告消息中给出的指纹字符串与您通过将其加载到PuTTY Key Generator中生成的密钥的指纹进行比较。打开PuTTY并单击警告后,您应该会看到如下所示的屏幕:

在终点站,你只需要做两件事。在登录提示符下键入root。在Passphrase提示符下输入您的RSA密钥环密码-这是您几分钟前生成密钥时创建的密码,而不是路由器的密码。路由器shell将加载,您在命令提示符下完成操作。您已经在PuTTY和您的家庭路由器之间建立了安全连接。现在,我们需要指导您的应用程序如何访问PuTTY。

注意:如果您想以略微降低安全性为代价来简化该过程,您可以生成一个没有密码的密钥对,并将PuTTY设置为自动登录到root帐户(您可以在Connect->Data->Auto Login下切换此设置)。这将PuTTY连接过程减少到只需打开应用程序、加载配置文件并单击打开即可。

配置浏览器以连接到PuTTY

在本教程中的这一点上,您的服务器已启动并运行,您的计算机已连接到它,并且只剩下一个步骤。您需要告诉重要的应用程序使用PuTTY作为代理服务器。如果您不确定某个应用程序是否支持SOCKS,可以将任何支持SOCKS协议的应用程序链接到PuTTY--比如Firefox、mIRC、Thunderbird和uTorrent。这是一个不容忽视的关键因素:默认情况下,您的所有流量都不是通过PuTTY代理路由的;它必须连接到SOCKS服务器。例如,你可以在同一台机器上有一个打开袜子的网络浏览器和一个没有打开的网络浏览器,一个会加密你的流量,另一个不会。

出于我们的目的,我们希望保护我们的Web浏览器Firefox Portable,这非常简单。Firefox的配置过程几乎可以转换为您需要插入SOCKS信息的任何应用程序。启动Firefox并导航到选项->高级->设置。在Connection Settings(连接设置)菜单中,选择Manual Proxy Configuration(手动代理配置),然后在SOCKS Host Plug in 127.0.0.1(SOCKS主机插件127.0.0.1)下-您要连接到本地计算机上运行的PuTTY应用程序,因此您必须放入本地主机IP,而不是路由器的IP,因为到目前为止,您一直在放入每个插槽。将端口设置为80,然后单击确定。

在我们都准备好之前,我们还有一个小小的调整要应用。默认情况下,Firefox不通过代理服务器路由DNS请求。这意味着您的流量始终是加密的,但是窥探连接的人会看到您的所有请求。他们会知道你在Facebook.com或gmail.com,但他们看不到其他任何东西。如果您希望通过SOCKS路由您的DNS请求,则需要将其打开。

在地址栏中键入about:config,然后单击“我会小心的,我保证!”如果你得到一个严厉的警告,告诉你你会怎样搞砸你的浏览器。将network.proxy.SOCKS_Remote_DNS粘贴到Filter:框中,然后右键单击network.proxy.SOCKS_Remote_DNS的条目并将其切换为True。从这里开始,您的浏览和DNS请求都将通过SOCKS隧道发送。

虽然我们将浏览器配置为始终使用SSH,但您可能希望轻松切换设置。Firefox有一个方便的扩展FoxProxy,它可以非常容易地打开和关闭您的代理服务器。它支持大量的配置选项,比如根据您所在的域、您正在访问的站点等在代理之间切换。例如,如果您希望能够根据您是在家还是不在家轻松地自动关闭您的代理服务,FoxProxy会为您提供覆盖范围。Chrome用户会想要查看Proxy Switchy!以实现类似的功能。

让我们看看是否一切都按计划进行,好吗?为了进行测试,我们打开了两个浏览器:没有隧道的Chrome(见左侧)和新配置的使用隧道的Firefox(见右侧)。

左边是我们要连接的Wi-Fi节点的IP地址,右边是我们的SSH隧道,我们看到的是远程路由器的IP地址。所有Firefox流量都通过SSH服务器路由。成功!

有保护远程流量的提示或诀窍吗?将SOCKS服务器/SSH与特定的应用程序一起使用,并且喜欢它吗?需要帮助来弄清楚如何加密您的流量吗?让我们在评论中听到这一点。

相关文章