반응형

출처: http://egloos.zum.com/gunsystems/v/6782049

 

라우터에서의 로깅(logging) 설정하는 방법

 

 

[시큐리티 팁!팁!팁!] 라우터에서의 로깅(logging) 설정하는 방법







일반적인 서버에서는 다양한 애플리케이션을 활용해 시스템의 상태나 로그 정보 등을 모니터링할 수 있다. 그러나 라우터나 스위치의 경우 별도의 하드 디스크가 있는 일부 제품을 제외하고는 "라우터에는 로그가 남지 않는다"라고 잘못 알고 있는 경우가 있다.


홍석범 | 오늘과 내일 차장



라우터에서도 로그를 남기도록 설정하면 시스템 에러나 네트워크와 인터페이스의 상태변화, 로그인 실패 등에 대한 로그를 남길 수 있다. 이런 라우터 로그는 문제를 분석하거나 해결할 때 중요한 역할을 하는 만큼, 네트워크 장비인 라우터에서도 로깅을 남기도록 설정해 체계적으로 관리하는 것이 중요하다. 아울러 로깅을 남길 때는 저장되는 시간도 중요하다. 로깅이 남겨지더라도 시간이 전혀 맞지 않는다면 문제 해결에 혼선을 빚고 그만큼 속도가 느려지기 때문이다.

기본적으로 라우터에서 제공되는 로깅 기법은 다음과 같은 것들이 있다.

·콘솔 로깅(Console logging) 기법

로그 메시지가 콘솔 메시지에 출력되는 경우로, 콘솔에만 출력될 뿐 파일 등에는 저장되지 않는다. 주로 네트워크 작업을 할 때 콘솔에서 많이 사용하는데, 작업하는 도중 계속적으로 메시지가 출력되면 불편을 초래하는 경우가 있으므로 특별한 이유가 없다면 비활성화하는 것이 좋다. 이를 위해서는 config 모드에서 'no logging console'을 입력하면 된다. 만약 콘솔에서 아주 심각한 정도의 로그를 보고자 한다면 'logging console critical'과 같이 실행하면 된다.

·터미널 라인 로깅(Terminal line logging) 기법

앞에서 살펴본 콘솔이 아니라 텔넷이나 SSH 등 원격으로 접속했을 경우 로그인한 사용자에게 출력되는 로그로, 역시 원격 작업에 불편을 초래하는 경우가 있으므로 특별한 이유가 없다면 비활성화하는 것이 좋다. 이를 위해서는 config 모드에서 'terminal no monitor'를 입력하면 된다.

·버퍼 로깅(Buffered logging) 기법

기본적으로 라우터에서는 로그를 파일에 저장하지 않고 버퍼 메모리에 저장한다. 그러나 메모리가 한정돼 있어 할당된 메모리의 양을 초과해 로그가 저장될 경우에는 이전의 버퍼에 있는 데이터부터 지우고 새롭게 로그를 저장한다. 만약 짧은 시간에 많은 로그가 남았다면 중요한 로그를 확인하지 못할 수도 있다. 메모리(RAM)에 저장된 로그는 'show logging'으로 확인할 수 있고, 'clear logging'을 실행하거나 RAM에 저장된 로그는 재부팅하면 사라지게 된다.

·SNMP 트랩 로깅(SNMP trap logging) 기법

SNMP 트랩 메시지를 통해 모니터링하는 방법으로 로그 정보를 외부의 SNMP 서버에 전송하는 방법이다.

·ACL 침입 로깅(ACL violation logging) 기법

표준 또는 확장된 액세스 리스트를 설정할 때 특정한 룰에 매칭됐을 경우 해당하는 패킷 정보를 로그에 남기도록 설정할 수 있는데, 이는 액세스 리스트 룰의 끝에 로그나 로그 인풋을 추가하기만 하면 된다. 로그 인풋은 로그와는 달리 인터페이스 정보도 함께 남기게 되므로 어떤 인터페이스를 통해 로그가 남았는지를 알 수 있다.

·시스로그 로깅(Syslog logging) 기법

라우터에서는 시스로그를 통해 로그 메시지를 리눅스나 윈도우 등 서버의 syslogd 서비스에 전송해 로컬이 아닌 원격지 로그 서버에 저장하도록 할 수 있다. 시스로그에서는 단지 로그 메시지를 받아서 파일에 저장하기만 하면 되는데, 일반적으로 가장 권장하는 방법이다.

지금까지 설명한 로깅 기법들 가운데 버퍼 로깅 기법과 시스로그 로깅 기법이 가장 많이 사용되고 있고 또 권장할만한 방법인데, 두 가지 기법에 대한 실제 설정법에 대해 알아보자. 먼저 공통적으로 해야 할 일은 라우터에서 로깅 기능을 활성화하는 것이다.

Router# config t

Router(config)# logging on

다음은 버퍼에 로그를 남기는 설정을 보여주고 있다. 예제에서는 16K 정도를 버퍼 로그로 할당했는데, 메모리가 크다면 더 설정해도 된다. 그리고 로그에 남을 때 타임스탬프(TimeStamp)를 지정해 관리자가 지정한 형식으로 시간 정보를 남도록 했다.

