우분투에 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
로컬 테스트
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을 설정하는 방법
'리눅스' 카테고리의 다른 글
[리눅스] RabbitMQ(erlang)를 설치하는 방법 (0) | 2014.02.14 |
---|---|
CentOS 6에서 VLAN을 추가하고 삭제하는 방법 (0) | 2014.02.14 |
[리눅스] 우분투(Ubuntu) 관리자 계정(root) 활성화 (0) | 2014.02.04 |
CentOS 7에 Go를 설치하는 방법 (0) | 2014.02.03 |
CentOS에서 RPM 패키지를 YUM을 사용하여 로컬에 다운로드하는 방법 (1) | 2014.01.22 |