Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

layer 3

[CISCO Network Security] 9장 시스코 인증, 인가, 어카운팅 방식 본문

CISCO Networks/Security

[CISCO Network Security] 9장 시스코 인증, 인가, 어카운팅 방식

뿅뿅뽁 2018. 7. 8. 12:19

안녕하세요 뿅뿅뽁입니다.


그동안 포스팅을 보셨거나 따로 보안공부를 하셨다면 다들 아시다시피 보안에서 인증을 빼놓고서는 이야기 할 수 없다는 것을 아실 것입니다.


그래서 오늘은 Cisco AAA에 관하여 써보자 합니다.


AAA란 무엇인가?


AAA는 Authentication, Authorization, Accounting의 약자로 인증, 인가, 어카운팅을 의미합니다. 쉽게 은행으로 설명해보겠습니다. 고객이 은행에서 돈을 뽑고자 PIN을 입력하는 인증과정, 인증 후 신원정보에 따라 할 수 있는 일이 정해지는 인가과정, 작업을 마치고 거래내역과 계좌 잔액이 화면에 출력하며 거래 내역을 기록하는 어카운팅과정입니다.


AAA는 세 가지의 독립적이면서도 서로 관련된 구성 요소로 이루어진 프레임워크이며 네트워크 장치와 자원으로의 안전한 원격지 접근을 제공하는데 매우 중요한 역할을 합니다.


AAA프레임워크는 일반적으로 클라이언트와 서버로 구성됩니다. AAA클라이언트는 AAA서버에게 인증,인가,어카운팅 서비스를 요청합니다. AAA서버는 AAA정보를 담고 있는 데이터베이스를 관리합니다.


AAA는 다음과 같은 세 가지 효율적인 면이 있습니다.


첫번째. AAA는 다수의 라우터를 관리하기 위한 중앙 인증 기능을 제공합니다.


두번째.  AAA는 유연한 인가 기능을 제공합니다.


세번째. AAA는 사용량 또는 과금 정보를 제공합니다.


1. Cisco AAA 개요


AAA는 독립적이면서도 위에서 말한 인증, 인가, 어카운팅 기능이 있습니다. 이들의 정의는 다음과 같습니다. 


인증 : 사용자가 네트워크 장치와 서비스에 접근하는 것을 허용하기 전에 식별하고 확인하는 과정


인가 : 인증을 마친 사용자의 권한과 접근 수준을 결정하는 과정


어카운팅 : 요금 부과, 감사, 리포팅을 할 목적으로 사용자의 행동을 기록하는 과정


이제부터는 하나하나 자세히 알아보겠습니다.


1.1 인증


AAA는 일반적으로 다음 방법을 사용합니다.


첫번째. 사용자가 아는 것 : 이것은 사용자만이 아는 지식을 이용한 인증법입니다.


두번째. 사용자가 소유한 것 : 이것은 사용자가 가진 것을 이용한 인증법입니다.


세번째. 사용자 자신 : 이것은 사용자만이 가지고 있는 특징을 이용한 인증법입니다.


그렇다면 인증은 어느 상황에서 쓰이냐면 다음과 같습니다.


상황1. 라우터나 NAS 같은 네트워크 장치에 대한 접근을 제어할 때

상황2. 원격지 사용자의 네트워크 자원에 대한 접근을 제어할 때


1.2 인가


AAA클라이언트가 AAA서버에게 사용자가 무슨 일을 할 권한이 있는지 물어보고 AAA서버는 사용자의 권한을 정의한 속성값 쌍을 돌려줍니다.


AAA인가는 일반적으로 다음 상황에서 쓰입니다.


상황1. 네트워크 장치에 로그인한 사용자에 대한 권한 부여를 할 때

상황2. 네트워크 서비스 사용자에 대한 권한 부여를 할 때


1.3 어카운팅


어카운팅은 간단히 말해 기록하는 것을 의미하므로, 클라이언트는 어카운팅 AV 쌍으로 기록된 어카운팅 자료를 AAA서버에 보냅니다. AAA서버는 이 정보를 중앙 집중 방식으로 수집하여 저장합니다.


1.4 AAA의 장점


