hto*_*que 31 security network-manager vpn networking openvpn
目标:当我的笔记本电脑连接到一个开放的热点/接入点时,我希望能够通过我的家用 PC 安全地使用互联网。
我不知道,我可以使用SSH隧道/ SOCKS代理,但我不想摆弄应用(使它们使用它,如果甚至有可能)。我想我需要的是 OpenVPN 设置,因此我正在寻找有关如何执行以下操作的详细指南:
这应该适用的 Ubuntu 版本是 10.10 和 11.04。
Lek*_*eyn 40
几个月前我有确切的问题,但另外,如果可能的话,我想有一个 IPv6 连接。您可能对我关于 Serverfault 的问题感兴趣:
我的服务器上只有一个 NIC(“网络接口”)可供使用。在我的设置中,NetworkManager 是不够的,因为我需要运行一个自定义脚本来支持 IPv6。然而,为了简单起见,我将在这里使用 NetworkManager 并省略 IPv6 支持。
首先,只需确定身份验证方法。我将使用更安全的证书方法,它的工作方式类似于 SSL:在握手期间,会选择一个用于会话的公共秘密。其他方法是共享密钥;用户名和密码。
首先,安装openvpn服务器。这很简单sudo apt-get install openvpn。困难的部分是配置它。该配置存在于/etc/openvpn.
服务器需要证书来识别它自己和它的客户端。这些证书是从 CA(公共机构)检索的。证书和相关私钥的创建可以在任何机器上完成,不必在服务器上完成。如果你真的很偏执,你应该在没有连接到网络的机器上进行,并使用记忆棒来传输证书。
除非您的 CA 的私钥被泄露,否则必须执行此步骤一次。在这种情况下,可以创建将被服务器接受的有效证书,从而导致安全漏洞。
在官方文档建议做给药/etc/openvpn。我不喜欢以 root 身份运行所有东西,所以我会把它放在不同的目录中。
创建管理目录并通过运行以下命令复制其中的文件:
mkdir ~/openvpn-admin
cd ~/openvpn-admin
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ ./easy-rsa
cd easy-rsa
Run Code Online (Sandbox Code Playgroud)vars根据需要编辑默认值,例如设置,KEY_SIZE=2048因为您是偏执狂。通过运行以下命令加载变量并创建密钥目录:
. vars
Run Code Online (Sandbox Code Playgroud)如果出现错误No ... openssl.cnf file could be found
Further invocations will fail,请运行ln -s openssl-1.0.0.cnf openssl.cnf,然后. vars再次运行。
如果这是您第一次使用此 CA,请准备好密钥环境。难道不,如果你想保持你以前创建的CA.运行此命令 这样做将需要您部署一个新的ca.crt.
./clean-all
Run Code Online (Sandbox Code Playgroud)./build-ca。您可以根据需要填写任何详细信息,但请注意,当客户端连接到服务器时,此信息将在日志文件中可见。这将创建文件ca.key和ca.crt子文件夹keys。在任何情况下都对ca.key文件保密。如果不这样做,任何拥有密钥的人都可以连接到您的服务器。./revoke-full server. 否则会出现数据库错误。通过运行为服务器创建证书:
./build-key-server server
Run Code Online (Sandbox Code Playgroud)
当被要求输入密码时,请将其留空,除非您愿意在每次服务器启动时输入密码(不推荐)。确认签署证书并提交。目录中将出现两个新文件keys:server.key和server.crt.
使用以下方法生成Diffie-Hellman参数:
./build-dh
Run Code Online (Sandbox Code Playgroud)
根据硬化提示,使用tls-auth. 为此,使用以下方法生成共享密钥:
openvpn --genkey --secret ta.key
Run Code Online (Sandbox Code Playgroud)
生成的文件 ( ta.key) 也必须分发给客户,但您不应将其公开。
对于每个客户端,应重复这些步骤:
输入您在其中创建 CA 和服务器证书的目录:
cd ~/openvpn-admin/easy-rsa
Run Code Online (Sandbox Code Playgroud)如果您因为已经创建了 CA 而跳过了 CA 创建步骤,则需要先加载变量:
. vars
Run Code Online (Sandbox Code Playgroud)./revoke-full you。否则会出现数据库错误。创建客户端证书you.key及其相应的证书you.crt:
./build-key you
Run Code Online (Sandbox Code Playgroud)
本CommonName应该是唯一的。如果您使用的是 KDE,请将密码留空,因为它从 10.10 开始不受支持。与服务器证书生成一样,确认签署证书并提交更改。
默认情况下,OpenVPN 在接受连接时以 root 身份运行。如果可以从邪恶的 Internet 访问该服务,这不是一个好主意。
为 OpenVPN 创建一个专用用户,例如openvpn:
sudo useradd openvpn
Run Code Online (Sandbox Code Playgroud)复制文件server.key,server.crt,ca.crt和dh1024.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}
Run Code Online (Sandbox Code Playgroud)也复制文件ta.key:
sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
sudo chmod 400 /etc/openvpn/ta.key
Run Code Online (Sandbox Code Playgroud)创建文件/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
Run Code Online (Sandbox Code Playgroud)为其设置适当的权限,它不需要保密,但我不希望泄露配置详细信息,因此:
sudo chmod 640 /etc/openvpn/server.conf
Run Code Online (Sandbox Code Playgroud)如果您在服务器上创建了证书,最好对其进行加密或将其移出服务器。在任何情况下,都不要丢失ca.key和server.key。在第一种情况下,其他人将能够连接到您的服务器。在后者中,MITM是可能的。
除服务器IP地址外,服务器管理员还应交出以下文件:
ca.crt: 用于验证证书server.crt: 用于验证服务器并与之通信ta.key: 加强安全性you.crt: 用服务器标识你自己you.key: 就像你的密码一样,文件权限应该是 400(所有者只读)安装 OpenVPN 和 NetworkManager 插件(适用于 KDE 和 Gnome):
sudo apt-get install openvpn network-manager-openvpn
Run Code Online (Sandbox Code Playgroud)
network-manager-openvpn 位于 Universe 存储库中。
在控制面板中,使用以下详细信息:
ca.crtyou.crtyou.key在高级:
ta.key并将“密钥方向”设置为1。如果您无法让 NetworkManager 工作或不想使用它,请将文件 ( ca.crt, ...) 放入/etc/openvpn并创建文件/etc/openvpn/client.conffile:
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
Run Code Online (Sandbox Code Playgroud)
如果您不想在启动时启用此 VPN,请/etc/default/openvpn通过删除以下内容来编辑并取消注释下一行#:
#AUTOSTART="none"
Run Code Online (Sandbox Code Playgroud)
要启动此连接,请运行:
sudo /etc/init.d/openvpn start client
Run Code Online (Sandbox Code Playgroud)
client如果您的配置文件未命名,则应重命名client.conf。示例:如果您已将配置文件命名为safe.conf,则需要运行sudo /etc/init.d/openvpn start safe.
要停止 OpenVPN,您必须运行:
sudo /etc/init.d/openvpn stop
Run Code Online (Sandbox Code Playgroud)
您实际上不需要摆弄任何应用程序。这“就像 VPN 一样”工作。
首先安装tsocks包(临时socks):
sudo apt-get install tsocks
Run Code Online (Sandbox Code Playgroud)然后编辑/etc/tsocks.conf并输入
server = 127.0.0.1
server_port = 3333
Run Code Online (Sandbox Code Playgroud)现在,打开一个终端并输入(这会连接你):
ssh -ND 3333 ssh.url.to.your.home.machine
Run Code Online (Sandbox Code Playgroud)运行(通过另一个终端或 ALT-F2):
tsocks firefox
Run Code Online (Sandbox Code Playgroud)现在,Firefox 将所有通信传输到您计算机上由 SSH 创建的 SOCKS 服务器。这会进一步通过隧道连接到您的家用机器,然后再访问网络。您在家用机器上所需要的只是一个 SSH 服务器。第一次后,只需重复步骤 3 和 4。
它就像一个魅力!唉,Chromium 不喜欢 tsocks,但是嘿,Firefox 可以工作。