はじめに
この実験(Lab)では、Redis サーバーのセキュリティを強化する方法を学びます。不正アクセスを防ぐためのパスワードの設定と、潜在的な誤用を制限するための特定のコマンドの無効化について説明します。この実験(Lab)を終える頃には、より安全な Redis インスタンスを手に入れることができるでしょう。
この実験(Lab)では、Redis サーバーのセキュリティを強化する方法を学びます。不正アクセスを防ぐためのパスワードの設定と、潜在的な誤用を制限するための特定のコマンドの無効化について説明します。この実験(Lab)を終える頃には、より安全な Redis インスタンスを手に入れることができるでしょう。
CONFIG SET requirepass
を使用したパスワードの設定デフォルトでは、Redis はパスワードを必要としないため、脆弱な状態になっています。パスワードの設定は、Redis サーバーを保護するための最初で最も重要なステップです。ここでは、CONFIG SET requirepass
コマンドを使用してこれを行います。
CONFIG SET
コマンドを使用すると、Redis の設定を動的に変更できます。requirepass
設定は、クライアントがサーバーに接続するために提供する必要があるパスワードを指定します。
それでは始めましょう。
redis-cli
を使用して Redis サーバーに接続します:
LabEx VM でターミナルを開きます。デフォルトのディレクトリは ~/project
です。次のコマンドを実行します。
redis-cli
これにより、デフォルトのホスト (127.0.0.1) とポート (6379) で実行されている Redis サーバーに接続されます。127.0.0.1:6379>
プロンプトが表示されるはずです。
127.0.0.1:6379>
CONFIG SET requirepass
コマンドを使用してパスワードを設定します:
ここでは、パスワードを mysecretpassword
に設定します。本番環境では、強力でユニークなパスワードを選択してください。
CONFIG SET requirepass mysecretpassword
次の出力が表示されるはずです。
OK
これは、パスワードが設定されたことを確認します。
認証なしでコマンドを実行してみます:
PING
のような簡単なコマンドを実行してみてください。
PING
次のエラーメッセージが表示されるはずです。
(error) NOAUTH Authentication required.
これは、認証が必須になったことを示しています。
redis-cli
を終了します:
コマンドがログに記録されるように、exit
と入力するか、Ctrl+D
を押して redis-cli
を終了します。
exit
これは、検証ステップが正しく機能するために重要です。
AUTH
コマンドによる認証パスワードを設定したので、AUTH
コマンドを使用して Redis サーバーで認証する方法を学びましょう。このコマンドには、前の手順で設定したパスワードが必要です。
redis-cli
を使用して Redis サーバーに接続します:
LabEx VM でターミナルを開きます。デフォルトのディレクトリは ~/project
です。次のコマンドを実行します。
redis-cli
127.0.0.1:6379>
プロンプトが表示されるはずです。
AUTH
コマンドで認証します:
AUTH
コマンドの後に、先ほど設定したパスワードを入力します。
AUTH mysecretpassword
認証に成功すると、次のように表示されます。
OK
認証後にコマンドを実行します:
認証されたので、もう一度 PING
コマンドを試してください。
PING
期待される応答が表示されるはずです。
PONG
redis-cli
を終了します:
exit
と入力するか、Ctrl+D
を押して redis-cli
を終了します。
exit
Redis は多くのコマンドを提供していますが、一部のコマンドは特定の環境でリスクを伴う可能性があります。これらのコマンドを無効化することで、セキュリティを向上させることができます。例として、CONFIG SET disable-command
を使用して FLUSHALL
コマンドを無効化します。FLUSHALL
はすべてのデータベースのすべてのデータを削除するため、無効化することで偶発的なデータ損失を防ぐことができます。
redis-cli を使用して Redis サーバーに接続する:
LabEx VM で端末を開きます。デフォルトのディレクトリは ~/project
です。以下のコマンドを実行します:
redis-cli
127.0.0.1:6379>
のプロンプトが表示されるはずです。
AUTH コマンドで認証する:
パスワードを付けて AUTH
コマンドで認証します:
AUTH mysecretpassword
認証に成功すると、OK
の出力が表示されます。
CONFIG SET disable-command を使用して FLUSHALL コマンドを無効化する:
CONFIG SET disable-command FLUSHALL
以下のように表示されます:
OK
これでコマンドが無効化されたことを確認します。
FLUSHALL コマンドの実行を試みる:
FLUSHALL
エラーメッセージが表示されます:
(error) ERR unknown command 'FLUSHALL', just try HELP
これにより、FLUSHALL
コマンドが利用できなくなったことを示します。
redis-cli を終了する:
exit
と入力するか、Ctrl+D
を押して redis-cli を終了します。
exit
この実験(Lab)では、Redis のセキュリティを強化する方法を学びました。CONFIG SET requirepass
を使用してパスワードを設定し、不正アクセスを防ぎました。また、AUTH
コマンドを使用して認証する方法、および CONFIG SET disable-command
を使用して FLUSHALL
などの特定のコマンドを無効にし、潜在的に有害な操作を制限する方法も学びました。これらの手順は、Redis サーバーを保護するために不可欠です。