AAA가 없다면을 생각해 보겠습니다. 100개 이상의 시스코 장치로 구성된 매우 큰 네트워크를 상상해 보면 기본적으로 시스코 장치는 EXEC모드에 접근하기 위한 비밀번호, 권한 EXEC모드에 접근하기 위한 비밀번호, 사용자 계정, 앞에 3개의 비밀번호는 모두 다르게 설정해야 합니다.


네트워크의 규모가 크면 클수록 관리 작업이 너무 복잡하고, 비밀번호를 자주 바꿔줘야 한다면 더더욱 힘들어집니다. 


이 때 AAA를 쓴다면 각 장치별로 계정과 비밀번호를 관리하는 대신 중앙 데이터베이스가 모든 사용자 계정, 각 계정의 권한, 로깅 정보를 관리해줍니다. 또한 확장된 유연성과 제어능력을 제공하며, 네트워크 규모가 커진다 해도 쉽게 확장될 수  있습니다.



2. Cisco AAA 방식


앞에서 보셨다시피 AAA가 얼마나 편리한지, 무엇인지에 대해 아셨을겁니다. 이번에는 AAA서비스를 구현하는 방법을 살펴보겠습니다.


자세한 설정은 하지 않겠지만 하는 방법은 간략하게 설명하겠습니다.


우선 AAA를 설정하려면 다음과 같은 작업을 수행해야 합니다.


첫번째. aaa new-model 전역 설정 명령을 사용해 AAA를 활성화합니다.

두번째. 별도의 AAA서버(RADIUS, TACACS+ 등)를 사용한다면 적절한 프로토콜 인자를 설정합니다.

세번째. 원하는 서비스에 대한 적절한 방법 목록을 정의합니다.

네번째. 원하는 인터페이스나 라인에 방법 목록을 적용합니다.


2.1 지원되는 AAA 보안 프로토콜


두번쨰단계에서 AAA서버를 사용한다했는데 어떤것이 지원되는지 알아보겠습니다.


2.1.1 RADIUS


Remote Access Dial-In User Service(RADIUS) 프로토콜은 접근 서버 인증과 어카운팅 프로토콜로 개발되었습니다. RADIUS의 장점은 TACACS+보다 CPU부하가 적고 메모리 사용량도 크지 않을뿐더러 대형 네트워크에서 몇명의 원격 사용자로 구성된 작은 네트워크에 이르기까지 모든 네트워크에서 보안 프로토콜로 사용 된다는 점입니다.


인증과정은 전화로 예를 들어보겠습니다.


첫번째. 원격 사용자는 NAS에 전화 접속한다. NAS는 사용자 이름과 비밀번호를 사용자로부터 얻는다.

두번째. 사용자 이름과 암호화된 비밀번호가 RADIUS 클라이언트(NAS)에서 네트워크를 통해 RADIUS 서버로 전송된다.

세번째. RADIUS 서버는 사용자 계정 정보가 들어있는 데이터베이스를 검색한다.

네번째. RADIUS서버는 인증 정보 확인 결과를 다음 중의 하나로 응답한다. ( REJECT, ACCEPT, CHALLENGE, CHANGE PASSWORD)


RADIUS는 이정도만 하겠습니다.


2.1.2 TACACS+


TACACS+는 Terminal Access Controller Access System의 약자입니다. TACACS는 라우터나 NAS를 통해 서비스에 접근하고자 하는 사용자를 확인하기 위한 방법을 제공합니다. 또한 관리자가 인증, 인가, 어카운팅 기능을 분리할 수 있도록 하여 각 서비스를 독립적으로 구현할 수 있습니다. Cisco IOS 소프트웨어는 TACACS 보안 프로토콜의 세 가지 버전을 지원합니다.


TACACS, XTACACS, TACACS+ 이 있고 TACACS+를 제외한 나머지는 모두 AAA 보안 기능과 호환되지 않을뿐더러 시스코에서 지원하지 않습니다. 따라서 TACACS+만 보도록 하겠습니다.


TACACS+는 AAA의 기능을 분리하여 각 기능별로 개별 설정이 가능하도록 했습니다. 인증 과정은 로그온으로 예를 들어 보겠습니다.


첫번째. 연결이 맺어지면 NAS는 TACACS+ 서버에 연결해 인증 프롬프트를 얻는다. 이 인증 프롬프트는 사용자에게 출력된다. 사용자가 이름을 입력하면 NAS는 TACACS+서버에게 그것을 보내고 비밀번호 프롬프트를 얻는다. NAS는 비밀번호 프롬프트를 사용자에게 출력하고 사용자는 비밀번호를 입력한다.


