System Engineering/Security
Security #4. Kerberos에 대한 이해
개요
본 포스팅에서는 인증방법 중 하나로 주요 사용되는 커버로스에 대해 이해해보고 정리해보려한다.
포스팅 참고링크
- https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/managing_smart_cards/using_kerberos
- https://real-dongsoo7.tistory.com/117
- https://juhi.tistory.com/75
- 커버로스 인증 과정 & 설치 : https://blogger.pe.kr/920
Kerberos??
티켓 기반의 컴퓨터 네트워크 인증 암호화 프로토콜이라고 정의하며 티켓을 가진 유저만 서버에 접속 할 수 있게 구현되어 있다. 특징은 아래와 같다.
- 비보안 네트워크에서 통신하는 노드가 보안 방식으로 다른노드에 대해 식별가능하게 허용하는 기능을 한다.
- 클라이언트 서버 모델을 목적으로 개발, 사용자와 서버가 서로 식별할 수 있는 상호인증(양방향 인증)을 제공
- 대칭키 암호로 빌드되며 TTP(신뢰된 서드 파티)를 요구한다.
- 암호환된 위 정보들을 통해서 서버와 유저(클라이언트)는 서로 믿을 수 있는 대상인지를 몇가지 과정을 거치며 확인.
- 커버로스 프로토콜의 메시지는 도청과 재전송 공격으로부터 보호됨
- Kerberos 인증 시스템의 가장 큰 장점을 꼽으라면 영구적으로가 아닌 정해진 시간에만 사용할 수 있는 Temporary Ticket이 발급된다는 점이다.
커버로스에서 사용하는 티켓은 아래 정보들을 안전하게 전달하는데 사용되는 정보 패킷이며, 티켓을 발급할 때 secret key로 아래 정보들을 암호화한다.
- 유저 아이디
- 유저 호스트 IP주소
- timestamp
- 티켓 수명
- 세션키
사용하는 경우
- 서버의 수가 점점 많아지고, 사용자의 수도 많아져서 관리 비용이 높아지는 경우
- 서버별로 접근 가능한 사용자를 관리해야 할 때
- 서버가 추가될 때마다 혹은 사용자가 추가/삭제될 때마다 유저를 등록 관리해야 하는 경우
동작원리 (참고)
커버로스 인증을 통한 서버 로그인 과정
- 사용자가 A라는 서버에 SSH를 통해 접속하고자 할 때 ID와 비밀번호를 입력
- 커버로스 인증을 수행하도록 설정된 SSH데몬은 krb5.conf(위치 : rhel계열 리눅스 기준 - /etc/krb5.conf)에 지정된 KDC의 AS에게 인증을 요청하도록 SSH클라이언트에게 알리고, SSH 클라이언트는 AS에게 인증을 요청한다.
- AS는 LDAP또는 자체 프린서플(principal) DB(커버로스 데이터베이스)에서 ID와 비밀번호를 검증한다.
- AS는 검증이 완료될 경우 TGS에게 다음의 두 메시지 생성을 요청하여 수신받아 클라이언트에게 응답
- 티켓발급용 티켓(TGT-Ticket Granting Ticket) : 클라이언트 ID, 주소, 유효기간, TGS 세션키를 TGS 비밀키로 암호화한 메시지
- 클라이언트에서 제공한 비밀번호기반의 비밀키로 암호화한 TGS 세션키
- 클라이언트는 TGS의 비밀키를 알지 못하므로 티켓을 복호화할 수 없음
- AS로 부터 2개의 메시지를 수신한 클라이언트는 KDC의 TGS에게 다음의 두가지 메시지를 전송
- TGS는 클라이언트로부터 받은 TGT와 Authenticator를 복호화하여 ID를 검증하고 2개의 메시지를 클라이언트에게 응답(자신이 발급한 TGT와 TGS를 검증)
- SGT(Session Granting Ticket) : SS비밀키로 암호화한 클라이언트 id, 주소, 유효기간 SS세션키가 포함된 메시
- SS세션키를 TGS세션키로 암호화한 메시지
- 클라이언트는 응용프로그램 서버(여기서는 SSHD)에게 다음 두 메시지를 전달함
- Authenticator : TGS세션키로 복호화한 SS세션키로 클라이언트 ID와 타임스탬프를 암호화한 메시지
- SGT(Session Granting Ticket)
- 응용프로그램 서버(여기서는 SSHD)는 SGT와 Authenticator를 복호화하여 ID등이 일치할 경우 아래 메시지를 클라이언트에게 전달
- 클라이언트는 타임스탬프가 일치할 경우 인증완료
관련 용어
- AS(Authentication Server) : 인증서버
- TGS(Ticket Granting Server) : 티켓 발급 서버
- KDC(Key Distribution Center) : 커버로스 인증키 분배
- SS (Service Server) : 서비스를 제공해주는 서버 (위 그림의 경우 Resource Server)
주로 사용하는 커버로스 관련 명령어
- $ kinit : 커버로스 아이디 로그인
- $ kpasswd : 커버로스 패스워드 변경
반응형
'System Engineering > Security' 카테고리의 다른 글
Security #5. SSH의 동작원리와 SSH KEY 배포 (0) | 2023.07.29 |
---|---|
Security #3. PAM에 대한 이해 (0) | 2023.03.02 |
Security #2. Webserver(웹서버) TLS 1.2 미만 차단조치(Apache, IHS) (0) | 2021.07.07 |
Security #1. TLS와 SSL에 대한 이해 (0) | 2021.06.08 |
댓글