SNMP
간이 망 관리 프로토콜(Simple Network Management Protocol, SNMP)은 IP 네트워크 상의 장치로부터 정보를 수집 및 관리하며, 또한 정보를 수정하여 장치의 동작을 변경하는 데에 사용되는 인터넷 표준 프로토콜이다. SNMP를 지원하는 대표적인 장치에는 라우터, 스위치, 서버, 워크스테이션, 프린터, 모뎀 랙 등이 포함된다. – 출처 : 위키 백과 –
최근에는 IoT 장치도 포함.
구성 요소
- NMS : SNMP를 사용하여 네트워크 장치를 관리하고 모니터링하는 네트워크 관리자
- SNMP Manager : agent 에 필요한 정보를 요청
- SNMP Agent : 시스템의 정보나 네트워크 정보등을 수집하여 MIB 형태로 보관
- UDP 161번 포트 사용
동작 방식
[출처: https://getchan.github.io/til/snmp/]
MIB
Management Information Base TCP/IP를 기초로한 관리 모델에서 각 피관리 대상장비의 관리 되어질 요소들에
대한 정보를 포함하고 있는 데이터 베이스. 정보값을 문자로 표현.
이때 관리되어지고 있는 각 정보들을 오브젝트라고 하며 MIB은 이러한 오브젝트들의 계층적 트리구조로 이루어져 있다.
OID
Object ID(OID) 객체 아이디.
OID는 MIB내 특정한 정보 자원을 숫자로 표기한 집합체
ex) Cisco CPU Utilization : 1.3.6.1.4.1.9.2.1.58
Snmpwalk?
SNMP 프로토콜을 사용하여 대상 시스템에 쿼리를 실행하여 SNMP 데이터를 가져오는 명령어.
형식 : snmpwalk -v2c -c public 192.168.20.200 OID
Snmpwalk Example
Linux 서버에서 대상 시스템의 특정 OID 값을 가져오는 예제 입니다.
Paloalto Firewall CPU
팔로알토 방화벽 CPU 사용량 / OID = .1.3.6.1.2.1.25.3.3.1.2.2
snmpwalk -v 2c -c “communitystr” x.2x.1x.1x .1.3.6.1.2.1.25.3.3.1.2.2 | awk -F “:” ‘{print $2}’ | awk -F ” ” ‘{print $1}’
Check Point Firewall Session
체크포인트 방화벽 세션수 / OID = .1.3.6.1.4.1.2620.1.1.25.3
snmpwalk -v 2c -c “communitystr” 10.xx.2x.x .1.3.6.1.4.1.2620.1.1.25.3 | awk -F “:” ‘{print $2}’ | awk -F ” ” ‘{print $1}’ | awk -F ” ” ‘{print $1}’
Fortinet Firewall Network Traffic (Inbound)
포티넷 방화벽 인바운드 트래픽 / OID
snmpwalk -v 2c -c "communitySTR" IPADDRESS .1.3.6.1.2.1.31.1.1.1.6 | awk -F ":" '{print $2}' | awk -F " "
정보
사용해봤던 모니터링 시스템 & 모니터링 시스템의 진화? 생각나는대로….
사용해본 Legacy 모니터링 Tool
MRTG, Cacti, Zabbix, Nagios, librenms, Zenoss 등…
상용 모니터링 Tool
Zenius(제니우스), Nkia(엔키아)
모니터링 시스템의 진화 (내생각)
SNMP 정보를 RDBMS (mysql 등)에 저장하는 방식이었다면, 최근 트랜드는 TSDB(시계열 데이터베이스 / time series database)에 정보를 저장하는 방식
과거에는 CPU 사용량 5분 평균값을 구해 x분마다 DB에 저장하는 방식 최근에는 CPU 사용량을 NRT(Near Real Time) 방식으로 시계열 DB에 저장 대표적인 시계열 DB에는 Elasticsearch, InfluxDB 등이 있다.
구성 사례 비교
Legacy : Apache + PHP+ Mysql + SNMP 데몬 + Cacti or Nagios
요즘 : Grafana(Node.js) + InfluxDB + Telegraf Kibana(Node.js) + Elasticsearch + Filebeat
보안 이슈
UDP 161번 포트를 외부에 ANY로 오픈하게 되면 SNMP 취약점 공격 대상이 될수있음. 부득이하게 오픈해야할 경우 snmp version 2나 version 3 방식을 사용해야함