운영체제/Linux

네트워크 기초 정리 :: SNMP와 기본 커뮤니티 스트링의 위험

gamjadori 2026. 9. 22. 11:40
728x90

네트워크 기초 정리 :: SNMP와 기본 커뮤니티 스트링의 위험

SNMP(Simple Network Management Protocol)란
스위치, 라우터, 프린터 같은 네트워크 장비를 원격에서 모니터링하고 관리하기 위한 프로토콜
장비의 상태(트래픽량, CPU 사용률, 온도 등)를 조회하거나, 일부 설정을 원격으로 변경할 수 있게 해줌

왜 필요한가
네트워크 장비가 수십, 수백 대가 되면 하나하나 콘솔에 접속해서 상태를 확인하는 게 비현실적
SNMP를 쓰면 중앙 관리 시스템에서 모든 장비의 상태를 한 번에 조회하고 모니터링 가능

기본 구성 요소
관리 시스템(NMS, Network Management System): 장비들의 상태를 수집하고 보여주는 중앙 서버
에이전트(Agent): 각 네트워크 장비에서 실행되며, 관리 시스템의 요청에 응답하거나 상태 정보를 제공
MIB(Management Information Base): 장비가 제공하는 정보들의 목록을 정의해둔 데이터베이스 구조. “이 장비는 이런 항목들을 조회할 수 있다”는 일종의 사전

동작 방식 (기본 명령)
GET: 관리 시스템이 특정 정보를 요청 (예: 현재 트래픽량이 얼마인지)
SET: 관리 시스템이 장비의 특정 설정값을 변경
TRAP: 장비 쪽에서 이상 상황이 발생하면 관리 시스템에게 먼저 알림을 보냄 (예: 포트가 다운됐을 때)

커뮤니티 스트링(Community String)이란
SNMP 초기 버전(v1, v2c)에서 인증 역할을 하는 일종의 비밀번호
관리 시스템이 장비에 요청을 보낼 때 이 문자열을 같이 보내고, 장비는 이 값이 맞는지만 확인하고 응답
읽기 전용 커뮤니티 스트링은 보통 기본값이 “public”, 쓰기 가능한 건 “private”인 경우가 많음

왜 보안 이슈가 되는가
많은 장비가 이 기본값(“public”, “private”)을 그대로 두고 운영되는 경우가 흔함
SNMP v1/v2c는 통신 자체도 암호화되지 않은 평문이라, 커뮤니티 스트링이 네트워크를 지나가면서 그대로 노출될 수 있음(스니핑 노트에서 다룬 위협이 여기에도 그대로 적용됨)
기본 커뮤니티 스트링이 그대로면, 공격자가 별다른 인증 절차 없이 장비 정보를 조회하거나 심하면 설정까지 변경할 수 있음
장비 정보 자체(네트워크 구성, 라우팅 테이블, 연결된 장비 목록 등)가 노출되면 공격자에게는 훌륭한 정찰(Reconnaissance) 자료가 됨 — MITRE ATT&CK의 정찰 단계와 연결되는 지점

SNMP v3와의 차이
SNMP v3는 이 문제를 보완해서 실제 사용자 인증과 암호화 기능을 추가함
그래서 실무에서는 v1/v2c 대신 v3 사용을 권장하거나, v1/v2c를 쓰더라도 커뮤니티 스트링을 반드시 기본값에서 변경하도록 함

실습: SNMP 정보 노출 점검하기

snmp 도구 설치
sudo apt install snmp snmpd -y


로컬에서 SNMP 서비스 상태 확인
sudo systemctl status snmpd



기본 커뮤니티 스트링으로 조회 시도
snmpwalk -v2c -c public localhost


결과: 커뮤니티 스트링이 기본값 그대로라면, 시스템 정보(호스트명, 가동시간, 네트워크 인터페이스 목록 등)가 인증 없이 그대로 조회됨

커뮤니티 스트링 변경해서 재확인
sudo vi /etc/snmp/snmpd.conf
rocommunity public 부분을 rocommunity 임의의문자열 처럼 변경