윈도우 SNMP 서비스를 이용하면 디스크·CPU·메모리와 네트워크 상태를 중앙 관리 시스템에서 모니터링할 수 있다. SNMP 서비스를 설치한 뒤 에이전트 정보와 트랩 대상, 커뮤니티 이름과 읽기 전용 권한, 허용 호스트를 설정하는 방법을 설명한다. UDP 161·162 포트와 방화벽 제한, SNMPv1·v2c의 비암호화 특성과 WinRM 대안도 함께 알아본다.
윈도우 시스템 모니터링의 필요성과 SNMP
일상적으로 껐다 켰다를 반복하는 개인 PC나, 여차하면 재시작해도 상관없는 서버는 지속적인 모니터링의 필요성이 비교적 낮다. 하지만 윈도우 OS를 기반으로 미션 크리티컬한 임무를 수행하는 서버들도 많이 존재한다.
서버의 수가 많지 않다면 관리자가 하루에 두세 번 정도 확인해 준다 쳐도 이 역시 쉽지는 않은 일이며, 서버 수가 늘어나면 사람이 일일이 상태를 확인하는 데에는 금방 한계에 다다르게 된다.
이럴 때 사용하면 좋은 것이 바로 SNMP다. SNMP라고 하면 보통 네트워크 장비나 랜카드의 트래픽 데이터를 전달받아 모니터링하는 용도 정도를 떠올리겠지만, 윈도우 시스템에서도 SNMP를 지원하며 다음과 같은 다양한 정보를 전달받을 수 있다.
- 현재 디스크의 전체 용량과 사용 중인 용량
- 전체 또는 각 논리 CPU의 사용률
- 가상 및 물리 메모리의 용량과 사용 중인 용량
- 윈도우의 버전과 설치 경로
- 그 밖의 여러 가지 윈도우 시스템 설정과 상태 정보
또한 SNMP를 이용하면 모니터링 대상 시스템의 설정과 정보를 확인할 수 있으며, 쓰기 권한이 부여된 항목의 경우에는 설정을 변경하는 작업도 가능하다.
윈도우 SNMP 서비스 설치와 동작 확인
SNMP 서비스의 설치
윈도우 OS에서 SNMP 서비스를 사용하기 위해서는 일단 SNMP 서비스가 설치되어 있어야 한다. Windows 8.1과 초기 버전의 Windows 10에서는 제어판의 Windows 기능 켜기/끄기를 통해 설치할 수 있었지만, Windows 10 버전 1809 이후와 Windows 11에서는 선택적 기능으로 추가해야 한다. 자세한 설치 방법은 윈도우 시스템 SNMP 설치 방법을 참고하기 바란다.
SNMP 서비스를 설치한 이후 서버를 재부팅해야 할까 봐 두려워할 수도 있을 것이다. 다행히 일반적으로 윈도우의 SNMP 서비스는 설치 후 재부팅하지 않아도 바로 사용할 수 있다. 마음 놓고 설치를 진행해도 되겠다.
SNMP 서비스의 동작
SNMP 서비스가 제대로 설치되고 실행되었는지 확인하기 위해 서비스 목록을 열어 본다. Windows + R을 눌러 실행 창을 띄운 다음, services.msc를 입력하고 Enter를 누르면 서비스 관리 화면이 나타난다. 여기에서 SNMP 서비스가 실행 중인지 확인하고, 중지되어 있다면 서비스를 시작해 준다.
SNMP 서비스 설정
서비스 관리 화면에서 SNMP 서비스를 더블클릭하면 SNMP 서비스 속성 창이 나타난다. 윈도우 서비스에 공통으로 제공되는 탭은 제외하고, SNMP 설정에 사용하는 에이전트·트랩·보안 탭을 차례로 확인해 보도록 한다.
에이전트 탭
에이전트 탭에서는 SNMP 정보를 요청하는 관리 시스템에 제공할 이 PC의 연락처·위치·서비스 정보를 설정한다. 연락처와 위치는 필수 항목은 아니지만, 여러 시스템을 함께 모니터링할 때 관리 대상과 담당자를 구분할 수 있도록 입력해 두는 것을 추천한다.
- 연락처: 시스템 관리자나 담당자의 연락처를 입력한다. 입력한 내용은 OID
.1.3.6.1.2.1.1.4.0에 표시된다. - 위치: 시스템이 설치된 장소나 관리 위치를 입력한다. 입력한 내용은 OID
.1.3.6.1.2.1.1.6.0에 표시된다. - 서비스: 이 시스템이 제공하는 서비스의 종류를 선택한다. OID
.1.3.6.1.2.1.1.7.0에 표시된다.
트랩 탭
SNMP 트랩은 관리 시스템이 주기적으로 정보를 요청하는 일반적인 SNMP 조회와 달리, SNMP 에이전트에서 특정 상태나 이벤트를 감지했을 때 관리 시스템으로 알림 메시지를 먼저 전송하는 기능이다. 이를 이용하면 중앙의 관리 시스템이 대상 장비에서 발생한 상태 변화를 빠르게 알아챌 수 있다.
트랩 탭에서는 트랩 메시지에 사용할 커뮤니티 이름과 메시지를 수신할 관리 시스템의 호스트 이름 또는 IP 주소를 입력한다. 트랩 수신 시스템에서는 SNMP 트랩 수신 프로그램이 실행되고 있어야 하며, 일반적으로 UDP 162번 포트를 통해 메시지를 전달한다.
보안 탭
SNMP 설정에서 가장 기본이 되고 중요한 부분이 바로 이 보안 탭 되시겠다. SNMP 요청을 받아들일 커뮤니티 이름과 권한을 등록하고, 요청을 보낼 수 있는 관리 시스템의 IP 주소를 제한할 수 있다.
허용되는 커뮤니티 이름에서 추가를 누르면 사용할 커뮤니티 이름과 권한을 지정할 수 있다. 시스템 상태를 수집하는 모니터링 용도라면 설정을 변경할 필요가 없으므로 읽기 전용 권한을 사용하는 것이 안전하다. 본 필자는 예시로 eqmakerread라는 커뮤니티를 만들고 읽기 전용 권한을 할당해 주었다.
커뮤니티 이름은 SNMP 요청을 구분하고 접근을 제한하는 데 사용되지만, 암호화된 비밀번호와 같은 강력한 인증 수단은 아니다. public이나 private처럼 널리 알려진 기본값은 피하고 쉽게 추측하기 어려운 이름을 사용하는 것이 좋다.
그 아래에서는 SNMP 요청을 받아들일 호스트를 지정한다. 모든 호스트로부터 SNMP 패킷 받아들이기를 선택하면 네트워크에서 접근 가능한 모든 장치가 요청을 보낼 수 있으므로, 특별한 이유가 없다면 다음 호스트로부터 SNMP 패킷 받아들이기를 선택하고 실제 모니터링에 사용할 관리 시스템의 IP 주소만 등록하도록 하자.
SNMP는 시스템의 상당히 민감한 정보까지 제공할 수 있다. 허용 호스트를 지정하는 것과 함께 Windows 방화벽에서도 SNMP 요청을 받을 UDP 161번 포트를 관리 시스템의 IP 주소에만 허용해야 한다. SNMP 서비스를 인터넷에 직접 노출해서는 안 되며, 가능하면 별도의 관리망이나 신뢰할 수 있는 내부 네트워크에서만 사용하기를 권장한다.
마무리
이것으로 윈도우 시스템의 SNMP 설정을 완료했다. MIB Browser와 같은 SNMP 관리 도구를 이용해 대상 시스템의 UDP 161번 포트로 요청을 보내고, 설정한 커뮤니티 이름으로 시스템 정보가 정상적으로 조회되는지 시험해 본다. 트랩을 설정했다면 수신 시스템에서도 UDP 162번 포트를 통해 트랩 메시지가 들어오는지 함께 확인한다.
한 가지 기억해 두어야 할 것은 SNMP가 시스템의 상당히 내밀한 정보까지도 제공할 수 있다는 점이다. 때문에 사용 권한에 대한 바른 설정이 꼭 필요하다. 모니터링 용도에는 읽기 전용 권한을 사용하고, 요청을 허용할 관리 시스템과 방화벽 접근 범위를 제한해야 한다. 보안의 기본은 필요한 것 이외에는 다 막아 둔다인 것을 항상 기억하고 있기를 바라는 바이다.
추가적으로, 마이크로소프트는 SNMP 대신에 WinRM을 사용할 것을 권장하고 있다. 단순한 시스템 정보를 읽어 오는 용도라면 SNMP도 여전히 널리 사용되는 유용한 도구이지만, 설정을 변경하는 작업까지 해야 한다면 인증과 접근 제어 기능을 갖춘 WinRM을 우선 검토하는 편이 좋다.
사실 본 필자는 원격 관리 도구가 아무리 훌륭해도, 중요한 시스템의 쓰기 작업은 관리자가 직접 확인하면서 수행하는 것이 제일 안전하다고 생각한다.
FAQ
- 윈도우 시스템도 SNMP를 이용해 관리할 수 있는가?
- 가능하다. 윈도우의 SNMP 서비스를 설치하고 설정하면 디스크 용량, CPU 사용률, 메모리 상태, 운영체제 정보와 네트워크 인터페이스 통계 등을 SNMP 관리 시스템에서 조회할 수 있다. 쓰기 가능한 OID와 권한이 제공되는 경우에는 일부 값을 변경할 수도 있지만, 일반적인 시스템 모니터링에는 읽기 전용 권한을 사용하는 것이 안전하다.
- SNMP 이외에 윈도우 시스템을 관리하는 방법은?
- 윈도우 시스템은 WinRM, PowerShell 원격 관리, WMI 및 CIM을 이용해 관리할 수 있다. 단순한 상태 수집에는 SNMP를 사용할 수 있지만, 명령 실행이나 설정 변경과 같은 관리 작업에는 인증과 접근 제어 기능을 제공하는 WinRM과 PowerShell 원격 관리가 더 적합하다.
- 윈도우 기본 SNMP 서비스는 어떤 SNMP 버전을 지원하는가?
- 윈도우의 기본 SNMP 서비스는 SNMPv1과 SNMPv2c를 지원한다. 두 버전 모두 커뮤니티 문자열을 이용해 접근을 구분하며, 사용자 인증과 통신 암호화를 제공하는 SNMPv3는 지원하지 않는다. SNMPv3가 필요하다면 이를 지원하는 별도의 SNMP 에이전트를 설치해야 한다.
- SNMP 커뮤니티 이름은 암호인가?
- 엄밀한 의미의 암호는 아니다. 커뮤니티 이름은 SNMP 요청을 구분하고 허용된 권한을 적용하기 위한 문자열이지만, SNMPv1과 SNMPv2c에서는 네트워크를 통해 암호화되지 않은 상태로 전달된다. 따라서
public이나private같은 기본값을 피하고, 허용 호스트와 방화벽 설정을 함께 적용해야 한다. - SNMP는 암호화 통신을 지원하는가?
- SNMP 프로토콜 전체로 보면 SNMPv3에서 인증과 암호화를 지원한다. 그러나 윈도우의 기본 SNMP 서비스가 지원하는 SNMPv1과 SNMPv2c는 통신 내용을 암호화하지 않는다. 민감한 환경에서는 SNMP 통신을 관리망이나 가상 사설망 안으로 제한하거나 SNMPv3를 지원하는 별도의 에이전트를 사용해야 한다.
- 윈도우 SNMP 서비스에서 사용하는 네트워크 포트는?
- SNMP 관리 시스템이 에이전트에 정보를 요청할 때는 일반적으로 UDP 161번 포트를 사용한다. SNMP 에이전트가 관리 시스템으로 트랩 메시지를 전송할 때는 UDP 162번 포트를 사용한다. Windows 방화벽에서는 필요한 포트만 허용하고 접근 가능한 원격 IP 주소도 관리 시스템으로 제한하는 것이 좋다.
- SNMP 모니터링에는 어떤 커뮤니티 권한을 사용해야 하는가?
- 시스템 상태를 조회하는 일반적인 모니터링에는 읽기 전용 권한을 사용하는 것이 적합하다. 읽기·쓰기 권한을 부여하면 지원되는 OID의 값을 변경할 수 있으므로 설정 오류나 보안 사고의 위험이 커진다. 값을 변경해야 할 명확한 이유가 없다면 쓰기 권한을 부여하지 않는 것이 안전하다.
- SNMP 요청을 특정 관리 시스템에서만 받으려면 어떻게 해야 하는가?
- SNMP 서비스 속성의 보안 탭에서 다음 호스트로부터 SNMP 패킷 받아들이기를 선택하고, 실제 모니터링에 사용할 관리 시스템의 IP 주소만 등록한다. Windows 방화벽의 UDP 161 인바운드 규칙도 동일한 원격 IP 주소로 제한해야 한다.
- SNMP 트랩과 일반적인 SNMP 조회는 무엇이 다른가?
- 일반적인 SNMP 조회는 관리 시스템이 에이전트에 요청을 보내 정보를 가져오는 방식이다. 반면 SNMP 트랩은 에이전트에서 특정 상태나 이벤트를 감지했을 때 관리 시스템으로 알림을 먼저 전송하는 방식이다. 트랩을 사용하려면 관리 시스템에서 UDP 162번 포트를 사용하는 트랩 수신 프로그램이 실행되고 있어야 한다.
- SNMP 서비스 설정 후 응답이 없다면 무엇을 확인해야 하는가?
- 먼저 Windows 서비스 관리 화면에서 SNMP 서비스가 실행 중인지 확인한다. 이어서 커뮤니티 이름과 읽기 권한, 허용 호스트의 IP 주소, Windows 방화벽의 UDP 161 인바운드 규칙을 점검한다. 관리 시스템과 대상 윈도우 시스템 사이의 네트워크 경로에서 UDP 통신이 차단되고 있지 않은지도 확인해야 한다.
갱신 내역
- — 최초 게시
- — 수정 (https://www.DectENG.com/)
- — 수정 및 주소 이전 (https://www.EQMaker.kr/)