データベースに接続していくつかの操作を実行するシェルスクリプトを作成しました
これは私のサンプルコードです
#!/usr/bin/ksh
. /home/ram/.profile
sqlplus username/pwd@TNS<<EOF
select sysdate from dual;
exit;
EOF
このコードをAIX
systemで使用しています。pwdを暗号化します。
シェルにコマンドはありますか、crypt
コマンドにセキュリティ上の問題があると聞きました
crypt(1)暗号化を解くプログラムは広く利用可能です。 Bob BaldwinのCrypt Breaker's Workbench [2]は、1984〜1985年に作成され、ユーザーが修正しなければならない一連の平文推測を提供するインタラクティブツールです。 Peter Selingerのunixcrypt-breaker [3]は、単純な統計モデルを使用してもっともらしい平文を推測し、ユーザーの操作を必要としません。(source -wikipedia)。
AIXでcryptコマンドを試しましたが、エラーがスローされます
[Shell-ksh]$uname
AIX
[Shell-ksh]$crypt
ksh: crypt: command not found
[Shell-ksh]$echo $Shell
/usr/bin/ksh
シェルでパスワードを暗号化する安全な方法について知りたいのですが?
user
とpass
がuser.txt
とpass.txt
に保存されていると仮定します
暗号化:
$ openssl aes-256-cbc -salt -in user.txt -out user.txt.enc -pass file:pass.txt
で復号化:
$ openssl aes-256-cbc -d -salt -in user.txt.enc -out user.txt.dec -pass file:pass.txt
より安全な暗号化を実現するために、-S "your complex string"
で独自の複雑なソルトを使用してみることができます。ただし、ほとんどの場合、これで十分です。
SSHトンネル の使用を見てください。ローカルポートでリッスンするようにデータベースを設定し、ユーザーがそのポートでパスワードなしで接続できるようにし(特定のインターフェイスで127.0.0.1以外のすべての接続を拒否)、SSHを使用してそのポートへのトンネルをネゴシエートできます。次に、証明書認証を使用してSSHに接続します。これは、なりすましが難しく、ハードコードされたパスワードもありません。このスクリプトがcronジョブで動作する必要がある場合、nologinシェルで実行されるサービスアカウントとして実行できます。
その時点で心配しているのはSSHキー管理であり、 this を支援するためのツールがたくさんあります。ローカルで秘密鍵を取得できるのはrootアクセス権を持つユーザーのみであり、その場合、暗号化されたパスワードストアも安全ではありません。
もう1つの利点は、スクリプトをリモートバージョン管理下に置くことができ、認証は実装の詳細に任され、コードが実装されているマシンを超えてコードがリークした場合にスクリプトから抽出できるものではないことです。
いくつかのデータベースはすでに証明書認証(たとえば、Postgresql)をサポートしていますが、SSHトンネルを使用すると、コマンドラインクライアントを持つすべてのデータベースで機能します。私はこれをMySQLとPostgresqlのスクリプトバックアップに使用しましたが、これは魅力のように機能します。