두번째. 이 비밀번호는 서버에서 동작중인 TACACS+ 데몬에게 전달되낟.

세번째. TACACS+ 서버는 사용자 데이터베이스에게 클라이언트 A가 보낸 정보를 찾는다.

네번째. NAS는 TACACS+ 데몬으로부터 다음 응답 중 하나를 받는다.(ACCEPT, REJECT, ERROR, CONTINUE)


이런 식으로 인증과정을 진행합니다.


2.1.3 Kerberos


오늘날의 네트워크에서 중대한 보안 위협이 되고 있는 것 중의 하나는 네트워크 모니터링툴을 사용하여 패킷을 캡쳐하는 행위입니다. 케르베로스는 강력한 암호화 프로토콜을 사용하여 클라이언트와 서버간에 교환되는 데이터가 암호화되게 해줍니다. 그래서 네트워크 모니터링 툴로 패킷을 캡쳐해도 그 내용을 볼 수 없게 됩니다.


과정으로 설명하겠하는게 더 이해가 잘 가실 것 같아 과정을 설명하겠습니다.


첫번째. 먼저, 사용자는 AS에게 사용자가 서버와 얘기하고 싶다는 의미를 담은 메시지를 전송한다.

두번째. AS는 이 메시지를 받고 새로운 키의 사본 2개를 만든다. 이 키를 세션 키라고 하며 사용자와 서비스간의 데이터 교환에 쓰인다.

세번째. 그 다음 AS는 세션 키 중 하나를 서비스의 이름과 함께 패킷에 넣는다. 그리고 AS는 이 패킷을 사용자의 키로 암호화한다.

네번째. AS는 나머지 세션 키를 사용자의 이름과 함께 다른 패킷에 넣는다. 그리고 AS는 이 패킷을 서비스 키로 암호화한다.

다섯번째. 패킷1과 패킷2 모두가 사용자에게 전송된다.

여섯번째. 사용자는 패킷1을 자신의 키로 복호화하여 세션 키와 서비스의 이름을 추출한다.

일곱번째. 사용자는 패킷2를 복호화할 수 없다. 그 대신 현재 시간을 포함한 메모를 다른 패킷(패킷3)에 넣고 이 패킷을 세션키로 암호화한 다음 패킷2와 패킷3 모두를 서비스로 전송한다.

여덟번째. 서비스는 패킷2를 자신의 키로 복호화하고 세션 키와 사용자 이름을 추출한다. 그 다음 패킷3을 세션 키로 복호화해서 현재 시간을 추출한다. 이 과정을 통해 서비스는 사용자를 식별할 수 있다.


AAA모델에서는 케르베로스는 오직 인증 기능만을 제공합니다.


2.1.4 RADIUS, TACACS+, Kerberos 중에서 선택하기


일반적으로 RADIUS와 TACACS+를 사용합니다. 그러면 어느 프로토콜을 사용해야 할지 결정에 영향을 미치는 몇가지 요소가 존재하는데 크게 4가지 입니다.


2.1.4.1 전송 포로토콜 고려 사항


RADIUS는 transport 계층 포로토콜로 UDP를 사용하지만 TACACS+는 transport 계층 포로토콜이고 TCP를 사용합니다. 고로 안정성에 있어서 TACACS+가 우세하다는 것입니다.


2.1.4.2 패킷 암호화


RADIUS는 클라이언트에서 서버로 가는 접근 요청 패킷 중 오직 비밀번호 부분만을 암호화합니다. 나머지 부분은 도청될 수 있습니다. 반면에 TACACS+는 패킷 본문 전체를 암호화하지만 헤더는 암호화하지 않습니다.


2.1.4.3 인증과 인가


RADIUS는 AAA의 인증과 인가 기능을 제공하는 프로토콜입니다. RADIUS 클라이언트와 서버 간에 교환되는 access=accept 패킷은 인가 정보를 담고 있습니다. 이러한 특성은 인증과 인가 기능을 분할하기 어렵게 합니다.


TACACS+는 AAA구조를 지원합니다. 즉 TACACS+는 인증, 인가, 어카운팅 기능을 분리하여 여러 프로토콜을 사용할 수 있도록 합니다.


