要塞サーバーがあります。プロキシコマンドと秘密鍵を使用して、ローカルから要塞を経由して C に SSH 接続する必要があるユーザーがいるはずです。
Bastion ホストからの ssh のみにアクセスできるユーザーとグループを作成したいと考えています (proxyCommand 経由で実行されます)。また、ファイルを読み取る必要もありません。
どうすればそれができるでしょうか?方法はありますか?
上記が不可能な場合のもう 1 つの代替案は、グループに対してのみ読み取りアクセス権を持つ制限されたファイル (OS によってデフォルト設定) を除き、許可されたファイルに対してのみ読み取りアクセス権を持つことです。
答え1
特定のユーザーが指定されたコマンドのみを使用できるようにする方法は次のとおりです。
ユーザー シェルを制限された bash に変更します。
chsh -s /bin/rbash <username>
ユーザーのホームディレクトリの下に bin ディレクトリを作成します。
sudo mkdir /home/<username>/bin sudo chmod 755 /home/<username>/bin
ユーザーのデフォルトの PATH を次の bin ディレクトリに変更します。
echo "PATH=$HOME/bin" >> /home/<username>/.bashrc echo "export PATH >> /home/<username>/.bashrc
ユーザーが必要とするコマンドのシンボリックリンクを作成します。
sudo ln -s /bin/<command> /home/<username>/bin/
~/.bashrc
不変にしてユーザーによる変更を制限します。chattr +i /home/<username>/.bashrc
この方法では、許可するコマンドへのシンボリック リンクのみが作成されます。
複数のユーザーに対して同じことを実行するには、これらのコマンドを含み、ユーザー名をパラメータとして持つ bash スクリプトを作成します。
編集: CentOS では、rbash は直接実装されていない可能性があり、シンボリック リンクを作成する必要があります。Red Hat などの他のバージョンの GNU/Linux でも同様です。
# cd /bin
# ln -s bash rbash
編集2:
rbash の制限が厳しすぎる場合は、通常の bash でも同様に機能しますが、これはさらに手間がかかります。for やその他の使用したくないコマンドを使用して、 内のほぼすべてのコマンドの実行を禁止する必要があります。/bin
これにより、それらのコマンドはユーザーに対して読み取り専用になり、特に実行できなくなります。setfacl -m u:user1:r /bin/su
su
見るこの答え 詳細については。
答え2
ネットワークトラフィック
使用できますiptables
ネットワークトラフィックを制限するには:
# Allow port 22 traffic to a specific IP/hostname for a specific user
iptables -A OUTPUT -p tcp --dport 22 -d allowed_host -m owner --uid-owner username -j ACCEPT
# Block all other outgoing port 22 (SSH) traffic
iptables -A OUTPUT -p tcp --dport 22 -d 0.0.0.0/0 -j REJECT
ファイルシステムアクセス
ファイルシステムへのアクセスを制限するには、ファイルシステムの権限
また、ファイルを読み取る必要もありません。
ログインするには、いくつかのファイルを読み取ることができる必要があります:
- ユーザーのホームディレクトリ
- ユーザシェルの実行ファイルとすべてのライブラリ
通常のユーザーによる読み取りアクセスを禁止するには、root が所有するファイルからワールド読み取り可能フラグを削除するか、root が所有するディレクトリからワールド実行可能フラグとワールド読み取り可能フラグを削除します。
# chmod o-r secret-file
# ls -l secret-file
-rw-r----- 1 root root 0 Mar 27 13:23 secret-file
# chmod o-rx secret-dir/
# ls -ld secret-dir/
drwxr-x--- 2 root root 64 Mar 27 13:24 secret-dir/