본문 바로가기

Network/그 외

Cisco syslog Configuration

오랜만에 네트워크 관련 주제로 글을 씁니다.

어떤 장비를 설치하고 나면 무슨 일이 발생하는지 로그를 남기는데요.

해당 장비 자체적으로 로그를 관리하기도 하지만, 용량의 한계 및 관리의 편의성 때문에 로그만 따로 저장할 수 있는 로그서버를 구축합니다.


Cisco 장비에서 log 관련 설정 하는 방법 및 해당 명령어에 대한 설명을 정리해보도록 하겠습니다.

해당 설정은 간단히 로그를 받을 서버의 IP 만 정의해 주면 그때부터 장비에서 로그 발생 시 해당 서버로 전달하도록 되어 있습니다. (UDP 514(일반적 기준) 포트)


2016:12:14 10:10:28


logging on 명령은 log 기능을 enable 시키겠다는 명령이며, Default 가 on 인 상태입니다.

logging 뒤에 Server 의 ip 주소만을 입력하고 저장하였습니다.


그러면 그때부터 해당 장비의 로그가 Syslog Server 로 전달됩니다.

2016:12:14 10:12:29

그러면 위에 보시는 것처럼 해당 로그서버에서 바로 log 가 들어오는 것을 확인 가능합니다.


여기서 알 수 있는 내용이 몇 가지 있는데요.


1. 제일 앞에 나오는 날짜 및 시간은 syslog Server 기준의 시간입니다.

2. 3번째 탭(Priority) 에 나오는 Local7.Notice 에서 facility 의 Default 값이 Local7 인 것을 알 수 있습니다.

    - facility 에 대한 내용은 밑에서 다시 다루도록 하겠습니다.

3. 4번째 탭(Hostname) 에는 로그를 발생시킨 해당 장비의 IP Address 가 나옵니다.

4. Message 탭에는 해당 로그가 찍힙니다.


단순히 "logging [로그서버ip]" 를 입력해 줌으로써 로그를 서버로 전달할 수 있습니다.

이렇게 간단히 끝내면 좋겠지만, Cisco 장비의 log 관련 설정에는 몇 가지 옵션을 지정할 수 있습니다.


번째는 심각도 수준에 따라 로그를 전달할 수 있습니다. 

logging trap [level keyword]


Level Keyword

Level

Description

Syslog Definition

emergencies

0

System unstable

LOG_EMERG

alerts

1

Immediate action needed

LOG_ALERT

critical

2

Critical conditions

LOG_CRIT

errors

3

Error conditions

LOG_ERR

warnings

4

Warning conditions

LOG_WARNING

notifications

5

Normal but significant condition

LOG_NOTICE

informational

6

Informational messages only

LOG_INFO

debugging

7

Debugging messages

LOG_DEBUG

심각도 수준은 낮은 숫자로 갈수록 장비에 위험하다는 뜻이고,

높은 숫자의 Level 낮은 숫자의 내용을 모두 포함(include)합니다.

이 말은 곧 "logging trap " 의 level  을 emergencies(0) 으로 설정할 경우 해당 장비에 치명적인 장애 발생 시에만 로그를 전달하고, 

그 아래에 해당하는 Level 의 로그(1~7)는 발생되더라도 로그서버로 전달하지 않는다는 뜻입니다.

Default  는 "informational(6) 입니다.

Debugging(7) 의 경우 장비에서 발생되는 모든 log 를 다 전달하므로 CPU 에 부하를 줄 수 있어, 주의를 요합니다.


번째는 facility 라는 Option 인데요.

이는 로그서버에서 해당 장비를 구분하기 위한 구분자 역할을 합니다.

2016:12:14 10:29:01


다음 영한사전에서 그 뜻을 살펴보면, 시설,설비,재능 이러는 여러가지 뜻을 가지고 있습니다.

syslog 에서 facility 는 "설비" 라는 뜻으로 해석하는 게 제일 맞지 않나 생각해 봅니다.

2016:12:14 10:31:38


Cisco 장비에서 "logging facility" 뒤에 option 내용을 살펴보면 위 그림처럼 여러가지 많은 내용을 볼 수 있습니다.

syslog  가 표준 Protocol 인데다, UNIX 계열에서 시작된 거라 다른 장비에서도 이와 유사한 내용을 갖고 있습니다.

  • Syslog 메세지의 Facility의 각 숫자가 의미하는 바는 다음과 같습니다.
    • 0 kernel messages
    • 1 user-level messages
    • 2 mail system
    • 3 system daemons
    • 4 security/authorization messages
    • 5 messages generated internally by syslogd
    • 6 line printer subsystem
    • 7 network news subsystem
    • 8 UUCP subsystem
    • 9 clock daemon
    • 10 security/authorization messages
    • 11 FTP daemon
    • 12 NTP subsystem
    • 13 log audit
    • 14 log alert
    • 15 clock daemon
    • 16 local use 0 (local0)
    • 17 local use 1 (local1)
    • 18 local use 2 (local2)
    • 19 local use 3 (local3)
    • 20 local use 4 (local4)
    • 21 local use 5 (local5)
    • 22 local use 6 (local6)
    • 23 local use 7 (local7)

