Snmp

De Linuxmemo.

http://www.frameip.com/snmp/

Sommaire

[modifier] Le client

  • commande
snmpwalk -Os -c public -v 1 hostname .1.3.6.1.2.1.1
  • graphique:

tkmib

~/.snmp/tkmibrc
  • Ireasoning.com mibbrowser free

http://www.ireasoning.com/downloadmibbrowserfree.php

  • console configuration:
/etc/snmp/snmp.conf
#mibs ALL
mibs $HOME/.snmp/mibs/hpicfBasic.mib:/var/lib/mibs/ietf/SNMPv2-MIB:/var/lib/mibs/ietf/HOST-RESOURCES-MIB:/var/lib/mibs/ietf/HOST-RESOURCES-TYPES
mibdirs /var/lib/mibs/iana:/var/lib/mibs/ietf

[modifier] Le serveur

[modifier] configuration:

Le fichier de configuration du serveur est /etc/snmp/snmpd.conf

[modifier] Les directives:

[modifier] LCA

  1. Classique (minimum) v1 et v2c
rocommunity COMMUNITY [SOURCE [OID]]
rwcommunity COMMUNITY [SOURCE [OID]]

COMMUNITY est le nom de communauté SOURCE une adresse IP ou de réseau OID restreint l'accès (à cette communauté) pour tout ce qui est en dessous de l'OID.

ou bien

  1. View-Based Access Control Model (VACM) as defined in RFC 2575 v1 et v2c
    1. Cette directive spécifie le mappage à partir d'une paire "source/communauté" à un nom de la sécurité.
#com2sec [-Cn CONTEXT] NAME     SOURCE        COMMUNITY
com2sec                mynagios 192.168.0.88  public
    1. Cette directive définit le mappage entre le nom d'un groupe, un numéro de version SNMP, et un nom de sécurité.
#group GROUP      {v1|v2c|usm|tsm|ksm} SECNAME
group  mynagiosv1        v1             mynagios
group  mynagiosv2c       v2c            mynagios
    1. Ceci définit la vue.

TYPE est soit inclus ou exclus. MASK est une liste d'octets hexadécimaux séparés par des '.' ou ':'. Le MASQUE par défaut "ff" s'il n'est pas spécifié.

view NAME  TYPE     SUBTREE                              [MASK]
view cust1 included interfaces.ifTable.ifEntry.ifIndex.1 ff.a0
view cust2 included interfaces.ifTable.ifEntry.ifIndex.2 ff.a0
    1. Ceci définit les droits d'accès du groupe.

LEVEL est soit "noauth, auth, or priv". PREFX spécifie comment CONTEXTE doit être adapté par rapport au contexte de la requête entrante, soit "exact or prefix". READ, WRITE and NOTIFY specifies the view to be used for GET*, SET and TRAP/INFORM requests (although the NOTIFY view is not currently used). For v1 or v2c access, LEVEL will need to be noauth.

#access GROUP CONTEXT {any|v1|v2c|usm|tsm|ksm}  LEVEL   PREFX   READ    WRITE   NOTIFY
access	 cust1	 ""	         any	        noauth	exact	all	none	none
access	 cust2	 ""	         any	        noauth	exact	all	none	none

[modifier] Snmp v3

Ajout de la sécurité:

  • L'authentification : Empêche quelqu'un de changer le paquet SNMPv3 en cours de route et de valider le mot de passe de la personne qui transmet la requête.

User Security Module (USM) avec un login (MD5 et SHA-1)

  • Le cryptage : Empêche quiconque de lire les informations de gestions contenues dans un paquet SNMPv3.

Se fait sur un mot de passe « partagé » entre le manager et l'agent (DES)

  • L'estampillage du temps : Empêche la réutilisation d'un paquet SNMPv3 valide a déjà transmis par quelqu'un.


Source: http://blog.debianfr.net/content/configuration-snmpv3-sous-net-snmp

