ホームページ  >  記事  >  データベース  >  Redisキャッシュデータベースの強化策は何ですか?

Redisキャッシュデータベースの強化策は何ですか?

WBOY
WBOY転載
2023-06-01 20:28:191573ブラウズ

機密データと暗号化保護

1. パスワードの保存 (重要)

セキュリティの問題: Redis サーバーのネイティブ パスワード requirepass および masterauth は、クリア テキストで次の場所に保存されます。 redis.conf

解決策: サーバーのパスワードは PBKDF2 で暗号化され、redis.conf に保存されます。

パフォーマンスの問題を考慮すると、認証ごとに PBKDF2 を使用するのは時間がかかるため、検討の結果、最初の認証が成功した後、メモリを SHA256 でキャッシュし、それ以降のリクエストは SHA256 で検証することになります。初め。

2. サポート キーの置き換え (重要)

セキュリティの問題: 暗号化と復号化に関係する秘密キーをコードにハードコーディングすることはできません。

解決策: 秘密キーは定期的な交換をサポートしています。

➤redis サーバー redis-server:

構成ファイルに構成項目を追加します: cipher-dir

redis_shared.key と root が存在するフォルダーのフル ディレクトリに構成します。キーが配置されています。 パス、例: cipher-dir /opt/redis/etc/cipher

➤redis client: redis-cli

パラメータ -cipherdir を追加し、redis_shared.key とroot.key が存在します。 フォルダーへのフルパスです。

例: redis-cli -h 127.0.0.1 -cipherdir /opt/redis/etc/cipher -a sessionrdb@dbuser@Changeme_123 -p 32091

➤redis クライアント終了 SDK: jedis*.jar

同じプロセスでは、サードパーティ インターフェイス (Jdbc と同様) は暗号化できないため、Jedis インターフェイスは文字列 dbname@user@pwd になります。 。

3. パスワード送信 (重要)

セキュリティの問題: Native Redis は、config get コマンドを通じてサーバー上の機密情報を取得する可能性があります。

解決策: パスワードなどの機密情報をクライアントに送信することは禁止されているため、config get requirepas/masterauth/requireuserpass などの機能を無効にする必要があります。

4. パスワードの変更 (重要)

セキュリティの問題: パスワードのプレーン テキスト送信の変更: config set masterauth pwd

解決策: Redis メモリにプレーン テキストのパスワードが保存される問題: masterauth は使用しますAES128 で暗号化され、パスワードは AES128 に保存されます

パスワード セキュリティ

1. この製品では、データベース パスワードの複雑さのチェック機能がデフォルトで有効になっています

セキュリティの問題: Redis パスワードの変更 複雑さのチェックはありません。

解決策: パスワードを変更するための別の Redis 変更ツールを提供します。次の点に特に注意してください:

1.パスワードの複雑さのチェックを実行します。

2.間違ったユーザー名またはパスワードを入力した場合、攻撃者がシステムのユーザー名/パスワードを推測するのを防ぐために、「パスワードが間違っています」や「ユーザー名が存在しません」などのあまりにも明確な理由のプロンプトが表示されるべきではありません。

3.パスワードを変更するには、古いパスワードを確認してください。

4.データベースのパスワードをユーザー名と同じにすることはできません。 ####5.対話的にパスワードを変更する場合は、パスワードを非表示にします。

6.ドキュメントでは、パスワードを対話的に変更することが推奨されています。

2. ブルート フォース クラッキングを防ぐには、アカウント ログイン試行の失敗回数を設定します

セキュリティの問題: Redis のネイティブ バージョンにはブルート フォース クラッキングがあります。

解決策: 最大失敗数: maxauthfailtimes (単位時間、有効範囲 (0,100,000]、デフォルト値 10,000)

この設定は、起動時に redis.conf ファイル経由でのみ渡すことができます。構成はできません。動的変更によって実現され、対応する構成セット操作は無効になります。

はサポートされていません。0 に設定すると、IP をロックしません。

3. 自動ロック解除時間を設定します。アカウントはロックされています

認証失敗ロック時間: authfaillocktime (単位は分、有効範囲は [0 ~ 999]、デフォルト値は 10)

0 に設定すると、永久ロックを意味します。

注: この構成項目は、起動時の redis.conf 構成のみをサポートしており、動的変更はサポートされていません。対応する構成セットはブロックされています。

4. ロックされた IP を確認してください。

問題: ロックされた IP を確認する必要があります (ロックされた IP)

解決策:

管理者のみがロックされた IP リストを表示できます (区切り文字は英語のコロン (:) です)

例 1: config get lockedips

戻り値: 10.67.147.111;10.67.147.112;
例 2: config get lockedips
戻り値: 10.67.147.111;
注: config set lockedips はサポートされていません。強制的に実行すると、エラーが返されます: ERR サポートされていない CONFIG パラメータ : lockedips

5. 手動でロックされた IP のロックを解除します

管理者のみが、ロックされた IP のロックを解除するコマンドを実行できます。単一の IP またはすべての IP のロック解除がサポートされています

解決策:


例 1、単一 IP のロックを解除します: config setunlockips 10.67.147.111

例 2、すべての IP のロックを解除します:config setunlockips "all"

説明: config getunlockips はサポートされていません。強制された場合は、空を返します。redis-cli プロンプト: (空のリストまたはセット)
パラメーターの IP に例外がない場合、ロック解除の失敗が返されます。例:
(エラー) ERR CONFIG SET 'unlockips 'の引数 '10.67.147.111' が無効です。

手動ロック解除とトレースの記録を実行します。例:

例: 26 Dec 03:15:19.958 * 10.67 .147.113 locked by 10.67.147.111:59417 ログ監査


6. セキュリティ監査

Redis 自体は、/var/log/localmessage などのシステム ログへのログ記録をサポートしています。ただし、redis.conf で次のように構成する必要があります:

syslog-enabled yes

syslog-ident redis

syslog-facility local0

2顧客 クライアントにログインし、クライアントの IP、アカウント、その他の情報を記録します。

3. 関連するメンテナンス操作には詳細なログ記録が必要です。

例: 29118:S 26 Nov 11:19:29.100 * readdbuser は正常にログインしました;10.145.93.119:52817;

7. 操作ログ ダンプ

セキュリティの問題: 正式版の Redis ログはダンプされないため、長時間実行するとディスクがいっぱいになる可能性があります。

解決策: Tracemonitor プロセス (Python バージョン) を個別に実行し、Redis ログ ファイルのサイズを定期的に管理し (主にログ圧縮と定期的な削除)、ディスクの占有量が多すぎるのを防ぎます。

注: 現在のプラットフォームのデフォルトは 60 秒ごとの検出で、ログは 20M まで圧縮でき、ログの最大数は 50 です。

以上がRedisキャッシュデータベースの強化策は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。