531. SNMPv1, v2c (Community String 노출 단점)
핵심 인사이트: 초창기 SNMP는 통신은 잘 됐지만 보안이 끔찍했다. 매니저와 에이전트가 "우린 같은 소속이야"라고 증명하는 암호(Community String)가 평문(Plaintext)으로 둥둥 떠다녀서, 해커가 중간에서 가로채면 회사의 모든 라우터 설정을 맘대로 바꿀 수 있는 재앙이 일어난다.
Ⅰ. SNMP 버전의 진화
SNMP는 보안 기능을 중심으로 진화해 왔습니다. 가장 초창기 버전인 v1과, 성능을 개선했지만 보안은 여전히 취약했던 v2c가 오랫동안 사용되었습니다.
Ⅱ. 커뮤니티 스트링 (Community String)의 개념
SNMPv1과 v2c에서 매니저(NMS)와 에이전트(라우터) 간에 데이터를 주고받을 때 사용하는 일종의 비밀번호(Password) 역할을 하는 문자열입니다. 에이전트와 매니저의 커뮤니티 스트링이 일치해야만 통신이 허락됩니다.
실무에서는 권한에 따라 2가지를 나누어 설정합니다.
- RO (Read-Only): 정보 조회(Get)만 가능한 암호 (주로
public을 기본값으로 많이 씀) - RW (Read-Write): 설정 변경(Set)까지 가능한 마스터 암호 (주로
private을 기본값으로 많이 씀)
Ⅲ. SNMPv1과 v2c의 특징 및 한계
1. SNMPv1
- 최초의 표준. 너무 기본적이라 에러 처리가 미흡하고, 대용량 데이터를 가져올 때 하나하나씩 가져와야 해서 매우 느립니다.
- 치명적 단점: 커뮤니티 스트링이 평문(Cleartext) 으로 전송됩니다. 와이어샤크(Wireshark) 같은 스니핑 툴로 떠보면 비밀번호가 그대로 노출됩니다.
2. SNMPv2c
- 성능 개선:
GetBulk라는 명령어가 추가되어, 100개의 데이터를 달라고 할 때 1번씩 100번 묻지 않고 한 번에 왕창 긁어올 수 있어 통신 효율이 극적으로 좋아졌습니다. - v2c의 'c': 'c'는 Community-based의 약자입니다. 즉, 성능은 좋아졌지만 보안은 v1과 똑같이 평문 커뮤니티 스트링을 사용한다는 뼈아픈 한계를 가집니다.
Ⅳ. 보안 취약점 대책
v1, v2c를 쓸 때 public이나 private 같은 디폴트(Default) 커뮤니티 스트링을 그대로 방치하면, 해커가 라우터를 공장 초기화하거나 인터페이스를 다 다운시킬 수 있습니다. 반드시 유추할 수 없는 복잡한 문자열로 변경하고, 특정 NMS(매니저)의 IP 주소에서만 SNMP 접근을 허용하도록 방화벽(ACL) 을 걸어두어야 합니다.
📢 섹션 요약 비유: 클럽(라우터)에 들어갈 때 기도(에이전트)가 "암호가 뭐냐?"라고 묻습니다. 내가 "열려라 참깨(Community String)"라고 동네가 떠나가라 큰 소리(평문 전송)로 대답하면 기도가 문을 열어줍니다. 문제는 옆에서 숨어 듣고 있던 도둑(해커)도 그 암호를 외워서 밤에 클럽 금고를 다 털어간다는 것입니다.