如何在Linux上用Open科学搭建安全的远程网络架构

对你在互联网上传送的数据采用一层妥善安全的加密机制,以挫败各种各样的窥视活动,这总归是谨慎的举措;由于我们的政府大量获取每一则信息,此举显得愈发地重要。说到保护在不可信赖的网络上传送的数据,Open科学是首要选择。本文将简要介绍一下如何设置Open科学,那样即使你出门在外,也可以安全地访问自己的家庭服务器

先简单地说一说科学:市面上有许多并非名至实归的商用科学。它们并不比由SSL保护的网站强一点,因为它们信任所有客户机。真正的科学(虚拟专用网)通过不可信赖的网络连接两个可信赖的端点设备。你根本无法从随便找到的任何一台电脑登录上去,这是好事,因为你大概也明白这个道理:从一个被感染的主机登录到你的专有网络是件坏事,不管网络连接本身有多么安全。所以,你必须同时配置服务器和客户机。

Open科学快速入门

你需要在不同子网上的两台电脑,比如同一个网络上的一台有线电脑和一台无线电脑(或者在Virtualbox中的几个Linux访客系统),你还要知道这两台电脑的IP地址。假设把示例中的这两台电脑分别命名为Studio和Shop。在这两台电脑上都安装Open科学。Open科学内置在大多数Linux发行版中,所以你可以借助常用的程序包管理器来安装它。本文这个示例适用于Debian、Ubuntu及众多的派生版本:

$ sudo apt-get install open科学 open科学-blacklist

