NGINX Plus R22 출시 발표

NGINX | 2020년 6월 09일

NGINX Plus 릴리스 22(R22)가 출시되었음을 기쁘게 알려드립니다. NGINX Open Source를 기반으로 하는 NGINX Plus는 소프트웨어 로드 밸런서, 콘텐츠 캐시, 웹 서버 및 API 게이트웨이를 모두 갖춘 유일한 올인원 솔루션입니다. 이번 릴리스는 대규모 애플리케이션의 세분성과 복원력을 향상하기 위한 모니터링 및 인증 기능에 중점을 두었습니다.

NGINX Plus R22의 새로운 기능은 다음과 같습니다:

중요한 동작 변경 사항

새로운 기능 상세 정보

클라이언트 인증서의 OCSP 검증

NGINX Plus는 상호 TLS를 지원합니다. 상호 TLS는 클라이언트 인증서를 사용하여 연결하는 클라이언트의 ID를 확인하고 암호화된 연결을 설정합니다. 상호 TLS는 클라이언트의 ID에 대해 높은 수준의 신뢰성을 제공하지만, 해지된 인증서를 관리하는 작업은 관리 부담이 될 수 있습니다. 온라인 인증서 상태 프로토콜(OCSP)은 클라이언트 인증서가 제시될 때 해당 인증서의 상태를 확인하여 이 문제를 해결합니다.

NGINX Plus에서 OCSP를 사용하여 RFC 6960에 정의된 대로 X.509 클라이언트 인증서의 유효성을 확인하도록 구성할 수 있습니다.

SSL 클라이언트 인증서의 OCSP 검증을 활성화하려면 인증서 검증을 활성화하는 ssl_ocsp 지시문과 함께 ssl_verify_client 지시문을 새로 추가합니다.

코드 예제를 로드하는 중…

NGINX Plus sends the OCSP request to the OCSP URI embedded in the client certificate unless you define a different URI with the ssl_ocsp_responder 지시문을 사용하여 다른 URI를 정의하지 않는 한, NGINX Plus는 클라이언트 인증서에 포함된 OCSP URI로 OCSP 요청을 보냅니다.

모든 워커 프로세스가 공유하는 단일 메모리 영역에 OCSP 응답을 캐시하려면 ssl_ocsp_cache 지시문을 포함하여 영역의 이름과 크기를 정의합니다. OCSP 응답의 nextUpdate 값에 다른 값이 지정되어 있지 않으면 응답은 1시간 동안 캐시됩니다.

클라이언트 인증서 검증 결과는 $ssl_client_verify 변수에서 확인할 수 있으며, 여기에는 OCSP 실패 사유도 포함됩니다.

클라이언트 인증서를 신뢰할 수 없거나 OCSP 응답이 유효하지 않으면 TLS 핸드셰이크가 실패합니다. 상태 코드 495 (SSL 인증서 오류)가 반환되고 오류 로그에 error 심각도 수준의 항목이 생성됩니다:

YYYY/MM/DD hh:mm:ss [error] 31222#0: *5 certificate status "revoked" in the OCSP response while requesting certificate status, responder: 127.0.0.1

OpenID Connect 개선 사항

당사의 OpenID Connect 참조 구현은 NGINX Plus를 통해 신규 및 기존 애플리케이션 전반으로 SSO를 확장하여 복잡성과 비용을 최소화합니다. 이 참조 구현은 NGINX Plus 기능과 NGINX JavaScript 모듈 (njs)을 함께 사용하여 권한 부여 엔드포인트와 코드를 교환하고 IdP로부터 ID 토큰을 받습니다. ID 토큰은 NGINX Plus 키-값 저장소에 캐시되고, 불투명 세션 토큰은 클라이언트로 전송됩니다. 이후 클라이언트는 유효한 세션 토큰을 제시하여 인증하며, NGINX Plus는 백엔드 애플리케이션에 대한 액세스를 허용하기 전에 이 토큰을 사용해 ID 토큰을 검증합니다.

