サーバーからスクリプトをプッシュしてクライアントで実行するにはどうすればよいですか?

サーバーからスクリプトをプッシュしてクライアントで実行するにはどうすればよいですか?

接続できなくなり (ssh、salt など)、物理的に簡単にアクセスできないデバイスがありますが、それでもサーバーへの OpenVPN セッションが開かれます。回復するには、次の操作を行ってください。

  • サーバー上でこのクライアントの再接続を強制する
  • クライアントが再接続すると、クライアントが実行するスクリプトをプッシュします (最初にログと構成のダンプで何が起こっているかを確認し、正しい設定を回復します)

解決策はあります接続後にクライアントで実行されるスクリプトしかし、すべてはこれがクライアントの選択であると想定しています(= 構成はクライアント側にあります)。私はその逆を探しています。

このようなアプローチにはセキュリティ上の問題があることはわかります (VPN プロバイダーがクライアント マシンを乗っ取る可能性があります) が、ドキュメントからは明らかでない方法があるのでしょうか?

答え1

クライアントを強制的に再接続するには、次の操作を実行します。

  • 特定の送信元IPアドレスと送信元ポートの組み合わせをドロップするiptables出力チェーン、または宛先アドレスと宛先ポート入力ping-restart間隔よりも長い期間、
  • OpenVPN の管理インターフェースで指定されたクライアントを強制終了します。こちらをご覧ください
  • サーバーの OpenVPN サービスを再起動すると、上記のすべてにより、新しい対称キー交換、新しいソケット、新しい dst ポート番号が強制されます。

スクリプトを実行できない理由:

  • ここでは運が悪いです。スクリプトは設定されており、クライアント側に配置する必要があり、私の知る限り、OpenVPN の ccd でもそれが許可されておらず、適切な「プル」設定ディレクティブもクライアント側で必要です。これにより、サーバーは、暗号、バッファ サイズ、圧縮、ルートなどの最も基本的なトンネル オプションをプルできますが、スクリプト設定ディレクティブはプルできません。
  • デフォルト設定ではOpenVPNはnobody権限で動作します。
  • これはセキュリティホールになります。

関連情報