Redisはオープンソースのメモリ内のキー/値ストアであり、データベース、キャッシュ、メッセージブローカーとして使用されます。これは、オプションの耐久性を備えた分散型のメモリ内Key-Valueデータベースです。文字列、ハッシュ、リスト、セット、ビットマップ、並べ替えられたセット、HyperlogLogs、ストリーム、半径クエリを使用した地理空間インデックスなどの一般的なデータ構造をサポートします。
このチュートリアルでは、Ubuntu18.04LTSにRedisサーバーをインストールして構成する方法を示します。最初にRedisサーバーをインストールし、次にインストールを保護して本番環境に対応できるようにします。
前提条件
このガイドでは、1GBのRAMと2CPUコアを搭載したUbuntu18.04にRedisサーバーをインストールします。これはテスト専用であり、本番環境ではこれ以上のものが必要になります。
私たちが行うこと:
- Redisサーバーをインストールする
- Redisサーバーの基本構成
- Redisサーバーの保護
- テスト
まず、Ubuntuシステム上のすべてのリポジトリを更新し、すべてのパッケージをアップグレードします。
以下のaptコマンドを実行します。
sudo apt update
sudo apt upgrade
その後、以下のaptコマンドを使用して、公式のUbuntuリポジトリからRedis-serverパッケージをインストールします。
sudo apt install redis-server
インストールが完了すると、Redisサービスの開始に失敗したというエラーメッセージが表示されます。メッセージエラーは無視して、次の手順で構成します。
このステップでは、基本的なRedisサーバーをセットアップします。 Linuxシステムでは、「/ etc/redis」ディレクトリにあるRedis構成。
'/ etc / redis'ディレクトリに移動し、vimエディターを使用して構成ファイル'redis.conf'を編集します。
cd /etc/redis/
vim redis.conf
まず、「バインド」IPアドレスがredisサービスを実行するかどうかを決定する必要があります。 redisサービスにパブリックIPアドレスを使用することはお勧めしません。複数/クラスターのredisサービスを実行している場合は、内部ネットワークを使用する必要があります。
この例では、「bind」アドレスをローカルホストのIPアドレスに変更します。
bind 127.0.0.1
その後、サーバー上でredisサービスを実行する方法を設定する必要があります。 Ubuntuサーバーとsystemdを使用しているため、「監視対象」の回線構成を「systemd」に変更する必要があります。
supervised systemd
保存して閉じます。
ここで、redisサービスを再起動し、起動時間に追加します。
systemctl restart redis-server
systemctl enable redis-server
エラーがないことを確認してから、そのステータスを確認します。
systemctl status redis-server
その結果、redisサービスはUbuntu18.04サーバーで稼働しています。
次に、以下のnetstatコマンドを使用して、デフォルトのRedisポート「6379」を確認します。
netstat -plntu
そして、デフォルトの「6379」でローカルホストIPアドレスでredisサービスが実行されている結果が得られます。
次に、以下のように「redis-cli」コマンドを使用してRedisを確認します。
redis-cli ping
redis-cli ping "Hello Redis"
そして、以下のような結果が得られます。
インストールが正しい場合は、Redisサーバーが「PONG」で応答するか、「ping」オプションの直後にテキストを送信したテキストで応答します。
Redisサーバーの基本的なインストールと構成が正常に完了しました。
このステップでは、Redisのインストールを保護します。 Redisサーバーのセキュリティ保護について知っておくべきことが3つあります。
1。ネットワークセキュリティ
Redisサーバーのネットワークセキュリティは、Redis構成の「bind」構成「redis.conf」に関連しています。 Redisのインストールには内部プライベートネットワークを使用することをお勧めします。パブリックは使用しないでください。
'/ etc / redis'ディレクトリに移動し、構成ファイル'redis.conf'を編集します。
cd /etc/redis/
vim redis.conf
[バインド]セクションで、IPアドレスを独自の内部ネットワークIPアドレスに変更します。
bind INTERNAL-IP-ADDRESS
保存して閉じます。
これで、Redisサービスは「INTERNAL-IP-ADDRESS」の下で実行されます。
2。パスワード認証
Redisのパスワード認証により、Redisサーバーへのアクセス制御が可能になります。これは、Redisサーバーのセキュリティを強化するセキュリティの小さな層であり、デフォルトのインストールではまだ有効になっていません。
Rediserサーバーのパスワード認証を有効にするには、「redis.conf」ファイルの「requirepass」セクションのコメントを解除し、その後に強力なパスワードを入力する必要があります。
requirepass [email protected]#$
'[email protected]#$'を強力なパスワードに変更します。これで、Redisのパスワード認証が有効になりました。
3。危険なRedisコマンドを無効にする
Redisは、特定のRedisコマンドを無効にする機能を提供します。この機能を使用して、すべてのデータを消去するための「FLUSHALL」、RedisCLIを介して構成パラメーターを設定するための「CONFIG」コマンドなどの危険なコマンドの名前を変更または無効にすることができます。
Redisコマンドを変更または無効にするには、「rename-command」オプションを使用できます。 Redis構成ファイル「redis.conf」を編集し、以下にいくつかの構成を追加します。
# rename-command COMMAND "CUSTOM"
rename-command FLUSHALL "DELITALL"
rename-command CONFIG "MYSERVERCONF"
保存して閉じます。
すべてが完了したら、以下のsystemctlコマンドを使用してRedisサービスを再起動します。
systemctl restart redis-server
また、Redisのインストールを保護するための基本的なRedisセキュリティがホストに適用されています。
その他の考慮事項として、Redisの「データ暗号化」サポートと、アプリケーション側で必要な安全なコーディングも必要になる場合があります。
このステップでは、「redis-cli」コマンドラインを使用してRedisサーバーのデプロイをテストします。
1。ホストと認証のテスト
redisサーバーのホスト名/IPアドレスとポートを指定してredis-cliコマンドを使用してRedisサーバーに接続します。
redis-cli -h 10.5.5.25 -p 6379
「10.5.5.25」を自分のIPアドレスに変更します。
サーバーに接続したら、pingコマンドを試してください。
ping
ping "Hello Redis"
これで、次のような結果が得られます。
Redis CLIシェルでコマンドを呼び出す前に認証する必要があるため、annエラーが発生します。
次のコマンドを実行して、Redisサーバーに対して認証します。
AUTH [email protected]#$
認証されたら、pingコマンドを試すことができ、Redisサーバーから応答が返されます。
ping
ping "Hello Redis"
以下は、Redisサーバーに対して認証された後の結果です。
2。無効化/名前変更されたコマンドのテスト
シェルで名前を変更したすべてのコマンドを実行すると、コマンドエラーが発生します。
FLUSHALL
CONFIG
以下は、これらのコマンドのエラー結果です。
次に、それぞれに対して「CUSTOM」コマンドを実行します。
以下のようにredis-cliコマンドを使用して新しいキーを作成します。
SET Name "Hakase Labs"
SET Blog "Howtoforge.com"
Keys *
ここで、名前が変更された「FLUSHALL」コマンド「DELITALL」を使用して、すべてのキーとデータを削除します。
DELITALL
'CONFIG'コマンドの場合、Redisサーバー構成の新しい値を取得または設定してみてください。 「CONFIG」コマンドの名前が「MYSERVERCONF」に変更されました。
MYSERVERCONF get bind
MYSERVERCONF get requirepass
以下は、これらの新しい名前が変更されたカスタムコマンドの結果です。
Ubuntu18.04へのRedisServerの基本的なインストールが完了し、RedisServerの基本的なセキュリティが適用されました。