이 글에서는 멀티팩터 인증이 무엇인지, 왜 멀티팩터 인증을 사용해야 하는지, Couchbase Server로 쉽게 구현하는 방법을 설명합니다. 비용, 편의성, 보안 사이에서 절충점을 제공하는 소프트웨어와 하드웨어 구현을 모두 사용하는 방법을 살펴볼 것입니다.
무엇
다단계 인증 ?
Couchbase 클러스터의 인증은 사용자 비밀번호, 역할 기반 액세스 제어(RBAC), 선택적으로 x.509 인증서를 조합하여 보안을 유지합니다. 비밀번호는 오랫동안 사용되어 왔으며 그 목적을 잘 수행해 왔지만, 비밀번호만 사용하면 다양한 해킹 기술에 노출될 수 있습니다. 다행히도 MFA(다단계 인증)라고 알려진 보안 수준을 높이기 위해 추가 사용자 정보로 비밀번호를 보강할 수 있다는 점이 다행입니다. 이를 2단계 인증(2FA)이라고도 하지만 2단계 인증은 실제로는 두 가지 요소뿐만 아니라 다양한 형태를 결합할 수 있는 MFA의 광범위한 기능의 하위 집합일 뿐입니다.
다단계 인증의 기본은 사용자가 제시한 두 가지 이상의 클레임을 각각 다른 범주의 요소로 검증하여 사용자를 인증하는 것입니다. 수년 동안 사용해 왔지만 미처 깨닫지 못했던 현금 자동 입출금기(ATM)를 사용하여 돈을 인출하는 경우를 예로 들어 보겠습니다.
은행에서는 스마트 칩이 장착된 은행 카드를 기계에 삽입하고 핀 코드를 입력하도록 요구할 것입니다. 얼굴 인식에 사용될 수 있는 비디오에 녹화되며 하루에 인출할 수 있는 금액이 제한됩니다. 또한 은행은 사기 탐지 알고리즘을 사용하여 마지막 거래가 기록된 장소와 물리적으로 다른 곳에 있는 경우, 그 사이에 해당 거리를 이동하는 것이 비현실적인 경우 거래를 차단합니다. 평소 거주지가 아닌 매우 의심스러운 지역에서 거래가 이루어진 경우 은행에서 확인 전화를 받을 수도 있습니다. 사용 가능한 다양한 인증 요소를 살펴보겠습니다.
알고 있는 정보 (지식 요소) |
|
가지고 있는 것 (소유 요소) |
|
당신이라는 존재 (내재적 요인) |
|
당신이 있는 곳 (위치 요인) |
|
행동할 때 (시간 요인) |
|
MFA가 중요한 이유는 무엇인가요?
다단계 인증(MFA)은 기밀 정보에 액세스하여 영업 비밀 도용, 서비스 중단, 매출 손실, 고객과의 신뢰 위반으로 인한 규제 벌금 및 처벌을 초래할 수 있는 기밀 정보를 보호하는 데 중요합니다.
이러한 높은 수준의 보안은 결제 카드 업계, PCI-DSS 및 미국 정부 방위 계약업체에서 CUI(통제된 기밀 정보)를 보호하는 데 사용되는 NIST 800-171 등 여러 공인 보안 표준에 요구됩니다. MFA는 실제로 계정 보안에 있어 비밀번호의 강도보다 더 중요합니다. Microsoft 연구원 에 따르면 MFA를 사용하는 경우 계정이 유출될 확률은 비밀번호만 사용하는 경우보다 0.01%에 불과하다고 합니다!
MFA는 어떻게 추가 보안을 제공하나요?
다단계 인증(MFA)은 해커가 계정에 침입하려고 시도할 때 몇 가지 추가적인 장애물을 만듭니다. 해커는 사용자가 높은 가치의 표적이 아니라면 차단 장치를 만드는 것만으로도 다음 계정으로 이동하게 됩니다. 때로는 조직에서 위험과 편의성의 균형을 고려하여 위험도가 높은 활동에 대해서만 MFA를 요구하기도 합니다. 예를 들어 은행에서는 고객이 사용자 이름과 비밀번호를 사용하여 온라인 뱅킹 앱에 로그인할 수 있도록 허용하지만 고객이 돈을 이체할 때마다 지문과 같은 생체 인증을 사용하여 추가로 인증하도록 요구할 수 있습니다. 몇 가지 일반적인 공격과 MFA가 이를 방지하는 방법을 살펴보겠습니다.
- 자격 증명 스터핑 - 해커가 사용하는 가장 일반적인 온라인 공격은 이전 공격에서 유출된 사용자 아이디와 비밀번호를 재사용하는 것으로, 범죄자들이 온라인에서 쉽게 거래하고 있습니다. 해커가 찾는 것은 여러 시스템에서 동일한 사용자 이름/비밀번호 조합을 사용했는지 확인하는 것입니다. 다른 요소는 일반적으로 고정되어 있지 않고 유출된 비밀번호만으로는 계정에 액세스할 수 없으므로 MFA 시스템은 이를 방지합니다.
- 비밀번호 유출 - Couchbase 관리자 콘솔에 로그인하여 비밀번호를 입력한 다음 Return 키를 누르려고 한다고 상상해 보세요. 그러고 나서야 실수로 슬랙 창에 비밀번호를 입력해 여러 사람이 있는 공용 공간에 비밀번호를 제공했다는 사실을 깨닫게 됩니다. MFA를 사용하면 비밀번호만으로는 계정이 손상되지 않으므로 여전히 안전합니다.
- 멀웨어 / 키 입력 로깅 - 시스템에 악성 소프트웨어를 로드하는 데 성공한 공격자는 사용자의 키 프레스를 모니터링하고 비밀번호를 훔칠 수 있지만, 보통 휴대폰과 같은 별도의 장치에 있는 MFA가 없어야 합니다. 이 코드는 항상 변경되므로 도난당한 자격 증명을 사용할 수 없습니다.
- 무차별 대입 - 공격자는 사용자 아이디와 비밀번호의 모든 조합을 체계적으로 시도하며, 일반적으로 일반적으로 사용되는 비밀번호 사전을 첫 번째 패스로 사용합니다. MFA가 제공할 수 있는 동적으로 변경되는 시간 제한 패스 코드를 사용하면 비밀번호와 동적 MFA 코드를 모두 정확하게 추측할 수 있는 시간이 매우 짧기 때문에 이 공격은 기하급수적으로 어려워집니다. 또한 침입 탐지 시스템(IDS)은 이러한 비정상적인 동작을 탐지하여 이러한 유형의 공격을 방지할 수 있습니다.
MFA는 언제 사용해야 하나요?
해커는 피해자를 공격하기 위해 손에 넣을 수 있는 모든 정보를 사용합니다. 해커는 이러한 정보를 위험하다고 생각하지 못했던 새로운 방식으로 사용하는 방법을 알아내는 경우가 많습니다.
보안을 유지하는 가장 쉬운 방법은 MFA가 옵션으로 제공될 때 항상 사용하는 것입니다. 이렇게 하면 특정 플랫폼에 더 높은 수준의 보안이 필요하지 않다고 생각하더라도 보안 위생을 강화하고 사용자를 보호할 수 있습니다.
카우치베이스 서버로 다양한 유형의 멀티팩터 인증 구현하기
일반적인 MFA 방식은 여러 가지 형태로 제공되며, 각 방식은 다양한 수준의 보안을 제공합니다. 보안 수준이 가장 낮은 것부터 가장 높은 것까지 각 방법을 살펴보겠습니다. 그리고 Couchbase Server로 가장 강력한 인증 보안을 구현하는 방법을 살펴보겠습니다.
존경받는 보안 연구원인 트로이 헌트는 이 명령을 다음과 같이 부릅니다. 인증 계층 구조.
비밀번호 | Meh |
비밀번호 + SMS | Okay |
비밀번호 + 소프트웨어 토큰 | 더 나은 |
비밀번호 + 하드웨어 토큰 | Great |
비밀번호 + U2F(범용 2단계 인증) | Uber |
비밀번호
비밀번호 인증은 가장 기본적인 인증 형태이며 단독으로 사용하는 경우 단일 요소 인증이라고 합니다. 비밀번호는 Couchbase Server에서 생성하는 모든 사용자에게 필요하며, 비밀번호는 다음과 같을 수 있습니다. 특정 비밀번호 정책으로 구성. MFA를 사용 중이더라도 강력한 비밀번호를 사용하는 것은 필수입니다.
이 비밀번호는 일반적으로 정적이므로 비밀번호를 잊어버리거나 도난당하면 누군가 내 계정에 로그인하여 내 데이터를 도용할 위험이 있습니다. 다음과 같은 도구를 활용할 수 있습니다. 해시코프 볼트 카우치베이스 통합 를 클릭해 임시 계정과 비밀번호를 생성하면 수명이 짧고 자동으로 삭제됩니다, 실수로 노출될 위험이 적습니다. 사용자 인증에 x.509 인증서를 사용하면 비밀번호보다 더 안전하지만 UI에 로그인하는 데는 사용할 수 없습니다.
비밀번호 + SMS
가장 낮은 수준의 MFA 보안은 로그인 비밀번호와 SMS를 통해 모바일 장치에 도착하는 고유한 일회용 비밀번호(OTP)를 결합하는 것입니다. 안타깝게도 SMS 기반 보안을 사용하는 데는 몇 가지 잘 알려진 보안 허점이 있습니다. 언론에서 자주 언급되는 가장 잘 알려진 위험 중 하나는 SIM 스왑 사기로 알려진 것입니다. 이는 공격자가 보통 사회 공학 기술을 통해 이동 통신사를 설득하여 휴대폰 번호를 자신들이 통제하는 새 심 카드로 변경하도록 유도하는 것입니다. 그런 다음 공격자는 MFA 일회용 비밀번호를 포함하여 향후 자신의 장치로 전송되는 모든 SMS를 수신합니다. 최근 조직화된 범죄 조직, 당국에 의해 해체이 사기를 사용하여 피해자들로부터 1억 4천만 달러 이상을 훔칠 수 있었습니다. 휴대폰 통신을 도청하는 다른 방법도 있습니다. IMSI 캐처 그리고 SS7 프로토콜 보안 취약점.
SMS를 사용할 때 가장 큰 위험은 비밀번호 분실 시 계정 복구를 위한 단일 수단으로 SMS를 사용하는 경우인데, 이 경우 SMS는 안타깝게도 보안이 강력하지 않은 단일 요소가 됩니다.
비밀번호 + SMS MFA는 비밀번호만 사용하는 것보다 더 안전하지만 일반적으로 피해야 하므로 이 방법의 구현은 생략하겠습니다.
비밀번호 + 소프트웨어 토큰
소프트웨어 토큰 MFA를 사용하는 것이 대부분의 MFA 배포에서 시작점으로 삼아야 합니다. 이는 비밀번호("사용자가 알고 있는 것")와 소프트웨어 토큰("사용자가 가지고 있는 것")을 조합하는 것입니다. 필요한 유일한 전제 조건은 각 사용자에게 스마트폰과 다음과 같은 무료 앱이 있어야 한다는 것입니다. Google 인증자 또는 Authy 를 클릭해 임시 비밀번호를 생성합니다. 사용자는 일반적으로 계정을 설정할 때 일회성 활동으로 휴대폰 애플리케이션에 QR 코드를 스캔합니다. 그러면 휴대폰 애플리케이션은 시간 기반이며 30초와 같이 짧은 기간 동안만 유효한 새 코드를 지속적으로 생성합니다. 이 MFA는 시간 기반 일회용 비밀번호 또는 TOTP이며 카우치베이스 클라우드 를 계정 보안에 사용합니다. 또는 시간을 기준으로 하지 않는 일부 솔루션은 다음을 사용합니다. 증가 카운터와 HMAC 기반 일회용 비밀번호 (HOTP) 대신 사용할 수 있습니다.
외부 인증을 사용하여 Couchbase Server에서 TOTP를 쉽게 설정할 수 있습니다. 외부 인증을 사용하면 인증 시스템을 한 번만 설정하면 여러 Couchbase 클러스터에서 재사용할 수 있습니다. 우리는 LDAP 를 클릭해 사용자가 비밀번호를 입력하는 것 외에 TOTP MFA를 의무적으로 사용하도록 설정하세요. 시작하기 전에 먼저 스마트폰에 원하는 TOTP MFA 모바일 애플리케이션을 설치하세요. 다시 한 번 말씀드리지만, 구글 오센티케이터와 Authy가 좋은 선택입니다.
간단한 Go-lang LDAP 인증 서버를 사용하여 쉬운 예를 들어보겠습니다(GLAuth).
다음을 사용할 것입니다. 카우치베이스 서버 7.0 베타 를 사용해야 하지만, 여기에 표시된 방법은 모든 Enterprise Edition 6.5 이상에서 작동합니다. 첫 번째 단계는 GLAuth에서 사전 빌드된 패키지를 다운로드하는 것입니다. GitHub 릴리스 페이지는 Windows, Linux 및 MacOS에서 x86 및 ARM 플랫폼 모두에서 사용할 수 있습니다. 여기서는 Mac OS 버전을 사용하지만 예제 명령어에서 플랫폼에 맞는 바이너리 이름을 조정할 수 있습니다. 샘플도 다운로드하세요. 구성 파일.
샘플 LDAP 구성에는 otpuser라는 TOTP로 구성되고 암호가 다음과 같은 사용자가 포함되어 있습니다. mysecret. 이 사용자 이름과 비밀번호를 사용하되, 샘플 구성 파일을 수정하여 다른 비밀 번호는 자체적으로 새로운 비밀 번호로 변경하겠습니다.
먼저 MacOS 또는 Linux 셸에서 임의의 문자열을 생성했지만 32자 base32 문자열을 생성하는 도구는 무엇이든 사용할 수 있습니다. 이 문자열은 otpsecret.
$ LC_ALL=C tr -dc 'A-Z2-7' </dev/urandom | head -c 32; echo
RHRHQ7AC2X4UYZ2WQQ4LHZUCGDQXXQTG
이제 16자 임의 문자열을 두 개 더 생성하여 사용자가 모바일 기기를 분실하거나 프로그래밍 방식으로 Couchbase Server에 연결하여 MFA를 우회해야 하는 경우를 대비하여 로그인할 때 백업 코드로 사용합니다.
각 백업 코드에 대해서도 SHA-256 해시,
1 2 3 4 5 |
$ echo -n "wbmvom6f4yaqpdbv" | openssl dgst -sha256 33e34cbeebce316c6539cd473fb22ea9a69a43059ff18bd801842af1d6c2ea0e $ echo -n "35VD4NGLB3FD6NK5" | openssl dgst -sha256 38fd1f0065973fdebae168897e7b587e01b8ec3c996bb808b9af89acb1001760 |
ldap 구성 파일을 수정하여 다음과 같이 변경합니다. otpsecret 줄을 추가하고 구성에 passappsha256으로 시작하는 새 줄에 이러한 SHA256 백업 코드를 포함시킵니다.
1 2 3 4 5 6 7 8 9 10 11 |
[[사용자]] 이름 = "otpuser" unixid = 5004 primarygroup = 5501 passsha256 = "652c7dc687d98c9889304ed2e408c74b611e86a40caa51c4b43f1dd5913c5cd0" # 내 비밀 otpsecret = "RHRHQ7AC2X4UYZ2WQQ4LHZUCGDQXXQTG" passappsha256 = [ "33e34cbeebce316c6539cd473fb22ea9a69a43059ff18bd801842af1d6c2ea0e", # WBMVOM6F4YAQPDBV "38fd1f0065973fdebae168897e7b587e01b8ec3c996bb808b9af89acb1001760", # 35VD4NGLB3FD6NK5 ] 유비키 = "vvjrcfalhlaa" |
이러한 백업 비밀번호는 안전한 장소에 보관해야 하며, 가급적 오프라인에 보관하는 것이 좋습니다. 그리고 데모 목적으로 여기에 표시한 것처럼 구성 파일에 비밀번호를 노출하는 일반 텍스트 주석을 두는 것은 원하지 않을 것입니다.
이 데모에서는 TLS/SSL을 비활성화할 것이지만 프로덕션 환경에서는 활성화하는 것이 좋습니다!
ldaps] 섹션을 변경하여 활성화됨을 거짓으로 변경합니다,
1 2 |
[ldaps] 활성화 = false |
다음으로 휴대폰 애플리케이션용 QR 코드를 생성합니다,
방문 https://freeotp.github.io/qrcode.html
에서 유형을 변경합니다. 카운터 에 시간 초과
계정 이름을 Couchbase 클러스터 otpuser라고 부르겠습니다.
그리고 생성된 otpsecret 문자열을 비밀로 지정합니다.
이제 휴대폰 앱으로 이 QR 코드를 스캔했더니 임시 비밀번호가 생성되기 시작했습니다.
그런 다음 구성 파일을 사용하여 LDAP 서버를 시작합니다.
1 |
./glauthOSX -c 샘플-simple.cfg |
이제 UI의 보안 설정에서 LDAP 서버에 연결하도록 Couchbase 클러스터를 구성하겠습니다.
LDAP 호스트는 LDAP 서버가 실행되고 있는 호스트 이름 또는 IP이며 포트는 3893입니다.
자격 증명을 사용하여 LDAP 서버에 연결하도록 클러스터를 구성합니다.
바인딩 DN = cn=serviceuser,ou=svcaccts,dc=glauth,dc=com
비밀번호 = 내 비밀
'네트워크 설정 확인'을 클릭하여 LDAP 서버에 대한 연결을 테스트합니다.
이제 LDAP 사용자 인증을 사용하도록 설정하고 제 오티퍼 계정을 테스트하겠습니다.
템플릿은 cn=%u,ou=superheros,dc=glauth,dc=com입니다.
테스트할 사용자 이름은 otpuser입니다.
비밀번호는 다음과 같습니다. mysecretXXXXXX, 여기서 XXXXXX는 모바일 앱의 6자리 OTP입니다.
테스트할 때 정상적으로 작동하고 긍정적인 결과를 반환하면 LDAP 구성을 저장하세요. 자세한 정보가 필요한 경우 다음 문서를 검토하세요. 카우치베이스 서버로 LDAP 구성하기. 이제 사용자 otpuser를 Couchbase 클러스터에 외부 사용자로 추가하고 해당 사용자에게 몇 가지 RBAC 자격 증명을 제공할 수 있습니다.
축하합니다, 이 사용자로 로그인할 때 'mysecret' 비밀번호를 입력합니다. 또는 사용자 이름 otpuser와 백업 패스 코드 중 하나(예: WBMVOM6F4YAQPDBV)로 로그인하면 MFA 요구 사항을 우회할 수 있습니다.
단계를 반복하여 Couchbase 클러스터에 여러 사용자를 더 추가할 수 있습니다.
비밀번호 + 하드웨어 토큰
다음 단계의 보안 강화는 모바일 앱 소프트웨어 토큰 대신 하드웨어 토큰을 사용하는 것입니다.
이 기술은 일반적으로 오프라인 상태이므로 소프트웨어 토큰보다 더 안전하며 해커가 획득하기가 훨씬 더 어렵습니다. 다른 보안상의 이점은 임시 비밀번호 길이가 더 길고 소프트웨어 토큰의 보안을 약화시킬 수 있는 일부 잘못된 구성을 방지하는 데 도움이 된다는 점입니다. 또한 하드웨어 토큰 디바이스는 직접 액세스할 수 있는 인터페이스 없이 하드웨어 내부에 기본 암호화 비밀을 보관하기 때문에 실수로 이 정보를 유출하기가 매우 어렵습니다. 단점은 각 사용자가 패스 코드를 생성하기 위해 물리적 토큰을 획득해야 한다는 것입니다.
이러한 하드웨어 토큰은 몇 가지 형태로 제공됩니다.
첫 번째 사진은 작은 LCD 화면이 있고 내부 배터리가 필요한 디바이스를 보여줍니다. 사용자는 화면에 표시되는 짧은 비밀번호를 애플리케이션에 입력해야 합니다. 화면의 비밀번호 코드는 앞서 설명한 소프트웨어 기반 토큰과 마찬가지로 계속 변경됩니다. 이 유형의 디바이스의 가장 일반적인 버전은 RSA SecureID 토큰.
두 번째 사진은 USB, 블루투스 또는 NFC를 통해 호스트 컴퓨터나 휴대폰에 연결되는 최신 스타일의 하드웨어 토큰을 보여줍니다. 이러한 장치는 키보드처럼 작동하며 물리적으로 존재하고 버튼을 누르면 일회용 비밀번호를 직접 전송하지만 내부 배터리가 필요하지 않은 경우가 많습니다. OTP는 일반적으로 무작위 문자로 이루어진 긴 문자열이므로 매우 안전합니다. 이러한 유형의 하드웨어 토큰의 가장 일반적인 버전은 유비케이 유비코의
Yubikey 5 NFC를 하드웨어 토큰 OTP MFA로 사용하는 방법을 살펴봅시다. 2021년 2월 현재 미국에서는 $45, EU에서는 45유로, 영국에서는 45파운드 정도이지만 동일한 토큰을 다양한 애플리케이션에 안전하게 사용할 수 있습니다.
이전 소프트웨어 토큰 MFA 설정을 시작점으로 삼아 동일한 LDAP 시스템을 재사용하고 추가 구성을 추가하겠습니다. 다시 말하지만, 여기에 표시된 기술은 Couchbase Server 버전 6.5.0 이상에서 작동합니다.
첫 번째 단계는 다음 주소로 이동하는 것입니다. https://upgrade.yubico.com/getapikey/ 를 클릭해 유비코 웹 서비스에서 사용할 공유 대칭 키를 생성합니다. 그러면 클라이언트 ID와 비밀 키가 생성되어 LDAP 서버에 제공됩니다. 웹 양식은 이메일 주소와 OTP를 요청합니다. 저는 USB에 유비키를 삽입하고 웹 양식의 OTP 필드에 초점이 맞춰진 상태에서 버튼을 누르면 장치가 키보드처럼 작동하여 비밀번호를 입력할 수 있도록 했습니다. 처음 생성되는 12자는 유비키의 고유 ID이며, 생성된 유비코와 함께 저장합니다. clientid 그리고 비밀 를 클릭합니다.
그런 다음 LDAP 구성 파일을 수정하여 "yubikeyclientid" 및 "yubikeysecret"로 시작하는 줄의 주석 처리를 해제하고 값을 다음과 같이 변경합니다. clientdid 그리고 비밀 유비코 제공.
1 2 |
유비케이클리엔티드 = "12345" 유비케이시크릿 = "xxxxxxxxxxxxxxxxxxxx" |
그런 다음 LDAP 구성 파일에 있는 오티퍼의 구성에 고유한 유비키 ID를 추가합니다. 이 아이디는 유비키 버튼을 눌렀을 때 처음 생성되는 12자라는 점을 기억하세요.
1 2 3 4 5 6 7 8 9 10 11 |
[[사용자]] 이름 = "otpuser" unixid = 5004 primarygroup = 5501 passsha256 = "652c7dc687d98c9889304ed2e408c74b611e86a40caa51c4b43f1dd5913c5cd0" # 내 비밀 otpsecret = "RHRHQ7AC2X4UYZ2WQQ4LHZUCGDQXXQTG" passappsha256 = [ "33e34cbeebce316c6539cd473fb22ea9a69a43059ff18bd801842af1d6c2ea0e", # WBMVOM6F4YAQPDBV "38fd1f0065973fdebae168897e7b587e01b8ec3c996bb808b9af89acb1001760", # 35VD4NGLB3FD6NK5 ] 유비키 = "ccccxxxxxx" |
이제 LDAP 서버가 이미 실행 중이었다면 중지했다가 다시 시작하고, 그렇지 않다면 그냥 시작하세요.
1 |
./glauthOSX -c 샘플-simple.cfg |
이제 Couchbase 클러스터에 otpuser로 로그인할 수 있습니다. 비밀번호를 입력하기만 하면 됩니다."mysecret"를 입력한 다음 비밀번호 입력란이 활성화되어 있는 동안 USB 인터페이스에 삽입된 유비키의 버튼을 누릅니다. 유비키는 비밀번호 끝에 매우 길고 안전한 OTP를 추가합니다."mysecret". 로그인한 후에는 디바이스에서 유비키를 제거할 수 있습니다.
비밀번호 + U2F(범용 2단계 인증)
마지막으로 살펴볼 가장 안전한 MFA 방법은 U2F로 알려진 유니버설 2단계 인증입니다. U2F MFA 모델은 이전 예시에서 설명한 하드웨어 토큰의 모든 장점을 가지고 있지만, 한 가지 중요한 차이점은 공격자가 원래 웹사이트를 모방한 가짜 웹사이트를 만들어 사용자를 속여 일회용 비밀번호를 제공하도록 하는 피싱으로부터 보호된다는 점입니다.
U2F는 피싱, 세션 하이재킹, 중간자 공격 및 멀웨어 공격에 대한 강력한 보호 기능을 제공하기 위해 Google과 유비코가 개방형 표준으로 만들었습니다. 이는 키의 물리적 버튼을 누르면 브라우저가 USB 또는 NFC 인터페이스를 통해 장치와 양방향 통신으로 직접 상호 작용하여 이를 달성합니다. 이 보안 통신은 공개 키 인증과 함께 비대칭 암호화를 사용합니다. 등록 시 U2F 장치에서 생성되는 키 쌍은 출처별로 다릅니다. 여기에는 프로토콜, 호스트 이름 및 포트의 조합이 키 쌍에 포함됩니다. 즉, 피싱 사이트가 사용자를 속이려고 시도할 때 동일한 출처가 아닌 경우 U2F 키가 불일치를 즉시 발견하여 시도를 차단합니다. U2F 표준은 이제 FIDO 얼라이언스에서 관리합니다.
카우치베이스 서버로 U2F MFA를 설정하는 방법을 살펴보겠습니다. 이전 예제에서 사용한 것과 동일한 Yubikey 5 NFC를 사용하여 설정할 수 있지만 이번에는 더 저렴한 옵션도 사용할 수 있음을 보여드리고자 합니다. 온라인에서 8파운드에 불과한 HyperFIDO PRO U2F 미니 USB 키를 구입했는데, 다음은 Key-ID의 유사한 장치 사진입니다.
또한 이번에는 다른 외부 인증 소스가 어떻게 작동하는지 보여주기 위해 LDAP를 사용하는 대신 사용자를 외부에서 인증하는 Linux PAM(플러그 가능한 인증 모듈) 방법을 사용하겠습니다. Couchbase Server 7.0 베타 및 Ubuntu 18에서 이 작업을 수행할 예정이지만 현재 지원되는 모든 버전의 Couchbase Server Enterprise Edition 및 지원되는 모든 Linux 배포판에서 동일한 단계가 작동합니다.
첫 번째 단계는 Couchbase 서버의 단계를 따르는 것입니다. PAM 인증 사용자 설정에 대한 문서.
etc/default/saslauthd가 START=yes인지 확인합니다.
그리고 옵션 문자열에 " -t 10"을 추가하여 10초 타임아웃을 추가하도록 /etc/default/saslauthd를 수정합니다. 예를 들어
1 |
옵션="-c -m /var/run/saslauthd -t 10" |
또한 /etc/pam.d/couchbase 파일이 다음과 같이 표시되는지 확인하세요.
1 2 3 |
@포함 공통-auth @포함 공통-비밀번호 1TP5인증 필요 pam_u2f.so 인증 파일=/etc/u2f_keys 큐 |
PAM 구성 단계를 수행한 후에는 운영 체제와 Couchbase Server 클러스터에 정의된 "linuxuser"라는 사용자가 있어야 합니다. PAM을 구성한 클러스터에서 동일한 호스트를 사용하여 사용자 이름과 비밀번호로 클러스터의 UI에 로그인할 수 있어야 합니다.
다음으로 U2F PAM 모듈을 설치합니다. ubuntu에서는 다음과 같이 쉽게 설치할 수 있습니다:
1 |
sudo apt-get 설치 libpam-u2f |
그런 다음 U2F 장치를 USB에 연결하지 않은 경우 연결합니다. 그리고 Couchbase Server를 실행하는 시스템이 OS 수준에서 이를 볼 수 있는지 확인합니다. 제 경우에는 Mac에서 실행 중인 Ubuntu Linux 가상 머신에서 Couchbase Server를 실행하고 있으므로 USB 장치를 가상 머신에 직접 연결할 수 있도록 가상화 소프트웨어를 구성해야 합니다.
실행 중 lsusb Linux OS에서 USB U2F 키를 볼 수 있습니다.
다음으로 일회성 U2F 등록 작업을 수행하고 팸 모듈이 사용할 출력을 저장해야 합니다. 이 작업은 리눅스 사용자를 특정 U2F 키와 특정 호스트 이름에 연결합니다.
sudo pamu2fcfg --username=linuxuser > /tmp/u2f_keys
dev/hidraw1의 PIN 입력: xxxxxxxx
버튼을 누를 때까지 U2F 장치에 표시등이 깜박입니다.그리고 실제로 제 장치에도 PIN 코드가 필요하므로 또 다른 MFA 요소입니다.
다음으로 파일 권한, 소유권 및 위치를 변경합니다.
1 2 3 |
$ chmod 600 /tmp/u2f_키 $ sudo chown root:root /tmp/u2f_키 $ sudo mv /tmp/u2f_keys /등/u2f_keys |
이제 /etc/pam.d/couchbase 파일의 마지막 줄인 s의 주석을 해제합니다.o 다음과 같이 표시됩니다.
1 2 3 |
@포함 공통-auth @포함 공통-비밀번호 auth 필수 pam_u2f.그래서 인증 파일=/등/u2f_keys cue |
그리고 saslauthd를 다시 시작합니다.
1 |
sudo 서비스 saslauthd 다시 시작 |
이제 Couchbase 클러스터 UI에서 리눅스 사용자 계정으로 클러스터에 로그인하면 U2F 장치의 버튼이 눌릴 때까지 기다립니다. 제 장치에는 활성화되어 대기 중임을 나타내는 표시등이 깜빡입니다. 이 버튼을 누르면 즉시 U2F 키가 교환 및 확인되고 인증이 완료되어 USB 장치를 제거할 수 있습니다.
보너스: 비밀번호가 필요 없는 인증!
비밀번호 없는 인증을 사용해보고 싶었다면 이제 쉽게 시도할 수 있습니다.
물론 U2F + 비밀번호를 사용하는 것보다 덜 안전하지만 민감한 데이터를 저장하지 않고 로컬로 실행하거나 방화벽을 통해 IP 주소만 연결할 수 있는 개발 Couchbase 클러스터에 유용합니다.
이전 예제에서 pam 구성 파일에서 처음 두 줄을 주석 처리하고 U2F 요구 사항만 남겨두면 다음과 같은 구성이 됩니다.
1 2 3 |
#@일반 인증 포함 #@일반 비밀번호 포함 auth 필수 pam_u2f.그래서 인증 파일=/등/u2f_keys cue |
다음 saslauthd를 다시 시작합니다.
1 |
sudo 서비스 saslauthd 다시 시작 |
이제 사용자 이름, 비밀번호 필드에 임의의 문자열(단 한 글자라도)을 입력하여 리눅스 사용자 계정으로 Couchbase Server UI에 로그인할 수 있습니다. 그런 다음 메시지가 표시되면 U2F 버튼을 누릅니다. 비밀번호 없는 인증!
결론
이 글에서는 다단계 인증이 무엇인지, 왜 다단계 인증을 사용해야 하는지, Couchbase Server로 다단계 인증을 구현하는 몇 가지 방법을 설명했습니다.
보안이 중요하다면 Couchbase 데이터를 보호하는 데 도움이 되는 다양한 기능에 대한 몇 가지 추가 블로그 게시물을 읽어보시기 바랍니다.
또한 일반적인 보안 주제를 파악할 수 있는 제가 즐겨 찾는 사이트 몇 가지를 공유해드리겠습니다,