8.7. Memcached 서비스 보안

Memcached는 오픈 소스 고성능 분산 메모리 개체 캐싱 시스템입니다. 데이터베이스 로드를 줄여 동적 웹 애플리케이션의 성능을 향상시킬 수 있습니다.

Memcached는 데이터베이스 호출, API 호출 또는 페이지 렌더링 결과에서 문자열 및 오브젝트와 같은 임의의 데이터의 작은 청크를 위한 메모리 내 키-값 저장소입니다. Memcached를 사용하면 활용도가 낮은 영역에서 더 많은 메모리가 필요한 애플리케이션에 메모리를 할당할 수 있습니다.

2018년, 공개 인터넷에 노출된 Memcached 서버를 악용하여 DDoS 개정 공격 취약점을 발견했습니다. 이러한 공격은 전송에 UDP 프로토콜을 사용하여 Memcached 통신을 활용합니다. 이 공격은 수 백바이트 크기의 요청이 몇 메가바이트 또는 수백 메가바이트 크기의 응답을 생성할 수 있는 높은 배율 비율로 인해 효과가 있었습니다.

대부분의 경우 memcached 서비스를 공용 인터넷에 노출할 필요가 없습니다. 이러한 노출에는 원격 공격자가 Memcached에 저장된 정보를 유출하거나 수정할 수 있는 자체 보안 문제가 있을 수 있습니다.

이 섹션에 따라 잠재적인 DDoS 공격에 대해 Memcached 서비스를 사용하여 시스템을 강화할 수 있습니다.

8.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) 인증을 활성화합니다.

    1. /etc/sasl2/memcached.conf 파일을 수정하거나 추가합니다.

      sasldb_path: /path.to/memcached.sasldb
    2. SASL 데이터베이스에 계정을 추가합니다.

      # saslpasswd2 -a memcached -c cacheuser -f /path.to/memcached.sasldb
    3. memcached 사용자 및 그룹에 대한 데이터베이스에 액세스할 수 있는지 확인합니다.

      # chown memcached:memcached /path.to/memcached.sasldb
    4. /etc/sysconfig/memcached 파일의 OPTIONS 매개변수에 -S 값을 추가하여 Memcached에서 SASL 지원을 활성화합니다.

      OPTIONS="-S"
    5. Memcached 서버를 다시 시작하여 변경 사항을 적용합니다.

      # systemctl restart memcached
    6. SASL 데이터베이스에서 생성된 사용자 이름과 암호를 애플리케이션의 Memcached 클라이언트 구성에 추가합니다.
  • TLS를 사용하여 Memcached 클라이언트와 서버 간 통신을 암호화합니다.

    1. /etc/sysconfig/memcached 파일의 OPTIONS 매개변수에 -Z 값을 추가하여 Memcached 클라이언트와 서버 간 암호화된 통신을 활성화합니다.

      OPTIONS="-Z"
    2. -o ssl_chain_cert 옵션을 사용하여 인증서 체인 파일 경로를 PEM 형식으로 추가합니다.
    3. -o ssl_key 옵션을 사용하여 개인 키 파일 경로를 추가합니다.