如何路由的Web流量安全地没有VPN使用SOCKS隧道

介绍

有时候,您的网络不安全或者防火墙过于严格,需要访问网站。 你想确保中间没有人在看交通。

一个解决方案是一个VPN ,但很多的VPN需要你的机器,你可能没有权限来安装特殊的客户端软件。

如果你需要安全的是你的网络浏览,有一个简单的替代:SOCKS 5代理隧道。

SOCKS代理基本上是一个SSH隧道,其中特定应用程序将其流量沿着隧道转发到服务器,然后在服务器端,代理将流量转发到一般Internet。 与VPN不同,SOCKS代理必须在客户端机器上逐个应用程序配置,但可以在没有任何专用客户端代理的情况下进行设置。

只要你有一个Droplet与SSH访问,你可以使用它作为SOCKS代理端点。 在本教程中,我们将使用Ubuntu 14.04 Droplet作为代理,并使用Firefox Web浏览器作为客户端应用程序。 在本教程结束时,您应该能够通过隧道安全地浏览网站。

先决条件

正如上面提到的,首先需要的是运行Linux的任何版本,如Ubuntu 14.04服务器,用SSH访问

  • 部署服务器(本示例使用Ubuntu 14.04)

在您自己的本地机器上需要进行一些更多的设置。 为此,您需要下载一个或两个软件。

  • 火狐网络浏览器(每个人)
  • PuTTY (Windows用户)

Firefox允许您仅为Firefox设置代理,而不是设置系统范围的代理。

PuTTY用于为Windows用户设置代理隧道。 Mac OS X或Linux的用户具有设置预安装的隧道的工具。

第1步(Mac OS X / Linux) - 设置隧道

本地计算机上,创建一个 。 如果您已有SSH密钥,则可以使用该密钥。

虽然最好给你的SSH密钥一个密码短语,但在本教程中,我们实际上将密码保留为空,以避免以后出现问题。

当您设置键,确保将其添加到授权密钥服务器上的用户Sudo(在这个例子中,这就是sammy用户)。

在计算机上打开终端程序。 在Mac OS X上,这是应用程序>实用程序中的终端。

使用此命令设置隧道:

ssh -D 8123 -f -C -q -N sammy@example.com

参数说明

  • -D :告诉我们要在指定的端口号的SOCKS隧道SSH(你可以选择1025-65536之间的数字)
  • -f :福克斯的过程为背景
  • -C :发送之前对数据进行压缩
  • -q :使用安静模式
  • -N :告诉SSH,一旦隧道使用没有命令将被发送

一定要取代sammy @ example.com用自己的Sudo用户和服务器的IP地址或域名。

一旦输入命令,您将立即被带到命令提示符,没有成功或失败的迹象; 这是正常的。

使用此命令验证隧道是否已启动并运行:

ps aux | grep ssh

您应该在输出中看到一行:

输出
sammy    14345   0.0  0.0  2462228    452   ??  Ss    6:43AM   0:00.00 ssh -D 8123 -f -C -q -N sammy@example.com

您可以退出您的终端应用程序,隧道将保持。 那是因为我们使用了-f里面放SSH会话到背景的说法。

注意:如果你想终止隧道你必须通过抢PID ps和使用kill命令,我们会告诉你以后怎么办。

第1步(Windows) - 设置隧道

打开PuTTY

如果您尚未安装它,请下载PuTTY并将其保存在您喜欢的位置。 PuTTY不需要管理员权限即可安装; 只需下载.exe并运行它。

完成以下步骤设置隧道:

  1. 会话部分中,添加主机名(或IP地址)的服务器,而SSH 端口 (通常 22) Putty会话
  2. 在左边,浏览到: 连接> SSH>隧道
  3. 输入1025-65536之间的任何源端口号。 在这个例子中,我们使用1337端口 Putty连接> SSH>隧道
  4. 选择Dynamic单选按钮
  5. 点击添加按钮
  6. 回到会议左边
  7. 保存会话添加一个名称,然后点击保存按钮
  8. 现在,单击打开按钮进行连接
  9. 输入您的sudo用户名和服务器密码以登录

您现在可以最小化PuTTY窗口,但不要关闭它。 您的SSH连接应该是打开的。

提示:您可以通过以下保存你的sudo用户名( 森美 )和SSH密钥此相同的会话PuTTYSSH密钥的说明 然后,您不必在每次打开连接时都输入用户名和密码。

第2步 - 配置Firefox使用隧道

现在你有一个SSH隧道,是时候配置Firefox使用该隧道。 记住,对于SOCKS 5隧道工作,您必须使用可以利用隧道的本地应用程序; Firefox做的伎俩。

此步骤对于Windows,Mac OS X和Linux是相同的。

