▶ BaroSolution/기술문서

서버 보안 강화를 위하여 RADIUS 연동한 2차인증 방안

누리아이티 2024. 4. 14. 06:44

1. PAM(Pluggable Authentication Module, 플러그인 가능한 인증 모듈)이란?

PAM은 Linux/Unix 시스템에서 중앙집중적인 인증 매커니즘을 지원하는 것이다. 게다가 시스템의 기본적인 인증 기법을 제공하여 이것을 사용하면 응용 프로그램 개발자 뿐만 아니라 시스템 관리자들이 인증을 유연성 있게 관리할 수 있도록 도와 준다.

전통적으로 시스템 자원에 대한 접근을 관리하는 프로그램들은 내장된 메커니즘에 의해 사용자 인증 과정을 수행한다. 이러한 방식은 오랫동안 이루어졌지만 이러한 접근 방식은 확장성이 부족하고 매우 복잡하다. 그렇기 때문인지 이러한 인증 매커니즘을 끌어내기 위한 수많은 해킹 시도가 있었다.

Solaris의 방식을 따라서 Unix/Linux 사용자들은 그들만의 PAM을 구현하는 방식을 찾았다.

PAM의 기본 원리는 응용 프로그램이 password 파일을 읽어 오는 대신 PAM이 직접 인증을 수행 하도록 하는 것이다. PAM은 시스템 관리자가 원하는 인증 매커니즘이 무엇이든 상관하지 않는다.

여러 사이트에서 선택 받은 인증 매커니즘은 아직도 password 파일이다. 왜 그럴까? 우리가 원하는 것을 해주기 때문이다. 대부분의 사용자는 password 파일이 필요한 것이 무엇인지 이미 알고 있다. 그리고 원하는 작업을 수행하는데 있어 이미 그 기능이 검증되었기 때문일 것이다.

PAM의 아키텍처 및 인증절차는 다음과 같다.



PAM은 Windows 환경의 DDL(Dynamic Link Library)과 같은 것이다. Library로 프로그램이 어떤 사용자에 대한 인증을 수행하려면 PAM Library이 있는 함수를 호출한다. PAM은 해당 함수의 Library를 제공하여 응용 프로그램이 특정 사용자를 인증하도록 요청할 수 있다.

PAM을 통해 /etc/passwd 파일이나 /etc/shadow 파일을 확인하거나 또는 보다 복잡한 확인 작업을 수행하기도 하는데, 예로는 LDAP 서버에 접속하는 것이다.

확인 작업을 마치고, 인증 여부를 결정하게 되면 "인증됨/인증되지 않음"의 메시지를 자신을 호출한 응용 프로그램에 전송한다.

간단한 확인 작업이라고 했는데, 그 과정이 많아 보일 수가 있다. 여기에 나오는 각 모듈은 크기가 작고 작업 수행 시간이 매우 빠르다. 이것은 매우 놀랍기도 하지만 PAM을 단연코 사용하게 된다.


2. RADIUS(Remote Authentication Dial In User Service, 원격 인증 전화 사용자 서비스 위치)란?

RADIUS(Remote Authentication Dial In User Service, 원격 인증 전화 사용자 서비스 위치)는 네트워킹 프로토콜로 사용자가 네트워크에 연결하고 네트워크 서비스를 받기 위한 중앙 집중화된 인증, 인가, 회계 (AAA, 회계 Accounting은 인증, 인가 후 각종 사후 처리를 맡는다.) 관리를 제공한다. RADIUS는 1991년 서버 접근 인증, 회계 프로토콜로써 Livingston Enterprises, Inc. 에서 개발했다. 그리고 후에 IETF표준으로 등재되었다.

지원 범위가 넓고 유비쿼터스 환경에서도 사용이 가능하기에 ISP와 기업들이 인터넷이나 인트라넷 접근을 관리하거나 무선 네트워크 인증, 통합 메일 서비스 등에 자주 쓰인다. 모뎀, 무선 액세스 포인트, 디지털 가입자 회선, 가상 사설망, TCP 및 UDP 포트, 웹 서버 등에 사용된다.

