양호: SNMP 커뮤니티 스트링이 기본값(public, private, admin 등)이 아닌 복잡한 값으로 설정된 경우
취약: 기본 커뮤니티 스트링(public, private)이 사용 중인 경우
경계 케이스 (Edge Case) 처리 방법
상황
판단 기준
설명
SNMP 서비스 설치되지 않음
양호
서비스 미사용
커뮤니티 스트링 “public” 사용
취약
기본값으로 즉시 변경 필요
커뮤니티 스트링 “private” 사용
취약
기본값으로 즉시 변경 필요
복잡한 문자열 사용 (영+숫+특)
양호
보안 강화
쓰기 권한 커뮤니티 존재
주의
읽기 전용 권장
SNMP v3 사용
양호
인증/암호화 지원
권장 설정값
환경
항목
권장 설정
비고
커뮤니티 스트링
읽기 전용
영문+숫자+특수문자 조합 12자 이상
예: SnMP_R0!d2024
커뮤니티 스트링
쓰기 권한
권장하지 않음
필수시 더 복잡하게
SNMP 버전
프로토콜 버전
SNMP v3
인증/암호화 지원
서비스 상태
SNMP Service
필요 시만 실행
불필요시 중지
2. 점검 방법
Windows SNMP 서비스 점검
SNMP 커뮤니티 스트링은 SNMP 통신의 비밀번호와 같습니다. 기본값이 사용되면 시스템 정보가 무단으로 노출될 수 있습니다.
1
2
# SNMP 커뮤니티 스트링 레지스트리 확인Get-ItemProperty"HKLM:\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ValidCommunities"-ErrorActionSilentlyContinue
양호 출력 예시:
1
2
3
SecureString123! : 4
또는
(속성 없음 - SNMP 미사용)
취약 출력 예시:
1
2
public : 4
private : 8
1
2
# SNMP 서비스 상태 확인
sc query SNMP
1
2
# SNMP 서비스 설치 여부 확인Get-Service-Name"SNMP"-ErrorActionSilentlyContinue
1
2
# SNMP 포트 확인
netstat -an | findstr ":161"
3. 조치 방법
Windows 서버 설정
커뮤니티 스트링 변경 (레지스트리)
1
2
3
4
5
6
# 기존 public 커뮤니티 제거Remove-ItemProperty-Path"HKLM:\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ValidCommunities"-Name"public"-ErrorActionSilentlyContinueRemove-ItemProperty-Path"HKLM:\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ValidCommunities"-Name"private"-ErrorActionSilentlyContinue# 새로운 복잡한 커뮤니티 스트링 추가 (읽기 전용: 4)Set-ItemProperty-Path"HKLM:\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ValidCommunities"-Name"SecureSnMP2024!"-Value4-TypeDWord
SNMP 서비스 속성 설정 (GUI)
1
2
3
4
5
6
7
1. 시작 > 실행 > services.msc
2. SNMP Service 속성 > [보안] 탭
3. 기존의 'public', 'private' 등 선택 > [제거]
4. [추가] 클릭
- 커뮤니티 권한: 읽기 전용
- 커뮤니티 이름: 복잡한 문자열 입력 (예: SnMP_R0!d2024)
5. [확인]
SNMP 서비스 미사용 시 비활성화
1
2
3
4
5
6
7
8
# SNMP 서비스 중지Stop-Service-Name"SNMP"-Force# 시작 유형 변경Set-Service-Name"SNMP"-StartupTypeDisabled# 방화벽 규칙 차단Disable-NetFirewallRule-DisplayGroup"SNMP Server"