GNU/Linux >> Linux の 問題 >  >> Linux

Linux で安全な Redis インストールを実行する方法

Redis は多くの点で有益ですが、その 1 つがキャッシングです。 Redis をプライマリ データ ストアとして、またはデータベースの代わりとして使用することもできます。しかし、セキュアな Redis インストールを実行するにはどうすればよいでしょうか? Redis のインストールは面倒な場合があり、注意しないと多くのエラーが発生する可能性があります。幸運なことに、このチュートリアルでカバーできます。

このチュートリアルでは、Redis を Linux システムに安全にインストールする方法と、よくある間違いを避けるためのヒントを学びます。

読み進めて、Redis のインストール エラーのトラブルシューティングの頭痛の種から解放されましょう!

前提条件

このチュートリアルは実践的なデモンストレーションです。フォローしたい場合は、次のものが揃っていることを確認してください:

  • Ubuntu 20.04 LTS マシン – このチュートリアルでは Ubuntu 20.04 LTS を使用しますが、手順はほとんどの Linux ディストリビューションで同様です。
  • root 権限または sudo を持つ root 以外のユーザー 特権

APT パッケージ マネージャーを使用した Redis のインストール

Ubuntu に Redis をインストールする方法はいくつかありますが、このチュートリアルでは、APT パッケージ マネージャーを使用して Redis をインストールします。

Redis は C で記述されているため、ソース コードから手動で Redis をコンパイルする必要があります。いくつかの依存関係をインストールする必要があり、ビルド プロセスは完全に確実ではありません。

Redis をソースからコンパイルすることはお勧めしませんが、必要に応じてインストールをカスタマイズできるというメリットがあります。ソース コードをダウンロードして、手動で構成します。

ターミナルを開いて apt update を実行します 以下のコマンドを実行して、最新のパッケージ リストがあることを確認してください。

sudo apt update -y

次に、apt install を実行します 以下のコマンドを実行して、マシンに Redis をインストールしてください。

以下のコマンドは apt を使用しています redis-server をダウンロードしてインストールするためのパッケージ マネージャー Ubuntu リポジトリからマシンにパッケージ化します。 -y フラグは apt を示します インストール プロセス中にプロンプ​​トを自動的に受け入れるようにします。

sudo apt install redis-server -y

Redis.conf ファイルを構成して Redis をサービスとして実行する

Redis をインストールしましたが、まだ使用する準備ができていません。 Redis の使用を開始する前に、最初に redis.conf を構成します。 ファイル。

redis.conf 構成ファイルは、インストールした Redis パッケージに含まれており、/etc/redis/ に保存されています。 デフォルトではディレクトリ。このファイルには、Redis のすべての構成オプションが含まれています。

従来のパターンに従っているため、.conf ファイル拡張子は論理的です。他の多くのプログラムがこれと同じスタイルを使用しています。たとえば、Apache Web サーバーは、メインの構成ファイルに .conf ファイル拡張子を使用します。

1. 次の systemctl を実行します stop へのコマンド redis-server サービス。 Redis を初めて使用する場合は、Redis サービスの実行を停止することをお勧めします。

sudo systemctl stop redis.service

2. 次に、/etc/redis/redis.conf を開きます 好みのテキスト エディターでファイルします。

監視対象を見つける ディレクティブ、それを systemd に設定します をクリックし、変更を保存します。そうすることで、オペレーティング システムに Redis をサービスとして実行するように指示します。

3. systemctl restart を実行します。 以下のコマンドで Redis サービスを再起動します (redis.service ) Redis サービスはまだ変更を認識していないためです。

sudo systemctl restart redis.service

4. 最後に、systemctl status を実行します。 以下のコマンドを実行して、Redis が実行されているかどうかを確認します。

sudo systemctl status redis.service

以下に示すように、出力は Redis サービスが実行中であることを示しています。

Redis サーバーが適切に機能するかどうかのテスト

Redis サービスがアクティブに実行されていることを構成および確認しましたが、それは Redis サーバーが動作していることを意味しません。 Redis サーバーが正常に機能しているかどうかをテストする方法は? Redis サーバーに接続し、コマンドを送信してサーバーが応答するかどうかを確認します。

1. redis-cli を実行します 以下のコマンドで Redis サーバーに接続します。 redis-cli Redis のコマンドライン インターフェースです。これにより、サーバーにコマンドを送信し、その状態を調べることができます。

redis-cli

以下では、Redis サーバー プロンプト (127.0.0.1:6379>) にいることがわかります。 )。 redis-cli コマンドは 127.0.0.1:6379 で Redis サーバーへの接続を試みます デフォルトで。