Un utilisateur SNMPv3 est normalement un composé d'un nom de sécurité ou « security name » et de la valeur de l'engineID.
Dans les faits, le terme est abusivement employé pour désigner directement le nom de sécurité.
La configuration d'un utilisateur SNMPv3 fait donc directement référence à un « securityName ».

Il faut également savoir qu'une partie de la configuration ne s'applique qu'à l'utilisateur appelé « Principal ». Les suivants pourront être ensuite créés à l'aide de la commande snmpusm (sous réserve que l'utilisateur « Principal » dispose des privilèges requis en écriture sur la table « usmUserTable »). Afin de composer un parallèle avec les systèmes Unix, ce premier utilisateur sera arbitrairement dénommé « root ».

  • fichier de rétention
/usr/local/var/net-snmp/ par défaut en compilant Net-SNMP ;
/var/net-snmp/ sous RHEL et dérivées de RedHat ;
/var/lib/snmp/ pour Debian et ses dérivées comme Ubuntu.

pour créer ce premier utilisateur, il faut placer la directive « createUser » directement dans le fichier de rétention de données de Net-SNMP et non pas dans le fichier de configuration principal comme c'est l'usage pour les autres directives (c'est écrit dans le manuel).

SYNOPSIS :
createUser [-e ENGINEID] username (MD5|SHA) authpassphrase [DES|AES] [privpassphrase]
Exemple :
createUser root SHA secretsha DES secretdes

createUser [-e ENGINEID] username (MD5|SHA) authpassphrase [DES|AES] [privpassphrase]
MD5 and SHA are the authentication types to use.  DES and AES are the privacy
protocols  to  use. If  the  privacy  passphrase  is not specified, it is assumed
to be the same as the authentication passphrase.  Note that the users created will
be useless unless they are also added  to  the  VACM access control tables
described above.
SHA  authentication  and DES/AES privacy require OpenSSL to be installed and the
agent to be built with OpenSSL support.  MD5 authentication may be used without
OpenSSL.
Warning: the minimum pass phrase length is 8 characters.]


relancer l'agent Net-SNMP. Principal effet visible le remplacement de la ligne ainsi écrite par une autre débutant par le mot-clé « usmUser ».

  • Créer un nouvel utilisateur
snmpusm [OPTIONS] cloneFrom USER CLONEFROM-USER
snmpusm -v3 -u root -n "" -l authNoPriv -a MD5 -A setup_passphrase localhost create admin root
snmpusm -v3 -u root -n "" -l authPriv -a SHA -A secretsha -x DES -X secretdes localhost create admin root


  • Simplifying commands by setting defaults

At this point you may be wondering why anyone would use SNMPv3, because the commands are so painfully long and complex that it's practically impossible to type them correctly. Fortunately, there's a way around this problem. Net-SNMP allows you to set configuration variables that the commands pick up when they execute. Create a directory in your home directory called .snmp, then edit the snmp.conf file. Add entries that look like this:

defSecurityName   kschmidt
defAuthType       MD5
defSecurityLevel  authPriv
#defSecurityLevel  authNoPriv
defAuthPassphrase mysecretpass
defPrivType       DES
defPrivPassphrase mypassphrase
defVersion        3

The fields in this file are:

defSecurityName
   The SNMPv3 username.
defAuthType
   The authentication method (either MD5 or SHA).
defSecurityLevel
   The security level for the user. Valid levels are noAuthNoPriv, authNoPriv, and authPriv.
defAuthPassphrase
   Your password; must be at least eight characters long.
defPrivType
   The privacy protocol to use. Only DES is supported at this time.
defPrivPassphrase
   Your privacy passphrase; not needed if the security level is noAuthNoPriv or authNoPriv. Must be at least eight characters long.
defVersion
   The SNMP version to use (in this case, SNMPv3).

You can also use the snmpconf command to set up this file. snmpconf prompts you for the various passwords and keywords that need to be in the file. In our opinion, it's easier to write the file yourself.

Once you've created snmp.conf, you can use defaults to simplify your commands. For example, the following command:

$ snmpwalk -v3 -u kschmidt -l authPriv -a MD5 -A mysecretpass -x DES -X \ mypassphrase localhost

becomes:

$ snmpwalk localhost

These defaults apply to all Net-SNMP commands, including snmpusm.

[modifier] Exemple de configuration:

   This last pair of settings are equivalent to the full VACM definitions:
   #         sec.name    source        community
   com2sec   sec-public  192.168.0.88  public
   #                  sec.model   sec.name
   group  mongroup     v1         sec-public
   group  mongroup     v2c        sec-public
   #              incl/excl   subtree     [mask]
   view   all     included    .1
   view   sysView included    system
   #        context    model level   prefix  read    write  notify (unused)
   access   mongroup    ""    any    noauth  exact   all     none   none

ou bien

agentAddress udp:161
rocommunity public  192.168.0.88
sysLocation    Sitting on the Dock of the Bay
sysContact     Me <me@example.org>
sysServices    72
proc  mountd
proc  ntalkd    4
proc  sendmail 10 1
disk       /     10000
includeAllDisks  10%
load   12 10 5
trapsink     localhost public
iquerySecName   internalUser       
rouser          internalUser
defaultMonitors          yes
linkUpDownNotifications  yes
extend    test1   /bin/echo  Hello, world!
extend-sh test2   echo Hello, world! ; echo Hi there ; exit 35
master          agentx

[modifier] Les outils

  • Vous pouvez voir l'arbre des OID avec:
snmptranslate -Ln -Tp

ou bien une traduction d'un OID avec:

snmptranslate -Ln -Td .1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0
sysDescr OBJECT-TYPE
-- FROM	SNMPv2-MIB
-- TEXTUAL CONVENTION DisplayString
SYNTAX	OCTET STRING (0..255) 
DISPLAY-HINT	"255a"
MAX-ACCESS	read-only
STATUS	current
DESCRIPTION	"A textual description of the entity.  This value should
include the full name and version identification of
the system's hardware type, software operating-system,
and networking software."
::= { iso(1) org(3) dod(6) internet(1) mgmt(2) mib-2(1) system(1) sysDescr(1) 0 }


a collection of SNMP command line management tools

[modifier] OID Database

http://www.oid-info.com/

[modifier] Les mibs

  • Où les trouver sur notre système:
/var/lib/mibs/MIB
search path
$HOME/.snmp/mibs
/usr/share/mibs/site
/usr/share/snmp/mibs
/usr/share/mibs/iana
/usr/share/mibs/ietf
/usr/share/mibs/netsnmp
  • Paquet pour leur install/gestion:
snmp-mibs-downloader

Install and manage Management Information Base (MIB) files

/usr/bin/download-mibs
  • Un dépot sur internet pour les télécharger

http://www.mibdepot.com

[modifier] OID Linux

CPU Statistics

  • Load
1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1
5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2
15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3
  • CPU
percentage of user CPU time: .1.3.6.1.4.1.2021.11.9.0
raw user cpu time: .1.3.6.1.4.1.2021.11.50.0
percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0
raw system cpu time: .1.3.6.1.4.1.2021.11.52.0
percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0
raw idle cpu time: .1.3.6.1.4.1.2021.11.53.0
raw nice cpu time: .1.3.6.1.4.1.2021.11.51.0
  • Memory Statistics
Total Swap Size: .1.3.6.1.4.1.2021.4.3.0
Available Swap Space: .1.3.6.1.4.1.2021.4.4.0
Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0
Total RAM used: .1.3.6.1.4.1.2021.4.6.0
Total RAM Free: .1.3.6.1.4.1.2021.4.11.0
Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0
Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0
Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0
  • Disk Statistics

The snmpd.conf needs to be edited. Add the following (assuming a machine with a single ‘/’ partition):

disk / 100000 (or)
includeAllDisks 10% for all partitions and disks

The OIDs are as follows

