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


13

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

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

明確化のポイント:

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

2
資格情報のパスコード部分を保存しないのですか?
トーマス・ウォード

GNOMEキーリングなどにアクセスしても機能しませんか?
ファイヤーフェザー

おそらく、暗号化ハッシュ(SHA-1など)として保存できれば、それはいいでしょう。
匿名

ROT13はそれを覆い隠しますが、いかなる方法でもそれを保護しません。
匿名

@Anonymousパスワードが暗号化ハッシュとして保存されている場合、どのように取得することをお勧めしますか?
アーンドリューク

回答:


8

どんなサービス?特定のサービスには、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、資格情報のロックを解除する前にパスワードを入力する必要があるので、パスワードを含むファイル/スクリプトを暗号化できます。これは、サービスのパスワードが覚えにくい場合に特に役立ちます。


14

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

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


gpgの--passphrase-fileオプションなど、一部のツールには、まさにこの理由でファイルからパスワードを直接読み取るオプションもあります。

2
...そしてそれを.dotfile(/dir/to/file/with/.password)にします
knb

2
chmod 400ファイル用(読み取り専用)。もちろん、主要なディレクトリを保護する必要があります(700または500、または偏執病の場合は100)。400(またはディレクトリの場合は500)で十分であり、他のモード(100)は、名前の前にドットを置いてファイルを隠すのと同じように、あいまいさによるセキュリティと見なすことができます。
Lekensteyn

1

これは古い質問ですが、この同様の問題に直面し、Ubuntuのキーリングを使用して解決しました。以下は、ubuntu 18.04LTSのソリューションです。ターミナルを開きkeyring set {{service}} {{username}} ます。たとえば、これを学校のパスワードロギングに使用している場合は書き留めてください。

keyring set school mohamed

パスワードを入力すると、パスワードの入力が記録されます。これで、入力したパスワードはUbuntuキーリングに保存されます。

このパスワードを取得するには、ターミナルに書き込みます。

keyring get school mohamed

スクリプトのコンテキストでこれを使用するには:

password=$(keyring get school mohamed)

これで、パスワードは以前に入力したパスワードと一致します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.