System Engineering/Security

Security #4. Kerberos에 대한 이해

ZunoXI 2023. 4. 1.

개요

 

본 포스팅에서는 인증방법 중 하나로 주요 사용되는 커버로스에 대해 이해해보고 정리해보려한다.

 

 

 

포스팅 참고링크 

 

 

커버로스 인증서버 구축하기(kerberos / KDC)

여러 대의 서버를 운영하다 보면 맞닥뜨리는 어려움 중 하나가 바로 ID와 비밀번호의 관리다. 많은 엔지니어들과 많은 서버... 그리고 각 서버마다 접근권한을 어떻게 관리할 것인가하는 문제는

blogger.pe.kr

 

 

 

Kerberos??

티켓 기반의 컴퓨터 네트워크 인증 암호화 프로토콜이라고 정의하며 티켓을 가진 유저만 서버에 접속 할 수 있게 구현되어 있다. 특징은 아래와 같다.

 

  • 비보안 네트워크에서 통신하는 노드가 보안 방식으로 다른노드에 대해 식별가능하게 허용하는 기능을 한다.
  • 클라이언트 서버 모델을 목적으로 개발, 사용자와 서버가 서로 식별할 있는 상호인증(양방향 인증) 제공
  • 대칭키 암호로 빌드되며 TTP(신뢰된 서드 파티) 요구한다.
  • 암호환된 정보들을 통해서 서버와 유저(클라이언트) 서로 믿을 있는 대상인지를 몇가지 과정을 거치며 확인.
  • 커버로스 프로토콜의 메시지는 도청과 재전송 공격으로부터 보호됨
  • Kerberos 인증 시스템의 가장 큰 장점을 꼽으라면 영구적으로가 아닌 정해진 시간에만 사용할 수 있는 Temporary Ticket이 발급된다는 점이다.

 

커버로스에서 사용하는 티켓은 아래 정보들을 안전하게 전달하는데 사용되는 정보 패킷이며, 티켓을 발급할 secret key 아래 정보들을 암호화한다.

 

  • 유저 아이디
  • 유저 호스트 IP주소
  • timestamp
  • 티켓 수명
  • 세션키

 

 

사용하는 경우

 

  • 서버의 수가 점점 많아지고, 사용자의 수도 많아져서 관리 비용이 높아지는 경우
  • 서버별로 접근 가능한 사용자를 관리해야
  • 서버가 추가될 때마다 혹은 사용자가 추가/삭제될 때마다 유저를 등록 관리해야 하는 경우

 

 

동작원리 (참고)

 

이미지 출처 : https://juhi.tistory.com/75

 

 

 

커버로스 인증을 통한 서버 로그인 과정

 

  1. 사용자가 A라는 서버에 SSH 통해 접속하고자   ID 비밀번호를 입력
  2. 커버로스 인증을 수행하도록 설정된 SSH데몬은 krb5.conf(위치 : rhel계열 리눅스 기준 - /etc/krb5.conf) 지정된 KDC AS에게 인증을 요청하도록 SSH클라이언트에게 알리고, SSH 클라이언트는 AS에게 인증을 요청한다.
  3. AS LDAP또는 자체 프린서플(principal) DB(커버로스 데이터베이스)에서 ID 비밀번호를 검증한다.
  4. AS 검증이 완료될 경우 TGS에게 다음의  메시지 생성을 요청하여 수신받아 클라이언트에게 응답
    • 티켓발급용 티켓(TGT-Ticket Granting Ticket) : 클라이언트 ID, 주소, 유효기간, TGS 세션키를 TGS 비밀키로 암호화한 메시지
    • 클라이언트에서 제공한 비밀번호기반의 비밀키로 암호화한 TGS 세션키
      • 클라이언트는 TGS 비밀키를 알지 못하므로 티켓을 복호화할  없음
  5. AS 부터 2개의 메시지를 수신한 클라이언트는 KDC TGS에게 다음의 두가지 메시지를 전송
  6. TGS 클라이언트로부터 받은 TGT Authenticator 복호화하여 ID 검증하고 2개의 메시지를 클라이언트에게 응답(자신이 발급한 TGT TGS 검증)
    • SGT(Session Granting Ticket) : SS비밀키로 암호화한 클라이언트 id, 주소, 유효기간 SS세션키가 포함된 메시
    • SS세션키를 TGS세션키로 암호화한 메시지
  7. 클라이언트는 응용프로그램 서버(여기서는 SSHD)에게 다음  메시지를 전달함
    • Authenticator : TGS세션키로 복호화한 SS세션키로 클라이언트 ID 타임스탬프를 암호화한 메시지
    • SGT(Session Granting Ticket)        
  8. 응용프로그램 서버(여기서는 SSHD) SGT Authenticator 복호화하여 ID등이 일치할 경우 아래 메시지를 클라이언트에게 전달
  9. 클라이언트는 타임스탬프가 일치할 경우 인증완료

 

 

관련 용어

 

  • AS(Authentication Server) : 인증서버
  • TGS(Ticket Granting Server) : 티켓 발급 서버
  • KDC(Key Distribution Center) : 커버로스 인증키 분배
  • SS (Service Server) : 서비스를 제공해주는 서버 ( 그림의 경우 Resource Server)

 

주로 사용하는 커버로스 관련 명령어 

 

  • $ kinit : 커버로스 아이디 로그인
  • $ kpasswd : 커버로스 패스워드 변경

 

 

 

 

반응형

댓글