Path where the disk is mounted: .1.3.6.1.4.1.2021.9.1.2.1
Path of the device for the partition: .1.3.6.1.4.1.2021.9.1.3.1
Total size of the disk/partion (kBytes): .1.3.6.1.4.1.2021.9.1.6.1
Available space on the disk: .1.3.6.1.4.1.2021.9.1.7.1
Used space on the disk: .1.3.6.1.4.1.2021.9.1.8.1
Percentage of space used on disk: .1.3.6.1.4.1.2021.9.1.9.1
Percentage of inodes used on disk: .1.3.6.1.4.1.2021.9.1.10.1
System Uptime: .1.3.6.1.2.1.1.3.0

Examples These Commands you need to run on the SNMP server Get available disk space for / on the target host

#snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.9.1.7.1

this will return available disk space for the first entry in the ‘disk’ section of snmpd.conf; replace 1 with n for the nth entry Get the 1-minute system load on the target host

#snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.1
Get the 5-minute system load on the target host
#snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.2

Get the 15-minute system load on the target host

#snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.3

Get amount of available swap space on the target host

#snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.4.4.0


[modifier] HP switch activation

  • exemple v1/2

HP ProCurve Switch 2512(config)# snmp-server
contact - Name of the switch administrator.
location – Description of the switch location.
community – Add/delete SNMP community.
host – Define SNMP traps and their receivers.
enable – Enable/disable authentication traps to be sent when a
management station attempts an unauthorized access.

HP ProCurve Switch 2512(config)# snmp-server community
ASCII-STR Enter an ASCII string for the ‘community’
command/parameter.

HP ProCurve Switch 2512(config)# snmp-server community public
operator – The community can access all except the CONFIG MIB.
manager – The community can access all MIB objects.
restricted – MIB variables cannot be set, only read.
unrestricted – Any MIB variable that has read/write access can be set.

HP ProCurve Switch 2512(config)# snmp-server community public manager
restricted – MIB variables cannot be set, only read.
unrestricted – Any MIB variable that has read/write access can be set.

HP ProCurve Switch 2512(config)# snmp-server community public manager unrestricted
HP ProCurve Switch 2512(config)# snmp-server
contact Name of the switch administrator.
location Description of the switch location.
community Add/delete SNMP community.
host Define SNMP traps and their receivers.
enable Enable/disable authentication traps to be sent when a
management station attempts an unauthorized access.
HP ProCurve Switch 2512(config)# snmp-server enable traps
HP ProCurve Switch 2512(config)# exit
HP ProCurve Switch 2512# exit
HP ProCurve Switch 2512> exit
Do you want to log out [y/n]? y
Do you want to save current configuration [y/n]?y

To remove or disable SNMP configuration on HP ProCurve Switches, Just enter the above sequence with “no ” as precedence to every command.

  • exemple v3

SWITCH1# conf
SWITCH1(config)# snmp-server location S123
SWITCH1(config)# snmp-server contact jlgaddis

SWITCH1(config)# snmpv3 enable
SNMPv3 Initialization process.
Creating user 'initial'
Authentication Protocol: MD5
Enter authentication password: ******
Privacy protocol is DES
Enter privacy password: ******

User 'initial' is created
Would you like to create a user that uses SHA? n

User creation is done. SNMPv3 is now functional.
Would you like to restrict SNMPv1 and SNMPv2c messages to have read only
access (you can set this later by the command 'snmp restrict-access'): y

WITCH1(config)# snmpv3 only
SWITCH1(config)# snmpv3 restricted-access
SWITCH1(config)# snmpv3 user cacti auth sha AUTHPASS priv aes PRIVPASS

SWITCH1(config)# snmpv3 group operatorauth user cacti sec-model ver3

SWITCH1(config)# ip authorized-managers 172.30.144.17 255.255.255.255 access operator access-method snmp

SWITCH1(config)# snmp-server response-source dst-ip-of-request

SWITCH1(config)# no snmpv3 user initial

source: http://evilrouters.net/2008/12/22/snmpv3-configuration-for-procurve-5400s/

Outils personnels