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 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 sera nécessaire de recompiler en cas de :
Pour recompiler, exécutez ces commandes :
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
Une sauvegarde de l'arpwatch d'origine est disponible
Création d'une interface par vlan, dans le fichier /etc/network/interfaces :
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.
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/
/etc/snmp/snmp.conf
: # # 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
/etc/snmp/snmpd.conf
: ############################################################################### # 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
root=arpwatch@minet.net mailhub=smtp.minet.net rewriteDomain=minet.net hostname=arpwatch.minet.net AuthUser=arp AuthPass=arpown
Vous pouvez passez à l'étape d'après : le script custom !!!
Voici le script cron qui s'occupe de cette tache : /etc/arpwatch/arpwatch-minet.sh
#!/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
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
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.