본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Simple Network Management Protocol
  • 네트워크 관리를 위해 시스템이나 네트워크 장비를 설정하고 모니터링할 수 있는 프로토콜
  • 라우터, 스위치, 서버, 워크스테이션, 프린터, 모뎀 랙 등의 네트워크 장비에서 지원한다.
  • 관리의 편의성을 가져다 주지만 보안성이 취약하여 주의가 요구된다.

  • MIB(Management Information Base) : 관리되어야 할 대상 객체(자원)을 모아 놓은 집합체
  • SMI(Structure Management Information) : MIB를 정의하기 위한 일반적인 구조
  • ASN.1(Abstract Syntax Notation) : 데이터의 속성을 정의하기 위한 문법. 일종의 언어
  • BER(Basic Encoding Rules) : ASN.1에서 사용되는 인코딩 룰
  • UDP/161
    • get-request
    • get-response
    • get-next-request
    • set-request
  • UDP/162
    • trap
메시지(SNMPv1 PDU) 보내는 쪽 → 받는 쪽 하는 일
GetRequest 매니저 → 에이전트 지정한 변수(MIB 객체)의 값을 요청한다
GetNextRequest 매니저 → 에이전트 지정한 변수의 다음 변수 값을 요청한다. MIB 트리를 차례로 훑을 때 쓴다
SetRequest 매니저 → 에이전트 변수 값을 바꾸라고 요청한다
GetResponse 에이전트 → 매니저 위 요청에 대한 응답으로 변수 값을 돌려준다
Trap 에이전트 → 매니저 장비에 특정 사건(링크 다운, 재시작 등)이 생기면 에이전트가 요청 없이 먼저 알린다
  • 요청·응답은 UDP 161, 트랩은 매니저의 UDP 162 로 간다
  • 트랩은 에이전트가 매니저에게 보내는 메시지다. 매니저가 에이전트에게 사건을 알리는 데 쓰지 않는다
  • SNMPv2 에서 GetBulkRequest 와 InformRequest 가 더해졌다
  • Community String은 데몬과 클라이언트간 인증을 위한 일종의 패스워드 값이다.
  • 기본적으로 public 또는 private 라는 단순한 값으로 되어 있다.
  • SNMP Version 3부터는 암호화를 지원한다.

SNMP 를 쓸 때 장비마다 다음을 적용한다.

설정 이유
커뮤니티 스트링을 기본값(public, private)이 아닌 유추하기 어려운 값으로 바꾼다 기본값을 그대로 두면 누구나 장비 정보를 조회하거나 설정을 바꿀 수 있다
암호화와 인증을 지원하는 SNMPv3를 쓴다 v1·v2c 는 커뮤니티 스트링이 평문으로 오가 스니핑에 노출된다
ACL로 SNMP 요청을 받을 관리 호스트(NMS)를 제한한다 허용한 관리 서버 외에는 UDP 161 에 접근하지 못하게 한다
RW(Read-Write) 커뮤니티는 지우고 가급적 RO(Read-Only)만 둔다 쓰기 권한이 있으면 set-request 로 장비 설정을 바꿀 수 있다
  • 쓰지 않는다면 SNMP 서비스 자체를 끈다. 시스코 라우터는 전역 설정 모드에서 no snmp-server 로 SNMP 에이전트를 끈다(설정 명령 앞에 no 를 붙이면 그 설정을 지운다).
Router# configure terminal
Router(config)# no snmp-server
  • 서버에서는 snmpd 서비스를 중지하고 자동 시작을 해제한다
  • 트랩(UDP 162)을 받을 대상도 지정한 관리 서버로만 보낸다.
  • 관련 문서: ACL, 라우터 보안

SNMPv3의 보안성

편집 원본 편집
  • SNMPv1과 v2는 보안성을 고려하지 않고 설계되었다. 이를 보완하여 보안성을 강화한 것이 v3
  • SNMPv3은 다양한 공격 위협에 대응하기 위해 보안매개변수(msgSecurityParameter)를 사용한다.
필 드 설 명
msgAuthoritativeEngineID 재전송 공격 방지
msgAthoritativeEngineBoots
msgAthoritativeEngineTime
msgUserName 메시지 위·변조 방지. 메시지 인증
msgAuthenticationParameter
msgPrivacyParameters 스니핑 방지, 메세지 암호화(DES-CBC 지원)

다른 프로토콜과 구분

편집 원본 편집
기능 담당 프로토콜
네트워크 장비의 관리 및 감시(상태 조회·설정 변경·이벤트 통보) SNMP
대규모 통신망의 계층적 관리 CMIP (OSI 기반)
전송 중 오류 보고, 호스트 간 연결성 점검(ping) ICMP
네트워크 혼잡 제어 TCP
  • SNMP 는 TCP/IP 환경의 중소 규모 망관리를 위해 단순하게 만든 프로토콜이다. 관리자(NMS)가 장비의 에이전트에 get·set 으로 묻고 바꾸며, 장비는 이상이 생기면 trap 으로 먼저 알린다.
  • 네트워크 관리 시스템(NMS:Network Management System)에서 주로 쓰인다.
  • 대표적인 공개 네트워크 모니터링 툴인 MRTG(Multi Router Traffic Grapher)이 사용하는 프토로콜이 SNMP이다.