クライアントに openvpn 証明書を発行して、トラフィックを特定のサイトにリダイレクトする設定があります。各クライアントがリダイレクトされるサイトを制限することが重要です。
各クライアントには、client-configs/config-dir/ に、サーバー内でルーティングする必要がある IP が次のようにあります: push route 123.123.123.123 255.255.255.255。
クライアントには、端末で設定するためのキーと構成を含む ovpn ファイルが提供されます。問題は、新しいルートがサーバー側の構成にない場合でも、クライアントが ovpn ファイルを編集して、VPN 経由でより多くのトラフィックをルーティングできる可能性があることです。これにより、アクセスすべきでないサイトにアクセスできるようになります。
この動作を制限する解決策や、使用できる別のツールはありますか?
ノート:
- OpenVPN サーバーにはパブリック IP が 1 つだけ接続されており、トラフィックを転送しています。
- これは BYOD シナリオであるため、権限をロックダウンすることはできません。
- 各クライアントが異なる IP セットにルーティングされるため、openvpn サーバー上の送信ファイアウォール制限もオプションではありません。
答え1
おっしゃる通りです。クライアントはローカルの ovpn ファイルを編集して、プッシュされたルートを無視するように指示し、すべてのトラフィックをゲートウェイにルーティングするように構成できます。私自身、テストのためにこれを数回実行しなければなりませんでした。OpenVPN にはこれを制限する方法がありません。
2 つのオプションがあります:
- クライアントのOVPNファイルの権限をロックダウンして編集できないようにします
- 特定のサブネット以外の送信トラフィックをブロックするファイアウォールルールをOpenVPNサーバーに実装する
企業環境の場合は、ユーザーのコンピューターの権限を制御するメカニズムがすでに存在している可能性があります。最初のオプションは非常に簡単です。
ファイルに対するユーザーの権限を制御できない場合は、ファイアウォール ルールを使用するのが最善の方法です。転送とマスカレードを機能させるには、すでにルールを設定する必要があります (例:https://askubuntu.com/a/578550/283173)。特定のサブネットのみを許可するように追加の iptables ルールを挿入できます。
アップデート:修正したメモに基づいて、唯一の選択肢はサーバー側のファイアウォールであることがさらに明らかになりました。送信フィルターについては、本当によく考える必要があります。おそらく、最終的に行う必要があるのは、ファイアウォール ルールをインテリジェントに作成する独自のプログラムを作成することです。各クライアントが特定の IP にルーティングされることがわかっている場合は、クライアントが接続したときにファイアウォールでルートを動的に開くことができます。learn-address
サーバー構成のディレクティブを使用してクライアントが接続したときに OpenVPN のシステムにフックし、クライアント接続に関する詳細をカスタム プログラムに送信できます。