~/network/tacacs
보안

TACACS+

Terminal Access Controller Access-Control System

TACACS+ 는 Cisco가 개발한 네트워크 장비 접근 제어를 위한 AAA 프로토콜이다. 관리자가 라우터·스위치·방화벽 등의 장비에 로그인할 때, 그 사람이 누구이고(Authentication), 어떤 명령을 실행할 수 있으며(Authorization), 무슨 작업을 했는지(Accounting)를 중앙 서버에서 통제한다.

장비마다 로컬 계정을 따로 만들지 않고 인증·권한 정책을 한 곳에서 관리할 수 있어, 장비 수가 많은 운영 환경에서 사실상 표준으로 쓰인다.

AAA

TACACS+ 가 다루는 세 가지 기능을 합쳐 AAA라고 부른다.

구분의미예시
Authentication (인증)접속한 사용자가 누구인지 확인ID/비밀번호 검증, 토큰
Authorization (인가)그 사용자가 무엇을 할 수 있는지 결정실행 가능한 명령어 제한, 권한 레벨 부여
Accounting (감사)사용자가 무슨 작업을 했는지 기록로그인 시각, 입력 명령어, 세션 시간

TACACS+ 의 가장 큰 특징은 이 세 기능을 완전히 분리(decoupled) 했다는 점이다. 인증은 외부 서버에 맡기고 인가만 별도로 처리하는 식의 유연한 구성이 가능하다.

동작 방식

장비와 TACACS+ 서버가 클라이언트-서버 구조로 통신한다. 사용자(관리자)는 TACACS+ 서버에 직접 접속하지 않고, 장비가 사용자와 서버 사이에서 중개한다.

[관리자]  --SSH 로그인-->  [장비(스위치/라우터)]  --TCP 49 질의-->  [TACACS+ 서버]
        (password 입력)                (받은 자격증명을 대신 물어봄)
  1. 관리자가 장비에 접속을 시도한다.
  2. 장비는 사용자가 입력한 자격 증명을 TACACS+ 서버로 전달한다.
  3. 서버가 인증을 처리하고 결과(허용/거부)를 장비에 회신한다.
  4. 인증 성공 후, 사용자가 명령을 입력할 때마다 장비가 서버에 명령어 인가(command authorization) 를 질의할 수 있다.
  5. 서버는 세션 동안의 활동을 Accounting 로그로 남긴다.

전송 계층으로는 TCP 49번 포트를 사용한다. TCP 기반이므로 전달 신뢰성이 보장되며 연결 상태를 감지할 수 있다.

패킷 암호화

TACACS+ 는 패킷 본문(body) 전체를 암호화한다. 공유 비밀키(shared secret)와 패킷 헤더의 일부 필드를 이용해 MD5 기반 의사난수 패드를 생성하고, 이것으로 본문을 XOR 암호화한다.

헤더는 암호화되지 않지만 사용자 이름, 비밀번호, 명령어 등 민감한 정보가 모두 들어 있는 본문이 보호되므로, 인증 정보뿐 아니라 어떤 명령을 주고받았는지까지 노출되지 않는다.

RADIUS와의 비교

같은 AAA 프로토콜인 RADIUS와 자주 비교된다. 가장 본질적인 차이는 AAA 분리 여부암호화 범위다.

항목TACACS+RADIUS
개발RFC 8907 표준IETF 표준
전송TCP 49UDP 1812/1813 (구형 1645/1646)
AAA 분리인증·인가·감사 완전 분리인증과 인가가 결합
암호화패킷 본문 전체비밀번호만 암호화
주 용도네트워크 장비 관리자 접근 제어end user 네트워크 접속 인증 (Wi-Fi, VPN, 802.1X)
명령어 단위 인가지원사실상 미지원

정리하면, 장비에 로그인하는 관리자의 권한을 명령어 단위로 통제해야 한다면 TACACS+ 가 적합하고, VPN이나 무선 등 다수의 end user 접속 인증에는 RADIUS가 적합하다. 두 프로토콜은 경쟁 관계라기보다 용도가 다르며, 실제 환경에서는 장비 관리는 TACACS+, 사용자 접속은 RADIUS로 함께 쓰는 경우가 많다.

명령어 단위 인가

TACACS+ 는 명령어 레벨 인가를 지원한다. 관리자가 장비에서 명령을 입력할 때마다 그 명령의 실행 허용 여부를 서버에 물어볼 수 있다. RADIUS는 인증 시점에 권한 레벨 정도만 내려줄 수 있어, 이런 명령어 단위 통제는 TACACS+ 의 차별점이다.

운영 시 고려사항

  • 서버 이중화: TACACS+ 서버 장애 시 장비 로그인이 막힐 수 있으므로, 보통 서버를 2대 이상 구성하고 모두 불통일 때를 대비해 로컬 계정 fallback을 함께 설정한다.
  • 공유 비밀키 관리: 장비와 서버가 같은 shared secret을 가져야 하며, 키가 다르면 인증이 실패한다.
  • 방화벽·ACL 경로 개방: 장비와 서버 사이 ACL이나 방화벽에서 TCP 49 포트가 열려 있어야 한다.
  • Accounting 로그 관리: 명령어 로그는 감사·보안 사고 추적에 핵심 자료이므로 별도 보관 정책을 둔다.