私の Linux システムには「.fetchmailrc」というファイルがあり、これは fetchmail がメールを取得する電子メール アドレスを設定するために使われます。そのため、パスワードと電子メール アドレスをプレーン テキストで入力する必要があります。
.fetchmailrc ファイルは次のようになります。
set daemon 1
set logfile /home/user/.fetchmail.log
set no bouncemail
poll pop.gmail.com proto POP3 auth password no dns user "MY_EMAIL" password "MY_PASSWORD" is user keep ssl
mda "/usr/bin/procmail -d %T"
ハッカーが私のサーバーにアクセスした場合、ファイルを簡単に読み取って私の資格情報を入手できるため、これを行うにはもっと良い方法があるはずだと私は考えています。
Linux システムには PAM (Pluggable Authentication Modules) があると聞きましたが、それが私がやろうとしていることに関係があるかどうかはわかりません。
答え1
パスワードをどのように保存したかに関係なく、パスワードを要求しないプログラムを実行する場合、プログラムはサーバー上で利用可能な情報を使用して保存されたパスワードを復号化する必要があります。サーバーにアクセスした「ハッカー」は、サーバー上に保存されているすべての情報を使用できます。したがって、プログラムがパスワードを復号化するのと同じ方法で、ハッカーもパスワードを復号化できます。
パスワードを暗号化して保存するために使用するスキームがもう少し複雑な場合は、「ハッカー」がパスワードを解読するのにもう少し時間がかかるかもしれません。
つまり、あなたが望むことを行う方法はありません。パスワードをどのように保存しても、それを「ハッカーにとって安全な」ものにすることはできません。ハッカーは、プログラムが行うことを何でも実行する必要があります (または、プログラムを実行して、ネットワーク トラフィックをスニッフィングするだけです)。
PAM モジュールはこれとは何の関係もありません。パスワードを保存するためのものではなく、既存の Linux サービスの認証方法を構成する方法を提供するものです。PAM を使用するプログラムは、PAM 用に作成する必要があります。
答え2
カーネルキー保持サービスを使用する
誰かが繰り返しシステムにルートアクセスすることを心配している場合、その後は事実上何もできません。(しかし、それは悪夢です。ベストプラクティスに従い、適切なバックアップを維持してください)。
ただし、すべてがまだ安全である場合は、パスワードをプレーン テキスト ファイル (実行中またはシャットダウン中のシステム ドライブを見つけた人なら誰でも読み取ることができます) に残すよりも、はるかに良い方法があります。次の操作を実行します。
- ホームを暗号化すると、少なくともログインしていないときはテキスト ファイル ($HOME 内) が暗号化されます。
- 上記と同様に、ドライブ全体を暗号化します。
- パスワードはファイルに保存せず、必要なときだけ自分で入力する
- 入力したパスワードを保存する必要がある場合は、ログイン時にパスワードを入力してから次の場所に保存します。
- 変数内(RAM内、ただしスワップ内に配置される可能性あり)
- の中にカーネルのキー保持サービス(キーリングはRAM内に保存され、より安全です)。https://www.kernel.org/doc/Documentation/security/keys.txtそして
man keyctl
、、man keyrings
おそらくアンソニー・ティッセンによる実践的な例とメモ