SNMP
IT위키
더 많은 작업
(간이 네트워크 관리 프로토콜에서 넘어옴)
- 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
- SNMPv1과 v2는 보안성을 고려하지 않고 설계되었다. 이를 보완하여 보안성을 강화한 것이 v3
- SNMPv3은 다양한 공격 위협에 대응하기 위해 보안매개변수(msgSecurityParameter)를 사용한다.
| 필 드 | 설 명 |
|---|---|
| msgAuthoritativeEngineID | 재전송 공격 방지 |
| msgAthoritativeEngineBoots | |
| msgAthoritativeEngineTime | |
| msgUserName | 메시지 위·변조 방지. 메시지 인증 |
| msgAuthenticationParameter | |
| msgPrivacyParameters | 스니핑 방지, 메세지 암호화(DES-CBC 지원) |
