Linuxボックスは、a
動的DNS登録を介してホームDSL回線に接続され、読み取り専用tmux
モードでSSHを介して接続されている複数のクライアントのセッションをホストします。すべてのユーザーは同じ資格情報(user)を使用して接続しますb
。
Example: ssh [email protected] tmux attach -t screencast
すべてがうまくいきますが、ボックスからインターネットまで「いたずらな」ことをするユーザーがいます。 ISPとのインターネット契約の責任があるため、これは受け入れられません。そのアカウントを使用して自分のコンピュータでセッションを視聴する権限を付与するb
ことに加えて、ssh
各ユーザーを完全に刑務所に収めることはできますか?tmux
screencast
a
ユーザーが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が読み取り専用セッションでシェルエスケープを許可しないと思うようですが、わかりません。この時点でユーザーがエスケープできないことを確認してください。