请确保您有您在SSH命令或PuTTY用这个例子说明的端口号 我们已经在OS X / Linux的例子在Windows示例中使用8123,1337和到目前为止,或者你可能使用不同的端口。

(以下步骤使用Firefox版本39执行,但应该在其他版本上工作,但选项的位置可能不同。)

  1. 在右上角,点击汉堡包图标访问Firefox的菜单: Firefox首选项
  2. 点击选项图标
  3. 导航到高级部分
  4. 单击网络选项卡上 Firefox高级首选项
  5. 点击连接标题下的设置按钮。 将打开一个新窗口
  6. 选择手动配置代理的单选按钮 Firefox代理设置
  7. 输入localhostSOCKS主机
  8. 从你的SSH连接输入相同的端口号; 在图像中可以看到我们已经进入了1337年到匹配Windows的说明
  9. 单击确定按钮保存并关闭您的配置

现在,在Firefox中打开另一个选项卡并开始浏览网络! 您应该设置为通过您的SSH隧道安全浏览。

可选:要确认您使用的是代理,回去在Firefox中的网络设置。 尝试输入其他端口号。 点击确定保存设置。 现在,如果您尝试浏览网页,你应该得到一个错误信息代理服务器拒绝连接 这证明Firefox正在使用代理,而不只是默认连接。 恢复到正确的端口号,您应该能够再次浏览。

在Firefox中恢复正常的不安全浏览:

当您完成需要的SSH隧道的隐私,回去在Firefox 网络代理服务器设置( 首选项>高级>网络>设置 )。

点击关于使用系统代理设置的单选按钮,然后单击确定 Firefox现在将浏览您的正常连接设置,这可能是不安全的。

如果你使用隧道,你必须终止隧道,我们将在下一节中介绍。

如果您计划经常使用隧道,可以将其保留以供以后使用,但请注意,如果空闲时间过长,或计算机进入睡眠或关机状态,它可能会自行终止。

第3步(Mac OS X / Linux) - 关闭隧道

关闭隧道将阻止Firefox浏览代理的能力。

我们之前在本地机器上创建的隧道已发送到后台,因此关闭用于打开隧道的终端窗口将不会终止它。

要终止,我们需要确定使用进程ID(PID)隧道ps命令,然后用杀死它kill命令。

让我们来搜索所有活跃的ssh我们的机器上的进程:

ps aux |grep ssh

查找看起来像您之前输入的命令的行以创建隧道。 下面是一些示例输出:

输出
sammy    14345   0.0  0.0  2462228    452   ??  Ss    6:43AM   0:00.00 ssh -D 8123 -f -C -q -N sammy@example.com

从行的开始,在前两列之一,是3-5位数字。 这是PID。 以上,14345样品PID被突出显示。

现在你知道了PID是什么,你可以使用kill命令使隧道下来。 当你杀死进程时使用你自己的PID。

sudo kill 14345

现在,如果您想自动完成连接过程,请转到第4步。

第3步(Windows) - 关闭隧道

关闭隧道将阻止Firefox浏览代理的能力。

关闭用于创建隧道的PuTTY窗口。 而已!

在Windows中,没有一种简单的方法来自动化连接过程,但PuTTY和Firefox都可以保存您之前输入的设置,因此只需再次打开连接即可重新使用隧道。

第4步(Mac OS X / Linux) - 创建重复使用的快捷方式

对于OS X或Linux系统,我们可以创建别名或创建脚本以快速为我们创建隧道。 以下是自动化隧道进程的两种方法。

注意:这些快捷方法都需要对服务器进行无密码/无密码SSH密钥身份验证!

可点击的BASH脚本

如果你想要一个图标双击,隧道刚刚启动,我们可以创建一个简单的BASH脚本来做这项工作。

我们使脚本设置隧道并启动Firefox,但是您仍然需要在Firefox中手动添加代理设置。

在OS X中 ,Firefox的二进制文件,我们可以在命令行启动里面Firefox.app 假设应用程序是应用程序文件夹中,二进制文件将被发现在/Applications/Firefox.app/Contents/MacOS/firefox

在Linux系统上 ,如果通过回购安装火狐或者是预装的,那么它的位置应该是/usr/bin/firefox 您可以随时使用which firefox命令来找出它是你的系统上。

在下面的脚本中,使用适合您的系统的路径替换Firefox的路径。

使用诸如文本编辑器nano创建一个新的文件:

nano ~/socks5.sh

添加以下行:

socks5.sh
#!/bin/bash
ssh -D 8123 -f -C -q -N sammy@example.com
/Applications/Firefox.app/Contents/MacOS/firefox &
  • 替换8123与您所需的端口号(它应该符合你放什么在Firefox)
  • 替换sammy@example.com与SSH用户和主机名或IP
  • 更换/Applications/Firefox.app/Contents/MacOS/firefox的路径Firefox的二进制

保存脚本。 对于纳米,键入CONTROL + o ,然后退出,类型CONTROL + x

