본문 바로가기

리눅스

우분투에 SNMPv3을 설정하는 방법

반응형

우분투에 SNMPv3을 설정하는 방법

테스트 환경

호스트명 아이피 운영체제 NET-SNMP version 비고
control1 192.168.0.51 Ubuntu 22.04 5.9.1  
node1 192.168.0.61 Ubuntu 22.04 5.9.1  
node2 192.168.0.62 CentOS 7.9 5.7.2  

SNMP 패키지 설치

Ubuntu snmpd 패키지 설치

sudo apt install -y snmpd
snmpd -v
$ snmpd -v

NET-SNMP version:  5.9.1
Web:               http://www.net-snmp.org/
Email:             net-snmp-coders@lists.sourceforge.net
  • ubuntu에서는 snmpd 패키지 설치 시 자동으로 데몬을 실행합니다.

CentOS net-snmp 패키지 설치

sudo yum install -y net-snmp
snmpd -v
$ snmpd -v

NET-SNMP version:  5.7.2
Web:               http://www.net-snmp.org/
Email:             net-snmp-coders@lists.sourceforge.net

snmpd 서비스 활성화 및 시작

sudo systemctl --now enable snmpd
$ sudo systemctl --now enable snmpd
Created symlink from /etc/systemd/system/multi-user.target.wants/snmpd.service to /usr/lib/systemd/system/snmpd.service.

 

snmpwalk 명령어 사용을 위해 아래와 같은 패키지가 필요합니다.

  • Ubuntu snmp 패키지
sudo apt install -y snmp
  • CentOS net-snmp-utils 패키지
sudo yum install -y net-snmp-utils

snmpwalk 명령으로 snmp 질의 테스트

SNMPv1 프로토콜을 사용하여 로컬 호스트에서 SNMP 정보를 가져옵니다.

snmpwalk -v1 -c public 127.0.0.1
$ snmpwalk -v1 -c public 127.0.0.1
iso.3.6.1.2.1.1.1.0 = STRING: "Linux kube-control1 5.15.0-56-generic #62-Ubuntu SMP Tue Nov 22 19:54:14 UTC 2022 x86_64"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10
iso.3.6.1.2.1.1.3.0 = Timeticks: (99759) 0:16:37.59
iso.3.6.1.2.1.1.4.0 = STRING: "Me <me@example.org>"
...
iso.3.6.1.2.1.25.1.4.0 = STRING: "BOOT_IMAGE=/vmlinuz-5.15.0-56-generic root=/dev/mapper/vg0-lv--0 ro"
iso.3.6.1.2.1.25.1.5.0 = Gauge32: 2
iso.3.6.1.2.1.25.1.6.0 = Gauge32: 126
iso.3.6.1.2.1.25.1.7.0 = INTEGER: 0
End of MIB

SNMPv1 프로토콜을 사용하여 시스템 설명 OID에 대한 정보를 로컬 호스트에서 가져옵니다.

snmpwalk -v1 -c public 127.0.0.1 iso.3.6.1.2.1.1.1.0
$ snmpwalk -v1 -c public 127.0.0.1 iso.3.6.1.2.1.1.1.0
iso.3.6.1.2.1.1.1.0 = STRING: "Linux kube-control1 5.15.0-56-generic #62-Ubuntu SMP Tue Nov 22 19:54:14 UTC 2022 x86_64"

SNMPv3 사용자 생성

SNMPv3에서는 사용자를 생성하고 암호화/인증을 설정해야 합니다.

snmp server : control1

net-snmp-config 명령을 사용하기 위해 libsnmp-dev 패키지를 설치해야 합니다.

sudo apt install -y libsnmp-dev

snmpd 서비스 중지

sudo systemctl stop snmpd

net-snmp-config --create-snmpv3-user 사용법

$ net-snmp-config --create-snmpv3-user --help

Usage:
  net-snmp-create-v3-user [-ro] [-A authpass] [-X privpass]
                          [-a MD5|SHA|SHA-512|SHA-384|SHA-256|SHA-224] [-x DES|AES] [username]

SNMPv3 사용자 생성

net-snmp-config --create-snmpv3-user -A auth-scbyun -X pri-scbyun -x AES -a SHA snmp-scbyun
  • -A auth-scbyun : 인증용 패스워드를 auth-scbyun으로 설정합니다.
  • -X pri-scbyun : 암호화용 패스워드를 pri-scbyun으로 설정합니다.
  • -x AES : 암호화 알고리즘으로 AES를 사용합니다.
  • -a SHA : 인증 알고리즘으로 SHA를 사용합니다.
  • snmp-scbyun : 생성할 SNMPv3 사용자의 이름입니다.
$ net-snmp-config --create-snmpv3-user -A auth-scbyun -X pri-scbyun -x AES -a SHA snmp-scbyun
adding the following line to /var/lib/snmp/snmpd.conf:
   createUser snmp-scbyun SHA "auth-scbyun" AES "pri-scbyun"
