ユーザー名とパスワードを使用してサービスで自動的に認証するBashスクリプトがあります。資格情報は現在、スクリプト内にプレーンテキストとして保存されています。
スクリプトへのアクセスを許可しながら、これらの資格情報を最も安全に保存するには、どのような予防策を講じる必要がありますか?
明確化のポイント:
どんなサービス?特定のサービスには、認証する他の方法があります。 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
を使用してパスワードを含むファイル/スクリプトを暗号化できるため、資格情報のロックを解除する前にパスワードを入力する必要があります。これは、サービスのパスワードが覚えにくい場合に特に役立ちます。
ファイルにパスワードをハードコーディングする代わりに、パスワードを別のファイルに保存し、ファイルを保護して(chmod 700
またはchmod 500
)、許可されたユーザーのみがアクセスできるようにします。
ファイルを読み込んでその内容を変数に保存する代わりに、cat /dir/to/file/with/.password
を使用してパスワードを取得します。