使用 IPTABLES 保护 openVPN

使用 IPTABLES 保护 openVPN

我设置了一个 openVPN 服务器并且它运行正常。

下一步是保护它,我选择使用 IPTABLES 来仅允许某些连接通过,但到目前为止它还不起作用。

我想启用对我的 openVPN 服务器后面的网络的访问,并允许其他服务(网络访问),当 iptables 被禁用或设置为允许所有这些工作正常时,当使用我的以下规则时则不行。

另请注意,我已经将 openVPN 本身配置为执行我想要的操作,并且它运行良好,只有在启动 iptables 时才会失败。

任何能够告诉我为什么这不起作用的帮助都将不胜感激。

这些是我根据 openVPN 的建议添加的行,不幸的是,测试这些命令表明它们是必需的,但它们似乎非常不安全,有什么办法可以避免使用它们吗?

# Allow TUN interface connections to OpenVPN server
-A INPUT -i tun+ -j ACCEPT

#allow TUN interface connections to be forwarded through other interfaces
-A FORWARD -i tun+ -j ACCEPT

# Allow TAP interface connections to OpenVPN server
-A INPUT -i tap+ -j ACCEPT

# Allow TAP interface connections to be forwarded through other interfaces
-A FORWARD -i tap+ -j ACCEPT

这些是我添加的新链和命令,用于尽可能地限制访问。不幸的是,启用这些链和命令后,openVPN 连接会正常建立,但无法访问 openVPN 服务器后面的其余网络

  • 注意,我正在配置主 iptables 文件,而且我很偏执,所以所有端口和 ip 地址都被更改了,并且 -N 等出现在这之前,所以请忽略它们不会出现。

  • 我还添加了一些关于我“打算”制定这些规则的目的的解释,这样你就不会浪费时间去弄清楚我哪里做错了:>

    4
    #accepts the vpn over port 1192
    -A INPUT -p udp -m udp --dport 1192 -j ACCEPT
    -A INPUT -j INPUT-FIREWALL
    -A OUTPUT -j ACCEPT
    #packets that are to be forwarded from 10.10.1.0 network (all open vpn clients) to the internal network (192.168.5.0) jump to [sic]foward-firewall chain
    -A FORWARD -s 10.10.1.0/24 -d 192.168.5.0/24 -j FOWARD-FIREWALL
    #same as above, except for a different internal network
    -A FORWARD -s 10.10.1.0/24 -d 10.100.5.0/24 -j FOWARD-FIREWALL
    # reject any not from either of those two ranges
    -A FORWARD -j REJECT
    -A INPUT-FIREWALL -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT-FIREWALL -p tcp -m tcp --dport 22 -j ACCEPT
    -A INPUT-FIREWALL -j REJECT
    
    -A FOWARD-FIREWALL -m state --state RELATED,ESTABLISHED -j ACCEPT
    #80 443 and 53 are accepted 
     -A FOWARD-FIREWALL -m tcp -p tcp --dport 80 -j ACCEPT
    -A FOWARD-FIREWALL -m tcp -p tcp --dport 443 -j ACCEPT
    #192.168.5.150 = openVPN sever
    -A FOWARD-FIREWALL -m tcp -p tcp -d 192.168.5.150 --dport 53 -j ACCEPT
    -A FOWARD-FIREWALL -m udp -p udp -d 192.168.5.150 --dport 53 -j ACCEPT
    -A FOWARD-FIREWALL -j REJECT
    COMMIT
    

现在我等待:D

答案1

直接使用 Shorewall 而不是 iptables。Shorewall 是一个轻量级配置工具,可以更轻松地管理 iptables 规则。您可以按照以下步骤在大约 10 分钟内启动并运行 OpenVPN 防火墙OpenVPN 操作指南

答案2

您是否尝试过在 REJECT 前面添加 -j LOG 语句,以便至少可以看到最终被拒绝的是哪一个以及具体是什么被拒绝了?

您能提供一条跟踪路由吗,例如从 10.10.1.1 跟踪路由 192.168.5.1?

相关内容