AAA 로컬 명령 인가
Cisco IOS는 외부 TACACS+ 서버 없이 명령 인가를 가능하게 합니다. Cisco 라우터와 스위치는 권한 레벨(privilege level) 로 동작합니다. 기본적으로 16개의 권한 레벨이 있으며, 의식하지 않더라도 이미 다음 세 가지에 익숙할 것입니다.
- 레벨 0: 몇 개의 명령만 사용 가능합니다. 가장 많이 사용되는 명령은 아마도
enable일 것입니다. - 레벨 1: 기본 exec 사용자 레벨입니다. 일부
show명령을 사용할 수 있지만 아무것도 구성할 수 없습니다. - 레벨 15: 가장 높은 권한 레벨로, “enable 모드” 또는 “privileged 모드”라고도 합니다.
상위 권한 레벨은 하위 권한 레벨의 모든 명령을 지원합니다. 예를 들어 권한 레벨 8은 레벨 07의 모든 명령을 포함합니다. 권한 레벨 15는 레벨 014의 모든 명령을 가집니다.
다양한 사용자 그룹과 함께 작업한다면 다양한 권한 레벨을 사용하는 것이 좋습니다. 시니어 네트워크 엔지니어에게만 권한 레벨 15를 부여하고, 주니어 네트워크 엔지니어에게는 모든 명령에 접근하지 못하도록 더 낮은 권한 레벨을 부여하고 싶을 것입니다.
권한 레벨에 명령 할당하기
특정 권한 레벨에 명령을 할당하려면 다음과 같은 옵션이 있습니다.
- 일부 권한 레벨 15 명령을 레벨 1에 할당해 라우터에 로그인할 수 있는 모든 사용자가 사용할 수 있게 합니다.
- 일부 명령을 레벨 1에서 더 높은 레벨로 옮겨 레벨 1 사용자가 일부 명령을 사용하지 못하게 합니다.
- 새 권한 레벨을 만들고 일부 레벨 15 명령을 할당합니다.
다양한 권한 레벨에 명령을 할당하려면 IOS에 두 가지 모드가 있다는 것을 이해해야 합니다.
- Exec 모드
- Configuration 모드
Exec 모드는 다음과 같습니다.
Router#그리고 Configuration 모드는 다음과 같습니다.
Router(config)#각 “모드”에는 인터페이스 구성 같은 “서브 모드”도 있습니다.
Router(config-if)#명령에는 이해해야 할 특정 구조가 있습니다. 기본적으로 명령은 다음과 같습니다.
command sub-command [arguments] [arguments-values] [options]예를 들어 IP 주소를 구성하는 것을 생각해 봅시다.
Rack1SW1(config-if)# ip address 192.168.1.1 255.255.255.0다음과 같이 분해할 수 있습니다.
ip= 명령address= 서브 명령192.168.1.1 255.255.255.0= 인수secondary= 옵션 (예제에는 표시되지 않음)
권한 레벨에 명령을 할당할 때, 전체 “ip” 명령을 선택할 수도 있고 “ip address” 서브 명령만 선택할 수도 있습니다. 누군가에게 전체 “ip” 명령을 부여하면 “ip unreachables”나 “ip arp” 같은 것도 구성할 수 있습니다.
명령을 옮기고 새 권한 레벨을 만드는 몇 가지 예제를 살펴봅시다.
1. 구성
먼저, 우리의 권한 레벨이 무엇인지 확인해 봅시다. 다음과 같이 할 수 있습니다.
Router> show privilege
Current privilege level is 1show privilege 명령을 사용해 권한 레벨을 확인합니다. 기본적으로 로그인하면 레벨 1에 있습니다. 이제 enable 모드로 가봅시다.
Router> enable
Router# show privilege
Current privilege level is 15보시는 것처럼 enable의 권한 레벨은 15입니다.
간단한 예제부터 시작하겠습니다. 권한 레벨 1 사용자에게 show running-configuration 명령을 사용할 권한을 부여하겠습니다. 방법은 다음과 같습니다.
Router(config)# privilege exec level 1 show running-config이제 모든 레벨 1 사용자가 show running-config 명령을 사용할 수 있습니다. 매우 현명한 생각은 아니지만 작동합니다.
Router> show running-config
Building configuration...
Current configuration : 53 bytes
!
boot-start-marker
boot-end-marker
!레벨 1 사용자에게서 명령을 빼앗을 수도 있습니다. 그들이 show ip arp를 사용하지 못하게 한다고 가정해 봅시다. 다음과 같이 합니다.
Router(config)# privilege exec level 15 show ip arp레벨 1 사용자는 더 이상 show ip arp를 사용할 수 없음을 발견할 것입니다.
Router> show ip arp
^
% Invalid input detected at '^' marker.이제 특정 권한 레벨에 명령을 추가하거나 제거하는 방법을 보았습니다. 몇 가지 명령에만 접근할 수 있는 새 권한 레벨을 가진 사용자를 만들면 어떨까요? 다음과 같은 작업을 할 수 있는 새 사용자 계정을 만들겠습니다.
- 인터페이스의 shutdown 또는 no shutdown
debug ip routing명령 사용- 모든 디버깅 비활성화
show running-configuration명령 사용
이를 위해 새 권한 레벨을 가진 새 사용자 이름을 만들겠습니다. 방법은 다음과 같습니다.
Router(config)# username JUNIOR privilege 8 password CISCO
먼저 JUNIOR라는 새 사용자 계정을 만듭니다. 이 사용자에게 권한 레벨 8을 할당합니다. 이제 몇 가지 명령을 추가합니다.
Router(config)# privilege exec level 8 configure terminal
Router(config)# privilege exec level 8 debug ip routing
Router(config)# privilege exec level 8 undebug all
Router(config)# privilege exec level 8 show running-config위 명령은 exec 모드용입니다. configuration 모드에 대한 명령도 추가해야 합니다.
Router(config)# privilege configure level 8 interface
Router(config)# privilege interface level 8 shutdown
Router(config)# privilege interface level 8 no shutdownprivilege configure level 8 interface: 레벨 8 사용자가configure terminal후interface서브 명령에 진입 가능.privilege interface level 8 shutdown/no shutdown: 인터페이스 서브 모드에서 shutdown 토글 허용.
이제 JUNIOR 사용자가 실제로 이 권한을 사용하려면 VTY 또는 콘솔 로그인 시 자동으로 권한 레벨 8에 진입하도록 인증/인가 구성을 연결해야 합니다.
1.1. AAA 로컬 인증·인가 연결
Router(config)# aaa new-model
Router(config)# aaa authentication login default local
Router(config)# aaa authorization exec default local
Router(config)# aaa authorization commands 8 default local
Router(config)# aaa authorization commands 15 default localaaa authentication login default local: 로그인 시 로컬 데이터베이스로 인증.aaa authorization exec default local: 로그인 성공 후 사용자의privilege값(8)에 맞춰 자동으로 exec 레벨 설정.aaa authorization commands 8 default local: 레벨 8에서 실행하는 명령마다 허용 여부를 로컬 DB로 확인.aaa authorization commands 15 default local: 레벨 15 명령에 대해서도 동일하게 검사.
1.2. 검증
JUNIOR로 로그인해서 실제 동작을 확인합니다.
Router> enable
Password: CISCO
Router# show privilege
Current privilege level is 8
Router# configure terminal
Router(config)# interface gigabitEthernet 0/1
Router(config-if)# shutdown
Router(config-if)# no shutdown
Router(config-if)# ip address 10.0.0.1 255.255.255.0
^
% Invalid input detected at '^' marker.show privilege가 8을 보여주면 인가가 제대로 연결된 것입니다.shutdown/no shutdown은 허용되지만,ip address는 레벨 8에 할당되지 않아 거부됩니다.
Tip: 레벨에 어떤 명령이 할당되어 있는지 한눈에 보려면
show running-config | include privilege명령을 쓰세요. 기본 권한에서 이동된 모든 명령이 나옵니다.
Router# show running-config | include privilege
privilege exec level 1 show running-config
privilege exec level 8 configure terminal
privilege exec level 8 debug ip routing
privilege exec level 8 undebug all
privilege exec level 8 show running-config
privilege exec level 15 show ip arp
privilege configure level 8 interface
privilege interface level 8 shutdown
privilege interface level 8 no shutdown1.3. 주의사항
- 권한 레벨 기반 인가는 투박합니다. 명령 하나하나를 수동으로 이동시켜야 하고, 새 IOS 버전이 새 명령어를 추가하면 레벨 매핑이 어긋날 수 있습니다.
- 실수로 자기 자신을 락아웃시키기 쉽습니다. 변경 전 반드시 콘솔 접근 경로를 확보하고, 현재 세션과 별개의 세션으로 검증하세요.
- 복잡한 명령별 인가가 필요하다면 로컬 권한 레벨보다 TACACS+ 명령 인가(cmd set) 가 훨씬 유연합니다. 사용자·그룹별 화이트리스트/블랙리스트를 TACACS+ 서버에서 중앙 관리할 수 있습니다.
2. 결론
- Cisco IOS는 16개(0~15) 권한 레벨을 제공하며, 기본적으로 0, 1, 15만 의미 있게 쓰입니다.
privilege <mode> level <N> <command>명령으로 명령을 레벨 간 이동할 수 있습니다.username <name> privilege <N>+ AAAauthorization구성으로 로그인 시 해당 레벨로 자동 진입시킬 수 있습니다.- 외부 서버 없이도 구현 가능하지만, 세밀한 명령 통제가 필요하면 TACACS+로 넘어가는 것이 현실적입니다.
출처: networklessons.com - AAA Local Command Authorization
태그: IOS, Security