2. 次に、ping を実行します 以下のコマンドを実行して、Redis サーバーに到達できるかどうかを確認します。

ping

ご覧のとおり、サーバーは PONG を返しました これは、Redis サーバーが到達可能であり、サービスと正常に通信できるようになったことを示します。

おそらく、あなたはまだ懐疑的です。 set を実行します 以下のコマンド。 set command は、データベースにキーと値のペアを設定する Redis コマンドです。

set test "This is a test"

ご覧のとおり、set コマンドは「OK」を返します。 これは、Redis サービスが正しく機能していることを示しています。

3. exit を実行します 以下のコマンドで redis-cli を終了します .これにより、Redis サーバーへの接続が閉じられます。

exit

Redis サーバーを Localhost にバインドする

Redis サーバーが正常に動作することをテストしましたが、ネットワーク上の他のデバイスからもアクセスできる可能性があります。この動作は望ましくないため、通常、Redis サーバーを見知らぬ人から保護する必要があります。

Redis サーバーを localhost にバインドすると、Redis をインストールしたマシンのみが Redis サーバーにアクセスできるという動作が設定されます。

1. /etc/redis/redis.conf を開きます ファイルをテキスト エディタで編集します。

2. bind 127.0.0.1 ::1 という行を探します 番号記号 (#) を削除して、行のコメントを解除します。 ) 行頭に。

3. 次に、以下のコマンドを実行して redis-server を再起動します。 サービス。

sudo systemctl restart redis-server

4. 最後に、次のコマンドを実行して、Redis サーバーが localhost にバインドされているかどうかを確認します。 netstat -lnp コマンドはすべてのアクティブなネットワーク接続を一覧表示し、grep redis は 一部は、出力を「redis」を含む行にフィルターします。 」

-lnp Local Name Protocol の略で、ホスト名を IP アドレスに解決するために UNIX 系のシステムで使用されるネットワーク プロトコルです。

sudo netstat -lnp | grep redis

以下で、Redis サーバーが localhost インターフェースのみをリッスンしていることを確認できます (127.0.0.1:6379 )。構成ファイルの変更を反映して、アクティブなインターネット接続 (tcp )。

これで、ネットワーク上の他のデバイスは Redis サーバーに接続できなくなります。

Redis サーバー接続をパスワードで保護する

この時点では、Redis はユーザーにパスワードによる認証を要求するようには設定されていません。 Redis サーバーの IP アドレスまたはホスト名を知っている人なら誰でも、それに接続してそのデータを変更できます。

Redis サーバーをどのように保護しますか? Redis サーバーへの接続時にユーザーに認証を求めるパスワードを設定します。

1. redis.conf を再度開きます 構成ファイルをテキスト/コード エディターで編集します。

2. 次に、次のように強力なパスワードを設定します:

  • requirepass foobared を探します SECURITY の下 セクション
  • シャープ記号を削除 (# ) 行頭
  • foobared を置き換えます 選択した強力なパスワードを使用して、変更を保存します

3. 次のコマンドを実行して再起動し、Redis サーバーに接続します。

sudo systemctl restart redis-server
redis-cli

4. ping を実行します。 コマンドを実行して、サーバーから応答があるかどうかを確認します。

ping

以下に、NOAUTH 認証が必要 というエラー メッセージが表示されます。 .このメッセージは、Redis サーバーにリモートでアクセスするには認証パスワードが必要であることを示しています。

5. 以下の auth を実行します コマンドの後にパスワードを入力して、Redis サーバーへの接続を認証します。

auth Qae9p_fY:YjdtJ7k

OK を取得します 以下のような認証成功時のレスポンス。

6. 最後に、ping を再実行します。 コマンドを実行して、Redis サーバーへの接続が認証されているかどうかをテストします。

ping

これで PONG を取得できます 以下に示すように、接続を認証した後の応答。この時点で、Redis サーバーをパスワードで正常に保護できました。

危険なコマンドを無効にして Redis サーバーを保護する

Redis サーバーへの接続を認証するためのパスワードを設定しても、100% 保護されるわけではありません。デフォルトでは、Redis には、ユーザーがデータベース内のデータを変更できる危険なコマンドがいくつか含まれています。

これらのコマンドを許可されていないユーザーが実行すると、侵入者は Redis データベースのデータを読み取り、変更、破壊、さらには消去することができます。

以下は、Redis サーバーに追加の危険なコマンドがある可能性があるため、包括的なリストではありませんが、ほとんどの場合、これらは危険なコマンドです:

FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF
BGSAVE, SAVE, SPOP, SREM, RENAME, DEBUG, EVAL

Redis サーバーをさらに安全にするには、redis.conf でこれらの危険なコマンドの名前を変更してください ファイル:

1. redis.conf を開きます ファイルをテキスト エディタで開き、コマンドの名前変更を探します セクション。

以下の構文に従ってコマンドを無効にするには、コマンドの名前を空の文字列に変更します。 the-command を置き換えます 実際のコマンドを使用して無効にします。

rename-command the-command ""

たとえば、CONFIG を無効にします。 CONFIG の名前を変更したコマンド 以下に示すように、空の文字列に変更してから、変更を保存します。二重引用符 (“”) コマンドを無効にすることを意味する空の文字列を示します。

2. テキスト エディターを終了し、以下のコマンドを実行して Redis サーバーを再起動します。

sudo systemctl restart redis-server

3. 次のコマンドを実行して、Redis サーバーに接続します。

redis-cli
auth Qae9p_fY:YjdtJ7k

4. 最後に、config get を実行します。 CONFIG をテストするコマンド コマンドは無効です。

config get requirepass

ERR 不明なコマンド config が表示されます 以下に示すように、CONFIG コマンドは無効です。

config get requirepass の場合 コマンドがプッシュされると、Redis サーバーへの接続を認証するためのパスワードを Redis サーバーに要求します。

Redis サーバーを保護するために、危険な Redis コマンドの名前を変更することに成功しました。 redis.conf で他の危険なコマンドを無効にし続ける ファイル。

ファイアウォールで Redis サーバーへの接続リクエストをブロックする

Redis サーバーを保護するもう 1 つの方法は、ファイアウォールを設定することです。ファイアウォールを設定するには、サーバーで実行されている各サービスに必要なポートのみを許可する必要があります。

たとえば、サーバーのポート 6379 で Redis を実行している場合 、そのポートはあなたが開くだけでよいものです。特定の IP アドレスまたはアドレス範囲からのアクセスを許可する必要がある場合は、それらのアドレスをファイアウォール ルールに追加できます。

ファイアウォールをセットアップするには、まずファイアウォール構成ツールをインストールします。この例では、Linux で一般的に使用されるファイアウォール構成ツールである UFW を使用します。ただし、iptables などの別のツールを使用してファイアウォールを設定することもできます。

1. 次のコマンドを実行して、マシンに UFW をインストールします。

sudo apt install ufw -y

2. 次に、以下のコマンドを実行して UFW を有効にします。

sudo ufw enable

以下に示すプロンプトが表示されたら「Y」を入力して、コマンドの実行を続行します。

3. ufw を実行します 以下のコマンドを使用してルールを追加し、(allow ) ポート 6379 のトラフィック Redis サーバー用。 11.22.33.44 を置き換えます 対象ユーザーの IP アドレスを含む IP アドレス。

sudo ufw allow from 11.22.33.44 to any port 6379

4. 最後に、以下のコマンドを実行して、ファイアウォール ルールが正常に追加されたことを確認します。コマンドは status をチェックします

sudo ufw status

以下の出力で、ファイアウォールがアクティブであることがわかります ポート 6379 でトラフィックを許可するルールがあります IP アドレス 11.22.33.44 からの Redis の場合 .

ここで、11.22.33.44 の IP アドレスを持つすべてのユーザー ポート 6379 経由で Redis に接続できます パスワードで認証する必要があります。同様の方法で、他のサービスのポートを追加できます。

結論

このチュートリアルを通して、危険なコマンドの名前を空の文字列に変更し、ファイアウォールを設定することで、Redis サーバーをインストールして保護する方法を学びました。

この新たな知識があれば、サーバーを不必要なリスクにさらすことを心配することなく、Redis のメリットを最大限に享受できます。

もっと学びたいですか? Kubernetes で Redis サーバーを保護することから始めてみませんか?


Linux
  1. LinuxにPythonをインストールする方法

  2. LinuxにJavaをインストールする方法

  3. LinuxにNodeJSをインストールする方法

  1. Kali LinuxにSSH(セキュアシェル)サービスをインストールする方法

  2. Ubuntu20.04にRedisをインストールして保護する方法

  3. Debian に Redis をインストールして構成する方法

  1. Linuxを3つのステップでインストールする方法

  2. Ubuntu18.04にRedisをインストールして保護する方法

  3. Rocky Linux 8 に Redis をインストールする方法