9

私は、Expectを使用して telnet 経由でリモート マシンにログインする Perl スクリプトに取り組んでいます (聞かないでください。telnet を使用する必要があります)。また、必要に応じて p4 ログイン操作を実行し、expect を使用して正しいパスワードをパイプします。今のところ、平文の環境変数からパスワードを読み取るだけです。つまりexport PASSWORD=password、これはセキュリティ上良くないことがわかっています。

複数のシステムに多くのパスワードを必要とするこのようなスクリプトのパスワードを保存する最良の方法は何ですか? どういうわけかテキストファイルで暗号化されていますか?または、他の何か?

たとえば、SSHなどを実際にインストールできないなど、既存のシステムを簡単に変更できないことに注意してください。

4

6 に答える 6

10

おそらく最善の方法は、パスワードを別のファイルに入れ、そのファイルのセキュリティをロックして、自分だけが読み取りアクセスできるようにすることです。残念ながら、暗号化されたパスワードをスクリプトに保存する場合は、復号化方法も保存する必要があるため、攻撃者が復号化を実行してパスワードを復元できます。

于 2009-03-03T00:28:44.763 に答える
7

以前に非常によく似た質問がありました。それに対する私の回答を参照してください。

つまり、人間は信頼の連鎖を開始する必要があります。他のすべては難読化です。

于 2009-03-03T04:13:20.963 に答える
5

telnet を使用している場合、スクリプト内のパスワードについて心配する必要はありません。推定上の攻撃者は、リモート マシンからデータを取得するよりもネットワークからデータを取得する方が簡単であることに気付くでしょう。

これは、窓にバーを入れようとして、ドアを開けたままにしておく場合のように聞こえます。

于 2009-03-03T00:33:22.257 に答える
2

Mac OS Xを使用しているという偶然の機会に、キーチェーンからユーザー名とパスワードを取得するこの便利な方法を見つけました。

更新:2013年7月22日の時点で、リンクが壊れているようです。次のbashコードスニペットは、この手法の使用方法を示しています(iTunesの販売データをダウンロードするため)。

domain="itunesconnect.apple.com"
user="user@example.com"
pass=$(security find-internet-password -ws $domain -a $user)
于 2012-03-21T19:39:47.160 に答える
2

すでにexpectを使用しているため、パスワードを含む暗号化されたファイルで gpg -d をリダイレクトできるかどうかを調べる必要があります。パスワードをシステム環境変数に保存することは、まったく間違っています。gpg ファイルの復号化に使用されるパスワードは、起動時に入力され、ファイルからすべてのパスワードをロードして実行します。これで完了です。パスワードは、アプリケーションの実行中はプレーンテキストでのみ存在します。

余談ですが、スクリプトにパスワードを入れるのは悪いことです。スクリプトは単なるプレーンテキスト ファイルであるため、パスワードを簡単に確認できます。同様に、コンパイルしたアプリケーションでさえ、コードに含まれる文字列 (通常はパスワード) を検索できる「文字列」で逆にすることができます。

于 2009-03-03T00:28:22.470 に答える
0

パスワードを別のファイルに入れるという、すでに述べた解決策が気に入っています。さらに、/etc/passwd で行ったのと同じように、実際のパスワードをハッシュすることもできます。ただし、アプリケーションの方法によっては、それらすべてに同じハッシュ キーを使用する場合があります。明らかに、これの欠点は、スクリプトを実行するためにハッシュキーを入力する必要があり、バッチ環境では機能しないことです。

ハッシュについて何かを学び始める1つの場所は、このスタックオーバーフローの質問からです

于 2009-03-11T04:48:36.210 に答える