OpenVPN开启tls-auth降低DDoS风险
由于和Canonical公司(就是Ubuntu的母公司)的合作,本公司最近搭建了到美国的OpenVPN隧道。
但是在实际的使用中,容易遭受到DDoS的攻击和莫名其妙的连接已重置,Google了一下,找到了解决方案:开启OpenVPN的tls-auth功能。
服务器端配置:
选择一个你想放置TLS协商的Key文件的位置(比如我放在 /etc/openvpn/easy-rsa/2.0/keys/ 目录下),进入该目录,运行:
openvpn –genkey –secret ta.key
运行结束后,可以用cat命令看一下是否存在该文件。
打开OpenVPN的配置文件(注意,由于配置不一致,请按照实际情况输入路径和文件名)
vi /etc/openvpn/easy-rsa/2.0/conf/server.conf
打开后,用 /tls- 命令搜索“#tls-auth ta.key 0 # This file is secret”行,并去掉前面的注释,然后将ta.key就改为你所放置 ta.key 文件的路径。我的配置结果是:
tls-auth /etc/openvpn/easy-rsa/2.0/keys/ta.key 0 # This file is secret
然后重启OpenVPN服务。
客户端配置:
将 /etc/openvpn/easy-rsa/2.0/keys/ta.key 文件通过WinSCP或任何你喜欢的方式拷贝回本地,放在OpenVPN所在目录的config目录下,然后打开你的OpenVPN配置文件(这里以client.ovpn为例)。
在client.ovpn文件中找到 #tls-auth ta.key 1 行,并去掉前面的井号,然后保存并退出编辑器,这样就完成了配置。
Android配置:
如果你使用的是cyanogenmod 7,只需要修改一下OpenVPN的配置即可。首先将ta.key文件拷贝到存储卡里,然后进入“虚拟专用网设置”,按住你的OpenVPN配置文件不 松,再点击修改网络,然后按Menu键,点击高级,选中 TLS-Auth ,并在 TA key file location 里指定你拷贝到存储卡里的 ta.key 文件的目录(比如 /mnt/sdcard/openvpn/ ),然后将 Tls-Auth Key direction设置为1,然后按返回退出即可(如下图)
来源:http://chenshaoju.blogcn.com/articles/OpenVPN开启tls-auth降低DDoS风险.html
以前GFW封vpn一般都是直接封域名和IP,这次GFW封VPN是封的IP+端口,也就是特定IP上封锁特定端口(或特定端口上封锁特定IP)。
这样就导致 IP可以ping通,其他端口正常使用就是VPN端口被封连接不上,既不是以前的封锁IP也不是封锁所有IP的某个端口,这种封锁对VPN针对性很强,误 杀减少,有利于加大封锁规模。
这次openvpn也受影响严重,即使是自己VPS搭建的OpenVPN在正常使用一段时间后可也能就会被封锁端口,然后切换OpenVPN为其他端口连接时又恢复正常,不过使用一段时间还可能被封锁,所以说其应该是根据某些特征封锁,并且GFW应该有自动学习和记忆功能。
感觉是和封tor网桥类似,毕竟他们的伪装还存在缺陷,具体是不是这样也不清楚,毕竟GFW的运作是黑箱作业。GFW里有高人,国家有钱就能找到有本事的人来搞网络封锁。正如推友@gfwrev所说:
“GFW对于网民无论是在网络控制上还是政治保障上都有压倒性的优势。它唯一的弱点就是它一切动作的基本还是检测。既然如此,继续这个猫鼠游戏才是争取空间的最好方式。从这些年GFW技术的巨变不难看出,这只猫的实力越来越强。我们的时间很有限,不能浪费在无谓的事情上。”
当然对于此类干扰除了不停换端口或者上文的用TCP协议的TPKT协议重叠的端口(比如TCP 3389)并启用TLS-AUTH防止墙主动探测外也不是说只能坐以待毙,OpenVPN的wiki上给出另外两种方法,有兴趣的可以研究下是否有效:https://community.openvpn.net/openvpn/wiki/TrafficObfuscation
一、Use static keys
这个没看太明白,不知道说的是不是预先共享的静态密钥方式,我们知道OpenVPN有两种安全模式,一种是预先共享的静态密钥(Static Key)方式(参考),另一种是基于使用SSL/TLS的RSA证书和密钥的方式。前者具有配置简单,无需维护X509 PKI的优点,但限制了用户数量,只支持一对一的连接方式,安全性也不够高(使用这种的不常见,翻墙VPN里只见过12VPN这么搞过);后者则保证了安全性,但需要额外维护 PKI,相对前者配置比较复杂,不过在我们使用的翻墙VPN中比较常见。在OpenVPN的安装目录下的sample-config文件夹中就提供了这两种部署方案的示例配置文件,sample.ovpn对应前一种方案(客户端和服务器配置基本对应),client.ovpn+server.ovpn是后一种方案(就是我们最常见的那种)。
二、Use obfsproxy
obfsproxy是tor为其网桥被干扰而特意开发的代理工具,目的是用来混淆流量,使检测者更不容易区分,进而避免被封杀。如果OpenVPN结合obfsproxy预计可以有效地防止GFW的检测干扰。
@merrykid,@iGFW:那个提示是说,你的服务器证书没有启用HOWTO中说的任一验证方法。比如:创建证书时,为证书设置一个密码。
我就是按照这篇文章配置ta.key了的?
那就不知道了,如果你自己vps上自己用可以参考 http://igfw.net/archives/12009
TPKT协议是什么协议?
我也不清楚,你可以搜索下。
我按照这个开启了tls_auth后windows版openvpn客户端还是会出现个警告,说有可能会有中间人攻击,http://openvpn.net/howto.html#mitm这里介绍的几种方法是什么意思?
Thu Nov 22 00:05:42 2012 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
Thu Nov 22 00:05:42 2012 NOTE: OpenVPN 2.1 requires ‘–script-security 2’ or higher to call user-defined scripts or executables
Thu Nov 22 00:05:42 2012 Control Channel Authentication: using ‘ta.key’ as a OpenVPN static key file
那个是给出的五种防中间人攻击的方法,
你这个提示是不是因为你服务器上没有配置使用ta.key啊