본문 바로가기
Linux/서버 설정

리눅스 SNMP 설치(CentOS 7)

by 프리윙즈 2021. 10. 14.
728x90
반응형

SNMP는 Simple Network Namagemet Protocol로 간이 망 관리 프로토콜입니다.

SNMP를 사용하는 이유는
1. IP 기반의 네트워크 장비로부터 정기적으로 장비의 정보를 자동으로 수집하거나 실시간 모니터링을 위해 설정합니다.
네트워크 장비의 예로는 라우터, 스위치, 서버, PC, 프린터, 모뎀 등이 있습니다.

2. 1번 기능을 바탕으로 네트워크 관리자, 인프라 관리자 등 관리자가 장비를 효율적으로 모니터링하기 위해 사용합니다.

3. SNMP는 OSI 7계층의 Application 계층 프로토콜이며, 단순 응답 형식의 프로토콜이기 때문에 UDP프로토콜을
사용하며, agent는 "UDP 161 / SNMP trap 162"를 사용하고, 관리서버는 UDP 162를 사용합니다.

4. 모니터링을 하기 위해선 모니터링 프로그램을 설치해야하고 대표적인 오픈소스로는 zabbix가 있습니다.

5. 모니터링 프로그램 설치된 곳이 관리서버가 되고, 관리서버와 agent는 SNMP버전, Community,
PDU를 일치 시켜줘야 합니다.

6. 편리한 대신 보안 취약점이 존재하므로 운영 시 대응방안을 마련해야 합니다.

7. SNMP 설치 방법은 아래와 같습니다.



yum -y install net-snmp net-snmp-utils 명령어로 SNMP 설정하기 위한 프로그램을 설치해줍니다.

설치를 하게되면 /etc/snmp 경로에 snmpd.conf 파일이 생성이 됩니다.

해당 경로에 snmpd.conf 파일을 수정 전에 백업해 줍니다. 백업 명령어는 다음과 같습니다.
cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.bak

vi 편집기로 snmpd.conf를 실행해 줍니다. (vi /etc/snmp/snmpd.conf)
snmpd.conf에서 아래 내용 외에 글은 필요가 없어서 전체 삭제 해주셔도 무방합니다.

# First, map the community name "public" into a"security name"
# sec.name source community 
com2sec test localhost public 
com2sec test 모니터링 서버 IP public 
# 위에는 localhost이고 아래는 모니터링 서버 정보와 일치시켜 줍니다. 

#### # Second, map the security name into a group name: 
# groupName securityModel securityName 
group rogroup v1 network 
group rogroup v2c network 
# securityModel은 SNMP 버전을 입력하면 됩니다. v1:SNMP버전1 / v2c:SNMP버전2 
# groupName과 securityName은 모니터링 서버와 일치시켜 줍니다. 

#### # Third, create a view for us to let the group have rights to:
# Make at least snmpwalk -v1 localhost -c public system fast again. 
# name incl/excl subtree mask(optional) 
view systemview included .1.3.6.1.2.1.1 
view systemview included .1.3.6.1.2.1.25.1.1 
view all included .1 80 

#### 
# Finally, grant the group read-only access to the systemview view. 
# group contextsec.model sec.level prefix read write notif 
access notConfigGroup "" any noauth exact systemview none none 
access rogroup "" any noauth exact all none none
# read, write 등 그룹에 권한을 주는 것이므로 본인에 맞게 수정하시면 됩니다.

 

반응형

 

위에 글을 참고해서 snmpd.conf를 수정하셨으면 저장을 해주시고,

systemctl enable snmpd.service 명령어를 입력하여 부팅 시 자동 실행을 할 수 있게 설정해 주시고
systemctl start snmpd.service 명령어로 snmpd 서비스를 실행시켜 줍니다.
systemctl status snmpd.service로 fail없이 active가 정상인지 확인해 주시고나면
좀 전에 설치했던 net-snmp-utils를 사용할 시간입니다.

net-snmp-utils는 SNMP 설정을 테스트 할 수 있는 snmpwalk를 설치해 줍니다.
이 snmpwalk를 사용해서 테스트하는 방법은 아래와 같습니다.

  • snmpwalk -v 1|2c|3(snmp버전) -c community source 가 테스트 시 기본 구성입니다.
  • localhost로 SNMP를 테스트 오른쪽과 같습니다. -> snmpwalk -v 2c -c public localhost
  • snmpwalk -v 2c -c public agent_IP

localhost로 테스트가 정상적으로 안 되시면 snmpd.conf를 재확인 하시기 바랍니다.

정상적으로 되셨다면 모니터링 서버에 해당 agent_IP를 통해 연결만 하시면 됩니다.
하지만 지금 이 상태로는 연결할 수 없습니다.
왜냐하면 SNMP 포트를 허용해주지 않았기 때문이죠

방화벽에서 SNMP 포트인 UDP 161을 허용해주어야 합니다.
설정 방법은 아래와 같습니다.

/etc/firewalld/zones/ 경로에서 vi편집기로 public.xml을 실행해줍니다.
아래과 같은 화면이 나올텐데요
아래와 같이 UDP 161 포트를 추가해 방화벽에서 허용해줍니다.

<?xml version="1.0" encoding="utf-8"?> 

<zone> 
<short>Public</short>
<description>For use in public areas. 
You do not trust the other computers on networks to not harm your computer. 
Only selected incoming connections are accepted.
</description> 
<service name="ssh"/> 
<service name="dhcpv6-client"/> 

<port protocol="udp", port="161"/> 
<port protocol="udp", port="162"/> (SNMP trap설정 시 추가) 

</zone>

저장해주시고

systemctl restart firewalld 명령어로 방화벽을 재시작해 UDP 161포트를 열어줍니다.

이제 모니터링 서버에서 해당 agent IP를 입력하면 정상적으로 SNMP가 연동될 것입니다.


반응형

댓글