8.7. Memcached 서비스 보안
Memcached는 오픈 소스 고성능 분산 메모리 오브젝트 캐싱 시스템입니다. 데이터베이스 부하를 낮추어 동적 웹 애플리케이션의 성능을 향상시킬 수 있습니다.
Memcached는 데이터베이스 호출, API 호출 또는 페이지 렌더링 결과에서 문자열 및 오브젝트와 같은 임의의 데이터의 작은 청크를 위한 메모리 내 키-값 저장소입니다. Memcached를 사용하면 활용도가 낮은 영역에서 더 많은 메모리가 필요한 애플리케이션에 메모리를 할당할 수 있습니다.
2018년에는 공용 인터넷에 노출된 Memcached 서버를 악용하여 DDoS 확장 공격의 취약점이 발견되었습니다. 이러한 공격은 전송에 UDP 프로토콜을 사용하여 Memcached 통신을 활용했습니다. 이 공격은 몇 백 바이트 크기의 요청이 몇 메가바이트 또는 수백 메가바이트 크기의 응답을 생성할 수 있는 높은 수정 비율로 인해 효과적이었습니다.
대부분의 경우 memcached
서비스를 공용 인터넷에 노출할 필요가 없습니다. 이러한 노출에는 자체 보안 문제가 있어 원격 공격자가 Memcached에 저장된 정보를 누출하거나 수정할 수 있습니다.
8.7.1. DDoS에 대한 Memcached 강화 링크 복사링크가 클립보드에 복사되었습니다!
보안 위험을 완화하려면 구성에 적용 가능한 한 많은 다음 단계를 수행하십시오.
프로세스
LAN에서 방화벽을 구성합니다. 로컬 네트워크에서만 Memcached 서버에 액세스할 수 있어야 하는 경우
memcached
서비스에서 사용하는 포트로 외부 트래픽을 라우팅하지 마십시오. 예를 들어 허용된 포트 목록에서 기본 포트11211
을 제거합니다.firewall-cmd --remove-port=11211/udp firewall-cmd --runtime-to-permanent
# firewall-cmd --remove-port=11211/udp # firewall-cmd --runtime-to-permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션과 동일한 시스템에서 단일 Memcached 서버를 사용하는 경우 localhost 트래픽만 수신 대기하도록
memcached
를 설정합니다./etc/sysconfig/memcached
파일에서OPTIONS
값을 수정합니다.OPTIONS="-l 127.0.0.1,::1"
OPTIONS="-l 127.0.0.1,::1"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SASL(Simple Authentication and Security Layer) 인증을 활성화합니다.
/etc/sasl2/memcached.conf
파일을 수정하거나 추가합니다.sasldb_path: /path.to/memcached.sasldb
sasldb_path: /path.to/memcached.sasldb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SASL 데이터베이스에 계정을 추가합니다.
saslpasswd2 -a memcached -c cacheuser -f /path.to/memcached.sasldb
# saslpasswd2 -a memcached -c cacheuser -f /path.to/memcached.sasldb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow memcached
사용자 및 그룹에 대해 데이터베이스에 액세스할 수 있는지 확인합니다.chown memcached:memcached /path.to/memcached.sasldb
# chown memcached:memcached /path.to/memcached.sasldb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/sysconfig/memcached
파일의OPTIONS
매개변수에-S
값을 추가하여 Memcached에서 SASL 지원을 활성화합니다.OPTIONS="-S"
OPTIONS="-S"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Memcached 서버를 다시 시작하여 변경 사항을 적용합니다.
systemctl restart memcached
# systemctl restart memcached
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - SASL 데이터베이스에서 생성된 사용자 이름과 암호를 애플리케이션의 Memcached 클라이언트 구성에 추가합니다.
TLS를 사용하여 Memcached 클라이언트와 서버 간 통신을 암호화합니다.
/etc/sysconfig/memcached
파일의OPTIONS
매개변수에-Z
값을 추가하여 TLS를 사용하여 Memcached 클라이언트와 서버 간에 암호화된 통신을 활성화합니다.OPTIONS="-Z"
OPTIONS="-Z"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
-o ssl_chain_cert
옵션을 사용하여 PEM 형식으로 인증서 체인 파일 경로를 추가합니다. -
-o ssl_key
옵션을 사용하여 개인 키 파일 경로를 추가합니다.