SNMP
De SergiTurWiki
| Curs: | SeguretatXarxesInformàtiques, LinuxAdministracioAvancada, DissenyXarxesLinux |
| Fitxers: | EinesMonitoritzacio.pdf (EinesMonitoritzacio.odp) |
| Repositori SVN: | https://anonymous@svn.projectes.lafarga.cat/svn/iceupc/SeguretatXarxesInformàtiques |
| Usuari: | anonymous |
| Paraula de pas: | sense paraula de pas |
| Autors: | Sergi Tur Badenas |
Simple Network Management Protocol (SNMP) és un protocol del nivell d'aplicació que facilita l'intercanvi d'informació d'administració entre dispositius de xarxa.
Característiques principals:
- Utilitza un servei no orientat a connexió (protocol UDP)
- Permet als administradors supervisar de forma remota els dispositius d'una xarxa.
- Hi han 3 versions del protocol:
- Les més utilitzades són SNMPv1 i SNMPv2
- A la nova versió (SNMPv3) s'han introduït força canvis sobretot respecte al tema de seguretat però encara no esta gaire suportat per la industria.
Contingut |
Components bàsics d'una xarxa amb SNMP
Els components bàsics d'una xarxa administrada amb SNMP són:
- Dispositius administrats
- Agents de programari
- Sistemes administradors de xarxa
Els dispositius administrats tenen instal·lat un programari (agent) que s'encarreguen de recollir i emmagatzemar informació de la màquina administrada. La informació emmagatzemada es posa a disposició dels sistemes administradors de la xarxa mitjançant SNMP. Les màquines administrades poden ser encaminadors, servidors, commutadors, estacions de treball, impressores, perifèrics de xarxa o altres màquines connectades a la xarxa (màquines dispensadores d'aliments, alarmes, estacions meteorològiques, etc.)
Management Information Bases (MIB)
- Emmagatzema una col·lecció d'informació d'administració que està organitzada jeràrquicament.
- Són les dades que guarden els dispositius administrats i que es posen a disposició dels gestors de la xarxa (NM) a través de SNMP.
- Sovint els dispositius administrats s'anomenen objectes MIB.
Es tracta doncs d'una base de dades jeràrquica on cada node de l'arbre és un objecte. Hi ha dos tipus d'objectes:
- Escalars: Els objectes tabulars són simplement una variable
- Tabulars: Estan formats per altres objectes
- Cada objecte té un identificador (object ID) que l'identifica de forma única dins de l'arbre MIB
- L'estructura de l'arbre MIB esta força definida tot i que localitzar un paràmetre específic per a un dispositiu específic dependrà en gran part en conèixer l'arbre MIB del fabricant del dispositiu. No tots els dispositius proporcionen totes les variables.
- S'utilitza una notació especial anomenada Abstract Syntax Notation One.
- L'arrel és anònima i es representa amb un punt
Per exemple l'objecte l'objecte ifNumber s'identifica amb una de les següents notacions:
- iso.org.dod.internet.mgmt.mib-2.interfaces.ifNumber
- .1.3.6.1.2.1.2.1
Instal·lació
Servidor
$ sudo apt-get install snmpd
Comandes;
$ dpkg -L snmpd | grep bin /usr/sbin /usr/sbin/snmpd /usr/sbin/snmptrapd
Fitxers de configuració
$ dpkg -L snmpd | grep etc /etc /etc/default /etc/default/snmpd /etc/snmp /etc/snmp/snmpd.conf /etc/snmp/snmptrapd.conf /etc/init.d /etc/init.d/snmpd
Client
$ sudo apt-get install snmp
Comandes:
$ dpkg -L snmp | grep bin /usr/bin /usr/bin/snmpbulkget /usr/bin/snmpbulkwalk /usr/bin/snmpconf /usr/bin/snmpdelta /usr/bin/snmpdf /usr/bin/snmpget /usr/bin/snmpgetnext /usr/bin/snmpnetstat /usr/bin/snmpnetstat53 /usr/bin/snmpset /usr/bin/snmpstatus /usr/bin/snmptable /usr/bin/snmptest /usr/bin/snmptranslate /usr/bin/snmptrap /usr/bin/snmpusm /usr/bin/snmpvacm /usr/bin/snmpwalk /usr/bin/encode_keychange /usr/bin/fixproc /usr/bin/traptoemail /usr/bin/mib2c-update /usr/bin/snmpinform
Comandes del client snmp
Comanda snmpwalk
La comanda snmpwalk ens mostra els continguts de la base de dades MIB de SNMP a partir d'un node concret.
Per exemple, per obtenir les dades de la secció sistema a una màquina local amb snmp activat:
$ snmpwalk -Os -c public -v 2c localhost system sysDescr.0 = STRING: Linux ubuntu-sala 2.6.22-14-generic #1 SMP Sun Oct 14 23:05:12 GMT 2007 i686 sysObjectID.0 = OID: netSnmpAgentOIDs.10 sysUpTimeInstance = Timeticks: (984884) 2:44:08.84 sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmpd.local.conf) sysName.0 = STRING: ubuntu-sala sysLocation.0 = STRING: Unknown (configure /etc/snmp/snmpd.local.conf) sysORLastChange.0 = Timeticks: (54) 0:00:00.54 sysORID.1 = OID: snmpMIB sysORID.2 = OID: tcpMIB sysORID.3 = OID: ip sysORID.4 = OID: udpMIB sysORID.5 = OID: vacmBasicGroup sysORID.6 = OID: snmpFrameworkMIBCompliance sysORID.7 = OID: snmpMPDCompliance sysORID.8 = OID: usmMIBCompliance sysORDescr.1 = STRING: The MIB module for SNMPv2 entities sysORDescr.2 = STRING: The MIB module for managing TCP implementations sysORDescr.3 = STRING: The MIB module for managing IP and ICMP implementations sysORDescr.4 = STRING: The MIB module for managing UDP implementations sysORDescr.5 = STRING: View-based Access Control Model for SNMP. sysORDescr.6 = STRING: The SNMP Management Architecture MIB. sysORDescr.7 = STRING: The MIB for Message Processing and Dispatching. sysORDescr.8 = STRING: The management information definitions for the SNMP User-based Security Model. sysORUpTime.1 = Timeticks: (54) 0:00:00.54 sysORUpTime.2 = Timeticks: (54) 0:00:00.54 sysORUpTime.3 = Timeticks: (54) 0:00:00.54 sysORUpTime.4 = Timeticks: (54) 0:00:00.54 sysORUpTime.5 = Timeticks: (54) 0:00:00.54 sysORUpTime.6 = Timeticks: (54) 0:00:00.54 sysORUpTime.7 = Timeticks: (54) 0:00:00.54 sysORUpTime.8 = Timeticks: (54) 0:00:00.54
On
-c public
Indica la community que volem indicar i
-v 2c
Ens indica la versió de SNMP. Finalment l'últim paràmetre (system) ens indica que volem mostrar les dades del node:
.1.3.6.1.2.1.1
o
.iso.org.dod.mgtm.mib-2.system.
Si utilitem snmpwalk sense l'últim paràmetre:
$ snmpwalk -Os -c public -v 2c localhost
Obtenim tot l'arbre MIB.
Les seccions més interessants per a consultar són les del node 'iso.org.dod.mgtm.mib-2:
- System (1);
- Interfaces (2)
- AT (3);
- IP (4);
- ICMP (5);
- TCP (6);
- UDP (7);
- EGP (8);
- Transmission (10);
- SNMP (11).
Per monitoritzar les interfícies de xarxa podem utilitzar:
$ snmpwalk -Os -c public -v 2c localhost interfaces
Comanda snmpconf
snmpconf
La comanda snmpconf ens ofereix un assistent que permet configurar snmp.
$ sudo snmpconf The following installed configuration files were found: 1: /etc/snmp/snmpd.conf 2: /etc/snmp/snmptrapd.conf Would you like me to read them in? Their content will be merged with the output files created by this session. Valid answer examples: "all", "none","3","1,2,5" Read in which (default = all): 1 I can create the following types of configuration files for you. Select the file type you wish to create: (you can create more than one as you run this program) 1: snmpd.conf 2: snmp.conf 3: snmptrapd.conf Other options: quit Select File:
Les primeres opcions ens pregunten quins fitxers de configuració volem modificar.
Per modificar el servidor, primer escollim:
1: /etc/snmp/snmpd.conf
i després:
1: snmpd.conf
Seguim...
The configuration information which can be put into snmpd.conf is divided into sections. Select a configuration section for snmpd.conf that you wish to create: 1: Extending the Agent 2: Monitor Various Aspects of the Running Host 3: Access Control Setup 4: Agent Operating Mode 5: Trap Destinations 6: System Information Setup
Other options: finished
Select section:
Monitoritzar recursos del Host que executa el servidor
A la tercera pregunta de snmpconf seleccionen l'opció 2:
2: Monitor Various Aspects of the Running Host
The configuration information which can be put into snmpd.conf is divided into sections. Select a configuration section for snmpd.conf that you wish to create: 1: Extending the Agent 2: Monitor Various Aspects of the Running Host 3: Access Control Setup 4: Agent Operating Mode 5: Trap Destinations 6: System Information Setup Other options: finished Select section: 2
Tindrem 4 grups de paràmetres a monitoritzar:
- 1: Monitorització de processos.
- 2: Monitorització d'espai en disc
- 3: Monitorització de la càrrega del sistema
- 4: Monitorització de la mida d'un fitxer
Section: Monitor Various Aspects of the Running Host Description: The following check up on various aspects of a host. Select from: 1: Check for processes that should be running. 2: Check for disk space usage of a partition. 3: Check for unreasonable load average values. 4: Check on the size of a file. Other options: finished, list Select section:
Per exemple podem controlar el servidor apache2:
Configuring: proc
Description:
Check for processes that should be running.
proc NAME [MAX=0] [MIN=0]
NAME: the name of the process to check for. It must match
exactly (ie, http will not find httpd processes).
MAX: the maximum number allowed to be running. Defaults to 0.
MIN: the minimum number to be running. Defaults to 0.
The results are reported in the prTable section of the UCD-SNMP-MIB tree
Special Case: When the min and max numbers are both 0, it assumes
you want a max of infinity and a min of 1.
Name of the process you want to check on: apache2
Maximum number of processes named 'apache2' that should be running [default = 0]: 0
Minimum number of processes named 'apache2' that should be running [default = 0]: 10
Ara només queda guardar escrivint varies vegades la comanda finished. Snmpconf ens generarà un fitxer anomenat:
snmpd.conf
Que el podem substituir per l'antic /etc/snmp/snmpd.conf:
$ sudo cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.old $ sudo cp snmpd.conf /etc/snmp
i reiniciar snmp:
$ sudo /etc/init.d/snmpd reload
Ara podem consultar les alertes del procés apache2 amb:
$ snmpwalk -Os -c public -v 2c localhost prTable prIndex.1 = INTEGER: 1 prNames.1 = STRING: apache2 prMin.1 = INTEGER: 10 prMax.1 = INTEGER: 0 prCount.1 = INTEGER: 6 prErrorFlag.1 = INTEGER: 1 prErrMessage.1 = STRING: Too few apache2 running (# = 6) prErrFix.1 = INTEGER: 0 prErrFixCmd.1 = STRING:
O amb mbrowse:
Ports de SNMP
Els podem obtenir consultant el fitxers /etc/services:
$ cat /etc/services | grep snmp snmp 161/tcp # Simple Net Mgmt Protocol snmp 161/udp # Simple Net Mgmt Protocol snmp-trap 162/tcp snmptrap # Traps for SNMP snmp-trap 162/udp snmptrap # Traps for SNMP
Per saber si un dispositiu suporta SNMP podem primer utilitzar l'scanner de ports nmap:
$ sudo nmap -sU 192.168.1.1 -p 161 Starting Nmap 4.20 ( http://insecure.org ) at 2007-12-10 12:56 CET Interesting ports on mygateway1.ar7 (192.168.1.1): PORT STATE SERVICE 161/udp open|filtered snmp MAC Address: 00:15:E9:CA:34:A5 (D-Link) Nmap finished: 1 IP address (1 host up) scanned in 0.439 seconds
Fixeu-vos que cal indicar explícitament que voleu fer un escaneig amb UDP.
Configuració del servidor
El fitxer de configuració del servidor és /etc/snmp/snmpd.conf. A una Ubuntu 9.10 trobem:
$ sudo cat /etc/snmp/snmpd.conf | grep -v '^#\|^$\|^;' com2sec paranoid default public group MyROSystem v1 paranoid group MyROSystem v2c paranoid group MyROSystem usm paranoid group MyROGroup v1 readonly group MyROGroup v2c readonly group MyROGroup usm readonly group MyRWGroup v1 readwrite group MyRWGroup v2c readwrite group MyRWGroup usm readwrite view all included .1 80 view system included .iso.org.dod.internet.mgmt.mib-2.system access MyROSystem "" any noauth exact system none none access MyROGroup "" any noauth exact all none none access MyRWGroup "" any noauth exact all all none syslocation Unknown (configure /etc/snmp/snmpd.local.conf) syscontact Root <root@localhost> (configure /etc/snmp/snmpd.local.conf)
On:
$ sudo cat /etc/snmp/snmpd.conf ................ ############################################################################### # Access Control ############################################################################### .............. .............. # sec.name source community com2sec paranoid default public #com2sec readonly default public #com2sec readwrite default private
Per defecte esta en mode paranoid. Si volem activar el servidor hem de descomentar la línia:
com2sec readonly default public
I comentar la línia
com2sec paranoid default public
El fitxer queda de la següent manera:
$ sudo cat /etc/snmp/snmpd.conf ................ ############################################################################### # Access Control ############################################################################### .............. .............. # sec.name source community #com2sec paranoid default public com2sec readonly default public #com2sec readwrite default private
Sempre que modifiquem la configuració cal aplicar els canvis tornant a iniciar el servidor amb la comanda:
$ sudo /etc/init.d/snmpd reload
Per provar que funciona:
$ snmpwalk -Os -c public -v 2c localhost system
Recursos:
Eines gràfiques
mbrowse
Per instal·lar mbrowse cal executar:
$ sudo apt-get install mbrowse
i executeu el següent des de una terminal:
$ mbrowse
Dispositius
SNMP als routers Zyxel Prestige 660HW-61 de telefònica
Aquest routers tenen accés telnet:
$ telnet ip_router_adsl
Copyright (c) 1994 - 2005 ZyXEL Communications Corp.
Prestige 660HW-61 Main Menu
Getting Started Advanced Management
1. General Setup 21. Filter Set Configuration
2. WAN Backup Setup 22. SNMP Configuration
3. LAN Setup 23. System Security
4. Internet Access Setup 24. System Maintenance
25. IP Routing Policy Setup
Advanced Applications 26. Schedule Setup
11. Remote Node Setup
12. Static Routing Setup
14. Dial-in User Setup 99. Exit
15. NAT Setup
Enter Menu Selection Number:
Seleccionem l'opció 22':
Menu 22 - SNMP Configuration
SNMP:
Get Community= public
Set Community= public
Trusted Host= 0.0.0.0
Trap:
Community= public
Destination= 0.0.0.0
Press ENTER to Confirm or ESC to Cancel:
Com podeu veure ja porten SNMP activat per defecte amb les community típiques.
TroubleShooting. Resolució de problemes
SNMPD només funciona amb localhost
Si noteu que només podeu accedir a SNMPD des de la màquina local i utilitzant localhost en comptes de la IP, aleshores és que SNMPD només s'està executant a la interfície loopback. Consulteu el fitxer:
$ cat /etc/default/snmpd # This file controls the activity of snmpd and snmptrapd # MIB directories. /usr/share/snmp/mibs is the default, but # including it here avoids some strange problems. export MIBDIRS=/usr/share/snmp/mibs # snmpd control (yes means start daemon). SNMPDRUN=yes # snmpd options (use syslog, close stdin/out/err). SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1' # snmptrapd control (yes means start daemon). As of net-snmp version # 5.0, master agentx support must be enabled in snmpd before snmptrapd # can be run. See snmpd.conf(5) for how to do this. TRAPDRUN=no # snmptrapd options (use syslog). TRAPDOPTS='-Lsd -p /var/run/snmptrapd.pid' # create symlink on Debian legacy location to official RFC path SNMPDCOMPAT=yes
Per seguretat, el dimoni per defecte és carrega per escoltar només a localhost. Canvieu la línia:
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1'
per:
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid'
I torneu a iniciar SNMPD:
$ sudo /etc/init.d/snmpd restart
Exemples
Obtenir el nom d'una impresora
$ snmpwalk -v1 -c public 192.168.12.50 -m ALL .1 | grep DeviceDescr HOST-RESOURCES-MIB::hrDeviceDescr.1 = STRING: hp LaserJet 2420
Vegeu també
- [[1]]






