iptables:SSHおよびVPNトラフィックのみを許可する方法は?

iptables:SSHおよびVPNトラフィックのみを許可する方法は?

Ubuntu 14.10がインストールされた専用サーバーがあります。

サーバーはOpenVPNサーバーに接続する必要があり、トラフィックはVPNを介してのみ移動する必要があります(SSHトラフィックを除く)。

私の考えはこれを達成することですが、iptables専門家ではありません。

これを処理するには正確に何を使うべきですかiptables

基本条件は次のとおりです。

  1. VPNを介したトラフィックのみが許可されます。サーバーがVPNへの接続を失った場合は、トラフィック漏れがないはずです。

  2. VPNなしでSSHを使用できます。 SSHとサーバープロバイダの通常のIPを使用してサーバーに接続したいのですが(SSHトラフィックのみ)。

  3. 私はVPNの唯一のユーザーではないので、別のコンピュータからVPNのサーバーを隠したいと思います。

ルールの作成を開始しましたが、iptablesルールは常にすべての接続をブロックします。

# flush old rules
iptables -F

# accept SSH traffic with non vpn connection
iptables -A INPUT -d X.X.X.X -p tcp --dport 22 -j ACCEPT 
iptables -A OUTPUT -s X.X.X.X -p tcp --sport 22 -j ACCEPT 

# block everything except my rules
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

# allow loopback
iptables -A INPUT  -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# allow vpn
iptables -A INPUT  -j ACCEPT -p udp -s Y.Y.Y.Y --sport 1194
iptables -A OUTPUT -j ACCEPT -p udp -d Y.Y.Y.Y --dport 1194

XXXXはプロバイダによって提供されたサーバーIPです。
YYYYはVPNサーバーのIPです。

これらの規則により、常に現在のSSH接続が中断され、ポート22を介してトラフィックを許可する必要があるにもかかわらず、新しいSSH接続を作成できません。

ベストアンサー1

-dオプションを覚えておいてください。すべてのアダプタに適用するには、このオプションを使用しないでください。 iptables -A INPUT -p tcp --dport 22 -j ACCEPT

おすすめ記事