10 ポイント 投稿者 xguru 2024-08-27 | まだコメントはありません。 | WhatsAppで共有
  • サーバーにUDPパケットを送信してコマンドを実行するツール
  • コマンドはサーバー側で設定されるため、クライアントは実行するコマンドを定義せず、既存のコマンドから選択するだけ
  • 3つのバイナリで構成
    • client: コンピューター上で実行され、UDPパケットを送信
    • server: UDPパケットを受信して有効かどうかを確認
    • commander: UDPパケットのデータにエンコードされたコマンドが有効な場合に実行
  • セキュリティ
    • UDPで送信されるため、サーバーは一切応答しない: ポートスキャン不可
    • クライアントからサーバーへ送信されるデータはRSAを使用して暗号化
    • クライアントは実行するコマンドだけを指定し、コマンド自体はサーバーに保存される -> クライアントはコマンドを選択できるが定義はできない
    • 可能な限り少ないOS権限でサーバーソフトウェアを実行
    • サーバーが受信したすべてのパケットをブロックリストに追加してreplay攻撃から保護
    • (WIP) DoS保護

使用例: single packet authorization (SPA)

サーバーの保護のため、SSHを完全に開放する代わりに、SSHポートを短時間だけ開いて再び閉じる方式を導入可能

address = "0.0.0.0:8080"  # Rurocoサーバーが待ち受けるアドレス (systemd/ruroco.socket を使わない場合)  
config_dir = "/etc/ruroco/"  # 設定ファイルが保存されるパス  
  
[commands]  
# SSHを開く (リクエスト元のIPアドレスに対してのみ)  
open_ssh = "ufw allow from $RUROCO_IP proto tcp to any port 22"   
# SSHを閉じる (リクエスト元のIPアドレスに対してのみ)  
close_ssh = "ufw delete allow from $RUROCO_IP proto tcp to any port 22"  
  • サーバーでこのようにRurocoを設定し、クライアント側で次のコマンドを実行
    ruroco-client send --address host.domain:8080 --private-pem-path /path/to/ruroco_private.pem --command open_ssh --deadline 5
  • サーバーはRSAを使用して、クライアントにそのコマンドを実行する権限があるかを確認し、"open_ssh" の下に定義されたコマンドを実行
  • --deadline 引数は、コマンド実行後5秒以内にサーバーでコマンドが開始されなければならないことを意味する
  • SSHポートへのアクセスは、UDPパケットが送信されたIPに対してのみ許可
  • もちろん、SSHポートがインターネットに公開される場合と同様、他のすべてのセキュリティ強化も行う必要がある
  • 設定ファイルにさらに多くのコマンドを追加して、必要な数だけコマンドを定義できる

まだコメントはありません。

まだコメントはありません。