민감한 데이터 및 암호화 보호
1. 비밀번호 저장(중요)
보안 문제: 기본 Redis 서버 비밀번호 requirepass 및 masterauth는 일반 텍스트로 redis.conf에 저장됩니다.
해결책: PBKDF2를 사용하여 서버 비밀번호를 암호화하고 redis.conf에 저장합니다.
성능 문제를 고려하면 각 인증에 PBKDF2를 사용하는 것이 더 많은 시간이 소요됩니다. 검토 후 첫 번째 인증이 성공한 후 메모리가 SHA256으로 캐시되고 후속 요청은 먼저 SHA256을 사용하여 확인됩니다.
2. 키 교체 지원(중요)
보안 문제: 암호화 및 복호화에 관련된 비밀 키는 코드에 하드 코딩될 수 없습니다.
해결책: 비밀 키는 정기적인 교체를 지원합니다.
➤redis 서버 redis-server:
구성 파일에 구성 항목 추가: cipher-dir
redis_shared.key 및 root.key가 있는 폴더의 전체 경로로 구성합니다(예: cipher-dir /opt/). redis/ etc/cipher
➤redis 클라이언트: redis-cli
redis_shared.key 및 root.key가 있는 폴더의 전체 경로를 가리키는 매개변수 -cipherdir을 추가합니다
예: redis-cli -h 127.0 .0.1 -cipherdir / opt/redis/etc/cipher -a sessionrdb@dbuser@Changeme_123 -p 32091
➤redis 클라이언트 SDK: jedis*.jar
동일한 프로세스에서 Jedis 인터페이스는 문자열 dbname@user@입니다. pwd, 타사 인터페이스(Jdbc와 유사)는 암호화할 수 없기 때문입니다.
3. 비밀번호 전송(중요)
보안 문제: 기본 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. 계정이 잠긴 후 자동 잠금 해제 시간을 구성합니다.
인증 실패 잠금 시간(단위: 분) 유효 범위 [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;
참고: 강제로 설정하면 오류가 발생합니다. 반환됨: ERR 지원되지 않는 CONFIG 매개변수: 잠긴 IPs
5. IP 수동 잠금 해제
관리자만 명령을 실행하여 잠긴 IP를 잠금 해제하거나 모든 IP를 잠금 해제할 수 있습니다. 해결 방법:
예 1, 잠금 해제 단일 IP: config set Unlockips 10.67.147.111
예 2. 모든 IP 잠금 해제: config set Unlockips “all” 참고: config get Unlockips를 강제로 실행하면 비어 있는 상태가 반환되고 redis-cli 프롬프트가 표시됩니다. 빈 목록 또는 집합)
매개변수의 IP에 예외가 없으면 잠금 해제 실패가 반환됩니다. 예:
수동 잠금 해제 수행 예를 들어 추적을 기록합니다.
예: 26 Dec 03:15:19.958 * 10.67.147.113 Unlocked by 10.67.147.111:59417 로그 감사
6. 보안 감사
Redis 자체는 다음과 같은 시스템 로그에 대한 로깅을 지원합니다. /var/log/localmessage이지만 redis.conf에서 다음과 같이 구성해야 합니다:
해결 방법: Tracemonitor 프로세스(Python 버전)를 별도로 실행하고 Redis 로그 파일 크기를 정기적으로 관리(주로 로그 압축 및 정기적 삭제)하여 너무 많은 디스크를 차지하지 않도록 하세요.
참고: 현재 플랫폼은 기본적으로 60초마다 한 번씩 감지하며 로그는 20M로 압축되며 최대 로그 수는 50개입니다.
위 내용은 Redis 캐시 데이터베이스에 대한 강화 조치는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!