要塞サーバー: 宛先サーバーへのSSH権限のみを持つユーザーを作成する

要塞サーバー: 宛先サーバーへのSSH権限のみを持つユーザーを作成する

要塞サーバーがあります。プロキシコマンドと秘密鍵を使用して、ローカルから要塞を経由して C に SSH 接続する必要があるユーザーがいるはずです。

Bastion ホストからの ssh のみにアクセスできるユーザーとグループを作成したいと考えています (proxyCommand 経由で実行されます)。また、ファイルを読み取る必要もありません。

どうすればそれができるでしょうか?方法はありますか?

上記が不可能な場合のもう 1 つの代替案は、グループに対してのみ読み取りアクセス権を持つ制限されたファイル (OS によってデフォルト設定) を除き、許可されたファイルに対してのみ読み取りアクセス権を持つことです。

答え1

特定のユーザーが指定されたコマンドのみを使用できるようにする方法は次のとおりです。

  1. ユーザー シェルを制限された bash に変更します。

    chsh -s /bin/rbash <username>
    
  2. ユーザーのホームディレクトリの下に bin ディレクトリを作成します。

    sudo mkdir /home/<username>/bin
    sudo chmod 755 /home/<username>/bin
    
  3. ユーザーのデフォルトの PATH を次の bin ディレクトリに変更します。

    echo "PATH=$HOME/bin" >> /home/<username>/.bashrc
    echo "export PATH >> /home/<username>/.bashrc
    
  4. ユーザーが必要とするコマンドのシンボリックリンクを作成します。

    sudo ln -s /bin/<command> /home/<username>/bin/
    
  5. ~/.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/susu

見るこの答え 詳細については。

答え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/

関連情報