우분투에 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
로컬 테스트
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을 설정하는 방법
'리눅스' 카테고리의 다른 글
[draft] 우분투에서 Samba 서버를 설정하고 구성하는 방법 (0) | 2022.12.16 |
---|---|
[draft] CentOS 7에 Go를 설치하는 방법 (0) | 2022.12.16 |
[draft] snmpwalk 명령어 (0) | 2022.12.14 |
CentOS 7에서 vsftpd 데몬을 추가 구성하는 방법 (0) | 2022.12.12 |
CentOS 7에서 네트워크 구성을 설정하는 방법(network configuration) (0) | 2022.12.12 |