2.1.4.4 프로토콜 지원


RADIUS는 지원하지 않지만 TACACS+는 지원하는 프로토콜이 있습니다. ( ARA, NASI, X.25 PAD 연결)


2.2 인가


AAA 두 번째 구성 요소는 인가입니다. 인가는 권한을 허용하는 행위로 정의할 수 있습니다. 예를 들어 사용자가 서버에 로그인해서 파일에 접근하거나 프린팅 서비스를 이용할 수 있다는 것은 서버에서 그 사용자에게 권한을 허용했다는 것을 의미합니다.


라우터나 NAS에서 쓰일 수 있는 인가의 종류는 다음과 같습니다.


EXEC : 사용자가 실행하는 EXEC 터미널 세션과 관련된 속성에 적용됩니다.

Command : 사용자가 실행하는 EXEC 모드 명령에 적용됩니다. Command 인가는 모든 EXEC 모드 명령에 대한 인가를 수행합니다.

Network : 네트워크 연결에 적용됩니다.

Reverse Access : 역-Telnet 세션에 인가를 적용합니다.


다음은 사용자 인가에 사용할 수 있는 방법 목록입니다.


TACACS+ : 인증과 마찬가지로, 사용자가 특정 행동을 할 수 있는 권한이 있는지 TACACS+ 서버에게 물어볼 수 있습니다. TACACS+ 사용자와 서비스를 연관시킴으로써 사용자의 권한을 정의합니다.


If-Authenticated : 사용자가 인증에 성공했다면 원하는 기능을 사용할 수 있습니다.


Local : 인증과 마찬가지로, 라우터나 NAS는 로컬 데이터베이스를 참조해 사용자의 권한을 허가합니다. 로컬 데이터베이스를 이용할 경우 제어할 수 있는 기능이 몇 가지로 한정됩니다.


RADIUS : 인증과 마찬가지로, 사용자가 특정 행동을 할 수 있는 권한이 있는지 RADIUS 서버에게 물어볼 수 있습니다. RADIUS는 사용자와 서비스를 연관시킴으로써 사용자의 권한을 정의합니다.


Kerberos Instance Map : 라우터나 NAS는 인가를 위해 이 명령으로 정의한 인스턴스를 사용합니다.


None : 인가를 하지 않습니다.



2.3 어카운팅


AAA의 마지막 구성 요소는 어카운팅입니다. 어카운팅은 요금 계산, 감사, 리포팅 등에 쓰이는 정보를 수집하고 보내기 위한 방법을 제공합니다. 이러한 정보에는 사용자, 시작/종료 시간, 실행한 명령, 보내고 받은 패킷 수, 보내고 받은 바이트 수 등이 있습니다.


모든 어카운팅 방법은 AAA를 통해 정의되어야 합니다. 어카운팅은 활성화될 경우 라우터나 NAS의 모든 인터페이스에 적용됩니다. 그렇기 때문에 인터페이스 단위 또는 라인 단위로 어카운팅 활성화 여부를 지정할 필요가 없습니다. 다음은 Cisco IOS에서 적용 가능한 서로 다른 어카운팅 유형을 보여줍니다.


Network 어카운팅 : 패킷 수/바이트 수와 같은 모든 네트어크 세션에 대한 정보를 제공합니다.


Connection 어카운팅 : 라우터나 NAS로부터 나가는 모든 아웃바운드 연결에 대한 정보를 제공합니다.


EXEC 어카운팅 : NAS나 라우터의 사용자 EXEC 터미널 세션에 대한 정보를 제공합니다. 이러한 정보에는 사용자 이름, 날짜, 시작/종료 시간, NAS나 라우터 IP 주소 등이 있습니다.


System 어카운팅 : 모든 시스템 레벨 이벤트에 대한 정보를 제공합니다.


Command 어카운팅 : NAS나 라우터의 특정 권한 수준에서 쓰이는 EXEC 셀명령에 대한 정보를 제공합니다. 각 어카운팅 기록은 그 권한 수준에서 실행된 명령 목록, 명령을 실행한 날짜와 시간, 누가 실행했는지에 대한 정보를 담고 있습니다.



3. 인증 프록시