이번 릴리스에서는 OIDC 참조 구현이 대폭 개선되었으며, 다음과 같은 두 가지 중요한 변경 사항이 적용되었습니다:

  1. 이제 구성에서는 인바운드 요청의 적절한 입력 변수를 여러 map 블록에 전달하여 여러 IdP를 지원합니다. 이렇게 유연성이 향상되어 OIDC 참조 구현 코드를 수정할 필요가 줄어듭니다.
  2. 이제 JavaScript 코드는 모듈로 구현되므로, 모든 njs 코드를 단일 파일에서 관리할 필요 없이 동일한 호스트에서 다른 njs 솔루션과 함께 사용할 수 있습니다.

다음은 구성 예시입니다:

코드 예제를 로드하는 중…

각 map 블록에는 여러 값을 지정할 수 있으므로 여러 IdP와 인증 매개변수(클라이언트 암호, JWK 키 파일, 권한 부여 엔드포인트)를 지원할 수 있습니다. 여기서는 $host 변수를 입력 매개변수로 사용하지만, 요청 헤더에서 파생된 어떤 변수든 지정할 수 있습니다.

NGINX Plus API는 이제 모니터링 및 문제 해결을 지원하기 위해 OpenID Connect 로그인 관련 활동을 추적합니다. OpenID Connect 참조 구현에 대한 자세한 내용은 GitHub 리포지토리를 참조하세요.

요청 속도 및 연결 제한을 위한 실시간 대시보드 차트

DDoS 공격과 무차별 대입 방식의 비밀번호 추측 공격은 애플리케이션에 심각한 위협이 됩니다. 속도 제한을 적용하여, 즉 NGINX Plus가 일정 시간 동안 각 클라이언트가 보낼 수 있는 요청 수를 제한하도록 하여 이러한 공격의 영향을 완화할 수 있습니다.

NGINX Plus R20에서는 요청 속도 및 연결 제한을 NGINX Plus API의 /api/version/http/limit_reqs 및 /api/version/http/limit_conns 엔드포인트에서 실시간으로 모니터링하는 기능이 추가되었습니다. 이제 이 정보는 NGINX Plus 실시간 활동 모니터링 대시보드에 표시되며, 누적 횟수는 표 형식으로, 타임스탬프가 포함된 횟수는 차트 형식으로 제공됩니다:

  • 요청 속도 제한 메트릭은 Limit Req 테이블의 HTTP Zones 탭에 표시됩니다.
  • 연결 제한 메트릭은 Limit Conn 테이블의 TCP/UDP Zones 탭에 표시됩니다.

이 표에는 limit_req_zone 및 limit_conn_zone 지시문으로 정의된 각 영역에 해당하는 행이 포함됩니다. 차트를 표시하려면 행의 왼쪽 끝에 있는 차트 아이콘을 클릭합니다.

확장된 차트는 지속적으로 업데이트되며 각 시간 간격의 값을 누적 영역 그래프로 표시합니다. 다음과 같은 방법으로 표시되는 정보를 사용자 지정할 수 있습니다:

  • 표시할 시간 범위를 선택합니다: 1분, 5분 또는 15분
  • 차트 위에 마우스 포인터를 올리면 특정 시점의 정확한 개수가 표시됩니다.
  • 범례 영역에서 통계 유형 위에 마우스를 올리면 차트에서 해당 통계가 강조 표시됩니다.
  • 범례 영역에서 통계 유형을 클릭하여 표시 여부를 전환합니다
  • 차트를 좌우로 드래그하여 과거 데이터를 확인하세요

기본 대시보드 업데이트 간격인 1초를 기준으로 각 차트에는 약 30분 분량의 과거 데이터가 저장됩니다. 대시보드 업데이트 간격을 늘리면(업데이트 빈도를 낮추면) 사용할 수 있는 과거 데이터의 양이 늘어납니다. 대시보드 차트는 영구적으로 저장되지 않으므로 다른 페이지로 이동하거나 탭을 새로 고치면 과거 데이터가 손실됩니다.

NGINX JavaScript 모듈 개선 사항

The NGINX JavaScript 모듈은 트래픽을 더욱 세밀하게 제어하고, 여러 애플리케이션의 JavaScript 함수를 통합하며, 보안 위협을 방어하는 등 다양한 사용 사례를 지원하도록 NGINX Plus의 기능을 확장합니다. NGINX JavaScript 모듈은 0.4.1 버전으로 업데이트되었으며 다음 기능이 포함됩니다:

