我在 VPS 上安装了 Ubuntu 12.05,在其中运行 Apache 2.2 和 OpenVPN - 两者都在同一个公共 IP 上。我的目的是在我的 Apache Web 服务器中设置一个区域,只有当我连接到 VPN(使用 OpenVPN)时我才能访问该区域,用于各种我不希望公开访问的工具 - 因此基于密码的设置在这种情况下不起作用。
好的,ifconfig
显示tun0
接口具有 A 类 IP 10.8.0.1
。我去更新我的example.com
域的 DNS 区域,并在子域上添加了一条A
记录private.example.com
- 它将解析为10.8.0.1
。
另一方面,在 Apache 配置中,我添加了一个将监听10.8.0.1
(<VirtualHost 10.8.0.1:80> [...]
)的虚拟主机。
这很好用 - 现在我private.example.com
只有连接到该 VPN 时才能访问,但是这个设置有多安全?是否存在我没有看到的明显缺点;这种设置是通常使用的吗?
注意:当然,我们假设 Apache2 和 VPN 都没有被其他方式攻破。
答案1
假设 VPN 没有受到损害,你所说的并非完全不合理。
我会考虑添加iptables
一条双重保险方法的规则,例如:
iptables -A INPUT -d 10.8.0.1 -i ! tun0 -p tcp --dport 80 -j DROP
除非源接口是 ,否则应该会丢弃任何以 10.8.0.1 上的 TCP 端口 80 为目的地的传入段tun0
。(我假设您正在运行默认允许的 INPUT 链,或者您也有一个明确的规则来允许此流量。)
我可能还会进一步实施这种双重保险策略,要求在面向 VPN 的网站上进行身份验证,但这只是我的过度偏执。