如何设置OpenVPN,以便可以从不安全的热点安全地使用Internet?


31

目标:当笔记本电脑连接到开放的热点/访问点时,我希望能够通过家用PC安全地使用互联网。

确实知道我可以使用SSH隧道/ SOCKS代理,但是我不想摆弄应用程序(即使可能也可以使用它们)。我想我需要的是OpenVPN设置,因此我正在寻找有关如何进行以下操作的详细指南:

  1. 安装和设置OpenVPN服务器
  2. 设置OpenVPN客户端(NetworkManager)

可以使用的Ubuntu版本是10.10和11.04。


我认为这更多是服务器故障而不是Ubuntu问题。
路易斯·阿尔瓦拉多

1
@Cyrex:1)是2)可能不是
Lekensteyn 2011年

Answers:


40

几个月前,我有一个确切的问题,但此外,如果可能,我想建立一个IPv6连接。您可能对我对Serverfault的问题感兴趣:

我的服务器上只有一个NIC(“网络接口”)可供使用。在我的设置中,NetworkManager还不够,因为我需要运行自定义脚本来支持IPv6。但是,为简单起见,我将在此处使用NetworkManager并省略对IPv6的支持。

首先,只需确定身份验证方法。我将使用更安全的证书方法,该方法的工作方式类似于SSL:在握手期间,将选择一个将用于会话的通用秘密。其他方法是共享密钥。用户名和密码。

服务器

1.准备

首先,安装openvpn服务器。这很容易sudo apt-get install openvpn。困难的部分是对其进行配置。该配置位于中/etc/openvpn

2.配置身份验证

服务器需要用于标识自身及其客户端的证书。这些证书是从CA(公共机构)获取的。证书和相关私钥的创建可以在任何计算机上完成,而不必在服务器上完成。如果您真的很偏执,则应在未连接网络的计算机上进行操作,并使用记忆棒传输证书。

为服务器创建CA和证书

除非您的CA的私钥遭到破坏,否则此步骤必须执行一次。在这种情况下,可以创建将被服务器接受的有效证书,从而导致安全漏洞。

官方文档建议做给药/etc/openvpn。我不喜欢以root用户身份运行所有内容,因此将其放在其他目录中。

  1. 创建管理目录并通过运行以下命令复制其中的文件:

    mkdir ~/openvpn-admin
    cd ~/openvpn-admin
    cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ ./easy-rsa
    cd easy-rsa
    
  2. vars根据需要编辑默认设置,例如设置,KEY_SIZE=2048因为您偏执。
  3. 通过运行以下命令来加载变量并创建密钥目录:

    . vars
    
  4. 如果出现错误No ... openssl.cnf file could be found Further invocations will fail,请运行ln -s openssl-1.0.0.cnf openssl.cnf,然后. vars再次运行。

  5. 如果这是您第一次使用此CA,请准备密钥环境。难道,如果你想保持你以前创建的CA.运行此命令 这样做将需要您部署一个新的ca.crt

    ./clean-all
    
  6. 通过执行创建CA ./build-ca。您可以填写所需的任何详细信息,但是请注意,当客户端连接到服务器时,此信息将在日志文件中可见。这将创建文件ca.keyca.crt子文件夹keys在任何情况下都应ca.key文件保密。否则,任何拥有密钥的人都可以连接到您的服务器。
  7. 如果先前的证书丢失或过期,则需要先使用撤消旧证书./revoke-full server。否则,您将收到数据库错误。
  8. 通过运行以下命令为服务器创建证书:

    ./build-key-server server
    

    当要求输入密码时,请将其保留为空,除非您愿意在每次服务器启动时都输入密码(不建议)。确认签署证书并提交。两个新文件将出现在目录中keysserver.keyserver.crt

DH并使用为tls-auth准备

使用以下命令生成Diffie-Hellman参数:

./build-dh

根据硬化技巧,使用tls-auth。为此,使用以下命令生成共享秘密密钥:

openvpn --genkey --secret ta.key

生成的文件(ta.key)也必须分发给客户端,但您不应将其公开。

为客户创建证书

对于每个客户,应重复这些步骤:

  1. 输入您在其中创建CA和服务器证书的目录:

    cd ~/openvpn-admin/easy-rsa
    
  2. 如果由于已经跳过了CA创建步骤,则需要先加载变量:

    . vars
    
  3. 如果由于旧证书丢失或过期而创建新证书,则需要先使用撤消旧证书./revoke-full you。否则,您将收到数据库错误。
  4. 创建客户端证书you.key及其相应的证书you.crt

    ./build-key you
    

    CommonName应该是唯一的。如果您使用的是KDE,请将该密码保留为空,因为从10.10开始尚不支持该密码。与服务器证书生成一样,请确认对证书进行签名并提交更改。

3.设置OpenVPN服务

默认情况下,OpenVPN在接受连接时以root用户身份运行。如果服务可以从邪恶的互联网访问,则不是一个好主意。

  1. 为OpenVPN创建专用用户,例如openvpn

    sudo useradd openvpn
    
  2. 复制文件server.keyserver.crtca.crtdh1024.pem(或dh2048.pem如果您已经改变密钥大小)从钥匙进入目录/etc/openvpn。权限为400(所有者只读)。

    sudo cp ~/openvpn-admin/easy-rsa/keys/{server.key,server.crt,ca.crt,dh*.pem} /etc/openvpn
    sudo chmod 400 /etc/openvpn/{server.key,server.crt,ca.crt}
    
  3. 也复制文件ta.key

    sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
    sudo chmod 400 /etc/openvpn/ta.key
    
  4. 创建文件/etc/openvpn/server.conf并将其后的行放入其中:

    proto udp
    dev tap
    ca ca.crt
    cert server.crt
    key server.key
    dh dh1024.pem
    server 10.8.0.0 255.255.255.0
    push "redirect-gateway def1"
    ifconfig-pool-persist ipp.txt
    keepalive 10 120
    tls-auth ta.key 0
    # Compress data to save bandwidth
    comp-lzo
    user openvpn
    group openvpn
    persist-key
    persist-tun
    # Logs are useful for debugging
    log-append openvpn-log
    verb 3
    mute 10
    
  5. 对其设置适当的权限,它不需要是秘密的,但是我更喜欢不泄漏配置详细信息,因此:

    sudo chmod 640 /etc/openvpn/server.conf
    