Router# config t

Router(config)# logging buffered 16000 information

Router(config)# service timestamp log date msec local show-timezone

Router(config)# exit

이후 'show logging'을 실행하면 다음과 같이 생성되는 로그 정보를 확인할 수 있다.

Log Buffer (16000 bytes):

Oct 7 01:27:02.061 KST: %SEC-6-IPACCESSLOGP: list 101 denied tcp 62.112.221.180(56181) -> 192.168.10.240(179), 1 packet

Oct 7 06:44:28.323 KST: %SYS-5-CONFIG_I: Configured from console by noc1 on vty0 (192.168.3.15)

Oct 7 23:48:40.879 KST: %SYS-5-CONFIG_I: Configured from console by noc1 on vty0 (192.168.3.15)

Oct 8 11:08:20.774 KST: %RCMD-4-RSHPORTATTEMPT: Attempted to connect to RSHELL from 23.45.67.8

Oct 8 13:38:08.055 KST: %SYS-5-CONFIG_I: Configured from console by ciscouser on vty0 (192.168.3.15)

다음은 시스로그 로깅의 예다. 시스로그 로깅에서는 로그를 남길 목적지 호스트, 로그의 심각도(severity) 수준, 시스로그 기능(facility)을 각각 지정한다. 일반적으로 로그를 보낼 소스 주소를 별도 지정하지 않을 경우에는 시스로그 서버와 가장 가까운 인터페이스를 사용한다.

Router# config t

Router(config)# logging trap information

Router(config)# logging 14.2.9.6 // 로그를 보낼 시스로그 서버의 IP

Router(config)# logging facility local6

라우터에서 기능(facility)을 local6으로 설정했으므로 리눅스 서버에서 시스로그 설정 파일인 /etc/syslog.conf에서도 다음과 같이 설정한 후 -r 옵션을 추가해 syslogd를 재가동하면 라우터의 로그가 /var/log/routers.log 파일에 저장된다.



local6.* /var/log/routers.log

만약 시스로그 서버에 파이어월이 설정돼 있다면 목적지 포트가 514/udp인 트래픽을 허용해야만 라우터에서 전달되는 메시지를 받아 저장할 수 있다.

그리고 로깅 설정 시 글로벌 config 모드에서 'service sequence-numbers'를 실행하면 로그가 생성될 때 로그마다 순서번호가 할당되도록 해 로그의 무결성을 강화할 수 있다. 다음의 사례에서 'service sequence-numbers'를 실행했을 때 각 줄의 처음에 순서번호가 생성되는 것을 확인할 수 있다.

000510: Oct 8 17:28:47.509 KST: %SYS-5-CONFIG_I: Configured from console by noc1 on vty0 (192.168.10.15)

000511: Oct 8 17:29:08.653 KST: %SYS-5-CONFIG_I: Configured from console by noc1 on vty0 (192.168.10.15)

000512: Oct 8 17:29:10.233 KST: %LINK-3-UPDOWN: Interface Serial9/1/3, changed state to down

000513: Oct 8 17:29:24.121 KST: %SYS-5-CONFIG_I: Configured from console by noc1 on vty0 (192.168.10.15)

로깅을 남길 때 수준을 지정할 수 있다. 수준으로는 긴급(Emergencies), 경고(Alerts), 에러(Errors), 경보(Warnings), 통지(Notifications), 정보(Informational), 디버깅(Debugging) 등을 지정하면 되는데, 통상적으로 정보나 디버깅 정도로 자세하게 남기는 것이 좋다.

한편, 앞서 언급한대로 라우터의 로깅을 설정할 때 중요한 것은 바로 시간설정이다. 먼저 'show clock detail' 명령어를 실행해 현재 시간이나 타임존을 확인하길 바란다.

Router# show clock detail

21:15:03.124 KST Tue Apr 18 2006

만약 시간이나 타임존이 맞지 않다면 다음과 같이 수동으로 설정하도록 한다.

Router# config t

Router(config)# clock timezone KST -9

Router# clock set 17:27:30 18 March 2006

매번 수동으로 시간을 설정하기가 번거롭다면 일정 시간마다 타임 서버에 접속해 시간을 동기화(sync)하도록 설정하는 것도 좋다. 다음과 같이 설정하면 203.248.240.103(time.bora.net)에 접속해 시간을 동기화하게 된다.


Router(config)# ntp server 203.248.240.103



! 네트워크 장치 Logging 을 위한 설정

Switch(config)# logging on

Switch(config)# logging facility local0

Switch(config)# logging 10.10.10.254

Switch(config)# logging trap 7

! Logging 할 메시지 레벨을 선택한다. 기본값은 Level = 5 이다...

DSW1(config)#logging trap ?

<0-7> Logging severity level

alerts Immediate action needed (severity=1)

critical Critical conditions (severity=2)

debugging Debugging messages (severity=7)

emergencies System is unusable (severity=0)

errors Error conditions (severity=3)

informational Informational messages (severity=6)

notifications Normal but significant conditions (severity=5)

warnings Warning conditions (severity=4)

반응형

+ Recent posts