現在では、ホット データをキャッシュするために Redis を使用することがますます一般的になっており、一部の構成やスイッチなども Redis で記述されています。その理由は、redis がシンプルで効率的だからです。Redis 上のデータの重要性はますます高まっており、たとえば一部の業務中間データは一時的に Redis に保存されるため、引き続き Redis へのアクセスを制限する必要があります。
この記事では、実稼働環境における Redis のアクセス制御について説明するために、いくつかの手段を使用します。
1.ネットワークカードのバインド
Redis 構成ファイル redis.conf のネットワークセキュリティ部分にそのような段落があります。
################################## 通信網 ############### ###################### # デフォルトでは、「bind」設定ディレクティブが指定されていない場合、Redis は # サーバー上で利用可能なすべてのネットワーク インターフェイスからの接続をリッスンします。 # 「bind」設定ディレクティブとそれに続く 1 つ以上の IP アドレスを 使用して、選択した 1 つまたは複数のインターフェイスだけをリッスンすることができます。 # # ~~~ 警告 ~~~ Redis を実行しているコンピューターが # インターネットに直接公開されている場合、すべてのインターフェイスへのバインドは危険であり、 # インスタンスがインターネット上のすべての人に公開されることになります。したがって、デフォルトでは # に続くバインド ディレクティブのコメントを解除します 。これにより、Redis は強制的にのみリッスンします。 したがって、デフォルトでは# IPv4 ルックバック インターフェイス アドレスのコメント # IPv4 ルックバック インターフェイス アドレス (これは、Redis が #実行しているのと同じコンピューター内で実行されているクライアントからの接続のみを # 受け入れることが )。
この一節の意味は、bind の深い意味を明らかにします。bind は、redis インスタンスがどのインターフェイスにバインドされているかを意味し、どのネットワーク カードにバインドされているかと理解できます。では、ネットワーク カードは何枚あるでしょうか? 見てみることができます。
$ ifconfig eth0 リンク encap:イーサネット HWaddr 6C:92:BF:22:D7:FC inet addr:10.93.84.53 Bcast:10.93.84.127 マスク:255.255.255.128 lo リンク encap:ローカル ループバック inet addr:127.0.0.1 マスク:255.0 .0.0
ここには 2 つあり、1 つは eth0 イーサネット カード (10.93.84.53)、もう 1 つはローカル ループ lo (127.0.0.1) です。
その場合、次の 2 つの状況が考えられます。
1) バインド 10.93.84.53 #同じネットワークセグメント上のすべてのホストが Redis に接続できます
2) 127.0.0.1 #local ループをバインドすると、redis インスタンスが配置されているホストのみが redis にアクセスできます。
ニーズに応じて使用できます。
1) マシンがインターネットに直接公開されている場合は、バインドを 127.0.0.1 に慎重に設定する必要があります。そうしないと、Redis がすべての外部攻撃にさらされることになります。
2) 運用環境にいる場合は、通常、他のホストも Redis にアクセスできるようにネットワーク カードに接続する必要があります。その後、Redis データのセキュリティを確保する他の方法がいくつかあります。
2.パスワードrequirepassを設定します
パスワードを設定した後、redis.confにそのような構成があります。
#requirepass <パスワード>
必須パス マイパス
Redis サービスを再起動した後、クライアントはパスワードを使用して Redis にアクセスする必要があります
# パスワードは正しいです $ redis-cli -h 10.93.84.53 -p 6379 -a mypass ping PONG
# パスワードエラー $ redis-cli -h 10.93.84.53 -p 6379 -a hehe ping (error) NOAUTH 認証が必要です。
3. nologin はアカウント権限を削減します
低い特権のアカウントで Redis サービスを実行し、アカウントのログイン権限を無効にします。さらに、攻撃者は機密ファイルの書き込みを制限できますが、Redis データは依然としてハッカーによってアクセスされたり、ハッカーによって悪意をもって削除されたりする可能性があります。
Linux ユーザーのログインを禁止する方法は、一般に、ユーザーのシェル タイプを /sbin/nologin に変更することです。
この方法は、ユーザーのログインを禁止できるだけでなく、ログインを求めるプロンプトを表示できるため、より人道的です。ログインが無効になっているときにその理由を伝えます。
/etc/nologin.txt を変更し、存在しない場合は手動で新しいものを作成し、その中に禁止されたユーザーへのリマインダーを追加します (このようにしてすべてのユーザーのロック情報がこのファイルにあり、リマインダーが表示されます)ログイン時)。
実際には、/etc/passwd ファイルの /bin/bash を /sbin/nologin に変更します。
[root@host-192-168-1-117 ~]# useradd wangshibo [root@host-192-168-1-117 ~]# echo "123456"|passwd --stdin wangshibo ユーザー wangshibo のパスワードを変更します。 passwd: すべての認証トークンが正常に更新されました。 [root@host-192-168-1-117 ~]# cat /etc/passwd|grep wangshibo wangshibo:x:500:500::/home/wangshibo:/bin/bash [root@host-192-168- 1-117 ~]# sed -i 's#/home/wangshibo:/bin/bash#/home/wangshibo:/sbin/nologin#g' /etc/passwd [root@host- 192-168-1-117 ~]# cat /etc/passwd|grep wangshibo wangshibo:x:500:500::/home/wangshibo:/sbin/nologin [root@host-192-168-1-117 ~]# touch /etc/nologin. txt [root@host-192-168-1-117 ~]# cat /etc/nologin.txt システムのセキュリティを保護するため、このタイプのユーザーはロックされています。
4. iptables はファイアウォールを設定します
運用環境でもファイアウォールを設定する必要があります。通常の業務で他のサーバーから Redis サービスにアクセスする必要がある場合は、指定した IP のみが Redis サービスにアクセスできるように iptables ポリシーを設定できます。
Redis インスタンスが配置されているホストで、次のコマンドを実行します。
# iptables rules で設定されたルールを表示 $ iptables -nL --line-number # すべてのホストがこのマシンのポート 6379 にアクセスすることを禁止 $ iptables -I INPUT -p TCP --dport 6379 -j DROP # 次のマシンを開きます -s仕様では、これらのマシンはローカル ポート 6379 にアクセスできます $ iptables -I INPUT -s 10.93.21.21 -p tcp --dport 6379 -j ACCEPT $ iptables -I INPUT -s 10.93.18.34 -p tcp --dport 6379 -j ACCEPT $ iptables -I INPUT -s 10.93.18.35 -p tcp --dport 6379 -j ACCEPT $ iptables -I INPUT -s 10.93.84.53 -p tcp --dport 6379 -j ACCEPT # iptables 設定を保存 $ service iptables save iptables:ファイアウォール ルールを /etc/sysconfig/iptables に保存しています:[ OK ] # ファイアウォールを再起動します $ service iptables restart iptables: ポリシーへのチェーンの設定 ACCEPT: filter [ OK ] iptables: ファイアウォール ルールのフラッシュ: [ OK ] iptables: モジュールのアンロード: [ OK ] iptables: ファイアウォール ルールの適用: [ OK ]
設定が成功すると、構成された 4 台のマシンのみが Redis インスタンスにアクセスできるようになります。