WikiMiNET

La documentation technique et administrative

Outils pour utilisateurs

Outils du site


wiki:services:arpwatch

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
wiki:services:arpwatch [2015/08/28 11:54]
127.0.0.1 modification externe
wiki:services:arpwatch [2015/10/06 18:18] (Version actuelle)
Thithib
Ligne 1: Ligne 1:
 +====== Arpwatch ======
  
 +==== Présentation ====
 +
 +Ce service garde une trace de la correspondance entre adresse physique (mac) et addresse IP et envoie une alerte par mail sur la liste ​arpwatch2@listes.minet.net dès que cette correspondance change. Pour celà, il écoute et traite chaque trame utilisant le protocole [[http://​fr.wikipedia.org/​wiki/​Address_Resolution_Protocol | ARP]]. ​
 +
 +Ceci nous permet surtout de détecter les utilisateurs qui configurent leurs PC avec une adresse IP qui ne leur est pas réservée manuellement causant ainsi l'​instabilité de la connexion de la personne qui possède cette adresse IP. Ce genre de pratique est sanctionné par une semaine de coupure de connexion.
 +
 +Ce service a été recompilé afin de vérifier que les couples MAC / IP sont bien présents dans ADH5.
 +
 +  - Il commence par créer un nouveau processus,
 +  - Puis interroge adh5
 +  - Parse la réponse qui est en JSon
 +  - Et vérifie la correspondance et adapte le mail en fonction
 +
 +<WRAP info round>
 +Il sera nécessaire de recompiler ​ en cas de :
 +  * ajout de VLAN : modifier adh5.c, fonction is_adh
 +  * modification de la page DHCP d'adh5 (idem : adh5.c + json.c)
 +  * modification de l'​adresse d'​envoi (address.h)
 +</​WRAP>​
 +
 +Pour recompiler, exécutez ces commandes :
 +
 +<code bash>
 +cd /​root/​compiler/​arpwatch
 +
 +./configure
 +
 +make
 +
 +gcc -O -DDEBUG -DPACKAGE_NAME=\"​\"​ -DPACKAGE_TARNAME=\"​\"​ -DPACKAGE_VERSION=\"​\"​ -DPACKAGE_STRING=\"​\"​ -DPACKAGE_BUGREPORT=\"​\"​ -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_MEMORY_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_BCOPY=1 -DHAVE_STRERROR=1 -DRETSIGTYPE=void -DRETSIGVAL= -DHAVE_SIGSET=1 -Dsignal=sigset -DDECLWAITSTATUS=int ​ -DARPDIR=\"/​usr/​local/​arpwatch\"​ -DPATH_SENDMAIL=\"/​usr/​sbin/​sendmail\"​ -I.  -Ilinux-include -c ./json.c -std=c99
 +
 +make
 +
 +gcc -O -DDEBUG -DPACKAGE_NAME=\"​\"​ -DPACKAGE_TARNAME=\"​\"​ -DPACKAGE_VERSION=\"​\"​ -DPACKAGE_STRING=\"​\"​ -DPACKAGE_BUGREPORT=\"​\"​ -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_MEMORY_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_BCOPY=1 -DHAVE_STRERROR=1 -DRETSIGTYPE=void -DRETSIGVAL= -DHAVE_SIGSET=1 -Dsignal=sigset -DDECLWAITSTATUS=int ​ -DARPDIR=\"/​usr/​local/​arpwatch\"​ -DPATH_SENDMAIL=\"/​usr/​sbin/​sendmail\"​ -I.  -Ilinux-include -o arpsnmp arpsnmp.o db.o dns.o ec.o file.o intoa.o machdep.o util.o report.o setsignal.o adh5.o json.o version.o -lcurl -ljson
 +
 +mv arpsnmp /​usr/​sbin/​arpsnmp
 +</​code>​
 +
 +Une sauvegarde de l'​arpwatch d'​origine est disponible ​
 +
 +===== Configuration =====
 +
 +Création d'une interface par vlan, dans le fichier /​etc/​network/​interfaces :
 +
 +  * Configuration [[wiki:​services:​arpwatch:​traditionnelle]] ​
 +
 +Je vous présente la configuration actuelle de arpwatch. Actuellement plutôt que de faire passer les vlan 41 à 47 sur le cluster ce qui pourrait entrainer des dérives il a été préférer d'​utiliser arpsnmp et arpfetch qui sont deux programmes incluent dans le package arpwatch. Ils permettent en gros de faire pareil mais en récupérant la table ARP à distance, ici sur le routeur minet.
 +
 +
 +==== Récupérer les données arp ====
 +
 +  - Installez **snmp** et la mib associée... Cette Mib permettra de gérer le protocole **snmp** des switchs cisco.
 +
 +<code bash>
 +apt-get install snmpd
 +apt-get install snmp-mibs-downloader
 +mkdir /root/.snmp
 +mkdir /​root/​.snmp/​mibs
 +cp /​var/​lib/​mibs/​ietf/​RFC1213-MIB /​root/​.snmp/​mibs/​
 +</​code>​
 +
 +  - On l'​ajoute dans ''/​etc/​snmp/​snmp.conf''​ : 
 +
 +<code bash>
 +#
 +# As the snmp packages come without MIB files due to license reasons, loading
 +# of MIBs is disabled by default. If you added the MIBs you can reenable
 +# loaging them by commenting out the following line.
 +mibs +RFC1213-MIB
 +</​code>​
 +
 +  - On modifie ''/​etc/​snmp/​snmpd.conf''​ : 
 +
 +<code bash>
 +###############################################################################​
 +#  AGENT BEHAVIOUR
 +
 +agentAddress ​ udp:​127.0.0.1:​161
 +
 +view   ​systemonly ​ included ​  ​.1.3.6.1.2.1.1
 +view   ​systemonly ​ included ​  ​.1.3.6.1.2.1.25.1
 +
 +#​rocommunity public ​ localhost
 +
 + ​rocommunity public ​ default ​   -V systemonly
 +local
 +
 +#​rocommunity secret ​ 10.0.0.0/16
 + ​rouser ​  ​authOnlyUser
 + above
 +
 +#  Note that setting these values here, results in the corresponding MIB objects being '​read-only'​
 +sysLocation ​   Sitting on the Dock of the Bay
 +sysContact ​    Me <​me@example.org>​
 +                                                 # Application + End-to-End layers
 +sysServices ​   72
 +
 +#  Process Monitoring
 +                               # At least one  '​mountd'​ process
 +proc  mountd
 +                               # No more than 4 '​ntalkd'​ processes - 0 is OK
 +proc  ntalkd ​   4
 +                               # At least one '​sendmail'​ process, but no more than 10
 +proc  sendmail 10 1
 +
 +                               # 10MBs required on root disk, 5% free on /var, 10% free on all other disks
 +disk       / ​    10000
 +disk       /​var ​ 5%
 +includeAllDisks ​ 10%
 +
 +                               # Unacceptable 1-, 5-, and 15-minute load averages
 +load   12 10 5
 +
 +#  ACTIVE MONITORING
 +
 + ​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
 +/master
 +
 +</​code>​
 +
 +  - Et enfin on installe **ssmtp** pour que arpwatch puisse envoyer des mail : 
 +
 +<code bash>
 +root=arpwatch@minet.net
 +
 +mailhub=smtp.minet.net
 +
 +rewriteDomain=minet.net
 +
 +hostname=arpwatch.minet.net
 +
 +AuthUser=arp
 +AuthPass=arpown
 +</​code>​
 +
 +Vous pouvez passez à l'​étape d'​après : le script custom !!!
 +
 +===== Un poil plus tordu =====
 +
 +Voici le script cron qui s'​occupe de cette tache : ''/​etc/​arpwatch/​arpwatch-minet.sh''​
 +
 +<code bash>
 +#!/bin/sh
 +
 +ARPSNMP="/​usr/​sbin/​arpsnmp"​ #utilise ssmtp
 +ARPFETCH=/​usr/​sbin/​arpfetch
 +community=arpwatch
 +BASE=/​etc/​arpwatch/​
 +
 +for host in "​192.168.102.1"​
 +do
 +        $ARPFETCH $host $community | grep -v "​157.159.40." ​ > $BASE$host.fetch
 +        touch $BASE$host.dat ​ # file must exist
 +        $ARPSNMP -f $BASE$host.dat $BASE$host.fetch
 +done
 +</​code>​
 +
 +La communauté snmp utilisée est arpwatch en Read only. Un script personnalisé est lancé par un cron toutes les 5 minutes. Ce script ainsi que la table ARP téléchargée se trouvent dans le dossier /​etc/​arpwatch Les mails sont envoyés grace a sSMTP jusqu'​au serveur smtp de minet qui distribuera à la liste arpwatch2
 +
 +====Pour plus tard====
 +
 +Lorsque l'​image ios12.3+ sera sur le routeur de minet on pourra utiliser la commande logging server-arp pour renvoyer sur le serveur log les messages arp et ensuite faire des alertes. ​
wiki/services/arpwatch.txt · Dernière modification: 2015/10/06 18:18 par Thithib