[Network] LDAP vs. Kerberos vs. RADIUS
네트워크 보안 작업을 수행하는 경우 LDAP, Kerberos, RADIUS 등 접근 제어를 위한 다양한 프로토콜을 접했을 수 있습니다. 사용 사례에 따라 접근 제어를 위해 이러한 프로토콜 중 하나 이상을 선택해야 할 수도 있습니다. 고려해야 할 몇 가지 요소로는 보안 수준, 네트워크 유형, 사용자 수, 다른 시스템과의 통합 및 관리 오버헤드 등이 있습니다. 모든 경우에 적용되는 일률적인 솔루션은 없으며 오히려 장점과 단점을 절충해야 합니다.
- LDAP: Lightweight Directory Access Protocol
LDAP는 사용자 계정, 그룹, 비밀번호, 권한 등 계층적 디렉터리에 저장된 데이터를 쿼리하고 수정하기 위한 프로토콜입니다. LDAP를 사용하면 다양한 애플리케이션과 시스템 전반에 걸쳐 사용자 인증 및 권한 부여를 중앙 집중화하고 표준화할 수 있습니다. LDAP는 유연하고 확장 가능하며 다양한 플랫폼 및 도구와 호환됩니다. 그러나 LDAP는 기본적으로 데이터를 암호화하지 않으므로 SSL이나 TLS와 같은 추가적인 보안 조치가 필요합니다. 또한 LDAP는 SSO(Single Sign-On) 메커니즘을 사용합니다. 즉, 사용자는 자격 증명을 한 번만 입력해야 하지만 자격 증명이 손상된 경우 여러 리소스에 대한 액세스 권한을 부여할 수 있습니다. - Kerberos
Kerberos는 네트워크에서 사용자와 서비스의 신원을 안전하게 확인하기 위한 프로토콜입니다. Kerberos는 사용자 ID, 서비스 ID 및 세션 키가 포함된 암호화된 토큰인 티켓을 사용합니다. 티켓은 인증 서버(AS)와 티켓 부여 서버(TGS)라는 두 가지 구성 요소로 구성된 키 배포 센터(KDC)라는 신뢰할 수 있는 제3자에 의해 발행됩니다. Kerberos는 강력한 보안, 상호 인증 및 SSO 기능을 제공합니다. 그러나 Kerberos는 복잡하고 시계의 동기화와 키가 필요하며 권한 위임이나 세분화된 액세스 제어를 지원하지 않습니다. - RADIUS: Remote Authentication Dial-In User Service
RADIUS는 전화 접속, VPN 또는 무선 연결을 통해 네트워크에 액세스하는 원격 사용자의 AAA(Authentication, Authorization, Accounting)를 관리하기 위한 프로토콜입니다. RADIUS는 클라이언트-서버 모델을 사용합니다. 여기서 클라이언트는 사용자를 네트워크에 연결하는 NAS(Network Access Server)이고, 서버는 사용자 자격 증명을 확인하고 정책과 매개 변수를 할당하는 RADIUS 서버입니다. RADIUS는 광범위하게 지원되고 구현이 쉬우며 많은 수의 사용자와 연결을 처리할 수 있습니다. 그러나 RADIUS는 전체 데이터 패킷을 암호화하지 않고 비밀번호만 암호화하므로 가로채기 및 위조/변조에 취약합니다. RADIUS는 SSO나 상호 인증도 제공하지 않습니다.
1. LDAP: Lightweight Directory Access Protocol
- LDAP 인증(authentication) 프로세스: 접근 통제
출처: https://techhub.hpe.com/eginfolib/networking/docs/switches/5130ei/5200-3946_security_cg/content/485047945.htm
- Telnet 사용자는 연결 요청을 시작하고 사용자 이름과 비밀번호를 LDAP 클라이언트에 보냅니다.
- 요청을 받은 후 LDAP 클라이언트는 LDAP 서버와 TCP 연결을 설정합니다.
- 검색 권한을 얻기 위해 LDAP 클라이언트는 관리자 DN(distinguished name)과 비밀번호를 사용하여 관리자 바인드 요청을 LDAP 서버에 보냅니다.
- LDAP 서버가 요청을 처리합니다. 바인딩 작업이 성공하면 LDAP 서버는 LDAP 클라이언트에 승인을 보냅니다.
- LDAP 클라이언트는 Telnet 사용자의 사용자 이름이 포함된 사용자 DN 검색 요청을 LDAP 서버로 보냅니다.
- 요청을 받은 LDAP 서버는 기본 DN, 검색 범위 및 필터링 조건을 기준으로 사용자 DN을 검색합니다. 일치하는 항목이 발견되면 LDAP 서버는 성공적인 검색을 LDAP 클라이언트에 알리는 응답을 보냅니다. 하나 이상의 사용자 DN이 발견되었을 수 있습니다.
- LDAP 클라이언트는 획득한 사용자 DN과 입력된 사용자 비밀번호를 매개변수로 사용하여 사용자 DN 바인드 요청을 LDAP 서버에 보냅니다. 서버는 사용자 비밀번호가 올바른지 확인합니다.
- LDAP 서버는 요청을 처리하고 바인딩 작업 결과를 LDAP 클라이언트에 알리기 위해 응답을 보냅니다. 바인딩 작업이 실패하면 LDAP 클라이언트는 획득한 다른 사용자 DN을 매개변수로 사용하여 사용자 DN 바인딩 요청을 LDAP 서버에 보냅니다. 이 프로세스는 DN이 성공적으로 바인딩되거나 모든 DN이 바인딩되지 않을 때까지 계속됩니다. 모든 사용자 DN 바인딩에 실패하면 LDAP 클라이언트는 사용자에게 로그인 실패를 알리고 사용자의 액세스 요청을 거부합니다.
- LDAP 클라이언트는 바인딩된 사용자 DN을 저장하고 인증 서버와 인증 패킷을 교환합니다.
- 인증이 성공하면 LDAP 클라이언트는 사용자에게 로그인 성공을 알립니다.
- LDAP 인가(authorization) 프로세스: 권한 관리
출처: https://techhub.hpe.com/eginfolib/networking/docs/switches/5130ei/5200-3946_security_cg/content/485047945.htm
- Telnet 사용자는 연결 요청을 시작하고 사용자 이름과 비밀번호를 장치로 보냅니다. 장치는 인증 중에 LDAP 클라이언트 역할을 합니다.
- 요청을 받은 후 장치는 사용자를 위해 인증 서버와 인증 패킷을 교환합니다.
- LDAP 인증을 사용하는 경우 위 인증 프로세스를 참조하세요.
– 장치(LDAP 클라이언트)가 인증 및 승인을 위해 동일한 LDAP 서버를 사용하는 경우 6단계로 건너뜁니다.
– 장치(LDAP 클라이언트)가 인증 및 승인을 위해 다른 LDAP 서버를 사용하는 경우 4단계로 건너뜁니다. - 다른 인증 방법을 사용하는 경우 해당 방법의 인증 프로세스가 적용됩니다. 장치는 LDAP 클라이언트 역할을 합니다. 3단계로 건너뜁니다.
- LDAP 인증을 사용하는 경우 위 인증 프로세스를 참조하세요.
- LDAP 클라이언트는 LDAP 인증 서버와 TCP 연결을 설정합니다.
- 검색 권한을 얻기 위해 LDAP 클라이언트는 관리자 DN과 비밀번호를 사용하여 관리자 바인드 요청을 LDAP 서버에 보냅니다.
- LDAP 서버가 요청을 처리합니다. 바인딩 작업이 성공하면 LDAP 서버는 LDAP 클라이언트에 승인을 보냅니다.
- LDAP 클라이언트는 Telnet 사용자의 사용자 이름과 함께 인증 검색 요청을 LDAP 서버로 보냅니다. 사용자가 인증 및 권한 부여에 동일한 LDAP 서버를 사용하는 경우 클라이언트는 Telnet 사용자의 저장된 사용자 DN과 함께 요청을 LDAP 서버로 보냅니다.
- 요청을 받은 LDAP 서버는 기본 DN, 검색 범위, 필터링 조건, LDAP 속성을 기준으로 사용자 정보를 검색합니다. 일치하는 항목이 발견되면 LDAP 서버는 성공적인 검색을 LDAP 클라이언트에 알리는 응답을 보냅니다.
- 인증이 성공하면 LDAP 클라이언트는 사용자에게 로그인 성공을 알립니다.
3. RADIUS: Remote Authentication Dial-In User Service