일반적으로 local0 ~ 7 까지를 네트워크 장비에서 사용을 하는데요.

자칫 trap 에 나오는 level0~7 과 숫자가 같다보니 헷갈리는 경우가 많습니다.

저 역시, facility 와 trap 이 동일하다고 생각했었거든요.


facility 는 많은 장비로부터 로그를 받는 로그서버에서 해당 로그에 대한 출처를 좀 더 명확히 하고, 

특정 로그를 그룹핑하기 위한 구분자 역할을 위해 사용되어 집니다.

2016:12:14 10:41:22

네트워크 장비에서 facility Option 을 위와 같이 이것저것 변경해보면 

아래와 같이 syslog Server 에서 변경된 값(Priority)으로 로그가 기록됩니다.

2016:12:14 10:40:23

앞서 local0 ~ 7 을 네트워크 장비에서 일반적으로 사용한다고 했는데요.

여기에 대한 명확한 기준은 저도 잘 모르겠습니다만,

보통 국가기관에서 진행하는 보안감사의 지침을 보면, Cisco 장비는 권장사항이 대부분 "local6" 으로 권고하고 있습니다.


 번째 Option 은 source-interface 입니다.

: 이는 PC와 달리 한 장비에 많은 IP 를 가지고 있는 네트워크 장비의 특성 상, 로그서버에 어떤 IP 를 가지고 기록이 될지를 정하는 기준이 됩니다.

처음에 저는 테스트를 위해 L3스위치의 vlan1 interface 에 ip 를 192.168.200.200 으로 설정하여 log 를 발생시켰습니다.

2016:12:14 10:48:57

그리고 현재 살아있는 interface 가 vlan1 밖에 없기 때문에, 

Syslog Server 에서도 당연히 vlan 1의 ip 인 192.168.200.200으로 Log 가 전달되었습니다.


하지만 장비의 IP 가 하나인 경우는 L2 스위치의 경우에나 가능하지,

백본급이나 라우터 장비들은 여러개의 Routed Port 및 SVI 에 많은 IP 를 가지고 있습니다.

그래서 실제 Syslog Server 에 어떤 IP 로 Log가 찍히게 될런지 단정하기가 쉽지 않습니다.


TEST 를 위해 아래와 같이 Loopback IP 를 넣고 logging source-interface 를 Loopback Interface 로 설정하였습니다.

2016:12:14 10:54:33

2016:12:14 10:55:02

그러면 로그서버에서 192.168.200.200 으로 찍히던 로그가 해당 장비의 Lo0 Interface의 IP 인 10.10.10.10 으로 전달됩니다.

2016:12:14 10:56:43

여기까지가 대략적인 Cisco 장비에서의 Logging 과 관련한 설정이구요.

추가적으로 한 가지 더 알려드리자면, syslog 와 상관없이 장비에서 Log 발생 시간을 장비의 uptime 으로 지정할지,

현재 시간으로 기록을 할지에 대한 부분도 함께 설정을 해 놓는 게 좋습니다.


확인을 위해 Service Timestaps 를 Default 로 바꿔 보았습니다.

2016:12:14 11:00:34


그랬더니, 아예 service timestamps 앞에 no 가 들어가버리네요.

로그서버에서는 아래에서 보시는 것처럼 로그의 발생횟수인 44, 45 로 찍히네요.

2016:12:14 11:02:46


다시 timestamps 설정을 아래와 같이 변경하였습니다.

2016:12:14 11:01:20


로그서버에서도 아래와 같이 현재시간으로 로그가 남게 됩니다.

2016:12:14 11:04:24


장황하게 설명을 했는데요.

일반적으로 많이 사용하는 syslog 설정은 다음과 같다고 보시면 됩니다.

2016:12:14 11:07:46

service timestamps debug datetime localtime show-timezone

service timestamps log datetime localtime show-timezone

logging on

logging 192.168.200.200

logging trap informational

logging facility local6

logging source-interface lo0



*. 이 게시글에 사용된 장비는 Cisco WS-C3560-48PS(12.2(25)SEE3 이며, Syslog Server 는 Kiwi Syslog Service manager(Ver.9.5 Trial) 를 사용하였습니다.

 Cisco 장비의 Default 설정값은 장비의 모델 및 IOS Version 에 따라 상이할 수 있습니다.


감사합니다.



  • 안녕하세요 글 잘보고 갑니다. 모든 스위치 로그를 관리하기 위하여 로그서버(Centos6.7)에 보낼려고합니다. 스위치 관리용 IP가 1.251.43.102 , 로그서버 IP가 39.116.31.104입니다. 로그서버는 1.251.43.102 스위치 하단에 있습니다. 해당 스위치에서 명령어 셋팅을 하였는데 서버에 로그를 전송하지 못하고 있습니다. 제가 셋팅을 잘못한건지.. 아니면 어떤 다른 문제가 있는지 여쭈어봅니다.