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