该命令可安装服务器以及检查已泄密密钥黑名单的一个小程序。你必须安装这个黑名单检查程序!由于从前Debian发行了一款破损版的OpenSSL(参阅http://www.debian.org/security/2008/dsa-1571),该版本OpenSSL有一个破损的随机数生成器,所以用该版本OpenSSL生成的密钥按理说不堪一击,不可信赖。随机数生成器其实并非随机性的,而是可以预测的。这种情况发生于早在2008年的时候,使用过缺陷版OpenSSL的人都理应能够查到并更换安全性差的密钥。尽管这是五年多前的事情,但为了保险起见,还是应该用黑名单检查程序。

现在不妨测试一下,为此在我们的两台电脑之间建立一条未经加密的隧道。首先ping每台电脑,确保它们彼此可以正常联系。然后确保Open科学没有在运行,因为我们要开始手动启动它:

$ ps ax|grep open科学

如果它在运行,就终止它。假设Studio的IP地址是192.168.1.125,Shop的IP地址是192.168.2.125。建立一条从Studio到Shop的未经加密的隧道:

$ sudo open科学 –remote 192.168.2.125 –dev tun0 –ifconfig 10.0.0.1 10.0.0.2

然后,建立一条从Shop到Studio的未经加密的隧道:

$ sudo open科学 –remote 192.168.1.125 –dev tun0 –ifconfig 10.0.0.2 10.0.0.1

你成功建立了连接后,看到诸如此类的信息:

Wed Oct 16 2013 ******* WARNING *******: all encryption and authentication

features disabled — all data will be tunnelled as cleartext

Wed Oct 16 2013 TUN/TAP device tun0 opened

Wed Oct 16 2013 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0

Wed Oct 16 2013 /sbin/ifconfig tun0 10.0.0.1 pointopoint 10.0.0.2 mtu 1500

Wed Oct 16 2013 UDPv4 link local (bound): [undef]

Wed Oct 16 2013 UDPv4 link remote: [AF_INET]192.168.2.125:1194

Wed Oct 16 2013 Peer Connection Initiated with [AF_INET]192.168.2.125:1194

Wed Oct 16 2013 Initialization Sequence Completed

“Initialization Sequence Completed”(初始化序列已完成)这几个神奇的字眼证明了你的做法正确。你应该可以使用隧道地址来回ping,即ping 10.0.0.1和ping 10.0.0.2。你建立起隧道后,应该可以使用你想使用的任何IP地址,只要没有与现有网络的IP地址重叠就行。想关闭隧道,只要按Ctrl+c组合键。

纯粹为了试着玩,在你的隧道上打开一个SSH会话。图1显示了基于科学隧道的成功的SSH登录,它还显示了每日消息(Message of the Day):

$ ssh [email protected]

图1:基于科学隧道的成功的SSH会话,以及每日消息。

哇,它成功了!#p#

加密的科学隧道

这么做很好玩,但要是没有采取加密,毫无意义可言,于是我们将搭建一种简单的静态密钥配置架构。它不如真正的公开密钥基础设施(PKI)来得安全牢固,PKI通常拥有根证书、撤销以及所有诸如此类的机制,但这种静态密钥架构对出门在外时需要访问家庭服务器的那些人来说是一种足够好的解决方案。幸好,Open科学有一个命令,可以创建静态密钥,所以建立一个用来存放密钥的文件夹,创建密钥,然后将其设成只有文件拥有者才能读取:

$ sudo mkdir /etc/open科学/keys/

$ sudo open科学 –genkey –secret /etc/open科学/keys/static.key

$ sudo chmod 0400 /etc/open科学/keys/static.key

这是一个明文格式的密钥,你可以在文本编辑器中打开及查看――如果你很好奇的话,还可以将其随意取成想要的名称;你没必要把它取为“static.key”。将该密钥拷贝到两台电脑上――没错,拷贝同一个密钥。它不是私有-公共密钥对,而是一个单一的共享密钥。

现在,我们将为每台电脑创建一些简单而基本的配置文件。(在Debian/Ubuntu等发行版上,没有默认的配置文件,不过在/usr/share/doc/open科学/中有众多的示例文件。)在我小小的测试环境中,Studio是服务器,Shop是将登录到服务器上的移动笔记本电脑。我的服务器配置文件是/etc/open科学/studio.conf,这就是它拥有的一切:

# config for Studio

dev tun

ifconfig 10.0.0.1 10.0.0.2

secret /etc/open科学/keys/static.key

确保只有文件所有者才能读取并写入该文件:

$ sudo chmod 0600 /etc/open科学/studio.conf

客户机上的配置文件很相似,只不过添加了服务器的IP地址:

# config for Shop

dev tun

ifconfig 10.0.0.2 10.0.0.1

secret /etc/open科学/keys/static.key

remote 192.168.1.125

请注意ifconfig这一行上你那些IP地址的顺序,因为它们要按照本地地址>远程地址的顺序。现在开启服务器上的Open科学,指定服务器配置文件,然后在客户机上进行同样一番操作:

$ sudo open科学 /etc/open科学/studio.conf

$ sudo open科学 /etc/open科学/shop.conf

你会看到成功的连接显示同样的“初始化序列已完成”这条消息;你还必须留意没有出现下面这条消息,创建未经加密的隧道时,应该会出现这条消息:

******* WARNING *******: all encryption and authentication features disabled

******* 警告 *******:所有加密和验证特性被禁用#p#

防火墙和动态IP地址

Open科学本身配置起来很简单。最麻烦的地方还是在于处理防火墙和动态IP地址。世界上有无数不同的防火墙,所以我觉得你应该事先弄清楚如何安全地访问防火墙。Open科学需要端口1194,然后你需要有一条转发规则,可以指向你想访问的那台电脑。

动态IP地址是另一个麻烦的地方。Dyn.com提供了一个成本低廉的方法,它可以管理你的互联网服务提供商(ISP)为你分配的动态IP地址。或者你也可以向ISP付几块钱,获得一个静态地址。

到现在为止,你可以称之为一切进展良好,因为你可以在服务器上手动启动Open科学,让它等待你的指令,你可以将笔记本电脑带到外面,随时连接到服务器。不过,我们可以在一些方面加以改进,比如让Open科学在服务器上后台运行,使用Network Manager(网络管理器)自动建立连接,而Open科学实际操作方面缺少的最主要一项内容是:如何访问你的远程资源。下次我们将着重介绍这方面的内容。

上面我们主要讲了如何在家庭服务器与远程节点(比如笔记本电脑)之间建立一条简单的Open科学加密隧道。下面我们将介绍一些改进,比如如何让Open科学在后台运行,那样我们没必要手动启动它,使用Network Manager(网络管理器)以便易于连接到我们的远程服务器,以及访问服务。#p#

集成了网络管理器

网络管理器是一款出色的Open科学客户程序;只要确保你已安装了network-manager-open科学这个插件。我们将使用上篇中的示例配置。打开你的网络管理器配置,找到可以建立新科学连接的窗口。这在KDE和GNOME上看起来不一样,但是你需要的信息却一样。当你开始着手时,需要查看Open科学连接类型,比如图2中那样;如果你没有看到这个信息,那么表明缺少这个插件。(以下图形来自GNOME。)

图2:在网络管理器中创建新的Open科学客户机配置。

图3显示了主配置屏幕。从上往下分别如下:

·你想为该连接取的任何名称。

·网关是你那台远程服务器的IP地址。

·从下拉菜单选择静态密钥。

·然后使用文件选择器,找到你想要使用的密钥。

·这不是一个单向/双向密钥,所以选择None。

·远程IP地址和本地IP地址是你的虚拟Open科学地址,来自/etc/open科学/foo.conf文件。

·我们没有设定密码。

·可以设置“所有用户可用”或者只有你可用,随你喜欢。

图:3:针对Open科学客户机的网络管理器主配置屏幕

保存设置,然后使用网络管理器来进行连接。就是这么容易!现在,你只要点击一下按钮,就可以建立连接和断开连接了(图3)。

图4:点击一下按钮,就可以建立连接和断开连接了。#p#

自动运行Open科学

手动启动Open科学很简单,但是为了方便起见,你可能想让它在服务器上后台运行,而且在意外重启后继续保持连接。在Debian/Ubuntu/及众多派生发行版上,这一步自动处理:当你安装了Open科学后,它可以配置成系统启动时自动启动。所以,安装完毕后,你需要重启,或者使用下面其中一个命令来启动这个后台程序:

$ sudo /etc/init.d/open科学 start

$ sudo service open科学 start

第一个命令是传统方式,第二个命令则使用了service命令。早在之前,service最先出现在红帽Linux中;如果你的发行版在默认情况下没有安装该命令,它很可能潜伏在软件库中,如果你想使用它的话。

Fedora使用了systemd初始化系统,相比之下Ubuntu使用Upstart,而Debian仍使用传统的SysV初始化系统。如果你在/etc/open科学中有多个Open科学配置,可以在systemd中有所选择地启动每一个配置,就像这样:

# systemctl start systemctl start [email protected]

其中的“studio.service”引用上篇中的示例/etc/open科学/studio.conf文件。这个调用在重启后并不继续保持,所以它就像是运行open科学 /etc/open科学/studio.conf,这是我们在上篇中手动启动Open科学会话的方式。只要借助chkconfig,就能够让Open科学在systemd上后台运行:

# service open科学 start

# chkconfig open科学 on

这应该会以通常的方式让Open科学在后台运行,它作为一种整体式的后台程序,而不是按照/etc/open科学/中的.conf文件单独配置。systemd支持chkconfig命令和service命令,所以这应该能行。不过,使用systemd的发行版其情况很不一样,所以如果你的发行版不一样,请留言告知我们。#p#

加强你的连接

Open科学很强大,擅长保持一条持久性连接,哪怕出现在服务中断的情况下。你可以让连接更强大,只要将下面这几行添加到客户机和服务器上的.conf文件:

persist-tun

persist-key

这几行对由于省电和移动而频繁断开连接的笔记本电脑用户大有帮助。

现在怎么办?

鉴于你已设置好了这个架构,该如何处理它呢?如果你习惯于使用OpenSSH用于远程操作,可能会局限于使用SSH的这种心态:能够登录到特定的机器,并运行应用程序。这样不行,而是应该把Open科学看成是虚拟以太网连线,通向你的服务器或以太网,它们都采用了一层牢固的加密机制。现在你可以通过同一条隧道运行未经加密的服务和加密的服务,只要在防火墙中开一个口就行。

所以,你可以通过你的Open科学隧道按以前的方式来运行SSH,还可以进行远程管理,运行应用程序。你可以访问网络资源,比如文件共享区和Web应用程序。你可以迫使客户机上的所有网络信息都通过你的科学隧道来进行传送,但是就本文而言,我认为你希望能够使用你的原生网络和科学网络。

所以,如果你使用可信赖的笔记本电脑,就可以上网冲浪,运行SSH,在你连接的任何网络上处理想做的任何事情。之后,当你想在Open科学隧道上运行某个程序,就可以打开它,并指定IP地址,就像这样:

$ ssh [email protected]

Web应用程序很容易:将Web浏览器指定你的Open科学服务器的虚拟IP地址,按平常那样登录。比如说,我运行各种Web服务,以便在家庭服务器上进行测试。所以,我可以访问http://10.0.0.1/drupal处的Drupal,可以访问http://10.0.0.1/owncloud处的OwnCloud。我使用了很棒的gFTP图形化FTP客户程序,所以如果我想要连接,只需要Host(主机)这一行上的虚拟IP地址、用户名和密码。或者使用这个命令行:

$ ftp 10.0.0.1 21

你可以远程管理自己的MySQL数据库,只要使用你自己的用户名和密码:

$ mysql -h 10.0.0.1 -u admin –p

所以,你需要知道的主要是,如何将主机规格添加到你想运行的任何命令上。

很显然,要是借助名称服务,而不是非得使用IP地址,这一切会来得更容易,所以下一回我们将学习如何在Open科学中实施名称服务。同时,请尽情享用你那条又棒又安全的Open科学隧道。

原文地址:http://www.linux.com/learn/tutorials/743590-secure-remote-networking-with-open科学-on-linux

http://www.linux.com/learn/tutorials/745233-how-to-set-up-secure-remote-networking-with-open科学-on-linux-part-2

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/128877.html<

(0)
运维的头像运维
上一篇2025-02-25 08:40
下一篇 2025-02-25 08:41

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注