Ubuntu20.04にRedisをインストールして保護する方法[クイックスタート]
序章
Redis は、柔軟性、パフォーマンス、および幅広い言語サポートで知られるメモリ内のKey-Valueストアです。 このクイックスタートチュートリアルは、Ubuntu 20.04サーバーにRedisをインストール、構成、および保護する方法を示しています。
前提条件
このガイドを完了するには、sudo
権限を持つroot以外のユーザーとufw
で構成されたファイアウォールを持つUbuntu20.04サーバーにアクセスする必要があります。 これを設定するには、Ubuntu20.04の初期サーバー設定ガイドに従ってください。
ステップ1—Redisのインストールと設定
ローカルのapt
パッケージキャッシュを更新することから始めます。
- sudo apt update
次に、次のように入力してRedisをインストールします。
- sudo apt install redis-server
次に、お好みのテキストエディタでRedis設定ファイルを開きます。
- sudo nano /etc/redis/redis.conf
ファイル内で、supervised
ディレクティブを見つけます。これにより、Redisをサービスとして管理するためのinitシステムを宣言できます。 systemd initシステムを使用するUbuntuを実行しているため、その値をno
からsystemd
に変更します。
. . .
# If you run Redis from upstart or systemd, Redis can interact with your
# supervision tree. Options:
# supervised no - no supervision interaction
# supervised upstart - signal upstart by putting Redis into SIGSTOP mode
# supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET
# supervised auto - detect upstart or systemd method based on
# UPSTART_JOB or NOTIFY_SOCKET environment variables
# Note: these supervision methods only signal "process is ready."
# They do not enable continuous liveness pings back to your supervisor.
supervised systemd
. . .
終了したら、ファイルを保存して閉じます。 nano
を使用してファイルを編集した場合は、CTRL + X
、Y
、ENTER
の順に押して編集します。
次に、Redisサービスを再起動して、構成ファイルに加えた変更を反映します。
- sudo systemctl restart redis.service
Redisが正しく機能していることをテストするには、Redisのコマンドラインクライアントであるredis-cli
を使用してサーバーに接続します。
- redis-cli
次のプロンプトで、ping
コマンドを使用して接続をテストします。
- ping
OutputPONG
この出力は、サーバー接続がアクティブであることを確認します。 次に、以下を実行してキーを設定できることを確認します。
- set test "It's working!"
OutputOK
次のように入力して値を取得します。
- get test
すべてが機能していると仮定すると、保存した値を取得できます。
Output"It's working!"
値をフェッチできることを確認したら、Redisプロンプトを終了してシェルに戻ります。
- exit
ステップ2—Redisパスワードを設定する
Redisパスワードは、Redisの構成ファイル/etc/redis/redis.conf
で直接構成できます。 お好みのエディタでそのファイルをもう一度開きます。
- sudo nano /etc/redis/redis.conf
SECURITY
セクションまでスクロールし、次のようなコメント付きディレクティブを探します。
. . .
# requirepass foobared
. . .
#
を削除してコメントを解除し、foobared
を安全なパスワードに変更します。
. . .
requirepass your_redis_password
. . .
パスワードを設定したら、ファイルを保存して閉じ、Redisを再起動します。
- sudo systemctl restart redis.service
パスワードが機能することをテストするには、Redisクライアントを開きます。
- redis-cli
以下に、Redisパスワードが機能するかどうかをテストするために使用される一連のコマンドを示します。 最初のコマンドは、認証前にキーを値に設定しようとします。
- set key1 10
認証しなかったため、これは機能しません。そのため、Redisはエラーを返します。
Output(error) NOAUTH Authentication required.
次のコマンドは、Redis構成ファイルで指定されたパスワードで認証します。
- auth your_redis_password
Redisは次のことを認めています。
OutputOK
その後、前のコマンドを再度実行すると成功します。
- set key1 10
OutputOK
get key1
はRedisに新しいキーの値を問い合わせます。
- get key1
Output"10"
認証後にRedisクライアントでコマンドを実行できることを確認したら、redis-cli
を終了できます。
- quit
ステップ3—危険なコマンドの名前を変更する
Redisに組み込まれている他のセキュリティ機能には、危険と見なされる特定のコマンドの名前を変更するか、完全に無効にすることが含まれます。 危険と見なされるコマンドには、FLUSHDB
、FLUSHALL
、KEYS
、PEXPIRE
、DEL
、CONFIG
などがあります。 ]、SHUTDOWN
、BGREWRITEAOF
、BGSAVE
、SAVE
、SPOP
、SREM
、RENAME
、およびDEBUG
。 これらのコマンドやその他のコマンドを無効にするか名前を変更することで、権限のないユーザーがデータを再構成、破棄、またはその他の方法でワイプすることをより困難にします。
Redisコマンドの名前を変更または無効にするには、構成ファイルをもう一度開きます。
- sudo nano /etc/redis/redis.conf
警告:コマンドを無効にして名前を変更する方法を示す次の手順は、例です。 自分にとって意味のあるコマンドを無効にするか、名前を変更することだけを選択する必要があります。 コマンドの完全なリストを自分で確認し、redis.io/commandsでそれらがどのように誤用される可能性があるかを判断できます。
コマンドを無効にするには、次のように、コマンドの名前を空の文字列(間に文字がない引用符のペアで示される)に変更します。
. . .
# It is also possible to completely kill a command by renaming it into
# an empty string:
#
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command DEBUG ""
. . .
コマンドの名前を変更するには、以下の例に示すように、コマンドに別の名前を付けます。 名前を変更したコマンドは、他の人が推測するのは難しいはずですが、覚えやすいでしょう。
. . .
# rename-command CONFIG ""
rename-command SHUTDOWN SHUTDOWN_MENOT
rename-command CONFIG ASC12_CONFIG
. . .
変更を保存してファイルを閉じます。
コマンドの名前を変更した後、Redisを再起動して変更を適用します。
- sudo systemctl restart redis.service
新しいコマンドをテストするには、Redisコマンドラインを入力します。
- redis-cli
次に、認証します。
- auth your_redis_password
OutputOK
前の例のようにCONFIG
コマンドの名前をASC12_CONFIG
に変更したと仮定して、元のCONFIG
コマンドを使用してみてください。 名前を変更したため、失敗するはずです。
- config get requirepass
Output(error) ERR unknown command `config`, with args beginning with:
ただし、名前が変更されたコマンドの呼び出しは成功します。 大文字と小文字は区別されません。
- asc12_config get requirepass
Output1) "requirepass"
2) "your_redis_password"
結論
このクイックスタートチュートリアルでは、Redisをインストールして構成し、Redisインストールが正しく機能していることを検証し、組み込みのセキュリティ機能を使用して、悪意のある攻撃者からの攻撃に対する脆弱性を軽減しました。