인증 프록시는 관리자가 보안 정책을 개별 사용자별로 적용할 수 있도록 해줍니다. 일반적으로 인가는 사용자의 IP 주소나 서브넷과 연관되어 있습니다. 예를 들어 관리자가 FTP 사용을 제한하고자 한다면 특정 IP 주소 또는 IP 주소 영역 사용을 금지하는 접근 목록을 만들것입니다. 그렇지만 이렇게 하는 것이 쉽지는 않습니다. 특히 DHCP를 이용하여 워크스테이션이 동적으로 IP 주소를 할당하는 경우에는 더욱 그렇습니다. 이 방법을 사용하려면 워크스테이션이 올바른 주소 풀에서 IP를 할당받도록 IP 관리를 잘 해야 합니다. 그렇지 않으면 정상적인 사용자가 IP 주소 떄문에 FTP를 사용할 수 없는 일이 발생합니다.


인증 프록시는 IP 주소 대신 사용자 이름을 식별하고 그 이름에 해당하는 접근 프로파일을 Cisco Secure ACS 서버 또는 기타 RADIUS나 TACACS+ 인증 서버에서 가져와 적용합니다.


동작 방식을 보시면 좀더 이해가 잘 되실 겁니다.


첫번째. 사용자가 웹 브라우저를 통해 HTTP 세션을 열면 사용자가 보낸 패킷이 IOS Software Firewall을 통과하고 인증 프록시가 그것을 감지한다.


두번째. 인증 프록시는 사용자가 이미 인증을 받았는지 확인한다. 사용자가 인증을 받았다면 그 연결에 대한 처리를 마친다. 만약 사용자가 아직 인증을 받지 않는다면 인증 프록시는 사용자에게 이름과 비밀번호를 물어본다.


세번째. 사용자가 이름과 비밀번호를 입력하면 인증 프록시는 인증 프로파일을 AAA서버로부터 받는다. 이 정보는 동적 접근 제어 항목을 만들어서 입력 인터페이스의 인바운드 ACL이나 출력 인터페이스의 아웃바운드 ACL에 추가하는데 쓰인다. 예를 들어 사용자가 이름과 비밀번호를 제대로 입력하여 인증에 성공했다면 사용자의 프로파일은 방화벽으로 다운로드된다. 그리고 그 프로파일에 따라 방화벽의 ACL의 내용이 동적으로 바뀌며 인바운드 인터페이스와 아웃바운드 인터페이스에 적절히 적용된다. 만약 사용자의 프로파일에 FTP를 허용하라는 내용이 들어있으면 이 내용을 포함한 아웃바운드 ACL이 아웃바운드 인터페이스에 동적으로 추가된다. 만약 인증에 실패하면 서비스를 이용할 수 없다.


네번째. 인바운드 ACL과 아웃바운드 ACL은 AAA서버에서 다운로드한 접근 목록의 출발지 주소를 인증된 호스트의 IP 주소로 대체하는 방법으로 바뀐다.


다섯번째. 사용자가 인증에 성공한 순간부터 각 사용자 프로파일에 대해 타이머가 동작하기 시작한다. 트래픽이 방화벽을 통과하는 동안은 사용자가 재인증할 필요는 없다. 만약 인증 타이머가 만료되면 그 사용자는 재인증을 해야한다.



인증프록시의 장점은 보안 프로토콜을 이용한 동적, 사용자 단위 AAA인증과 인가기능을 제공하고, 별도의 클라이언트 소프트웨어가필요 없다는 점입니다.


그러나 프로토콜이나 정책에는 항상 제한이 있듯이 인증 프록시에도 제한사항이 있습니다.


오직 HTTP연결만이 인증 프록시를 활성화시키고 포트 80에서 HTTP서비스가 운영중이어야 합니다. 또한 어카운팅을 제공하지 않고 여러 AAA서버를 이용한 로드 밸런싱이 지원되지 않는 점등 여러가지가 있습니다.



9장에서는 보안의 핵심 중 하나인 AAA에 대해 알아보았습니다. AAA는 전에 포스팅한 것이나 앞으로도 포스팅 할 내용에 담겨질 예정입니다. 그만큼 유용한 프로토콜입니다.


다음 장에서는 데이터 전송 시 일어나는 시간 지연(delay)를 제거하는 기술인 컨텐트 서비스 스위치에 대해 알아보겠습니다.