web-dev-qa-db-ja.com

スクリプトで使用されるパスワードを保存する最も安全でない方法は何ですか?

ユーザー名とパスワードを使用してサービスで自動的に認証するBashスクリプトがあります。資格情報は現在、スクリプト内にプレーンテキストとして保存されています。

スクリプトへのアクセスを許可しながら、これらの資格情報を最も安全に保存するには、どのような予防策を講じる必要がありますか?

明確化のポイント:

  • 可能であれば、代わりに他の認証方法を使用する必要があることを理解しています。パスワード認証が唯一のオプションである場合の対処方法を引き続き知りたい。
  • パスワードをまったく保存しないことは、ここでは受け入れられない答えです。スクリプトにパスワードへの無人アクセスが必要な場合について質問しています。
12
ændrük

どんなサービス?特定のサービスには、認証する他の方法があります。 SSHエージェントと組み合わせたSSHのSSHキー。

パスワードをスクリプトとは別に保存し、すべてのパスコンポーネントに正しいアクセス許可が設定されていることを確認します。たとえば、パスで/path/to/file//path、および/path/toが信頼するユーザー(root)によって所有されており、これらが所有していないことを確認してくださいファイルの閲覧を許可されていないユーザーが書き込み可能です。最後に、fileの推奨される許可は600または400です。

fileは次のようになります。

PASSWORD='something that you cannot remember'

スクリプトで、次のコードを使用して変数をインポートします。

. /path/to/file

スクリプトについては、攻撃者がスクリプトコンテキストでコードを実行できるような穴が含まれていないことを確認してください(たとえば、任意の$PATH変数セットまたは他のファイルの無効な使用(たとえば、世界で書き込み可能なファイル)。

パスワードの実際の保護に関しては、できません。他のサービスが何らかの形で利用できる必要があります。別の方法として、opensslまたはgpgを使用してパスワードを含むファイル/スクリプトを暗号化できるため、資格情報のロックを解除する前にパスワードを入力する必要があります。これは、サービスのパスワードが覚えにくい場合に特に役立ちます。

8
Lekensteyn

ファイルにパスワードをハードコーディングする代わりに、パスワードを別のファイルに保存し、ファイルを保護して(chmod 700またはchmod 500)、許可されたユーザーのみがアクセスできるようにします。

ファイルを読み込んでその内容を変数に保存する代わりに、cat /dir/to/file/with/.passwordを使用してパスワードを取得します。

13
Rinzwind