SNMP
Simple Network Management Protocol
① 개념
- TCP/IP 기반 네트워크상의 각 호스트로부터 정기적으로 여러 관리 정보를 자동으로 수집하거나 실시간으로 상태를 모니터링 및 설정할 수 있는 서비스. 단순히 프로토콜이기 때문에, 이를 활용하여 실제 네트워크 관리 정보를 얻기 위해서는 관련 프로그램이 준비되어 있어야한다.
- 시스템이나 네트워크 관리자가 원격으로 네트워크 장비를 모니터링하고 환경 설정 드의 운영을 할 수 있도록 하는 네트워크 관리 프로토콜이다.
- 관리의 편의성을 주지만, 여러 취약점이 존재하여 DoS, 버퍼 오버플로우, 비인가 접속 등 여러 가지 문제점이 발생할 수 잇다.
- 네트워크 관리를 위한 목적으로 주로 서버나 네트워크 장비에서 SNM를 설정한 후 MRTG 프로그램을 이용해 트래픽 관리 등을 위해 사용된다.
- MRTG(Multi Router Traffic Grapher) : SNMP 기반의 장비 모니터링 프로그램. 주 용도는 네트워크 트래픽 사용량 모니터링이지만, 벤더에서 제공하는 SNMP MIB 값을 이용해 다양한 정보를 수집할 수 있따.
- OSI 계층의 Application 프로토콜이며, 메시지는 단순히 요청과 응답 형식의 프로토콜에 의해 교환되기 뗴문에 전송계층 프로토콜로 UDP/161 을 사용
② 구성요소
- 관리 시스템(Manager) : Agent에 필요한 요청을 하는 모듈
- 관리 대상(Agent) : 관리 대상 시스템에 설치되어 필요한 정보를 수집하고, Manager에게 전달해주는 역할을 하는 모듈
③ 동작방식
- Manager은 162/udp 포트를 이용하고, Agent는 161/udp 포트를 이용한다.
- Manager과 Agent간에 통신하기 위해서는 최소 다음 3가지 사항이 일치해야 한다.
- SNMP 버전
- Community String (패스워드 같은거)
- PDU(아래는 PDU 타입)
- Get Request: (Manager -> Agent) 원하는 객체의 특정 정보 요청
- Get Next Request: (Manager -> Agent) 이미 요청한 정보의 다음 정보 요청
- Set Request : (Manager -> Agent) 특정한 값을 설정
- Get Response : (Agent -> Manager) 변수값 전송
- Trap : (Agent -> Manager) 어떤 정보를 비동기적으로 알리기 위해 사용. notify라고 하며, 콜백함수와 같은 역할을 한다. Trap을 제외하곤 모두 동기적으로 작동한다.
- (SNMPv2) Get Bulk Request : (Manager -> Agent) SNMPv2에 추가된 PDU, 요청할 객체의 범위를 지정하여 한 번에 요청
- (SNMPv2) InformRequest : SNMPv2에 추가된 PDU, Manager 간의 정보 전달 목적으로 사용
- SNMP 정보 수집 방식
- Polling 방식: (Manager -> Agent) 정보 요청 시 응답해주는 방식
- Event Reporting 방식 : (Agent -> Manager) 이벤트 발생 시 이를 Manager에게 알려줌.
④ 주요언어
- MIB(Management Information Base)
- 관리 되어야 할 특정 정보, 자원을 객체라 하고 이러한 객체들을 모아놓은 집합체
- 관리자가 조회하거나 설정할 수 있는 객체들의 데이터베이스
- 객체별로 트리구조를 이룬다.
- SMB(Structure Management Information)
- MIB를 정의하기위한 일반적인 구조
- ASN.1 언어를 사용
- ASN.1(Abstract Syntax Notation) : 데이터와 데이터의 속성들을 설명하기 위한 공식 언어로 대부분의 고수준 프로그램 언어에서와 같이 데이터를 데이터 유형과 값으로 표현.
- 정의된 모든 객체는 name, syntax, encoding을 가진다.
- name : 해당 객체를 식별하기 위한 식별자(OID: Object Identifier)
- syntax : 객체의 데이터 유형(ex. INTEGER..)
- encoding : 메시지 전송 시 비트변환 규칙(SNMP의 경우 ASN.1의 encoding rule중 BER(Basic Encoding) 사용)
⑤ SNMP 접근제한 설정
- 게요
- SNMP는 트래픽 정보뿐만 아니라 각종 하드웨어 정보까지 제공하는 등 관리자 입장에서는 매우 중요한 정보를 제공하므로 보안에 주의가 필요하다.
- SNMP에 대한 읽기 권한뿐 아니라 쓰기 권한까지 있으면 설정 파일을 열람하거나 직접 네트워크 설정을 변경할 수 있다.
- SNMP 버전별 특징
- SNMPv1
- 1988년 IAB(Internet Activities Board)에서 표준화 작업을 거쳐 SGMP(simple Gateway Monitoring Protocol)을 발전시킨 SNMP를 만듦.
- 보안 기능이 전혀 없으며(암호화,인증기능 x) community string만 일치하면 모든 정보를 얻음.
- SNMPv2
- 버전 1의 문제점을 해결하기 위해 전송하는 정보에 대한 암호화(DES)와 해시(MD5) 기능을 추가했으나 여전히 송신처에 대한 인증이없음 + MD5, AES는 이제 취약
- 가장 많이 사용되는 SNMPv2c는 SNMPv2에 복잡한 보안 기능을 제거한 버전으로 보안상 취약.
- 버전 1의 문제점을 해결하기 위해 전송하는 정보에 대한 암호화(DES)와 해시(MD5) 기능을 추가했으나 여전히 송신처에 대한 인증이없음 + MD5, AES는 이제 취약
- SNMPv3
- 데이터 이즌,아모 기능 및 재사용 방지, 세분화된 접근통제 등 개선된 보안 서비스를 제공함으로써 이전 SNMP 버전에서 제공되지 않았던 아전한 통신망 관리를 위한 기반 기술을 제공한다.
- SNMPv1
- Community String : SNMP 서버(데몬)과 클라이언트가 데이터를 교환하기 전에 인증을 위해 사용하는 패스워드와 같은 것
- 초기값으로 public 또는 private가 설정되어있으며, 이를 그대로 사용하는 것은 패스워드룰 사용하지 않는 계정을 사용하는 것 이상으로 위험함
- 추측하기 어렵고 의미가 없는 문자열로 community string 변경 필요
- SNMP에서는 RO(Ready Only)와 RW(Read Write) 모드를 제공.
- 쓰기 권한이 있으면 중요 설정을 수정할 수 있기 때문에 심각한 보안 문제를 유발할 수 있으니 가급적이면 사용 자제를 권고함.
- 암호화 여부
- SNMPv3 이전은 Agent와 Manager간의 요청, 응답 과정에서 암호화가 아닌 평문으로 전송. -> 스니핑에 쉽게 노출
- SNMPv3는 바로 이전 버전(SNMPv2)에 계정과 암호로 인증하는 보안기능이 추가되었음.
- SNMP3 보안 서비스
- 비인가 사용자에 의한 데이터 변경(무결성 침해), 도청(기밀성 침해), 재사용 공격에 대응하는 기능을 제공하는 '사용자 기반 보안모델(USM: User-Security Model)'과 인가된 사용자의 MIP 접근통제 기능을 제공하는 뷰기반 접근통제 모델(VACM : View-based Access Control Model)'에 의해 제공
- Authoritative 엔진은 SNMP 명령을 처리하거나 통지를 발생시키는 SNMP 엔진을 의미하며, 일반적으로 SNMP 에이전트 기능을 수행하는 엔진을 나타냄
- 보안 매개변수(msgSecurityParameter) -> 다양한 공격 위협으로부터 방어
-
필드 설명 Authoritative 엔진 ID
(msgAuthoritativeEngineID)재전송 공격방지
해당 정보들로 메시지의 유효기간을 계산하며 재전송 여부를 판단.Authoritative 엔진부트횟수
(msgAuthoritativeBotts)Authoritative 엔진시각
(msgAuthoritativeEngineTime)사용자
(msgUserName)위장 공격, 메시지 위/변조 공격 방지
메시지 인증을 위해 HMAC(MD5,SHA)을 사용인증 매개변수
(msgAuthoritativeParameters)암호 매개변수
(msgPrivacyParameters)도청/스니핑 공격, 정보노출 공격 방지
메시지 암호화(DES-CBC) 지원
- NMS(Network Management System): 네트워크상의 자원들을 모니터링하고 제어하기 위한 도구.
- *(관리자-대행자 구조(Manager-Agent))전체 시스템에서 관리하는 네트워크 요소의 각 지점과 특정 한 속성에 주소와 이름을 지정하고 주기적으로 각 요소가 가진 정보를 중앙제어센터에 지공하는 구조
- 네트워크 모니터링 방식
- Pulling
- 요청/응답 방식. Manager가 원하는 정보를 Agent에게 요청하면 Agent가 MIB로부터 정보를 추출해 응답하는 방식
- 주기적인 폴링으로 Agent 상태변화 정보를 얻을 수 있음
- Evern Reporting
- Agent가 자신의 상태를 주기적으로 Manager에게 알림
- 중요한 상태 변화나 결함과 같은 예상치 못한 사건이 발생하는 경우, polling보다 빠르게 파악 가능.
- Pulling
'정보보안 > 애플리케이션 보안' 카테고리의 다른 글
[웹 애플리케이션 취약점] SQL Injection 취약점 (5) | 2024.11.15 |
---|---|
[애플리케이션 기본학습] DHCP 프로토콜 (0) | 2024.11.15 |
[애플리케이션 기본학습] FTP 프로토콜 (0) | 2024.11.14 |
[애플리케이션 기본학습] HTTP 프로토콜 (1) | 2024.11.14 |
[애플리케이션 기본학습] DNS 프로토콜 (0) | 2024.11.14 |