Ubuntu20.04にRedisをインストールして保護する方法[クイックスタート]
序章
Redis は、柔軟性、パフォーマンス、幅広い言語サポートで知られるメモリ内のKey-Valueストアです。 このクイックスタートチュートリアルは、Ubuntu 20.04サーバーにRedisをインストール、構成、および保護する方法を示しています。
前提条件
このガイドを完了するには、root以外のユーザーがいるUbuntu20.04サーバーにアクセスする必要があります。 sudo
特権とで構成されたファイアウォール ufw
. これを設定するには、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-cli
、Redisのコマンドラインクライアント:
- 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インストールが正しく機能していることを検証し、組み込みのセキュリティ機能を使用して、悪意のある攻撃者からの攻撃に対する脆弱性を軽減しました。