RADIUS는 Remote Authentication Dial-In User Service의 약자이다. 대충 해석해보면 유저 서비스내 원격 다이얼 인증(?) 무슨 뜻일까..
RADIUS는 ISP(Internet Service Provider)에서 사용하는 H/W 또는 S/W 등에 의한 원격 접속에 대한 인증용 서버를 뜻한다고 한다. 이는 원격의 사설 접속자 또는 무선 랜을 통한 접속을 그룹웨어, 무선 AP등에 연결하기 전 사용자의 인증 및 인가를 하기 위한 서비스이다.
즉, 유선 또는 무선 네트워크 액세스를 위한 중앙 집중식 인증 및 권한 부여를 제공하는 네트워킹 프로토콜 시스템으로 주로 원격 사용자가 네트워크에 접속할 때 사용되며 RADIUS 서버는 사용자 인증을 처리하고 접근 권한을 부여하는 역할을 한다. (OIDC/SAML같은 인증 프로콜은 웹 기반이며 SSO가 주 목적임)
- Authentication(인증): 망,시스템 접근을 허용하기 전에 사용자의 신원을 검증합니다.
- Authorization(인가): 검증된 사용자에게 특정 수준의 권한과 서비스를 허용합니다.
- Accounting(계정관리): 사용자의 자원에 대한 사용 정보를 수집하여 이에 대해 감사 및 보고를 수행합니다. (로그파일, 세션정보, 데이터 전송량 등을 감사)
특히, 네트워크 장비(라우터, 스위치 등)에 대한 중앙 집중화된 인증 서비스를 제공하며 VPN 연결 및 다른 원격 접속을 할 떄 사용된다.
RADIUS는 사용자(User), RADIUS 클라이언트, RADIUS 서버(인증서버) 세 가지 역활로 구성된다.
RADIUS 클라이언트는 실제로 사용자 인증을 RADIUS 서버에 요청하는 서비스이다. 예를들면 Wi-fi 라우터, VPN 서버 등이 RADIUS 클라이언트이다.
RADISU 서버는 실제로 인증 작업을 처리하는 서버이다. 이 서버는 요청받은 인증정보가 valid한지 확인하고 인증을 처리하며, 성공시 RADIUS 클라이언트에 인증 승인 응답을 보낸다.
약간 이런 느낌인거 같은데, SSO 인증 프로세스와 유사해보인다.
RADIUS를 사용하는 가장 큰 이유는 중앙 집중식 인증 시스템을 통해 클라이언트의 네트워크 연결 요청 시 안전한 인증을 처리하기 위함이다.
예시로, 네트워크 상에서 AP, GroupWare 서버, NAS등과 같이 사용자의 인증을 필요로 하는 시스템이 여러개인데 각 장비마다 사용자 정보를 관리하고 동기화 시키는 것은 어려우며 비효율적이다. 따라서, 통합된 중앙 인증 서버를 두어 사용한다면 더 효율적일 것이다.
일반적으로 RADIUS 서버는 사용자 정보를 사용자 데이터베이스(ex: LDAP 등)에서 조회하거나 별도의 인증 시스템을 통해 인증을 진행한다. VPN, 네트워크 장비 접근또한 비슷한 흐름으로 진행된다.
그렇다면 사용자 정보를 저장하는 사용자 데이터베이스? LDAP? 이건 뭐지? 한 번 알아보자.~~
LDAP란 네트워크상에서 조직이나 개인, 파일, 디바이스 등을 찾아볼 수 있게 해주는 소프트웨어 프로토콜이다. LDAP의 등장 전 디렉토리 서비스 표준인 X.500의 DAP(Directory Access Protocol)가 존재했지만, OSI 계층 전체의 프로토콜을 지원하고 통신 간에 네트워크 자원을 많이 소비하는 등 운영 환경에 제약이 많았다.
LDAP는 OSI 계층 전체가 아닌 TCP/IP 위에서만 운영되며 DAP의 스펙을 최대한 유지하면서도 경량화해 네트워크의 부담을 줄이도록 설계되었다.
LDAP의 구성 요소는 4가지의 모델(Information, Naming, Functional, Security) 로 나누어 설명할 수 있다.
데이터의 형태와 데이터를 통해 디렉토리 구조로 정보를 저장하는 방식에 관한 것이다. LDAP 디렉토리에서 표현하는 정보 구조는 두 가지 요소로 이루어진다.
ex) 사용자 Entry(객체)는 이름, 이메일, 전화번호 같은 Attribute(속성)을 가진다.
dn: cn=John Doe, ou=Users, dc=example, dc=com
objectClass: inetOrgPerson
cn: John Doe
sn: Doe
mail: john.doe@example.com
telephoneNumber: 123-456-7890
LDAP의 디렉토리 구조는 Entry 데이터들을 트리 구조로 형성, 관리한다. 이러한 트리 형태의 구조를 DIT(Directory Information Tree)라고 한다.
추가적으로 LDAP 디렉토리에서 데이터를 구성하는데 중요한 개념인 ObjectClass와 Schema가 있다.
OjbectCalss: Entry에서 필요로 하거나 가질 수 있는 Attribute 타입을 정의한다. 또한, 다른 ObjectClass를 상속해 구현하며 개념을 확장할 수 있따. Java의 클래스와 비슷한 역활을 한다고 생각하면 된다.
Schema: ObjectClass와 Attribute에 정의하는 규칙이다. ObjectClass에 어떤 Attribute가 들어갈지, Attribute의 값에 대한 제약 및 조건 등 관련된 규칙들을 정의할 수 있다.
각 Entry를 어떻게 식별하고 구성하는지에 대한 설명을 한다. Entry는 여러 자식 Entry를 가지는 형태의 트리 구조로 나타나게 되는데, 각 Entry 계층에서는 해당 계층을 나타내는 고유한 주소 Attribute를 지니는데 이를 RDN(Relative Distinguished Name)이라고 부른다. (마치 인스턴스의 주소값)
dn: cn=John Doe, ou=Users, dc=example, dc=com
[디렉토리 구조]
dc=example, dc=com
├── ou=Users
│ ├── cn=John Doe
│ ├── cn=Jane Smith
├── ou=Admins
├── cn=Admin User
- dc=example, dc=com: 디렉터리 루트 도메인.
- ou=Users: "Users"라는 조직 단위(Organizational Unit).
- cn=John Doe: "John Doe"라는 사용자 Entry.
DN은 RDN들의 조합들로 구성되며, 해당 Entry의 위치를 나타내는 "전체 경로"라고 생각하면 된다.
LDAP 디렉토리에서 작업하는 명령을 다루는 모델이다. 8가지의 작업 명령이 있으며 기능에 따라 3가지로 구분한다.
· Search: 주어진 조건에 맞는 Entry 도출
· Compare: 특정 Entry의 Attribute 값 비교
· Add: 디렉토리에 신규 Entry 추가
· Delete: 디렉토리에 기존 Entry 삭제
· Modify: 디렉토리에 기존 Entry 수정 및 Entry DN값 변경
· Bind: 디렉토리 서버 연결 시 사용자 인증
· Unbind: 디렉토리 서버와의 연결 해제
· Abandon: 이전 요청 명령을 취소
LDAP 디렉토리에 접근하는 사용자 인증과 데이터 접근 권한을 통해 서비스를 보호하는 방식을 다루는 모델이다. SSL/TLS 인증 방식을 통해 서버-클라이언트 간의 연결을 구성할 수 있으며 데이터 전송시 Binary 암호화를 적용해 정보를 보호한다.
LDAP를 이용한 Resource Servce도 데이터를 저장하는 DB의 유형 중 하나이다. 다만 기본 RDB(MySQL, Oracle DB)와 비교했을 때 데이터 구조와 용도에서 많은 차이가 있다.
관계형 데이터베이스는 행과 열의 형태로 구성된 테이블에 데이터를 저장하고, 서로 다른 테이블들과의 관계를 통해 결과를 도출한다.
반면, LDAP는 데이터가 트리 구조로 이루어진 계층형 데이터베이스이다. 각 Entry는 Attribute로 이루어진 데이터들과 함께 하위에 여러 자식 Entry를 가지는 그룹 형태를 반복해 트리와 같은 계층형태의 데이터로 표현된다.
또한, 이러한 계층 구조는 검색과 읽기에서 관계형 데이터베이스보다 유리하다. 데이터가 위치한 계층에 접근해 필요한 데이터를 바로 꺼내올 수 있기 떄문이다.
다음과 같은 LDAP 디렉터리 구조에서 Base DN을 기반으로 검색 범위를 명확히 설정하여, Users 조직 단위 (on=Users)의 데이터만 조회할 수 있다.
dc=example, dc=com
├── ou=Users
│ ├── cn=John Doe
│ ├── cn=Jane Smith
├── ou=Admins
├── cn=Admin User
Base DN: ou=Users, dc=example, dc=com
Filter: (cn=John Doe)
LDAP는 Azure AD, AWS Directory Server 등과 같은 클라우드 기반의 서비스가 다양히 존재한다고 한다!
[참고문헌]
https://feccle.tistory.com/122
https://ldap.or.kr/radius%EC%99%80-ldap-1-radius-%EB%9E%80/
https://www.cloudradius.com/ldap-vs-radius-2/
https://www.samsungsds.com/kr/insights/ldap.html
https://nine01223.tistory.com/156