adding the following line to /usr/share/snmp/snmpd.conf:
   rwuser snmp-scbyun

정상적으로 되었다면 snmpd.conf 설정 파일에 "rwuser" 라인이 생성됩니다.

cat /usr/share/snmp/snmpd.conf | grep rwuser
$ cat /usr/share/snmp/snmpd.conf | grep rwuser
rwuser snmp-scbyun
728x90

로컬 테스트

SNMPv1 프로토콜을 사용하여 원격 호스트(192.168.0.51)에서 시스템 이름 정보를 가져옵니다.

$ snmpwalk -v1 -c public 192.168.0.51 iso.3.6.1.2.1.1.5.0
iso.3.6.1.2.1.1.5.0 = STRING: "kube-control1"

SNMPv2c 프로토콜을 사용하여 원격 호스트(192.168.0.51)에서 시스템 이름 정보를 가져옵니다.

$ snmpwalk -v2c -c public 192.168.0.51 iso.3.6.1.2.1.1.5.0
iso.3.6.1.2.1.1.5.0 = STRING: "kube-control1"

SNMPv2c 프로토콜을 사용하여 원격 호스트의 SNMP 상태를 확인합니다.

$ snmpstatus -v2c -c public 192.168.0.51
[UDP: [192.168.0.51]:161->[0.0.0.0]:34361]=>[Linux kube-control1 5.15.0-56-generic #62-Ubuntu SMP Tue Nov 22 19:54:14 UTC 2022 x86_64] Up: 0:07:10.68
Interfaces: 0, Recv/Trans packets: 0/0 | IP: 0/0

SNMPv3 프로토콜을 사용하여 원격 호스트(192.168.0.51)에서 시스템 이름 정보를 가져옵니다.

snmpwalk -v3 -u snmp-scbyun -l authPriv -a SHA -A auth-scbyun -x AES -X pri-scbyun 192.168.0.51
$ snmpwalk -v3 -u snmp-scbyun -l authPriv -a SHA -A auth-scbyun -x AES -X pri-scbyun 192.168.0.51 iso.3.6.1.2.1.1.5.0
iso.3.6.1.2.1.1.5.0 = STRING: "kube-control1"

SNMP 클라이언트

모니터링 대상 서버 : node1, node2

snmpd.conf 파일에 SNMPv3 사용자 생성과 읽기/쓰기 권한을 추가합니다.

echo 'createUser snmp-scbyun SHA "auth-scbyun" AES "pri-scbyun"' >> /etc/snmp/snmpd.conf
echo 'rwuser snmp-scbyun' >> /etc/snmp/snmpd.conf

snmpd.conf 파일에서 에이전트 주소(agentaddress)를 모든 인터페이스에서 SNMP 요청을 수신할 수 있도록 수정합니다.

sed -i 's/^agentaddress  127.0.0.1,\[::1\]/agentaddress  0.0.0.0/g' snmpd.conf

snmpd 서비스 재시작

sudo systemctl restart snmpd

SNMPv3 테스트(control1:server에서 실행)

SNMPv3 프로토콜을 사용하여 원격 호스트(192.168.0.61)에서 시스템 이름 정보를 가져옵니다.

snmpwalk -v3 -u snmp-scbyun -l authPriv -a SHA -A auth-scbyun -x AES -X pri-scbyun 192.168.0.61 iso.3.6.1.2.1.1.5.0
  • -v3 : SNMP 버전을 지정합니다.
  • -u : 사용자 이름을 지정합니다.
  • -l authPriv : 인증 및 암호화를 활성화합니다.
  • -a SHA : 인증 알고리즘으로 SHA를 사용합니다.
  • -A 'authPassword' : 인증 패스워드를 지정합니다.
  • -x AES : 암호화 알고리즘으로 AES를 사용합니다.
  • -X 'privPassword' : 암호화 패스워드를 지정합니다.
  • 192.168.0.51 : SNMP 서버의 IP 주소입니다.
$ snmpwalk -v3 -u snmp-scbyun -l authPriv -a SHA -A auth-scbyun -x AES -X pri-scbyun 192.168.0.61 iso.3.6.1.2.1.1.5.0
iso.3.6.1.2.1.1.5.0 = STRING: "kube-node1"

SNMPv3 프로토콜을 사용하여 원격 호스트(192.168.0.62)에서 시스템 이름 정보를 가져옵니다.

$ snmpwalk -v3 -u snmp-scbyun -l authPriv -a SHA -A auth-scbyun -x AES -X pri-scbyun 192.168.0.62 iso.3.6.1.2.1.1.5.0
iso.3.6.1.2.1.1.5.0 = STRING: "kube-node2"

 

참고URL

- 변군이글루 : CentOS 7에서 SNMPv3을 설정하는 방법

 

728x90
반응형