기술 가이드

CentOS/Ubuntu에서 sudo에 RADIUS 기반 2단계 인증 추가하기

3 min read 시스템 보안 업데이트됨 19 Oct 2025
CentOS/Ubuntu에서 sudo에 RADIUS 기반 2FA 설정
CentOS/Ubuntu에서 sudo에 RADIUS 기반 2FA 설정

TL;DR

서버에서 pam_radius를 설치하고 /etc/pam.d/sudo에 RADIUS 인증 모듈을 추가하면 sudo 명령에 OTP 기반 2단계 인증을 적용할 수 있습니다. 이 튜토리얼은 CentOS/RHEL 7과 Ubuntu 14.04에서 WiKID 또는 다른 RADIUS 기반 2FA 서버와 연동하는 방법을 단계별로 제공합니다.

중요: 먼저 테스트 환경에서 적용해보고, 루트 세션 접근이 차단되지 않도록 백도어 계정이나 콘솔 접근 경로를 확보하세요.

  • 목표 시스템: CentOS/RHEL 7 또는 Ubuntu 14.04
  • RADIUS 기반 2단계 인증 서버: WiKID, FreeRADIUS, NPS 등
  • 관리자 권한(또는 sudo 사용 권한)
  • 중앙 디렉터리(옵션): AD/LDAP로 사용자 관리를 권장

간단 용어 정의

  • RADIUS: 원격 인증, 권한 및 계정 서비스(원격 인증 프로토콜).
  • PAM: Pluggable Authentication Modules, 리눅스 인증 프레임워크.
  • OTP: 일회용 비밀번호, 2단계 인증에서 자주 사용.

개요

이 설정은 sudo 명령에 대해 사용자 이름과 OTP를 RADIUS 서버로 전달해 인증하도록 만듭니다. 장점은 다음과 같습니다.

  • 중앙 인증(디렉터리)에서 권한을 관리하고, 별도의 2FA 서버에서 인증을 수행할 수 있음
  • FreeRADIUS, WiKID, NPS 등 엔터프라이즈 급 2FA 시스템과 호환

다음 섹션에서 CentOS/RHEL 7과 Ubuntu 14.04 각각에 대해 단계별로 설명합니다.

CentOS/RHEL 7: sudo에 pam_radius 추가하기

  1. 필수 패키지 설치
sudo yum -y install make gcc pam pam-devel
  1. pam_radius 소스 다운로드

예시(최신 버전명으로 교체):

wget ftp://ftp.freeradius.org/pub/radius/pam_radius-x.x.x.tar.gz
  1. 빌드와 설치
tar -xzvf pam_radius-x.x.x.tar.gz
cd pam-radius-x.x.x
sudo ./configure
sudo make
  1. 빌드된 라이브러리 복사

32비트 시스템:

cp pam_radius_auth.so /lib/security/

64비트 시스템:

cp pam_radius_auth.so /lib64/security/
  1. 설정 파일 위치 생성 및 복사
sudo mkdir /etc/raddb
cp pam_radius_auth.conf /etc/raddb/server
  1. /etc/raddb/server 파일 편집

파일 내용 예시(각 줄 형식 유지):

# server[:port] shared_secret     timeout (s)
127.0.0.1       secret             1
radius_server_IP    secret           3
#
# having localhost in your radius configuration is a Good Thing.
  • radius_server_IP와 shared_secret을 실제 값으로 변경하세요.
  • 로컬 테스트를 위해 먼저 127.0.0.1(로컬 RADIUS)로 확인하는 것을 권장합니다.
  1. PAM 구성에서 sudo에 RADIUS 사용 선언

/etc/pam.d/sudo 파일에서 기존의 인증 관련 줄(예: “auth include system-auth”)을 찾아 다음으로 교체합니다:

auth       required      pam_radius_auth.so

이제 CentOS/RHEL 시스템에서 sudo는 pam_radius로 인증을 시도합니다.

Ubuntu 14.04: sudo에 pam_radius 추가하기

  1. pam-radius 패키지 설치
sudo apt-get install libpam-radius-auth
  1. /etc/pam_radius_auth.conf 편집

CentOS 예시와 동일한 형식으로 RADIUS 서버와 시크릿을 추가합니다:

# server[:port] shared_secret     timeout (s)
127.0.0.1       secret             1
radius_server_IP   secret           3
#
# having localhost in your radius configuration is a Good Thing.
  1. /etc/pam.d/sudo 편집

