要塞サーバーがあります。 proxyCammandと秘密鍵を使用して、ローカルから要塞を経由してCにSSH接続する必要があるユーザーがいるはずです。
要塞ホストからのsshにのみアクセスできるユーザーとグループを作成したいと思います(proxyCommandを介して行われます)。また、ファイルを読み取る必要もありません。
どうやってやるの?方法はありますか?
上記が不可能な場合のもう1つの方法は、許可されたファイルの読み取りアクセスのみを許可することです。ただし、制限付きファイル(OSではデフォルト)は、そこのグループにのみ読み取りアクセス権があります。
これは、特定のユーザーが特定のコマンドのみを使用できるようにする方法です。
ユーザーシェルを制限付き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は直接実装されておらず、シンボリックリンクを作成する必要がある場合があります。同様に、RedHatなどの他のバージョンのGNU/Linuxでも同様です。
# cd /bin
# ln -s bash rbash
Edit2:
Rbashの制限が厳しすぎる場合は、通常のbashでも同様に機能する可能性がありますが、これはより多くの作業です。su
に/bin
を使用して、setfacl -m u:user1:r /bin/su
内のほとんどすべてのコマンドの実行を禁止する必要があります。使用したくないその他のコマンドは、ユーザーに対して読み取り専用になり、特に実行可能ではありません。
詳細については、 この回答 を参照してください。
ネットワークトラフィック
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/