SNMP ?
- Simple Network Management Protocol
- 간이 망 관리 프로토콜
- IP 기반 네트워크 상의 각 호스트로부터 정보를 수집 및 관리
- 정보를 수정하여 장치의 동작을 변경하는 데에 사용되는 인터넷 표준 프로토콜
- 시스템이나 네트워크 관리자로 하여금 원격으로 네트워크 장비를 모니터링하고 환경설정 등의 운영을 가능하도록 하는 네트워크 관리 프로토콜
- 관리의 편의성을 제공하지만 취약점이 존재하여 DoS, 버퍼 오버플로우, 비인가 접속 등 문제 발생
- 관리 시스템 Manager, 관리 대상 Agent
- 네트워크 관리를 위한 목적으로 주로 서버나 네트워크 장비에서 SNMP를 설정한 MRGT 프로그램을 이용하여 트래픽 관리
- MRGT(Multiple Router Traffic Grapher) : SNMP 기반의 장비 모니터링 프로그램, 네트워크 트래픽 사용량 모니터링, 벤더에서 제공하는 SNMP MIB 값을 사용하여 다양한 정보 수집
- OSI 7계층 Application 계층 프로토콜, 메시지는 단순히 요청과 응답 형식의 프로토콜에 의해 교환되기 때문에 전송계층 프로토콜은 UDP 프로토콜 사용
- 지원하는 장치 : 라우터, 스위치, 서버, 워크스테이션, 프린터, 모뎀 랙, etc.
SNMP 동작방식
-
Manager(관리시스템)는 162/UDP 포트 사용, Agent는 161/UDP 포트 사용
- Manager : Agent에 필요한 정보 요청
- Agent : Agent가 설치된 시스템의 정보나 네트워크 정보 등을 수집하여 MIB 형태로 보관, Manager에 전달
- MIB : Management Information Base, Agent에서 SNMP를 통해 네트워크를 관리할 때 관리되어야 할 특정한 정보나 자원을 객체, 해당 객체들을 모아놓은 집합체
-
Manager와 Agent간에 통신하기 위해 최소 3가지 사항이 일치되어야 한다.
- SNMP 버전
- Community String
- SNMP Manager와 Agent가 데이터 교환하기 전에 인증을 위해 사용하는 일종의 패스워드, 초기값으로 public or private 설정.
- PDU(Protocol Data Unit)
-
PDU Type
- Get Request : Manager가 Agent로 원하는 객체의 특정 정보 요청
- Get Next Request : Manager가 Agent로 이미 요청한 정보의 다음 정보 요청
- Set Request : Manager가 Agent로 특정한 값을 설정하기 위하여 사용
- Get Response : Agent가 Manager에 해당 변수 값 전송
- Trap : Agent가 Manage에 어떤 정보를 비동기적으로 알리기 위하여 사용. notify라고 하며, call-back 함수와 같은 역할
-
SNMP 데이터 수집 방식
- Polling 방식 : Manager가 Agent에게 정보를 요청하면 응답해주는 방식으로 Agent 가 161/UDP port 사용
- Event Reporting 방식 : Agent가 이벤트 발생 시 Manager에게 알리는 방식으로 Manager가 162/UDP port 사용
Manager : 실제 장비 정보를 수집하는 HW/SW로 Network Management System(NMS)라 부름. NMS는 SNMP를 활용하여 네트워크 장비의 정보를 상시 수집하고 장애 발생 시 이를 사용자에게 알리는 소프트웨어
SNMP Version
- SNMPv1, SNMPv2, SNMPv3 등 버전이 바뀌며 보안을 강화하기 위한 수단이 추가
- SNMP 정보 자체가 아닌 NMS와 Agent 간 인증을 위한 값, Community String의 보안 취약성 강화
- SNMPv1
- 최초 버전
- community string을 활용하여 NMS와 Agent 간 인증 실현
- community string이 평문으로 전달되기 때문에 보안에 취약, 장비 정보 값 수집에 있어 대량 수집 요청이 불가능
- 사용X
- SNMPv2 / SNMPv2c
- v1에서의 보안취약점과 장비 정보 값 대량 수집 요청 기능 등이 추가된 버전
- 보안 취약점이란 community string이 평문으로 전달되는 문제점을 말하며 v2에서는 이를 암호화하여 전송하도록 변경
- 사용하기 너무 복잡하여 이를 community string을 전달하는 것으로 다시 원상복구된 버전이 v2c
- SNMPv3
- v2에서 보안 기능을 추가로 강화
- 장비 정보 값을 얻기 위해 접근 시 단순 community string을 제공하는 것이 아닌 User0name과 Password(=community string)를 제공
- Password는 인증 값과 암호 값으로 구성되며 2개 모두를 입력해야 함.
- 암호값은 암호화 알고리즘(AES, 3-DES)에 의해 암호화되는 비밀번호이며, 인증 값은 해쉬 알고리즘(MD5, SHA)을 적용하여 위변조 여부를 확인