common-auth 앞에 pam_radius_auth를 우선 추가합니다:

auth       required   pam_env.so readenv=1 user_readenv=0
auth       required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
auth sufficient pam_radius_auth.so
@include common-auth
@include common-account
@include common-session-noninteractive
  • “auth sufficient pam_radius_auth.so”는 RADIUS 인증이 성공하면 이후 인증을 생략하도록 합니다. 필요에 따라 required로 변경할 수 있습니다.

테스트 및 검증

  1. 먼저 콘솔이나 별도 계정으로 테스트하세요. 실환경에서 sudo 접근을 차단하면 복구가 어려울 수 있습니다.
  2. sudo 명령 실행 시 프롬프트가 나타나고 OTP 입력을 요구하는지 확인합니다.
  3. RADIUS 서버 로그(예: WiKID 또는 FreeRADIUS 로그)에서 요청/응답을 확인해 인증 과정의 문제를 추적하세요.

테스트 예시:

sudo -l
sudo ls /root

문제 해결 팁

  • PAM 구성이 잘못되면 sudo가 모든 인증을 거부할 수 있으므로 SSH 연결 세션에 대한 별도 루트 접근 수단을 확보하세요.
  • /var/log/secure 또는 /var/log/auth.log에서 pam_radius 관련 에러를 확인하세요.
  • 타임아웃(timeout) 값을 늘려 네트워크 지연에 대비하세요.
  • 시크릿(shared_secret)이 양쪽(RADIUS 서버와 클라이언트)에서 동일한지 확인하세요.

보안 권장사항

  • 중앙 디렉터리(예: AD/LDAP)에서 사용자 권한을 관리하고, 인증은 별도의 2FA 서버에서 수행하는 분리된 아키텍처를 권장합니다.
  • sudo에 대해 2FA를 적용하면 관리 계정의 무단 권한 상승을 크게 줄일 수 있습니다.
  • RADIUS 트래픽은 가능한 경우 전용 관리 네트워크 또는 암호화 터널로 보호하세요.

적용 시나리오와 예외

  • 소규모 환경에서 SSH 공개키 기반 인증을 사용하고 있다면 sudo에 추가 2FA를 도입할 필요가 적을 수 있습니다.
  • 오프라인 환경(인터넷/네트워크 단절)에서는 RADIUS를 사용할 수 없으므로 로컬 대체 인증(예: Yubikey PAM, 로컬 OTP 파일)을 고려하세요.

체크리스트(배포 전)

  • 테스트 환경에서 먼저 적용했는가?
  • /etc/pam.d/sudo 변경 전 백업을 만들었는가?
  • 콘솔 또는 물리적 접근 경로가 확보되어 있는가?
  • RADIUS 서버와 시크릿이 일치하는가?
  • 로그에서 인증 요청이 정상 도달하는가?

간단 용어집

  • PAM: 모듈식 인증 프레임워크
  • RADIUS: 중앙 인증/권한/계정 프로토콜
  • OTP: 일회용 비밀번호

요약

이 튜토리얼은 CentOS/RHEL 7과 Ubuntu 14.04에서 pam_radius를 사용해 sudo에 RADIUS 기반 2단계 인증을 추가하는 방법을 설명했습니다. 중앙 디렉터리와 별도 2FA 서버를 결합하면 관리 계정 보안을 크게 강화할 수 있습니다.

추가 참고: 변경을 배포하기 전에 항상 백업을 만들고, 테스트 환경에서 검증한 뒤 순차적으로 운영환경에 적용하세요.

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

YouTube에서 AdBlock 감지 회피 방법
가이드

YouTube에서 AdBlock 감지 회피 방법

iPhone에서 무료 애니 보는 방법 — 가이드
애니 가이드

iPhone에서 무료 애니 보는 방법 — 가이드

ChatGPT + Spotify 통합 가이드: 재생목록 만들기
가이드

ChatGPT + Spotify 통합 가이드: 재생목록 만들기

ONLYOFFICE Docker 설치 가이드
설치 가이드

ONLYOFFICE Docker 설치 가이드

iOS 26 업데이트 후 아이폰 배터리 광탈 해결 가이드
모바일

iOS 26 업데이트 후 아이폰 배터리 광탈 해결 가이드

그림 자르기: Word/Excel/PowerPoint 전체 가이드
Office 사용법

그림 자르기: Word/Excel/PowerPoint 전체 가이드