다음 코드와 구성은 새로운 r.rawHeadersIn 객체를 사용하여 오류가 발생할 때마다 클라이언트가 전송한 정확한 헤더 집합을 기록하는 방법을 보여 줍니다. [편집자 주 – 이는 NGINX JavaScript 모듈의 다양한 사용 사례 중 하나일 뿐입니다. 전체 목록은 NGINX JavaScript 모듈 사용 사례를 참조하세요.]

코드 예제를 로드하는 중…

코드 예제를 로드하는 중…

다음은 404 응답에 대한 로그 항목 예시입니다:

$ curl http://localhost/bogus
$ tail --lines=1 /var/log/nginx/access_json.log
{"response":{"timestamp":"YYYY-MM-DDThh:mm:ss+TZ_offset","status":404},"request":{"client":"127.0.0.1","uri":"/bogus","headers":[["Host","localhost:80"],["User-Agent","curl/7.64.1"],["Accept","*/*"]]}}

인증 실패 시 지연

비밀번호 무차별 대입 공격 및 크리덴셜 스터핑과 같은 타이밍 공격을 완화하기 위해 인증에 실패했을 때 NGINX Plus가 응답을 지연하도록 설정할 수 있습니다. 새로운 auth_delay 지시문은 지연 시간을 지정하며, 이 지시문은 Auth Basic, Auth JWT, Auth Request 모듈에서 처리하는 인증 요청에 적용할 수 있습니다.

NGINX Plus 업그레이드 또는 체험

NGINX Plus를 사용 중이라면 가능한 한 빨리 NGINX Plus R22로 업그레이드하시기를 적극 권장합니다. 업그레이드하면 여러 추가 수정 사항과 개선 사항도 적용되며, 지원 티켓을 제출해야 할 때 NGINX가 더 원활하게 지원하는 데 도움이 됩니다.

아직 NGINX Plus를 사용해 보지 않으셨다면 보안, 로드 밸런싱, API 게이트웨이 용도로, 또는 향상된 모니터링 및 관리 API와 완전한 기술 지원을 제공하는 웹 서버로 직접 사용해 보시기 바랍니다. 지금 바로 30일 무료 평가판으로 시작해 보세요. NGINX Plus가 애플리케이션을 제공하고 확장하는 데 어떻게 도움이 되는지 직접 확인해 보세요.


공유

작성자 소개

관련 블로그 게시물

시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric
NGINX | 2023. 11. 30.

시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric

이 영상에서는 KubeCon의 NGINX 부스를 찾아가, 저희가 공개한 Kubernetes Gateway API 구현을 살펴봅니다.

F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법
NGINX | 2023. 03. 23.

F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법

앱 보안을 강화하는 두 가지 방법을 소개합니다. NGINX Management Suite를 통해 WAF 운영에 대한 가시성을 높이고, NGINX App Protect WAF를 활용해 코드형 보안을 구현하는 것입니다.

Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션
NGINX | 2021. 09. 27.

Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션

개발 주체, 개발 철학, 프로덕션 환경 준비도, 보안 및 지원을 기준으로 어떤 NGINX Ingress 컨트롤러가 가장 적합한지 알아보세요.

진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법
NGINX | 2021. 07. 06.

진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법

NGINX App Protect Denial of Service(DoS)가 계층 7 DoS 공격을 방어하기 위해 완화 방법을 실시간으로 조정하는 방식을 설명합니다. 정상적인 사용자 행동과 서버 상태에 대한 모델을 생성하여 공격을 나타내는 이상 징후를 감지하고 맞춤형 완화 시그니처를 적용할 수 있습니다.

NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리
NGINX | 2021. 06. 30.

NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리

NGINX Instance Manager 버전 1.0에는 두 가지 새로운 기능이 도입되었습니다. NGINX 인스턴스에 태그와 사용자 역할을 지정하면 전체 그룹에 구성을 한 번에 적용할 수 있습니다. 인증서 검사는 만료 예정인 인증서를 감지하여 서비스 중단을 방지할 수 있도록 인증서를 교체할 수 있게 해줍니다.

Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유
NGINX | 2015. 03. 25.

Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유

Netflix가 글로벌 콘텐츠 전송 네트워크인 Open Connect의 스트리밍 미디어 기술로 NGINX를 선택한 이유를 NGINX 개발자 Gleb Smirnoff에게서 알아보세요.