GNU/Linux >> Linux の 問題 >  >> Linux

Ssh上で実行される自動的に実行されるcronジョブのキーには、パスフレーズが必要ですか?

Master Linux Now 2013の記事を読んでいます OpenSSH: Easy Loginsと呼ばれます ssh-agentを使用します キーのパスフレーズを一度入力できるようにすると、ssh-agentの実行中に再度入力しなくても、リモートマシンに自由に接続できるようになります。

そもそも私がこの記事に惹かれた理由は、パスワードを何百万回も再入力する必要がないことを除けば。これは、sshを介してサーバーからリモートにあるマシンのcronからrsyncを呼び出すことにより、/からリモートマシンへの無人バックアップを実行できるようにするためでした。

cronが簡単にキーを使用してログインできるように、誰かがパスフレーズをスキップしたという別の記事を見ましたが、それは正しくないと感じていますが、実際にはこれで問題ありませんか?つまり、誰かがそのキーファイルを入手した場合、バックアップされるマシンに大混乱をもたらす可能性があります。

再起動時にユーザーがログインしていることを確認し、ユーザーがログインしてエージェントを実行するときにパスフレーズを1回入力してから、画面がロックされた状態でcronジョブが実行されるのを待つ方が安全だと思います。ただし、cronジョブが実行されるユーザーまたはユーザータイプなど、ここで何かが欠落している可能性があります。

承認された回答:

キーによって呼び出すことができるコマンドを制限します

SSHキーをあらゆる種類の自動化されたタスクまたは無人のタスクで使用する場合は、キーを保存する方法と場所についてどのような決定を下しても、リモートマシンで実行できるコマンドを制限する必要があります。

~/.ssh/authorized_keysでこのようなものを使用してください :

command="/usr/sbin/the-backup-daemon" ssh-rsa AAAAAAAAAAAABBBBBXXXXXX.....

そうすれば、少なくともキーは、あなたが言うように、大混乱を引き起こすことができないはずです。アクセスできるのは、アクセスするはずの場所などだけです。それでも損傷を与える可能性がありますが、リモートシステムへの完全なアクセスは必要ありません。

また、そのキーを使用して接続できるIPアドレスを制限し、そのキーが使用されている接続のポート転送など、他のSSH機能を無効にすることもできます。

from="10.1.2.3",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/usr/sbin/the-backup-daemon" ssh-rsa AAAAAAAAAAAAXXXXXX.....

~/.ssh/authorized_keysの1行にすべてを入力する必要があります 。

キーの保護

脅威モデルが何であるかによって異なります。

「コールド」中にキーが盗まれるのが心配な場合、たとえば、キーが物理的に盗まれた場所に保存されているコンピューターがある場合は、その場所にパスフレーズがないとキーを保存したくないでしょう。

あなたはできた サーバーの起動後に一種のバックグラウンドSSHエージェントを手動で起動し、そのエージェントにキーを追加して、エージェントの$SSH_AUTH_SOCKを記録します。 cronジョブで将来使用するためですが、正直なところ、それは価値があるよりも厄介なように思えます。暗号化されていないキーをtmpfsに保存することもできます。 ファイルシステムを作成し、cronジョブにそこからアクセスさせます。いずれにせよ、キーはメモリ内にのみ存在します(スワップまたは暗号化されたスワップがない場合)。もちろん、chownする必要があります およびchmod ファイルをターゲットユーザーのみがアクセスできるようにします。

関連: `builtin`ビルトインが必要ですか?

繰り返しになりますが、それが心配な場合は、暗号化されたルートファイルシステムとスワップ(luksなど)を使用してこのコンピューターを既にセットアップしているので、そのように心配する必要はありません。

「ホット」(メモリにロード)中にキーが盗まれるのが心配な場合は、それについてできることはあまりありません。 cronジョブがそれにアクセスできる場合は、同じアクセスを取得できた他の何かもアクセスできます。それか、無人のジョブ実行の利便性をあきらめます。

結論として、バックアップサーバーは、バックアップするすべてのコンピューターの完全なファイルシステムへの読み取り専用アクセスが必然的に与えられるため、非常に特権のあるシステムとして扱う必要があります。たとえば、バックアップサーバーにインターネットからアクセスできないようにする必要があります。


Linux
  1. Linuxで一定時間アクセスされていないファイルを削除する

  2. PHPスクリプトが実行されているかどうかを確認するためのcronジョブ、実行されていない場合は実行しますか?

  3. ルートアクセスとSshキーベースの認証にSudoを必要とするシステムでSftpを使用するにはどうすればよいですか?

  1. PHPスクリプトを実行するためのGodaddy cronジョブのセットアップ

  2. Web 上で Qt アプリを実行する

  3. SSHのauthorized_keysファイルとknown_hostsファイルの違いは何ですか?

  1. プライバシーのためにSSHを構成する3つの方法

  2. Ssh認証に使用するGpgサブキーとしてSshキーをインポートしますか?

  3. Linux ユーザーにとって Magic SysRq キーはどのように危険なのですか?