SSHキーを使用するたびにEメールを送信する

SSHキーを使用するたびにEメールを送信する

ほぼ同じCentOS 6サーバーが約30台あり、rsaキーを使用してrootとしてログインして、更新された設定ファイルを自動的にロールアウトできる必要があります。通常、これは単にrsyncですが、時にはサーバー上でコマンドを実行する必要があるかもしれないので、sshも必要です。これは30台のサーバーをすべて更新するスクリプトで実行されるため、キーにパスワードを設定したくありません。

その部分では、すべてが大丈夫です。 rsaキーを生成してルートのAuthorized_keysに追加することで、パスワードを入力しなくてもサーバーでsshまたはrsyncを実行できます。

単一のホスト名のキーのみを許可するようにAuthorized_keysを設定しました。これにより、この設定は比較的安全になります。しかし、まだ満足していないので、このキーを使用するたびに共有技術メールボックスに電子メールを送信するように設定したいと思います。

何度も私はこのサーバーに自分自身でログインし、root権限を要求します。これは優れており、ログインするたびにテクニカルメールボックスにスパムメールを送信したくありません。 SSHキーを使用する場合にのみ電子メールを受信したいと思います。

これはこれまで server1[30 から].example.com にある内容です。

cat /root/.ssh/authorized_keys
from="pusher.example.com",environment="SSHKEY=1" ssh-rsa AAAAB3NzaIwAAAxetcetc== root@pusher

tail -n 3 /root/.bash_profile
if [[ "${SSHKEY}" == "1" ]] ; then
echo 'Either we are getting hacked, or somebody used the SSH key on pusher to push something out to ' `hostname` ' at ' `date` | mail -s "WARNING - ROOT SSH KEY USED ON `hostname`!" [email protected]
fi

これはSSHに適しています。ルートを取得するために自分でログインしてsuを実行するとメールが届きませんが、Pusherにログインして次を実行すると、

ssh -i /root/.ssh/server1.pri server1.example.com

メールが届きました。問題はファイルをプッシュすることです。次のいずれかを実行する場合:

scp -i /root/.ssh/server1.pri /tmp/file.txt server1.example.com:/tmp/
rsync -e 'ssh -i /root/.ssh/server1.pri' /tmp/test.txt server1.example.com:/tmp/

まだメールが届いていません。

bash_profileに頼るのではなく、キーが使用されたときに電子メールを送信するように設定する方法はありますか? (またはscpまたはrsyncで使用されている場合にのみキーを実行するように制限しますか?)

答え1

乱用する可能性があります /root/.ssh/rcあなたの目的に合わせて(man sshdを参照)mailxそこにコマンドを含めます。

答え2

bashが対話型ログインシェルとして呼び出されると、~/.bash_profileが使用されます。 ~/.bashrc は非ログインであるシェル用です。ただし、攻撃者がシェル初期化ファイルをまったく読み取らないように要求する可能性があるため、このファイルを使用することは信頼できません。

答え3

sshdのマニュアルページの「authorized_keys」セクションで:

コマンド="コマンド"

このキーが認証に使用されるたびにコマンドが実行されることを指定します。ユーザーが提供したコマンドがある場合は無視されます。クライアントがptyを要求すると、コマンドはptyで実行され、そうでない場合はttyなしで実行されます。 8ビットクリーンチャンネルが必要な場合は、ptyを要求しないか、no-ptyを指定する必要があります。バックスラッシュを使用して、コマンド内に引用符を含めることができます。このオプションは、特定の公開鍵が特定の操作のみを実行するように制限するのに役立ちます。たとえば、リモートバックアップを許可しますが、他には許可しないキーがある可能性があります。明示的に禁止されていない限り、クライアントはTCPおよび/またはX11転送を指定できます。クライアントが最初に提供したコマンドは、SSH_ORIGINAL_COMMAND環境変数にあります。このオプションは、シェル、コマンド、またはサブシステムの実行に適用されます。また、このコマンドは、sshd_config(5)ForceCommandディレクティブまたは証明書に含まれるコマンドに置き換えることができます。

「from」および「environment」オプションを追加した場合と同様に、このオプションをキーに追加できます。

cat /root/.ssh/authorized_keys
from="pusher.example.com",environment="SSHKEY=1" ssh-rsa AAAAB3NzaIwAAAxetcetc== root@pusher

関連情報