RADIUS는 응용 계층에서 작동하는 클라이언트 및 서버 프로토콜이며 사용자 데이터그램 프로토콜을 통해서 전송된다. 원격 접속 서버, 가상 사설망, 네트워크 스위치의 포트 인증, 네트워크 엑세스 서버(NAS) 이들 모두는 RADIUS서버와 통신하는 컴포넌트를 가진다. RADIUS는 종종 IEEE 802.1X 인증의 기반이 되기도 한다.

RADIUS 서버는 리눅스/유닉스 시스템이나 윈도우 서버에서 자주 백그라운드 프로세스로 실행된다.

RADIUS 인증 과정인 프로세스 흐름은 비교적 간단하지만 이해하는 것이 중요하다.

▶어플리케이션 클라이언트는 어플리케이션 서버에 연결을 시도하고 일회용 인증키와 함께 자격 증명(로그인-ID와 비밀번호)을 제공한다.
▶어플리케이션 서버가 이 정보를 수신하고 로컬 카탈로그에서 사용자를 찾고 인증 유형이 PAM인지 확인한다.
▶그런 다음 외부 사용자를 인증할 위치를 결정한다.
▶RADIUS 연결 정보를 사용하여 어플리케이션 서버는 자격 증명 세부 정보를 RADIUS 서버로 전달한다.
▶RADIUS 서버는 먼저 PAM, HTTP, SQL, Active Directory, LDAP 서비스 등이 될 수 있는 PAM를 사용하여 로그인-ID / 비밀번호로 "기본 인증(Primary Authentication)"을 한다.
▶유효성이 확인되면 RADIUS 서버는 2차 인증 서비스인 BaroPAM 모듈로 일회용 인증키로 "2차 인증(Secondary Authentication)"을 한다.
▶유효성이 확인된 경우 RADIUS 서버는 "Access-Accept" 응답을 어플리케이션 서버로 다시 전달한 다음 연결을 수락하고 완료한다.


3. RADIUS 연동 구조



시스템적으로 PAM과 RADIUS 연동하는 구조의 특장점은 다음과 같다.

▶정보자산의 계정(아이디/비밀번호) 통합 관리 및 통합 인증
▶정보자산의 계정(아이디/비밀번호)는 OS 계정 사용
▶전세계적으로 인정된 512Bit 표준 Hash 함수 사용(HMac-SHA512 / 인터넷 보안표준 IETF RFC 6238)
▶금융감독원에서 권장하는 시간 동기화(Time-Sync) , 동적 HMac Key 방식
▶매번 변하거나 한번 사용하고 버리는 일회성/휘발성 같은 동적인 보안
▶빠른 인증속도로 서비스 보장 (평균 인증시간 0.01초 이내)
▶인증절차 시 인증정보가 위변조 되더라도 우회인증 불가능
▶정보자산별 / 계정별 일회용 인증키 및 생성주기 개별부여
▶인증 우회(우회기술, 피로공격 등) 및 MFA 피로 공격(fatigue attacks) 불가능
▶자동 로그인 기능을 악용한 계정 정보 탈취해도 로그인 불가능
▶인증의 제한 횟수 및 제한 시간(예: 30초에 3회) 설정 기능 제공
▶중간자(man-in-the-middle) 공격을 예방하는 기능 제공
▶2차 인증에서 허용 / 제외할 수 있는 계정에 대한 ACL 기능 제공 
 

"아무 것도 하지 않으면 중간은 간다"는 건 오래된 말이고, 클라우드 시대에는 통하지 않는 말이다. 새로운 시대에는 새로운 보호 장치가 어울린다. 시스템과 인프라는 자꾸만 새 것으로 바뀌는데 왜 예전 것들을 부여잡고 있는지 각자가 스스로를 검토해야 할 때다.
 

결론은 "2차 인증을 도입했다"는 것이 아니라 기술 및 보안성 등 "어떤 2차 인증을 도입했느냐"가 관건이다.

"아무 것도 신뢰하지 않는다" = "아무도 믿지 마라" = "계속 검증하라"

 

앞으로 정보 보안의 흐름은 보안은 강화하고 사용자의 불편함을 최소화하는 방향으로, 기억할 필요가 없는 비밀번호! BaroPAM이 함께 하겠습니다.