간이 망 관리 프로토콜
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
간이 망 관리 프로토콜(SNMP)은 1988년 처음 등장하여, TCP/IP 기반 네트워크를 관리하기 위한 프로토콜이다. SNMP는 매니저, 에이전트, 관리 대상 장치로 구성되며, 관리자는 에이전트에게 요청을 보내거나 트랩을 수신하여 관리 작업을 수행한다. SNMP는 MIB(Management Information Base)를 사용하여 관리 데이터를 변수로 노출하며, UDP를 통해 통신한다. SNMP는 버전 1, 2, 3으로 발전해 왔으며, 버전 3에서 보안이 강화되었다. 한국에서는 IT 인프라 관리에 널리 사용되지만, 보안 취약점을 악용한 사이버 공격의 위험도 존재한다.
더 읽어볼만한 페이지
- 다중 에이전트 시스템 - 봇넷
봇넷은 악성 소프트웨어에 감염되어 제3자의 통제를 받는 다수의 기기 네트워크로, 분산 서비스 거부 공격, 스팸 메일 발송, 정보 유출 등 사이버 범죄에 활용되며, 탐지와 차단을 어렵게 하기 위해 지속적으로 진화하고 있다. - 다중 에이전트 시스템 - 떼 지능
떼 지능은 단순한 에이전트들의 상호작용을 통해 복잡한 집단 행동을 모델링하여 최적의 해를 찾는 계산 기법 및 알고리즘으로, 최적화, 군중 시뮬레이션, 데이터 분석 등 다양한 분야에 응용되며 인공 떼 지능 기술로 발전하고 있다. - 네트워크 관리 - 인터넷 트래픽
인터넷 트래픽은 동영상 스트리밍 서비스의 성장으로 동영상 사이트에서 주로 발생하며, 네트워크 효율성과 경제성에 중요한 영향을 미치고, 국가별 사용세 정책 및 트래픽 분류 기술 등이 관련되어 꾸준히 증가하는 추세이다. - 네트워크 관리 - 방화벽 (네트워킹)
방화벽은 네트워크 보안을 위해 트래픽을 검사 및 제어하는 시스템으로, 설정된 규칙에 따라 패킷을 필터링하며, 다양한 종류와 기능을 가지고 로그를 기록 및 관리한다. - 시스템 관리 - 슈퍼유저
슈퍼유저는 운영 체제에서 모든 권한을 가진 사용자를 지칭하며, 유닉스 계열에서는 root, 윈도우에서는 관리자 계정이 해당 역할을 수행한다. - 시스템 관리 - 유닉스 셸
유닉스 셸은 사용자의 명령을 해석하여 운영 체제에 전달하고 프로그램 실행을 관리하는 명령 줄 인터페이스로서, 톰슨 셸을 시작으로 본 셸, C 셸 등 다양한 셸들이 개발되어 사용자에게 다양한 셸 환경 선택권을 제공한다.
간이 망 관리 프로토콜 | |
---|---|
프로토콜 정보 | |
이름 | 간이 망 관리 프로토콜 (Simple Network Management Protocol) |
약칭 | SNMP |
RFC | 3411–3418 (SNMPv3 STD0062) 6353 (보안 SNMP) |
포트 | 161 162 (트랩) 10161 (보안 SNMP) 10162 (보안 SNMP 트랩) |
OSI 계층 | 응용 계층 |
프로토콜 스위트 | |
TCP/IP 군 | 해당 |
2. 역사
간이 망 관리 프로토콜(SNMP)은 1988년 일련의 RFC(Request for Comments)를 통해 처음 등장했다. 초기 버전인 SNMPv1은 TCP/IP 기반 네트워크 관리를 위한 기본적인 프레임워크를 제공했다.
1988년에 나타난 최초의 RFC는 다음과 같다.[12]
RFC 번호 | 설명 |
---|---|
RFC 1065 | TCP/IP 기반 인터넷용 관리 정보의 구조 및 식별 |
RFC 1066 | TCP/IP 기반 인터넷의 네트워크 관리를 위한 관리 정보 베이스 |
RFC 1067 | 간단한 네트워크 관리 프로토콜 |
1990년에 이 문서들은 RFC 1155, RFC 1156, RFC 1157로 대체되었고, 1991년에는 RFC 1156(MIB-1)이 RFC 1213(MIB-2)으로 대체되었다.
SNMPv1은 널리 사용되며 인터넷 커뮤니티에서 사실상의 표준 네트워크 관리 프로토콜이 되었다.[12]
SNMPv2는 SNMP 버전 1을 개선하여 성능, 보안, 매니저 간 통신 기능을 향상시켰다.[13] ''GetBulkRequest''를 도입하여 대량의 관리 데이터를 한 번에 가져올 수 있게 되었다. 그러나 SNMPv2의 새로운 보안 시스템은 복잡하다는 평가를 받아 널리 사용되지 않았다.[13] SNMPv2는 제안 표준 단계까지는 개발되었지만, 이후 버전에서는 더 이상 사용되지 않는 것으로 간주되었다.[15]
SNMPv3는 SNMP의 최신 버전으로, 2004년 현재 IETF는 SNMP v3의 등장으로 인해 구식 SNMP가 불필요하다고 생각하고 있다.[1]
2. 1. SNMP의 등장 (1988년)
SNMP는 1988년 일련의 RFC(Request for Comments)를 통해 처음 등장했다. 초기 버전인 SNMPv1은 TCP/IP 기반 네트워크 관리를 위한 기본적인 프레임워크를 제공했다.1988년에 나타난 최초의 RFC는 다음과 같다.[12]
RFC 번호 | 설명 |
---|---|
RFC 1065 | TCP/IP 기반 인터넷용 관리 정보의 구조 및 식별 |
RFC 1066 | TCP/IP 기반 인터넷의 네트워크 관리를 위한 관리 정보 베이스 |
RFC 1067 | 간단한 네트워크 관리 프로토콜 |
1990년에 이 문서들은 다음 문서로 대체되었다.
RFC 번호 | 설명 |
---|---|
RFC 1155 | TCP/IP 기반 인터넷용 관리 정보의 구조 및 식별 |
RFC 1156 | TCP/IP 기반 인터넷의 네트워크 관리를 위한 관리 정보 베이스 |
RFC 1157 | 간단한 네트워크 관리 프로토콜 |
1991년, RFC 1156(MIB-1)은 더 자주 사용되는 RFC 1213(TCP/IP 기반 인터넷의 네트워크 관리를 위한 관리 정보 베이스(MIB-2) 버전 2)으로 대체되었다.
SNMPv1은 널리 사용되며 인터넷 커뮤니티에서 사실상의 표준 네트워크 관리 프로토콜이 되었다.[12]
2. 2. SNMPv1 (1990년대 초반)
SNMPv1은 SNMP 프로토콜의 초기 구현이다. 1980년대에 설계되었으며, 당시 컴퓨팅 플랫폼에서 구현이 어렵고 실행 불가능하다고 여겨졌던 OSI/IETF/NSF(미국 국립 과학 재단)의 노력(HEMS/CMIS/CMIP)을 대신하여, 인터넷의 대규모 배포 및 상업화를 위한 임시 프로토콜이라는 믿음으로 승인되었다.SNMPv1에 대한 최초의 RFC는 1988년에 다음과 같이 나타났다.
- RFC 1065 — TCP/IP 기반 인터넷용 관리 정보의 구조 및 식별
- RFC 1066 — TCP/IP 기반 인터넷의 네트워크 관리를 위한 관리 정보 베이스
- RFC 1067 — 간단한 네트워크 관리 프로토콜
1990년, 이 문서들은 다음 문서로 대체되었다.
- RFC 1155 — TCP/IP 기반 인터넷용 관리 정보의 구조 및 식별
- RFC 1156 — TCP/IP 기반 인터넷의 네트워크 관리를 위한 관리 정보 베이스
- RFC 1157 — 간단한 네트워크 관리 프로토콜
1991년, RFC 1156(MIB-1)은 더 자주 사용되는 RFC 1213(MIB-2)로 대체되었다.
SNMPv1은 널리 사용되며 인터넷 커뮤니티에서 사실상의 표준 네트워크 관리 프로토콜이다.[12]
SNMPv1은 전송 계층 프로토콜인 사용자 데이터그램 프로토콜(UDP), OSI 비연결형 네트워크 서비스(CLNS), AppleTalk 데이터그램 전달 프로토콜(DDP), Novell 인터네트워크 패킷 교환(IPX)을 통해 전송될 수 있다.
버전 1은 보안이 취약하다는 비판을 받았다.[13] 널리 사용되는 구현에서는 "모든 SNMP 메시지를 인증된 SNMP 메시지로 식별하는 단순한 인증 서비스만 지원"했기 때문이다.[14] 따라서 메시지의 보안은 메시지가 전송되는 채널의 보안에 의존했다. 예를 들어, 내부 네트워크가 충분히 안전하다고 판단되면, 평문으로 전송되는 '커뮤니티 이름'이 사실상 암호로 간주되기도 했다.
SNMP v1은 주로 다음 RFC에서 정의된다.
RFC 번호 | 설명 |
---|---|
RFC 1065 | TCP/IP 네트워크 상의 관리 정보의 종류와 구조 |
RFC 1066 | TCP/IP 네트워크 관리를 위한 MIB의 첫 번째 정의 |
RFC 1156 | RFC1066의 개정 |
RFC 1158 | MIB-II라고 불리는 네트워크 장비가 가져야 할 표준 데이터 구조의 정의 |
RFC 1213 | RFC1158의 개정 |
RFC 1067 | 단순 네트워크 관리 프로토콜(SNMP)의 첫 번째 정의(현재는 폐기됨) |
RFC 1157 | 단순 네트워크 관리 프로토콜(SNMP) RFC1067을 대체하여 현재의 표준 |
SNMP v1은 비밀번호에 해당하는 '커뮤니티' 문자열이 평문으로 통신되기 때문에 보안 취약점이 지적되고 있다.
2. 3. SNMPv2 (1990년대 중후반)
SNMPv2는 SNMP 버전 1을 개선하여 성능, 보안, 매니저 간 통신 기능을 향상시켰다.([13]) 이 버전에서는 대량의 관리 데이터를 한 번의 요청으로 가져올 수 있도록 ''GetBulkRequest''를 도입했다. 그러나 SNMPv2에 도입된 새로운 보안 시스템은 복잡하다는 평가를 받아 널리 사용되지 않았다.([13]) SNMPv2는 제안 표준 단계까지는 개발되었지만, 이후 버전에서는 더 이상 사용되지 않는 것으로 간주되었다.([15])''커뮤니티 기반 단순 네트워크 관리 프로토콜 버전 2''(SNMPv2c)는 논란이 많았던 SNMPv2의 새로운 보안 모델 대신, SNMPv1의 커뮤니티 기반 보안 방식을 사용한다.([15]) 이 버전은 IETF의 초안 표준 성숙도 수준을 충족하며, 사실상 SNMPv2의 표준으로 널리 채택되었다.([15]) 이후 SNMPv3의 일부로 재정의되었다.([16])
''사용자 기반 단순 네트워크 관리 프로토콜 버전 2''(SNMPv2u)는 SNMPv1보다 높은 보안을 제공하면서도, SNMPv2의 복잡성을 피하고자 하였다.([17]) 이 버전은 ''SNMP v2*''로 상용화되었으며, 이 메커니즘은 결국 SNMP v3에서 두 가지 보안 프레임워크 중 하나로 채택되었다.([17])
2. 4. SNMPv3 (2000년대 이후)
SNMPv3는 SNMP의 최신 버전이다. 2004년 현재 IETF는 SNMP v3의 등장으로 인해 구식 SNMP가 불필요(Obsolete)하다고 생각하고 있다.[1]실제로 SNMP를 구현할 때는 여러 버전을 지원하는 경우가 많다.[2]
SNMPv3는 SNMPv2c에 비해 다음과 같은 보안 수준이 향상되었다.
- 메시지 무결성 (메시지가 변조되지 않았는지 확인)
- 인증 (HMAC-MD5 또는 HMAC-SHA를 사용한 메시지 전송원의 인증)
- 암호화 (DES, 3DES 또는 AES에 의한 메시지 암호화)
3. 구성 요소
SNMP는 일반적으로 하나 이상의 관리 컴퓨터("매니저"라고 함)가 컴퓨터 네트워크에서 호스트나 장치들의 그룹을 관리하거나 감시하는 일을 맡는다. 관리를 받는 각 시스템은 에이전트라는 이름의 소프트웨어 구성 요소를 실행하여 SNMP를 통해 정보를 매니저로 전달한다.
SNMP 관리 네트워크는 매니지드 디바이스, 에이전트, 네트워크 관리국(NMS)의 세 가지 주요 구성 요소로 이루어진다.[1]
- '''매니지드 디바이스'''는 SNMP 인터페이스를 구현하는 네트워크 노드로서, 노드에 특화된 정보에 대한 읽기 전용 또는 읽기/쓰기 접근을 허용한다. 라우터, 액세스 서버, 스위치, 케이블 모뎀, 브리지, 허브, IP 전화, IP 비디오 카메라, 컴퓨터 호스트, 프린터 등 다양한 장치가 될 수 있다.
- '''에이전트'''는 매니지드 디바이스에 상주하는 네트워크 관리 소프트웨어 모듈이다. 에이전트는 관리 정보에 대한 로컬 지식을 가지고 있으며 해당 정보를 SNMP 특정 형식으로 변환한다.
- '''네트워크 관리국(NMS)'''은 매니지드 디바이스를 감시하고 제어하는 애플리케이션들을 실행한다. NMS는 네트워크 관리에 필요한 대부분의 처리 및 메모리 리소스를 제공한다. 하나 이상의 NMS가 모든 관리 네트워크에 존재할 수 있다.
3. 1. 기본 구성 요소
SNMP는 매니저, 에이전트, 관리 대상 장치의 세 가지 주요 구성 요소로 이루어진다.[1]
- '''매니저 (Manager)'''
- 네트워크 관리 시스템(NMS)에서 실행되는 소프트웨어이다.
- 에이전트에게 요청을 보내고 응답 및 트랩을 받는다.[1]
- '''에이전트 (Agent)'''
- 관리 대상 장치에서 실행되는 소프트웨어 모듈이다.
- 매니저의 요청에 응답하고, 필요시 트랩을 발생시킨다.[1]
- 역할에 따라 마스터 에이전트와 서브 에이전트로 나뉜다.[1]
- 마스터 에이전트는 하나 이상의 서브 에이전트를 감시할 수 있다.[1]
- '''관리 대상 장치 (Managed Device)'''
- SNMP 인터페이스를 구현하는 네트워크 노드이다.
- 라우터, 스위치, 서버, 워크스테이션, 프린터 등이 이에 해당한다.[1]
구성 요소 | 설명 |
---|---|
매니저 (Manager) | 네트워크 관리 시스템(NMS)에서 실행되는 소프트웨어로, 에이전트에게 요청을 보내고 응답 및 트랩을 받는다. |
에이전트 (Agent) | 관리 대상 장치에서 실행되는 소프트웨어 모듈로, 매니저의 요청에 응답하고 필요시 트랩을 발생시킨다. |
관리 대상 장치 (Managed Device) | SNMP 인터페이스를 구현하는 네트워크 노드 (라우터, 스위치, 서버, 워크스테이션, 프린터 등) |
3. 2. 역할에 따른 에이전트 분류
에이전트는 그 역할에 따라 마스터 에이전트와 서브 에이전트 두 가지로 분류된다.- '''마스터 에이전트''': 하나 이상의 서브 에이전트를 관리한다. 외부에서 보았을 때 마스터 에이전트와 서브 에이전트는 하나의 에이전트로 간주된다. 전형적인 마스터 에이전트는 프로토콜의 구문 분석이나 출력의 정형화만을 수행한다.
- '''서브 에이전트''': 마스터 에이전트의 관리 하에 특정 서브 시스템을 담당한다.
SNMP는 프로토콜을 관리 정보의 구조로부터 분리함으로써, OSI 참조 모델의 모든 계층을 넘어, 데이터베이스나 전자 메일, J2EE 참조 모델 등, 다양한 서브 시스템을 용이하게 감시할 수 있게 되었다.
4. MIB (Management Information Base)
관리 정보 베이스(MIB)는 관리 시스템이 어떤 변수를 제공해야 하는지 정의하지 않고, 응용 프로그램이 자체 계층 구조를 정의할 수 있도록 하는 확장 가능한 설계를 사용한다. MIB는 장치 하위 시스템의 관리 데이터 구조를 설명하며, 객체 식별자(OID)를 포함하는 계층적 네임스페이스를 사용한다. 각 OID는 SNMP를 통해 읽거나 설정할 수 있는 변수를 식별한다. MIB는 관리 정보 구조 버전 2.0(SMIv2)에서 정의된 표기법을 사용하며, 이는 ASN.1의 하위 집합이다.
5. 프로토콜 동작 방식
SNMP는 인터넷 프로토콜 제품군의 응용 계층에서 작동하며, 모든 메시지는 사용자 데이터그램 프로토콜(UDP)을 통해 전송된다.[3] SNMP 에이전트는 UDP 포트 161번에서 요청을 수신하고, 관리자는 이 포트로 요청을 보낸다.[3] 에이전트의 응답은 관리자에게 다시 전송되며, 관리자는 포트 162번에서 알림(트랩 및 InformRequest)을 수신한다.[3] 전송 계층 보안 또는 데이터그램 전송 계층 보안을 사용하는 경우, 요청은 포트 10161번에서 수신되고 알림은 포트 10162번으로 전송된다.[3]
SNMP 메시지는 다음과 같이 구성된다.
IP 헤더 | UDP 헤더 | 버전 | 커뮤니티 | PDU 유형 | 요청 ID | 오류 상태 | 오류 인덱스 | 변수 바인딩 |
SNMP 구현은 최소 484바이트 길이의 메시지를 수락해야 한다.[8] 잘못된 형식의 SNMP 요청은 무시되며, 성공적으로 디코딩된 요청은 커뮤니티 문자열을 사용하여 인증된다.[8] 인증에 실패하면 인증 실패를 나타내는 트랩이 생성되고 메시지가 삭제된다.[8]
SNMPv1 및 SNMPv2c는 ''커뮤니티''를 사용하여 관리자와 에이전트 간의 신뢰를 구축한다.[9] 대부분의 에이전트는 읽기 전용, 읽기/쓰기 및 트랩에 대해 각각 하나씩 세 개의 커뮤니티 이름을 지원하며, 이 커뮤니티 문자열은 서로 다른 유형의 활동을 제어한다.[9] SNMPv3도 커뮤니티 문자열을 사용하지만, SNMP 관리자와 에이전트 간의 안전한 인증 및 통신을 허용한다.[9]
5. 1. PDU (Protocol Data Unit)
SNMP는 UDP를 통해 통신하며, 요청과 응답은 PDU라는 정해진 형식의 데이터 단위를 사용한다.SNMPv1은 5개의 핵심 프로토콜 데이터 유닛(PDU)을 지정한다. SNMPv2에서 ''GetBulkRequest''와 ''InformRequest'' 두개의 PDU가 추가되었고, SNMPv3에서 ''Report'' PDU가 추가되었다.[3]
''PDU 유형'' 필드로 식별되는 7가지 SNMP PDU 유형은 다음과 같다.
- '''GetRequest''': 변수 또는 변수 목록의 값을 검색하기 위한 관리자에서 에이전트로의 요청이다. 지정된 변수 값의 검색은 에이전트에서 원자적 연산으로 수행된다. 현재 값이 있는 ''Response''가 반환된다.
- '''SetRequest''': 변수 또는 변수 목록의 값을 변경하기 위한 관리자에서 에이전트로의 요청이다. 지정된 모든 변수에 대한 변경은 에이전트에서 원자적 연산으로 이루어져야 한다. 변수의 (현재) 새 값이 있는 ''Response''가 반환된다.
- '''GetNextRequest''': 사용 가능한 변수와 해당 값을 검색하기 위한 관리자에서 에이전트로의 요청이다. MIB에서 사전식 순서로 다음 변수에 대한 변수 바인딩이 있는 ''Response''를 반환한다.
- '''GetBulkRequest''': ''GetNextRequest''의 여러 반복에 대한 관리자에서 에이전트로의 요청이다. ''GetNextRequest''의 최적화된 버전이다. 요청의 변수 바인딩에서 워크된 여러 변수 바인딩이 있는 ''Response''를 반환한다. PDU별 ''non-repeaters'' 및 ''max-repetitions'' 필드는 응답 동작을 제어하는 데 사용된다. ''GetBulkRequest''는 SNMPv2에서 도입되었다.
- '''Response''': ''GetRequest'', ''SetRequest'', ''GetNextRequest'', ''GetBulkRequest'' 및 ''InformRequest''에 대한 에이전트에서 관리자로의 변수 바인딩 및 확인을 반환한다. 오류 보고는 ''error-status'' 및 ''error-index'' 필드를 통해 제공된다.
- '''Trap''': 에이전트에서 관리자로의 비동기식 알림이다. 다른 SNMP 통신에서 관리자가 에이전트에서 정보를 적극적으로 요청하는 반면, 이는 명시적으로 요청하지 않고 에이전트에서 관리자로 전송되는 PDU이다. SNMP 트랩을 통해 에이전트는 요청하지 않은 SNMP 메시지를 통해 중요한 이벤트를 관리 스테이션에 알릴 수 있다. 트랩 PDU에는 현재 ''sysUpTime'' 값, 트랩 유형을 식별하는 OID 및 선택적 변수 바인딩이 포함된다.
- '''InformRequest''': 확인된 비동기식 알림이다. 이 PDU는 SNMPv2에서 도입되었으며 원래 ''관리자 대 관리자'' 통신으로 정의되었다.[4] 이후 구현에서는 원래 정의를 완화하여 ''에이전트 대 관리자'' 통신을 허용했다.[5][6][7] ''InformRequest''는 수신 시 확인이 반환되므로 이 문제를 해결한다.[6]
SNMP v1(SNMP 버전 1)에서는 다음과 같은 5개의 프로토콜 데이터 유닛 (PDU)이 정의되어 있다.[3]
PDU 종류 | 설명 |
---|---|
GET REQUEST | 일부 관리 정보를 가져올 때 사용한다. |
GETNEXT REQUEST | 연속적인 관리 정보를 가져올 때 사용한다. |
GET RESPONSE | 응답 |
SET REQUEST | 관리하는 서브 시스템에 변경을 가할 때 사용한다. |
TRAP (트랩) | 관리하는 서브 시스템에 관한 경고나 비동기 이벤트의 통지에 사용한다. |
이후 버전에서 다음과 같은 PDU가 추가되었다.
PDU 종류 | 설명 |
---|---|
GETBULK REQUEST | 고속으로 복수의 관리 정보를 가져올 때 사용한다. |
INFORM | 매니저에서 매니저로 통신할 때 사용한다. |
5. 2. 주요 동작
SNMP는 응용 계층에서 작동하며, 모든 SNMP 메시지는 사용자 데이터그램 프로토콜(UDP)을 통해 전송된다.[3] SNMP 에이전트는 UDP 포트 161번에서 요청을 수신하고, 관리자는 에이전트의 포트 161번으로 사용 가능한 모든 소스 포트에서 요청을 보낼 수 있다.[3] 에이전트 응답은 관리자의 소스 포트로 다시 전송된다.[3] 관리자는 포트 162번에서 알림(''트랩'' 및 ''InformRequest'')을 수신하며, 에이전트는 사용 가능한 모든 포트에서 알림을 생성할 수 있다.[3]
SNMPv1은 5개의 핵심 프로토콜 데이터 유닛(PDU)을 지정한다.[3] SNMPv2에서는 ''GetBulkRequest''와 ''InformRequest'' PDU가 추가되었고, SNMPv3에서는 ''Report'' PDU가 추가되었다.[3]
''PDU 유형'' 필드로 식별되는 7가지 SNMP PDU 유형은 다음과 같다.[3]
- GetRequest: 관리자가 에이전트에게 특정 변수 값을 요청한다. 변수 바인딩에 지정된 변수 값 검색은 에이전트에서 원자적 연산으로 수행되며, 현재 값이 있는 ''Response''가 반환된다.
- SetRequest: 관리자가 에이전트에게 변수 값을 변경하도록 요청한다. 변수 바인딩은 요청 본문에 지정되며, 지정된 모든 변수에 대한 변경은 에이전트에서 원자적 연산으로 이루어져야 한다. 변수의 (현재) 새 값이 있는 ''Response''가 반환된다.
- GetNextRequest: 관리자가 에이전트에게 사용 가능한 변수와 해당 값을 검색하도록 요청한다. MIB에서 사전식 순서로 다음 변수에 대한 변수 바인딩이 있는 ''Response''를 반환한다. 에이전트의 전체 MIB는 OID 0에서 시작하는 ''GetNextRequest''를 반복적으로 적용하여 확인할 수 있다.
- GetBulkRequest: (SNMPv2 이상) ''GetNextRequest''의 여러 반복에 대한 관리자에서 에이전트로의 요청이다. ''GetNextRequest''의 최적화된 버전으로, 요청의 변수 바인딩에서 여러 변수 바인딩이 있는 ''Response''를 반환한다.
- Response: ''GetRequest'', ''SetRequest'', ''GetNextRequest'', ''GetBulkRequest'' 및 ''InformRequest''에 대한 에이전트에서 관리자로의 변수 바인딩 및 확인을 반환한다. 오류 보고는 ''error-status'' 및 ''error-index'' 필드를 통해 제공된다. SNMPv1에서는 ''GetResponse''라고 불렸다.
- Trap: 에이전트가 관리자에게 보내는 비동기식 알림이다. 다른 SNMP 통신과 달리, 에이전트가 명시적인 요청 없이 관리자에게 중요한 이벤트를 알리는 데 사용된다. 트랩 PDU에는 현재 ''sysUpTime'' 값, 트랩 유형을 식별하는 OID 및 선택적 변수 바인딩이 포함된다. 트랩 메시지 형식은 SNMPv2에서 변경되었으며 PDU의 이름이 ''SNMPv2-Trap''으로 변경되었다.
- InformRequest: (SNMPv2 이상) 확인 응답을 요구하는 비동기식 알림이다. 원래 ''관리자 대 관리자'' 통신으로 정의되었으나,[4] 이후 ''에이전트 대 관리자'' 통신도 허용하도록 변경되었다.[5][6][7] SNMP는 UDP에서 실행되므로 ''Trap''의 배달이 보장되지 않았지만, ''InformRequest''는 수신 시 확인을 반환하여 이 문제를 해결한다.[6]
6. 프로토콜 버전별 특징 및 보안
SNMP 구현은 여러 버전을 지원하는 경우가 많은데, 일반적으로 SNMPv1, SNMPv2c, SNMPv3를 지원한다.[16]
6. 1. SNMPv1
SNMP 버전 1(SNMPv1)은 SNMP 프로토콜의 초기 구현이다. 1980년대에 설계되었으며, 당시 컴퓨팅 플랫폼에서 구현하기 어렵다고 여겨졌던 OSI/IETF/NSF(미국 국립 과학 재단)의 노력을 대신하여, 인터넷의 대규모 배포 및 상업화에 필요한 임시 프로토콜이라는 믿음으로 승인되었다.SNMPv1은 인터넷 커뮤니티에서 사실상의 표준 네트워크 관리 프로토콜로 널리 사용된다.[12] 전송 계층 프로토콜인 사용자 데이터그램 프로토콜(UDP), OSI 비연결형 네트워크 서비스(CLNS), AppleTalk 데이터그램 전달 프로토콜(DDP), Novell 인터네트워크 패킷 교환(IPX)을 통해 전송될 수 있다.
SNMPv1은 보안이 취약하다는 비판을 받는다.[13] 이 버전은 사용자 정의 인증을 허용하지만, 널리 사용되는 구현에서는 단순한 인증 서비스만 지원한다.[14] 메시지 보안은 메시지가 전송되는 채널의 보안에 의존한다. 예를 들어, 내부 네트워크가 충분히 안전하다고 판단되면 SNMP 메시지에 대한 암호화가 필요 없을 수 있다. 그러나, 평문으로 전송되는 '커뮤니티 이름'은 사실상 암호로 간주되는 경향이 있다.
SNMPv1은 네트워크를 통해 평문으로 암호를 전송하기 때문에 패킷 스니핑을 통해 암호를 읽을 수 있다는 취약점이 있다. 자동 검색 기능을 가진 SNMP 구현의 경우, SNMPv1 및 SNMPv2c에서는 ''커뮤니티 문자열''이 평문으로 전송되기 때문에[10] 보안 위험이 크다. 커뮤니티 문자열이 외부에 알려지면 공격 대상이 될 수 있다. 관리자는 커뮤니티 이름 인증 실패 트랩을 통해 이러한 시도를 알 수 있도록 구성할 수 있다.[27]
일반적인 커뮤니티 문자열 기본 구성은 읽기 전용에 "public", 읽기-쓰기에 "private"이다.[8] 이러한 기본값은 자주 변경되지 않아[8] SANS 연구소의 일반적인 기본 구성 문제 목록에서 1위를 차지했으며, 2000년 SANS 10대 가장 중요한 인터넷 보안 위협에서 10위를 차지했다.[30] TCP 또는 UDP를 통해 실행되는 SNMPv1 및 v2는 IP 스푸핑 공격에 취약하여, 공격자가 장치 접근 목록을 우회할 수 있다.
간이 망 관리 프로토콜(SNMP)은 네트워크 장치를 원격으로 모니터링하고 구성하는 데 사용되지만, 네트워크 침투에도 사용될 수 있다. 읽기-쓰기 모드의 구성 오류는 네트워크를 공격에 취약하게 만들 수 있다.[27] 2001년, 시스코는 읽기 전용 모드에서도 시스코 IOS(Cisco IOS)의 SNMP 구현이 특정 서비스 거부 공격에 취약하다는 정보를 발표했다. 이러한 문제는 IOS 업그레이드를 통해 해결할 수 있다.[28] SNMP가 네트워크에서 사용되지 않는 경우, 네트워크 장치에서 비활성화해야 한다. SNMP 읽기 전용 모드를 구성할 때는 접근 제어 구성과 SNMP 메시지를 수락하는 IP 주소에 주의해야 한다. SNMP 서버가 IP 주소로 식별되는 경우, 해당 IP 주소에만 응답하도록 허용하고 다른 IP 주소의 SNMP 메시지는 거부해야 한다. 그러나 IP 주소 스푸핑은 여전히 보안 문제로 남아있다.[27]
SNMPv1 관련 RFC는 다음과 같다.
RFC 번호 | 설명 | 비고 |
---|---|---|
TCP/IP 기반 인터넷용 관리 정보의 구조 및 식별 | ||
TCP/IP 기반 인터넷의 네트워크 관리를 위한 관리 정보 베이스 | ||
간단한 네트워크 관리 프로토콜 | ||
(MIB-1) | (MIB-2)로 대체 | |
TCP/IP 기반 인터넷의 네트워크 관리를 위한 관리 정보 베이스 (MIB-2) |
6. 2. SNMPv2/v2c
SNMPv2는 및 에서 정의되었으며, 버전 1을 수정하고 성능, 보안 및 관리자 간 통신 분야에서 개선 사항을 포함한다. 이 버전은 대량의 관리 데이터를 단일 요청으로 검색하기 위해 반복적인 GetNextRequest의 대안인 ''GetBulkRequest''를 도입했다. 그러나 많은 사람들이 지나치게 복잡하다고 여겼던 SNMPv2에 도입된 새로운 당사자 기반 보안 시스템은 널리 채택되지 않았다.[13]''커뮤니티 기반 단순 네트워크 관리 프로토콜 버전 2''(SNMPv2c)는 –에서 정의된다. SNMPv2c는 논란이 많았던 새로운 SNMP v2 보안 모델을 ''사용하지 않고'' SNMPv1의 단순한 커뮤니티 기반 보안 방식을 사용하는 SNMPv2이다. 이 버전은 IETF의 초안 표준 성숙도 수준을 충족하는 비교적 소수의 표준 중 하나이며, 널리 ''사실상'' SNMPv2 표준으로 간주되었다.[15]
''사용자 기반 단순 네트워크 관리 프로토콜 버전 2''(SNMPv2u)는 –에서 정의된다. 이는 SNMPv1보다 더 높은 보안을 제공하려고 시도하지만 SNMPv2의 높은 복잡성을 감수하지 않는 타협안이다. 이의 변형은 ''SNMP v2*''로 상용화되었으며, 이 메커니즘은 결국 SNMP v3에서 두 개의 보안 프레임워크 중 하나로 채택되었다.[17]
6. 3. SNMPv3
SNMPv3는 SNMP의 최신 버전이다. 2004년 현재, IETF는 SNMPv3를 현재 표준 버전으로 인식하고 있으며, 이전 버전들은 구식(Obsolete)으로 간주한다.[15]실제로 SNMP 구현은 여러 버전을 지원하는 경우가 많다.[16]
SNMPv3는 다음과 같은 보안 기능을 제공하여 이전 버전에 비해 보안 수준이 크게 향상되었다.[1]
- 메시지 무결성: 전송 중인 메시지가 변조되지 않았음을 보장한다. 선택적으로 패킷 재생 보호 메커니즘도 포함한다.[21]
- 인증: 메시지가 유효한 소스에서 왔는지 확인한다. HMAC-MD5, HMAC-SHA 또는 HMAC-SHA-2[19] 인증 프로토콜을 사용한다.[29]
- 암호화: 권한이 없는 소스에 의한 도청을 방지하기 위해 패킷을 암호화한다. CBC_DES, CFB_AES_128 등의 암호화 프로토콜을 사용한다.[19]
SNMPv3는 또한 다음과 같은 보안 모델 및 접근 제어 모델을 정의한다.[21]
- USM (사용자 기반 보안 모델): 인증 및 암호화 기능을 제공하며 메시지 수준에서 작동한다.
- VACM (뷰 기반 접근 제어 모델): 특정 주체가 특정 MIB 객체에 접근하여 특정 기능을 수행하도록 허용되는지 여부를 결정하며 PDU 수준에서 작동한다.
SNMPv3는 강력한 보안 기능 외에도 원격 구성 및 관리를 용이하게 하는 다양한 기능을 제공한다. 이러한 기능들은 대규모 네트워크 환경에서 SNMP를 효율적으로 사용하고 관리하는 데 도움을 준다.[18]
7. 관련 RFC 문서
다음은 간이 망 관리 프로토콜(SNMP)과 관련된 RFC 문서들이다.
RFC 번호 | 제목 | 비고 |
---|---|---|
RFC 1155 | TCP/IP 기반 인터넷을 위한 관리 정보의 구조 및 식별 | Structure and Identification of Management Information for TCP/IP-based Internets영어 |
RFC 1156 | TCP/IP 기반 인터넷 네트워크 관리를 위한 관리 정보 베이스 | Management Information Base for Network Management of TCP/IP-based internets영어 |
RFC 1157 | 간이 망 관리 프로토콜 (SNMP) | A Simple Network Management Protocol (SNMP)영어 |
RFC 1441 | 인터넷 표준 네트워크 관리 프레임워크 버전 2 소개 | Introduction to version 2 of the Internet-standard Network Management Framework영어 |
RFC 1213 | TCP/IP 기반 인터넷 네트워크 관리를 위한 관리 정보 베이스: MIB-II | Management Information Base for Network Management of TCP/IP-based internets: MIB-II영어 |
RFC 3410 | 인터넷 표준 관리 프레임워크에 대한 소개 및 적용 가능성 설명 | Introduction and Applicability Statements for Internet Standard Management Framework영어 |
RFC 3411 | 간이 망 관리 프로토콜 (SNMP) 관리 프레임워크 설명을 위한 아키텍처 | An Architecture for Describing Simple Network Management Protocol (SNMP) Management Frameworks영어 |
RFC 3412 | 간이 망 관리 프로토콜 (SNMP)을 위한 메시지 처리 및 발송 | Message Processing and Dispatching for the Simple Network Management Protocol (SNMP)영어 |
RFC 3413 | 간이 망 관리 프로토콜 (SNMP) 애플리케이션 | Simple Network Management Protocol (SNMP) Application영어 |
RFC 3414 | 간이 망 관리 프로토콜 (SNMPv3) 버전 3을 위한 사용자 기반 보안 모델 (USM) | User-based Security Model (USM) for version 3 of the Simple Network Management Protocol (SNMPv3)영어 |
RFC 3415 | 간이 망 관리 프로토콜 (SNMP)을 위한 뷰 기반 접근 제어 모델 (VACM) | View-based Access Control Model (VACM) for the Simple Network Management Protocol (SNMP)영어 |
RFC 3416 | 간이 망 관리 프로토콜 (SNMP)을 위한 프로토콜 작업 버전 2 | Version 2 of the Protocol Operations for the Simple Network Management Protocol (SNMP)영어 |
RFC 3417 | 간이 망 관리 프로토콜 (SNMP)을 위한 전송 매핑 | Transport Mappings for the Simple Network Management Protocol (SNMP)영어 |
RFC 3418 | 간이 망 관리 프로토콜 (SNMP)을 위한 관리 정보 베이스 (MIB) | Management Information Base (MIB) for the Simple Network Management Protocol (SNMP)영어 |
RFC 3512 | 간이 망 관리 프로토콜 (SNMP)을 사용한 네트워크 및 장치 구성 | Configuring Networks and Devices with Simple Network Management Protocol (SNMP)영어 |
RFC 3584 | 인터넷 표준 네트워크 관리 프레임워크의 버전 1, 버전 2 및 버전 3 간의 공존 | Coexistence between Version 1, Version 2, and Version 3 of the Internet-standard Network Management Framework영어 |
SNMP 버전별 RFC 문서는 다음과 같다.
- '''SNMPv1''': RFC 1065, RFC 1066, RFC 1156, RFC 1158, RFC 1213, RFC 1067(폐기됨), RFC 1157
- '''SNMPv2''', '''SNMPv2p''': RFC 1441 - RFC 1452
- '''SNMPv2c''': RFC 1901 - RFC 1908
- '''SNMPv2u''': RFC 1909 - RFC 1910
- '''SNMPv3''': RFC 3411 - RFC 3418, RFC 3584
참조
[1]
서적
Essential SNMP
O'Reilly & Associates
[2]
IETF
An Architecture for Describing Simple Network Management Protocol (SNMP) Management Frameworks
[3]
IETF RFC
[4]
웹사이트
RFC 1448 – Protocol Operations for version 2 of the Simple Network Management Protocol (SNMPv2)
https://tools.ietf.o[...]
Internet Engineering Task Force
1993-04
[5]
웹사이트
RFC 2573 – SNMP Applications
https://tools.ietf.o[...]
Internet Engineering Task Force
1999-04
[6]
웹사이트
SNMP Inform Requests
http://www.cisco.com[...]
Cisco
2011-12-09
[7]
웹사이트
Understanding the SNMP Implementation in JUNOS Software
https://www.juniper.[...]
Juniper Networks
2013-02-11
[8]
서적
Information Security Management Handbook, Sixth Edition
CRC Press
[9]
서적
Information Security Management Handbook, Sixth EditioEssential SNMP: Help for System and Network Administrators
O'Reilly Media, Inc.
[10]
서적
Engineering Information Security: The Application of Systems Engineering Concepts to Achieve Information Assurance
John Wiley & Sons
[11]
IETF RFC
"Coexistence between Version 1, Version 2, and Version 3 of the Internet-standard Network Management Framework"
[12]
서적
Engineering Information Security: The Application of Systems Engineering Concepts to Achieve Information Assurance
https://books.google[...]
John Wiley & Sons
2015-12-01
[13]
웹사이트
Security in SNMPv3 versus SNMPv1 or v2c
http://www.aethis.co[...]
[14]
IETF RFC
[15]
웹사이트
RFC Search Detail: Standards Track snmpv2 RFCs
http://www.rfc-edito[...]
The RFC Editor
2014-02-24
[16]
IETF RFC
[17]
Citation
SNMPv3 -- User Security Model
http://www.drdobbs.c[...]
Dr. Dobbs
2019-03-09
[18]
Webarchive
In This Issue: SNMP Version 3
http://www.simple-ti[...]
The Simple Times
2017-07-27
[19]
문서
RFC 7860
[20]
서적
A Practical Guide to SNMPv3 and Network Management
Prentice Hall PTR
[21]
웹사이트
SNMPv3
http://www.cisco.com[...]
Cisco Systems
[22]
웹사이트
SNMP Version 3
http://www.ibr.cs.tu[...]
Institute of Operating Systems and Computer Networks
2010-05-07
[23]
webarchive
RFC Editor
http://www.rfc-edito[...]
2007-10-29
[24]
웹사이트
Understanding Table Index Values in SNMP
http://www.cisco.com[...]
[25]
웹사이트
SNMP Research presentations in favor of standards-based management over proprietary CLIs
http://www.snmp.com/[...]
SNMP Research
2010-10-12
[26]
citation
CERT Advisory CA-2002-03 Multiple Vulnerabilities in Many Implementations
http://lwn.net/2002/[...]
[27]
서적
Cisco Secure Internet Security Solutions
Cisco Press
[28]
서적
Cisco Secure Internet Security Solutions
https://archive.org/[...]
Cisco Press
[29]
IETF
HMAC-SHA-2 Authentication Protocols in the User-based Security Model (USM) for SNMPv3
[30]
웹사이트
SANS Institute - CIS Critical Security Controls
http://www.sans.org/[...]
[31]
서적
Essential SNMP
O’Reilly & Associates
[32]
문서
"RFC 3411\u00A0— An Architecture for Describing Simple Network Management Protocol (SNMP) Management Frameworks"
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com