PostgreSQLは、開発者とユーザーにとって安全な環境を誇る、よく知られたリレーショナルデータベース管理システムです。しかし、リモートワークは引き続きすべてのビジネスの新しい常識の一部であるため、ITプロフェッショナルは、サーバーのセキュリティとアクセシビリティの管理に関して、新たな一連の課題に直面しています。
要塞サーバーを使用してPostgreSQLデータベースにアクセスすると、セキュリティがさらに強化されます。ただし、要塞サーバーはファイアウォールとして機能する必要があるため、プライベートネットワークの露出レベルを下げるにはSecure Shell(SSH)トンネルを使用する必要があります。
多くのPostgreSQLデータベース管理ツールはこの接続プロセスを自動化できますが、シェルと対話するにはSSHトンネルを手動で作成する必要があります。プロセスと注意事項を理解することは、会社が安全なデータベースを維持するのに確実に役立ちます。
SSHセキュアシェルトンネルを作成して使用する利点
SSHトンネリングは30年以上にわたってネットワーク通信で使用されており、今日のコンピューティングニーズにも同様に関連しています。
開発者は一貫してSSHセキュアシェルプロトコルを使用して、PostgreSQLを含むすべての種類のサーバー上のデータベースアクセスを管理します。今日、特に職場のデバイスの50%がモバイルである場合(モバイルデバイスはサイバー攻撃に対して最も脆弱です)、安全なリモートアクセスが重要です。これにより、組織がデバイスとユーザーのネットワークへのアクセスをリモートで管理できることがさらに重要になります。
大量のデータを処理する企業は、従業員が主要なデータベースに明示的にアクセスできるようにし、データベースのセキュリティに積極的に取り組む必要があります。 SSHプロトコルの使用は、リモートサーバーからユーザーに安全なアクセスを提供する上で一番です。また、自動プログラムの認証も簡単になります。したがって、企業は日常業務をより効率的に実行できます。
セキュリティ標準が最終的にモバイルデバイスとリモートサーバーに追いつくにつれて、暗号化と認証プロトコルも改善されることが期待できます。柔軟性と相互運用性は、IoTセキュリティの未来です。それでも、SSHプロトコルは、当面の間、標準的な部分であり続けます。
SSHはどのように機能しますか?
SSHプロトコルを使用すると、安全な環境でインターネットを介してサーバーへのアクセスをリモートで制御できます。初期接続は高度に保護されているだけでなく、2者間の通信セッション全体も高度に保護されています。ユーザーは、開いているSSHSecureShellトンネルまたは他のSSHSecureShellクライアントを使用してリモートサーバーにログインできます。
サーバーは開いているポート接続を探します。見つかったら、サーバーは接続を認証する必要があります。通信とファイル転送のための安全な環境が確立されているかどうかを判断します。接続がクライアントによって開始された場合、クライアントは、資格情報を提供するだけでなく、サーバーを認証する必要があります。
両方の当事者が認証され、接続が確立されると、SSH暗号化プロトコルにより、サーバーとクライアント間のすべてのデータ送信のプライバシーが継続されます。
SSHトンネルが接続を保護するために使用する暗号化には次の3つのタイプがあります。
- 対称暗号化
- 非対称暗号化
- ハッシュ。
対称暗号化 通信を安全に保つために、接続中に使用されます。クライアントとサーバーの両方が同じ秘密鍵を共有して、データを暗号化および復号化します。実際のキーが実際に交換されることはないため、このアルゴリズムは安全です。むしろ、双方が公開情報を共有し、そこから独立して鍵を導き出すことができます。
非対称暗号化 対照的に、公開鍵と秘密鍵の両方が必要です。トンネリングプロセスの開始時にサーバーを認証するために使用されます。サーバーは公開鍵を使用してそのデータを暗号化し、クライアントは秘密鍵でデータを認証する必要があります。公開鍵で暗号化されたメッセージを復号化できるのは特定の秘密鍵だけなので、これは接続を求める当事者の認証に役立ちます。
暗号化ハッシュ データセットに一意の署名を作成します。これは、サーバーがMACが受け入れ可能かどうかを知ることができるため、SSH接続で役立ちます。一致するハッシュは、元のデータを作成したものと同一のデータによってのみ作成できます。したがって、ハッシュを使用して入力をチェックし、入力が正しいことを確認できます。
SSH認証
暗号化を確立した後、認証プロセスが実行されます。最も簡単な認証形式は、パスワードを使用することです。これはクライアントにとっては簡単な方法ですが、悪意のある自動化されたスクリプトにとっても非常に簡単です。暗号化されたパスワードでさえ、複雑さは限られています。それはそれを不安定にします。パスワードを使用する代わりに、非対称キーを使用するのが一般的な方法です。
公開鍵が確立されると、クライアントは公開鍵に付随する秘密鍵を提供する必要があります。この組み合わせがないと、認証は失敗します。これは、暗号化されたデータが侵入者によって復号化されないようにするのに役立ちます。
認証プロセス全体がセットアップ中にネゴシエートされ、補完的なキーを持つパーティのみが通信できます。このプロセスにより、サインインプロセスも迅速になります。したがって、自動化された手順に最適です。
認証プロセスは、次の要因によって異なります。
- 保護されているデータベースの種類
- サーバーの関係と場所
- サーバー内のユーザーの権限。
SSHプロトコルを使用することの優れている点は、プロセス全体が暗号化され、高度に保護されていることです。
SSHトンネルのセットアップ
シェルを使用してデータベースと対話する場合は、SSHトンネルを作成する方法を知っている必要があります。自動化されたSSH管理アプリケーションを使用すると便利ですが、多くのデータベース管理者は、データベース管理ツールを最初から設定することを好みます。これは、シェルとの対話がデバッグ、監査、および最大限の制御を行うための最良の方法であるためです。
SSHトンネルを使用することは、データを失ったりハッキングされたりすることを恐れずにセッションを開くための非常に安全な方法です(セッションを閉じてサーバーを監視している限り)。
SSHトンネルを作成する方法は次のとおりです。
要塞サーバーを確認する
SSH Secure Shellトンネルを作成するには、要塞サーバーとPostgreSQLデータベースのホスト名、および要塞サーバーのユーザー名を知っている必要があります。次のコマンドを実行します:
$ ssh <username>@<bastion_server>
次に、適切なウィンドウが表示されたらパスワードを入力します。
SSHトンネルを開く
次のコマンドを使用してトンネルを開きます:
$ ssh -L localhost:port_number:<sql_server>:port_number<username>@<bastion_server>
接続を維持するためにウィンドウを開いたままにします。 2つのポート番号は、それぞれコンピュータとリモートサーバー用です。
接続を確認する
トンネルが開いていてPostgreSQLサーバーに接続されていることを確認するには、次のコマンドを使用します。
$ psql --port=X --host=localhost -c "SELECT * FROM pg_catalog.pg_tables"
テーブルが返されるかどうかを確認します。もしそうなら、あなたの接続は成功し、安全です。
いくつかのオプションの手順により、要塞ホストからSQLサーバーへのアクセスの効率を上げることができます。ただし、常にアクセスを自動化することは安全な戦略ではないことに注意してください。セッションを完全にプライベートに保つためにSSHトンネルを開く場合は、常にログインすることをお勧めします。
ユーザープロファイルの作成
毎回パスワードを入力する必要をなくすために、要塞サーバーでプロファイルを作成できます。これを行うには、次のコマンドを使用してSSHキーをサーバーに追加する必要があります。
$ ssh-copy-id <username>@<bastion_server>
そうすれば、ログインしたいときにいつでもキーが自動的に使用されます。ただし、キーにはプラス面とマイナス面の両方があります。より便利ですが、マルウェアや盗難からマシンを保護するために、他のセキュリティプロトコルを確実に導入する必要があります。他の誰かがあなたのマシンにアクセスした場合、あなたのキーが保存されているため、他の誰かがあなたのサーバーに自動的にログインできる可能性があります。
SSH構成ファイルを更新する
接続するサーバーの正確な名前とポート番号を覚えておくことは洗練されているかもしれません。これがSSHセキュアシェルトンネルプロトコルの一部である理由です。
ホスト名を追跡し、ユーザー名で自分自身を認証しています。これは、そもそもSSH接続を安全にするものの一部です。ただし、プロセスを完全に自動化せずに、アクセスをより迅速かつ簡単にするように手順を構成する方法があります。 SSH構成ファイルにエントリを追加できます:
ホスト要塞-本番
- ホスト名
- ユーザー<ユーザー名>
- LocalForward localhost:port_number
:port_number
次に、次のコマンドを実行します:
$ ssh bastion-production
これで、1つのステップで接続できます。
SSHプライバシーのヒント
データベースを安全に保つことが不可欠です。データは世界で最も価値のある通貨であり、ランサムウェアやその他のサイバー犯罪の増加に伴い、顧客データの保護に失敗することは容認できない失効です。
そもそも要塞サーバーを使用することの全体的なポイントは、データベースを保護することです。ただし、いくつかの失敗により、サーバーは誰でもアクセスできるように広く開かれたままになります。
SSHトンネルを使用してPostgreSQLサーバーに接続する際に安全を確保するためのヒントを次に示します。
リモートワーカーを適切に認証する
組織でSSHを使用してリモート接続する場合は、誰もがデジタル衛生の基本を知っている必要があります。強力なパスワードで保護されたキーベースの認証を使用します。ログインごとの2段階認証プロセスは、公開SSHキーが本物であることを確認するだけでなく、開始するのにも適しています。
SSHログインを必要な人だけに制限し、ユーザーのタスクを反映する特権を設定します。
ポートフォワーディングを無効にする
開発者の約半数だけがポート転送防止手順を実施しています。ポートフォワーディングにより、未承認のユーザーやサーバーとの暗号化された通信を利用できるようになります。したがって、ハッカーはデータベースに直接侵入する可能性があります。要塞サーバーを介してすべての接続をフィルタリングし、接続を許可する前にポートノッキングの使用を検討してください。
最新のソフトウェアを実行していて、SSH接続が最新のコンプライアンス標準に準拠していることを確認してください。
頻繁に監査する
定期的な手動監査に加えて、継続的な監視ツールを使用します。接続は必要なものだけに制限し、事前に承認されていない構成設定への変更を必ず確認してください。
誰がログインし、どのような活動を行っているかを監視することで、攻撃対象領域を制限し、最初から脆弱性を簡単に特定できます。
結論
暗号化されたSSHトンネルを使用することは、リモートサーバーからPostgreSQLデータベースにアクセスするための安全な方法です。プロセスは、接続されたセッションの期間中、暗号化を維持します。自動化されたSSHプログラムは、定期的なタスクやその他の管理システムプロセスに役立ちますが、SSHトンネルを手動で開くと便利な場合があります。その場合、自動化されたバージョンやクライアントを使用するのではなく、すべてのトラフィックと通信を簡単に識別できます。
PostgreSQLまたはSQLデータベース管理システムを使用している場合は、SSHトンネリングの利用方法を知っている必要があります。これは、システムプロセスとデータ転送を監視および管理するために重要な場合があります。
SSHプロトコルは非常に安全な接続を実現し、特別な注意を払うことでサーバー接続の整合性を維持するのに役立ちます。