Linuxでユーザーアカウントのネットワーク機能を「刑務所」にする方法は?

Linuxでユーザーアカウントのネットワーク機能を「刑務所」にする方法は?

Linuxボックスは、a動的DNS登録を介してホームDSL回線に接続され、読み取り専用tmuxモードでSSHを介して接続されている複数のクライアントのセッションをホストします。すべてのユーザーは同じ資格情報(user)を使用して接続しますb

Example: ssh [email protected] tmux attach -t screencast

すべてがうまくいきますが、ボックスからインターネットまで「いたずらな」ことをするユーザーがいます。 ISPとのインターネット契約の責任があるため、これは受け入れられません。そのアカウントを使用して自分のコンピュータでセッションを視聴する権限を付与するbことに加えて、ssh各ユーザーを完全に刑務所に収めることはできますか?tmuxscreencasta

ユーザーがSSHを介して接続したらすぐにそのIPアドレスにのみトラフィックを許可するようにipchainを更新したいと思います。

答え1

あなたの要件を完全に理解していません。ユーザーはどのコンピュータに閉じ込められますか?ネットワーキングに関連していないすべてのタスクを実行できますか?それにもかかわらず、必要なビルディングブロックが何であるかを申し上げることはできそうです。

ユーザーを特定のネットワーク接続に制限するには、次を参照してください。 Linuxでiptablesを使用してLAN上の特定のユーザーにインターネットアクセスを制限する方法。簡単に言えば、SSHを介して接続するユーザー1234のネットワークトラフィックを192.0.2.42(マシンAのIPアドレス)に制限します。

iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -d 192.0.2.42 --dport 22 -j ACCEPT
iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -j DROP

IPv6がある場合は、IPv6もブロックすることを忘れないでください。

マシンAで制限されたユーザーをアカウントBに制限する最も効率的な方法は、これらのユーザーが他のアカウントの資格情報を持たないように調整することです。Matchディレクティブを使用できますsshd_config特定のユーザーを認証するために特定のIPアドレスへの接続を制限すると、管理アクセス権が得られなくなるため、悪い可能性があります。

Match 192.0.2.99
    AllowTCPForwarding No
    AllowUsers B
    PasswordAuthentication No
    X11Forwarding No

アカウントBを単一のコマンドに制限するには、次の2つの方法があります。

  • ユーザーに秘密鍵(好ましくはユーザーごとに1つ)を提供し、authorized_keys指示を含むファイルですcommand=

    command="tmux attach-session -r -t screencast" ssh-rsa …
    
  • tmuxユーザーのシェルを正しいパラメータで実行されたスクリプトに設定します。これの利点は、パスワード認証を許可できることですが、ユーザーがシェルプロンプトから離れることを許可しないように正しく実行することはより困難な場合があります。

tmuxは、tmuxが読み取り専用セッションでシェルエスケープを許可しないと思うようですが、わかりません。この時点でユーザーがエスケープできないことを確認してください。

関連情報