目标:当笔记本电脑连接到开放的热点/访问点时,我希望能够通过家用PC安全地使用互联网。
我确实知道我可以使用SSH隧道/ SOCKS代理,但是我不想摆弄应用程序(即使可能也可以使用它们)。我想我需要的是OpenVPN设置,因此我正在寻找有关如何进行以下操作的详细指南:
- 安装和设置OpenVPN服务器
- 设置OpenVPN客户端(NetworkManager)
可以使用的Ubuntu版本是10.10和11.04。
目标:当笔记本电脑连接到开放的热点/访问点时,我希望能够通过家用PC安全地使用互联网。
我确实知道我可以使用SSH隧道/ SOCKS代理,但是我不想摆弄应用程序(即使可能也可以使用它们)。我想我需要的是OpenVPN设置,因此我正在寻找有关如何进行以下操作的详细指南:
可以使用的Ubuntu版本是10.10和11.04。
Answers:
几个月前,我有一个确切的问题,但此外,如果可能,我想建立一个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
vars
根据需要编辑默认设置,例如设置,KEY_SIZE=2048
因为您偏执。通过运行以下命令来加载变量并创建密钥目录:
. vars
如果出现错误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
./build-ca
。您可以填写所需的任何详细信息,但是请注意,当客户端连接到服务器时,此信息将在日志文件中可见。这将创建文件ca.key
和ca.crt
子文件夹keys
。在任何情况下都应将ca.key
文件保密。否则,任何拥有密钥的人都可以连接到您的服务器。./revoke-full server
。否则,您将收到数据库错误。通过运行以下命令为服务器创建证书:
./build-key-server server
当要求输入密码时,请将其保留为空,除非您愿意在每次服务器启动时都输入密码(不建议)。确认签署证书并提交。两个新文件将出现在目录中keys
:server.key
和server.crt
。
使用以下命令生成Diffie-Hellman参数:
./build-dh
根据硬化技巧,使用tls-auth
。为此,使用以下命令生成共享秘密密钥:
openvpn --genkey --secret ta.key
生成的文件(ta.key
)也必须分发给客户端,但您不应将其公开。
对于每个客户,应重复这些步骤:
输入您在其中创建CA和服务器证书的目录:
cd ~/openvpn-admin/easy-rsa
如果由于已经跳过了CA创建步骤,则需要先加载变量:
. vars
./revoke-full you
。否则,您将收到数据库错误。创建客户端证书you.key
及其相应的证书you.crt
:
./build-key you
本CommonName
应该是唯一的。如果您使用的是KDE,请将该密码保留为空,因为从10.10开始尚不支持该密码。与服务器证书生成一样,请确认对证书进行签名并提交更改。
默认情况下,OpenVPN在接受连接时以root用户身份运行。如果服务可以从邪恶的互联网访问,则不是一个好主意。
为OpenVPN创建专用用户,例如openvpn
:
sudo useradd openvpn
复制文件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}
也复制文件ta.key
:
sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
sudo chmod 400 /etc/openvpn/ta.key
创建文件/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
对其设置适当的权限,它不需要是秘密的,但是我更喜欢不泄漏配置详细信息,因此:
sudo chmod 640 /etc/openvpn/server.conf
如果您在服务器上创建了证书,则最好对其进行加密或将其移出服务器。无论如何,不要丢失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
network-manager-openvpn
在Universe资源库中。
在控制面板中,使用以下详细信息:
ca.crt
you.crt
you.key
在高级:
ta.key
,并将“密钥方向”设置为1
。如果无法使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
man openvpn
)的手册页。openvpn的最新版本具有嵌入证书和密钥文件的功能,因此为该单个配置文件提供用户说明甚至更加容易。
. 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
其他命令。
whichopenssl
定位了openssl-1.0.0.cnf
文件(easy-rsa 2.3.2,OpenSSL 1.0.1e)
您实际上不需要摆弄任何应用程序。它的工作原理就像“ VPN”。
首先安装tsocks
包装(临时袜子):
sudo apt-get install tsocks
然后编辑/etc/tsocks.conf
并输入
server = 127.0.0.1
server_port = 3333
现在,打开一个终端并键入(这将连接您):
ssh -ND 3333 ssh.url.to.your.home.machine
运行(通过另一个终端或ALT-F2):
tsocks firefox
现在,Firefox将所有通信传输到SSH创建的计算机上的SOCKS服务器。这进一步通过隧道传送到您的家用计算机,然后通过它进入网络。您在家用计算机上所需的就是一台SSH服务器。第一次之后,只需重复步骤3和4。
它就像一个魅力!chromium,铬不喜欢tsocks,但嘿,Firefox可以用。