web-dev-qa-db-ja.com

要塞サーバー:宛先サーバーのみをsshする機能を持つユーザーを作成します

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

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

どうやってやるの?方法はありますか?

上記が不可能な場合のもう1つの方法は、許可されたファイルの読み取りアクセスのみを許可することです。ただし、制限付きファイル(OSではデフォルト)は、そこのグループにのみ読み取りアクセス権があります。

4
user2503775

これは、特定のユーザーが特定のコマンドのみを使用できるようにする方法です。

  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は直接実装されておらず、シンボリックリンクを作成する必要がある場合があります。同様に、RedHatなどの他のバージョンのGNU/Linuxでも同様です。

# cd /bin
# ln -s bash rbash

ソース

Edit2:

Rbashの制限が厳しすぎる場合は、通常のbashでも同様に機能する可能性がありますが、これはより多くの作業です。su/binを使用して、setfacl -m u:user1:r /bin/su内のほとんどすべてのコマンドの実行を禁止する必要があります。使用したくないその他のコマンドは、ユーザーに対して読み取り専用になり、特に実行可能ではありません。

詳細については、 この回答 を参照してください。

2
harrymc

ネットワークトラフィック

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/
0
Cloudomation