본문 바로가기

리눅스

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

728x90

우분투에 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
더보기

---

libsnmp-dev 패키지 설치

sudo apt install -y libsnmp-dev
$ sudo apt install -y libsnmp-dev       
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 udev : Breaks: systemd (< 249.11-0ubuntu3.6) but 249.11-0ubuntu3.4 is to be installed
        Recommends: systemd-hwe-hwdb but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

systemd 패키지 설치

sudo apt install -y systemd
$ systemd --version
systemd 249 (249.11-0ubuntu3.6)
+PAM +AUDIT +SELINUX +APPARMOR +IMA +SMACK +SECCOMP +GCRYPT +GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBFDISK +PCRE2 -PWQUALITY -P11KIT -QRENCODE +BZIP2 +LZ4 +XZ +ZLIB +ZSTD -XKBCOMMON +UTMP +SYSVINIT default-hierarchy=unified

systemd 업그레이드 후 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