4.完成服务器

如果您在服务器上创建了证书,则最好对其进行加密或将其移出服务器。无论如何,不​​要丢失ca.keyserver.key。在第一种情况下,其他人将能够连接到您的服务器。在后者中,MITM是可能的。

客户

除了服务器IP地址,服务器管理员还应移交以下文件:

  • ca.crt:用于验证证书
  • server.crt:用于验证服务器并与之通信
  • ta.key:用于加强安全性
  • you.crt:用服务器识别自己的身份
  • you.key:就像您的密码一样,文件权限应为400(所有者为只读)

1.安装

安装OpenVPN和NetworkManager插件(适用于KDE和Gnome):

sudo apt-get install openvpn network-manager-openvpn

network-manager-openvpn 在Universe资源库中。

2.配置

在控制面板中,使用以下详细信息:

  • 网关:服务器IP地址
  • 类型:“证书(TLS)”(Gnome)或“ X.509证书”(KDE)
  • CA证书:的路径 ca.crt
  • 用户证书:的路径 you.crt
  • 私钥:的路径 you.key

高级

  • 网关端口:自动(1194)(无需更改)
  • 使用LZO数据压缩:已启用
  • 使用TCP连接:已禁用
  • 使用TAP设备:已启用
  • 密码:默认
  • HMAC身份验证:默认
  • 使用TLS身份验证:已启用
    将密钥文件路径指定为ta.key,并将“密钥方向”设置为1
  • 待办事项-签出)服务器将推送默认网关,以便所有流量都通过VPN连接进行。我上次检查时,network-manager-openvpn插件没有执行此操作。

如果无法使NetworkManager正常工作或不想使用它,则将文件(ca.crt,...)放入/etc/openvpn并创建文件/etc/openvpn/client.conf文件:

client
dev tap
proto udp
# replace 1.2.3.4 by your server IP
remote 1.2.3.4 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert you.crt
key you.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
user nobody
group nogroup
verb 3
mute 20

如果您不想在启动时启用此VPN,请/etc/default/openvpn通过删除以下内容来编辑并取消注释下一行#

#AUTOSTART="none"

要启动此连接,请运行:

sudo /etc/init.d/openvpn start client

client如果您的配置文件未命名,则应重命名client.conf。示例:如果已命名配置文件safe.conf,则需要运行sudo /etc/init.d/openvpn start safe

要停止OpenVPN,您必须运行:

sudo /etc/init.d/openvpn stop

1
基于用户名/密码的登录的服务器配置是什么,我的客户端不了解如何设置VPN客户端,我希望他使用服务器ip,用户名,密码。

@YumYumYum不知道如何使用用户名/密码,请查看openvpn(man openvpn)的手册页。openvpn的最新版本具有嵌入证书和密钥文件的功能,因此为该单个配置文件提供用户说明甚至更加容易。
Lekensteyn

请注意,较新版本的Ubuntu随OpenSSL 1.0.1一起提供,并且运行. vars上面的命令可能会生成一个错误,即“可以找到openssl.cnf文件,进一步的调用将失败”。您需要先运行sudo -s; cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/; ln -s openssl-1.0.0.cnf openssl.cnf然后再运行. vars其他命令。
Dan Dascalescu 2014年

@DanDascalescu该脚本为我正确whichopenssl定位了openssl-1.0.0.cnf文件(easy-rsa 2.3.2,OpenSSL 1.0.1e)
Lekensteyn 2014年

非常翔实,详尽的答案。你能回答这个问题吗?
JB0x2D1 2014年

8

您实际上不需要摆弄任何应用程序。它的工作原理就像“ VPN”。

  1. 首先安装tsocks包装(临时袜子):

    sudo apt-get install tsocks
    
  2. 然后编辑/etc/tsocks.conf并输入

    server = 127.0.0.1
    server_port = 3333
    
  3. 现在,打开一个终端并键入(这将连接您):

    ssh -ND 3333 ssh.url.to.your.home.machine
    
  4. 运行(通过另一个终端或ALT-F2):

    tsocks firefox
    

现在,Firefox将所有通信传输到SSH创建的计算机上的SOCKS服务器。这进一步通过隧道传送到您的家用计算机,然后通过它进入网络。您在家用计算机上所需的就是一台SSH服务器。第一次之后,只需重复步骤3和4。

它就像一个魅力!chromium,铬不喜欢tsocks,但嘿,Firefox可以用。


3
好吧,请看您的最后一句话-如果它们可以与tsocks一起很好地运行,我不想先检查我的所有程序,因为只需单击一下带有OpenVPN的NetworkManager小程序即可。
htorque 2011年

好。对于希望快速解决方案访问网站的人,我的回答可能会很有用。
MarkovCh1 2011年

1

SSH隧道解决方案比您想象的要容易。诸如gSTM之类的程序将使用GUI为您启动/停止隧道。然后只需打开“网络代理”并将其从“直接Internet连接”更改为“手动代理配置”,单击“在系统范围内应用”,您的所有应用都应沿着隧道发送其数据-无需单独处理每个数据。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.