GUI 환경에서는 다양한 MIB Browser를 활용하여, 원격 호스트의 MIB를 탐색할 수 있다. 하지만 CLI 환경에서는 사용하는 방법만 익히게 되면, 보다 많은 기능을 제공하는 Net-SNMP가 있다. 따라서 Net-SNMP를 우분투 환경에 설치하고, 유용한 명령어에 대해 다루고자 한다. `SNMP`는 이전 글에서 간략히 어떤 기능을 제공하는 프로토콜인지에 대해 다루었다. 지금부터 나오는 내용을 이해하기 위해서는 `SNMP`에서 사용하는 용어와 구성 요소들에 대해 이해하여야 한다. `SNMP`의 기능 중 manager, agent를 모두 사용할 수 있는 `Net-SNMP`가 있다. 해당 프로그램은 과거에는 압축된 소스 파일을 직접 설치하여야 했지만, 현재는 간단히 설치할 수 있는 환경을 제공한다. install & configure
설치 환경은 `ubuntu 16.04`이다. 위의 명령어와 같이 간단히 설치가 가능하며, `snmp`는 `Net-SNMP`를 설치하는 것이다. `snmpd`는 이름에서 알 수 있듯이 `snmp`를 데몬화 해주는 것이다.
위와 같이 `/etc/snmp/snmpd.conf`에 15번 라인을 주석 처리하고, 17번 라인의 주석을 해제하여야 외부에서 접근이 가능하다. 또한 해당 파일에서 41번 라인 이후(ACCESS CONTROL)에 접근하고자 하는 커뮤니티를 설정하면 된다. (ex: rocommunity test 192.168.0.0/16). 정상적으로 수정하였다면, `snmpd`를 재시작하여 변경된 부분을 반영하여야 한다.
정상적으로 반영되었다면, netstat에서 위와 같이 정상적으로 반영된 것을 확인할 수 있다. 만약 방화벽을 사용 중이라면 `sudo ufw allow 161`을 통해 외부에서 접근 가능하도록 추가 설정을 진행하여야 한다. Net-SNMP command명령어는 크게 어떤 데이터를 반환하느냐에 따라 명령어를 나눌 수 있다. 반환하는 데이터는 스칼라, 벡터로 나뉜다. 여러 가지 명령어들이 있지만 간단한 테스트 용도나 자주 사용하는 명령어는 아래와 같다. (각 명령어들은 대부분 `-v snmp version`, `-c community name`, `ip addr or hostname`을 명시하여야 한다.) snmpstatus
위의 실행 결과에서도 알 수 있듯이, 간단히 특정 호스트의 상태 정보를 확인 할 수 있다. snmpget
특정 인스턴트 만을 조회하고자 할 때 사용한다. snmpwalk
`snmpget`과 달리 호스트의 모든 인스턴스를 조회할 수 있다. access remote host경우에 따라, 내가 지정한 커뮤니티(IP 또는 IP 대역)에 대해서만 SNMP 통신이 가능하게 할 수도 있을 것이다. 이를 위해서는 위와 같이 설정하는 것이 아니라 아래와 같이 설정을 하여야 한다.
remote host에 public community를 주석 처리 하고, `ETH0`라는 rocommunity를 지정한다. 또한, 특정 IP 대역만 허용한다. 따라서 해당 설정의 경우 remote host로 snmp 통신을 하기 위해서는 `snmpstatus -v 2c -c ETH0 remote host ip`를 입력하고, 해당 명령어를 실행하는 agent의 IP 대역이 `192.168.0.0` 대역이어야 한다. 즉, community의 이름을 관리자 또는 사용자만 알 수 있는 것으로 변경하고 IP 대역을 제한한다면 snmp v3의 보안 기능을 사용하지 않아도 외부 접근을 막을 수 있다. snmp설치 yum –y install net-snmp를 설치 혹시 먼저 올려논 iptables와 충돌로 인해 설치가 안될 수 있으니 잠시 중지시키거나 초기화해준다 net-snmp-utils도 설치 snmp를 실행 시켜준다 /etc/snmp로 이동하여 snmpd.conf 백업파일 생성 이후 원본파일 백지로 만들어준다. snmpd.conf 파일을 편집해준다. 이후 snmpd 재시작을 해준다. udp 161번 포트상태 확인 snmp tester를 이용해서 연결확인 이후 iptables의 정책을 이용하여 snmp 접근을 제어할 수 있다 '리눅스 실습' 카테고리의 다른 글
|