출처: https://techhub.hpe.com/eginfolib/networking/docs/switches/5130ei/5200-3946_security_cg/content/485047943.htm
- 호스트는 사용자의 사용자 이름과 비밀번호가 포함된 연결 요청을 RADIUS 클라이언트에 보냅니다.
- RADIUS 클라이언트는 RADIUS 서버에 인증 요청(액세스 요청)을 보냅니다. 요청에는 MD5 알고리즘과 공유 키로 처리된 사용자 비밀번호가 포함됩니다.
- RADIUS 서버는 사용자 이름과 비밀번호를 인증합니다. 인증이 성공하면 서버는 사용자의 인증 정보가 포함된 액세스 허용 패킷을 다시 보냅니다. 인증이 실패하면 서버는 액세스 거부 패킷을 반환합니다.
- RADIUS 클라이언트는 인증 결과에 따라 사용자를 허용하거나 거부합니다. 결과가 사용자에게 허용되면 RADIUS 클라이언트는 RADIUS 서버에 계정 시작 요청(Accounting-Request) 패킷을 보냅니다.
- RADIUS 서버는 승인(계정-응답) 패킷을 반환하고 계정을 시작합니다.
- 사용자가 네트워크 리소스에 액세스합니다.
- 호스트는 RADIUS 클라이언트에게 연결을 끊도록 요청합니다.
- RADIUS 클라이언트는 RADIUS 서버에 계정 중지 요청(Accounting-Request) 패킷을 보냅니다.
- RADIUS 서버는 승인(계정-응답)을 반환하고 사용자 계정을 중지합니다.
- RADIUS 클라이언트는 사용자에게 종료를 알립니다.