使脚本可执行,以便当您双击它时,它将执行。 从命令行输入此命令以添加执行权限,使用您自己的脚本路径:

chmod +x /path/to/socks5.sh

在OS X中,您可能需要执行额外的步骤,告诉Mac OS X的一个.sh文件应该像一个程序执行,并在编辑器中无法打开。

要做到这一点,右击你的socks5.sh文件并选择获取信息

找到打开的部分如果三角形是不是指向下方,点击它,所以你可以看到下拉菜单。 Xcode可能被设置为默认应用程序。 获取信息

将其更改为Terminal.app。 如果未列出Terminal.app,选择其他 ,然后导航到应用程序>工具> Terminal.app。

现在打开你的SOCKS代理,就只要双击socks.sh文件。

(执行后,脚本不会提示输入密码,因此如果您之前将SSH密钥设置为需要密码,则该密码将无提示失败。)

该脚本将打开一个终端窗口,启动SSH连接,并启动Firefox。 随意关闭终端窗口。 只要您在Firefox中保留代理设置,即可开始浏览安全连接。

命令行别名

如果你发现自己经常在命令行上并想要启动隧道,您可以创建一个BASH别名为您完成这项工作。

创建别名的最难的部分是找出保存alias命令的位置。

不同的Linux发行版和OS X发行版在不同的地方保存别名。 最好的办法是寻找下列文件中的一个,搜索alias ,看看目前被保存等别名。 可能性包括

  • ~/.bashrc
  • ~/.bash_aliases
  • ~/.bash_profile
  • ~/.profile

找到正确的文件后,请在已有的别名下面添加别名,或者只在文件末尾添加。

.bashrc
alias socks5='ssh -D 8123 -f -C -q -N sammy@example.com && /Applications/Firefox.app/Contents/MacOS/firefox &'
  • 替换8123与您所需的端口号(它应该符合你放什么在Firefox)
  • 替换sammy@example.com与SSH用户和主机名或IP
  • 更换/Applications/Firefox.app/Contents/MacOS/firefox的路径Firefox的二进制

您的别名仅在您启动新shell时加载,因此关闭终端会话并启动一个新会话。

现在,当您键入:

socks5

此别名设置您的隧道,然后为您启动Firefox并返回到命令提示符。

确保Firefox仍然设置为使用代理。 您现在可以安全地浏览!

第5步(可选) - 故障排除:穿过防火墙

如果你的连接是工作,你是好去,可以停止阅读。

但是,如果您发现由于限制性防火墙而无法建立SSH连接,则可能是创建通道所需的端口22正在被阻止。

如果您可以控制代理服务器的SSH设置(通过超级用户访问DigitalOcean Droplet,您可以执行此操作),您可以将SSH设置为在除22之外的端口上侦听。

你可以使用哪个端口没有被阻止?

除了像一个工具,运行端口扫描的可疑计划ShieldsUP! (有问题的,因为你的本地网络可能会认为这是一个攻击),这是最好的尝试通常留下开放的端口。

端口是常开80包含(一般的网络流量)和443(SSL的Web流量)。

如果您的SSH服务器不提供Web内容,我们可以告诉SSH使用这些Web端口中的一个,而不是默认的端口22。443是最好的选择,因为它的预期已经加密此端口上的流量过沟通,我们的SSH流量将被加密。

从非防火墙位置,SSH到您使用的代理的DigitalOcean Droplet。 (或者使用内置的控制台从控制面板中,但您可能不希望如果你害怕你的网站流量被监视做到这一点。)

编辑服务器的SSH设置:

sudo nano /etc/ssh/sshd_config

寻找线路Port 22

我们可以替换22完全(这是一个很好的SSH加固技术无论如何),或添加第二个端口,用于SSH上侦听。

我们将选择有多个端口SSH听,所以我们下添加一个新行Port 22 ,读取Port 443下面是一个例子:

sshd_config
. . .

Port 22
Port 443

. . .

重新启动SSH,以便重新加载刚刚编辑的SSH配置。

根据您的分布,SSH服务器守护程序的名称可能不同,但它很可能是sshsshd 如果一个不工作尝试另一个。

sudo service ssh restart

要验证您的新SSH端口是否正常工作,请打开一个新的shell(不要关闭当前的端口,以防意外锁定自己)和SSH使用新端口。

ssh sammy@example.com -p 443

如果成功,您现在可以注销两个shell并使用新端口打开SSH隧道。

ssh -D 8123 -f -C -q -N sammy@example.com -p 443

而已! Firefox的设置将是完全一样的,因为他们不依赖于SSH端口上,就在隧道端口(8123以上)。

结论

打开一个SOCKS 5隧道,浏览一个安全的SSH隧道,每当你需要一个轻量级的方式来访问网络安全从窥探。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