9.7. Memcached 서비스 보안
Memcached는 고성능 분산 메모리 개체 캐싱 시스템입니다. 데이터베이스 로드를 줄여 동적 웹 애플리케이션의 성능을 향상시킬 수 있습니다.
Memcached는 데이터베이스 호출, API 호출 또는 페이지 렌더링 결과에 따른 문자열 및 오브젝트와 같은 작은 임의 데이터의 작은 청크를 위한 메모리 내 키-값 저장소입니다. Memcached를 사용하면 활용도가 낮은 영역에서 메모리를 더 많은 메모리가 필요한 애플리케이션에 할당할 수 있습니다.
2018년, 다수의 인터넷에 노출된 Memcached 서버를 악용하여 DDoS 수정 공격의 취약점이 발견되었다. 이러한 공격은 전송에 UDP 프로토콜을 사용하는 Memcached 통신을 활용합니다. 이 공격은 몇 백 바이트 크기의 요청이 몇 메가바이트 또는 수백 메가바이트의 크기를 생성 할 수있는 높은 변동 비율 때문에 효과적이었습니다.
대부분의 경우 memcached
서비스를 공용 인터넷에 노출할 필요가 없습니다. 이러한 노출은 자체 보안 문제가 발생할 수 있으므로 원격 공격자가 Memcached에 저장된 정보를 유출하거나 수정할 수 있습니다.
9.7.1. jenkinsfile에 대해 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
값을 추가하여 TLS를 사용하여 Memcached 클라이언트와 서버 간의 암호화된 통신을 활성화합니다.OPTIONS="-Z"
-
-o ssl_chain_cert
옵션을 사용하여 PEM 형식으로 인증서 체인 파일 경로를 추가합니다. -
-o ssl_key
옵션을 사용하여 개인 키 파일 경로를 추가합니다.