adsense

글 목록

SNMP community string에 대하여... 취약점 보완 방법

SNMP community string이 무엇인가

우선 각각의 용어에 대하여 정의를 하자면

SNMP(Simple Network Management Protocol) : TCP/IP 기반 네트워크상의 각 호스트에서 여러 정보를 정기적으로 수집하여 네트워크 관리를 하기 위한 프로토콜이다.

NMS(Network Management System) : 네트워크상의 모든 장비의 중앙 감시 체제를 구축하여 모니터링, 플래닝, 분석을 시행하고 관련 데이터를 보관하여 필요 즉시 활용 가능하게 하는 관리 시스템이다. 장비가 죽거나 이상이 생기면 바로 파악할 수 있게 해준다.

Community String : SNMP는 MIB라는 정보를 주고받기 위해 인증 과정에서 일종의 비밀번호인 Community String을 사용한다.

NMS에서 서버를 모니터링 하는 경우에 주로 SNMP를 연동하여 사용한다.



취약점 개요


SNMP(Simple Network Management Protocol) 서비스는 시스템 상태를 실시간으로 파악하는 NMS(Network Management System)를 위하여 각종 시스템에서 기본적으로 제공하는 서비스이며 정보를 받기 위해 일종의 패스워드인 Community String을 사용한다.
간단히 보면, NMS에서 서버를 모니터링 하는 경우에 주로 SNMP를 사용한다. 이 때 패스워드가 Community string이다.
이 때, Community String은 Default public, private로 대부분 설정되어 있다. 이 String을 이용해 시스템의 주요 정보 및 설정을 파악할 수 있다. 그러므로 Default community 명인 public, private를 변경하여 사용해야 한다.



  • 보완대책

1. SNMP 서비스가 필요한지 먼저 확인해보고, 불필요한 경우 서비스를 중지한다.
2. SNMP Community sting을 기본값(public, private)이 아닌 다른 이름으로 변경하여 사용한다. 이 때, 보안을 강화하기 위하여 8자리 이상의 숫자, 기호를 혼합한 패스워드 형식으로 설정해주면 더 좋다.

아래에서는 community string을 기본값에서 다른 이름으로 변경하는 내용에 대하여 다룬다.



  • 조치방법

snmpd.conf 파일에서 커뮤니티명을 확인한 후 디폴트 커뮤니티명인 "public, private"를 추측하기 어려운 커뮤니티명으로 변경



  •   OS별 점검 파일 위치 및 점검 방법

        - SunOS, 9 이하 버전
          #vi /etc/snmp/conf/snmpd.conf
          read-community public / write-community private


        - SunOS 10 이상 버전
          #vi /etc/sma/snmp/snmpd.conf
          rocommunity public / rwcommunity privat
 

        - Linux
          #vi /etc/snmp/snmpd.conf
          com2sec notConfigUser default public
   

        - AIX
          #vi /etc/snmpdv3.conf
          COMMUNITY public public noAuthNoPriv 0.0.0.0 0.0.0 -


        - HP-UX
          #vi /etc/snmpd.conf
          get-community-name : public / set-community-name : private


  (수정 시) 각각의 public, private 를 다른 값으로 바꿔주면 된다.




  • 조치 시 영향

NMS에서 서버를 모니터링 하는 경우에 주로 SNMP를 연동하여 사용한다.
이 외에 SNMP를 사용하는 경우에는 Community String 변경 시 통신하고자 하는 Server/Client에 모두 같은 Community String을 사용해야 한다.