Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:arpwatch_archlinux

ARPwatch ArchLinux

ARPwatch kann nicht zu den vollwertigen IDS (Intrusion Detection System) Systemen gezählt werden, jedoch zur der Software, die sich auf eine spezielle Art von Angriffen spezialisiert haben. So ist ARPwatch nur in der Lage solche Angriffe zu erkennen, die durch eine Manipulation des ARP Protokolls durchgeführt werden. Zu solchen Angriffen zählt zum Beispiel ARP-Spoofing.

Beschreibung Externer Link
Homepage https://ee.lbl.gov/
Dokumentation man-page

Funktionsweise

Folgende Ereignisse werden von ARPwatch überwacht:

Ereignis Beschreibung
new activity Dieses Ethernet/IP Adresspaar wurde das erste mal (wieder) in den letzten sechs Monaten genutzt
new station Diese Ethernet Adresse wurde zum ersten mal genutzt
flip flop Die Ethernet Adresse hat sich zu einer schon mal verwendeten Ethernet Adresse geändert
changed ethernet address Die Ethernet Adresse hat sich geändert

Folgende journald-Nachrichten werden mindestens protokolliert:

Nachricht Beschreibung
ethernet broadcast Die MAC Ethernet Adresse des Geräts ist eine broadcast Adresse
ip broadcast Die IP Adresse des Geräts ist eine broadcast Adresse
bogon Die Quell-IP-Adresse ist keine Adresse eines lokalen subnets
ethernet broadcast Die Quell-MAC-Adresse oder die ARP-Ethernet-Adresse besteht nur aus gleichen Teilen oder Nullen
ethernet mismatch Die Quell-MAC-Ethernet Adresse stimmt nicht mit der Adresse im ARP-Paket überein
reused old ethernet address Die Ethernet Adresse wurde in eine bereits vorher oder weit vorher gesehene Adresse geändert
suppreddes DECnet flip flop Ein „flip flop“ Report wurde ausgelöst da eine der beiden gesehenen Adressen eine DECnet Addresse ist

:!: HINWEIS - Informationen zu DECnet-Adressen sind hier zu finden Wiki DECnet Adressen

Installation

ARPwatch ist als Paket in ArchLinux (community) verfügbar.

Ab hier werden root-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um root zu werden geben Sie bitte folgenden Befehl ein:

$ su -
Password: 

:!: WICHTIG - Es ist ein smtp-forwarder erforderlich!

:!: HINWEIS - Nachfolgend soll dafür postfix installiert werden!

Folgender Befehl ist zur Installation auszuführen:

# pacman -S arpwatch
resolving dependencies...
:: There are 5 providers available for smtp-forwarder:
:: Repository extra
   1) msmtp-mta  2) postfix
:: Repository community
   3) exim  4) nullmailer  5) opensmtpd

Enter a number (default=1): 2
looking for conflicting packages...

Package (2)         New Version  Net Change  Download Size

extra/postfix       3.6.2-2        4.35 MiB       1.33 MiB
community/arpwatch  3.1-1          0.92 MiB               

Total Download Size:   1.33 MiB
Total Installed Size:  5.26 MiB

:: Proceed with installation? [Y/n] Y
:: Retrieving packages...
 postfix-3.6.2-2-...  1366.0 KiB  2.84 MiB/s 00:00 [######################] 100%
(2/2) checking keys in keyring                     [######################] 100%
(2/2) checking package integrity                   [######################] 100%
(2/2) loading package files                        [######################] 100%
(2/2) checking for file conflicts                  [######################] 100%
(2/2) checking available disk space                [######################] 100%
:: Running pre-transaction hooks...
(1/1) Performing snapper pre snapshots for the following configurations...
==> root: 26
:: Processing package changes...
(1/2) installing postfix                           [######################] 100%
Optional dependencies for postfix
    perl: for postfix-collate.pl, postfix-tlstype.pl and qshape [installed]
    postfix-cdb: for CDB integration
    postfix-ldap: for LDAP integration
    postfix-lmdb: for LMDB integration
    postfix-mysql: for MySQL integration
    postfix-pcre: for PCRE integration
    postfix-pgsql: for PostgreSQL integration
    postfix-sqlite: for SQLite integration
(2/2) installing arpwatch                          [######################] 100%
:: Running post-transaction hooks...
(1/5) Creating system user accounts...
Creating group postdrop with gid 75.
Creating group postfix with gid 73.
Creating user postfix (n/a) with uid 73 and gid 73.
(2/5) Reloading system manager configuration...
(3/5) Creating temporary files...
(4/5) Arming ConditionNeedsUpdate...
(5/5) Performing snapper post snapshots for the following configurations...
==> root: 27

Mit nachfolgendem Befehl kann überprüft werden, was der Inhalt des Pakets arpwatch war und was und vorallem wo installiert wurde:

# pacman -Qil arpwatch
Name            : arpwatch
Version         : 3.1-1
Description     : Ethernet/FDDI station activity monitor
Architecture    : x86_64
URL             : ftp://ftp.ee.lbl.gov/
Licenses        : BSD
Groups          : None
Provides        : None
Depends On      : libpcap  smtp-forwarder
Optional Deps   : None
Required By     : None
Optional For    : None
Conflicts With  : None
Replaces        : None
Installed Size  : 938.22 KiB
Packager        : Sergej Pupykin <pupykin.s+arch@gmail.com>
Build Date      : Mon 15 Jun 2020 12:39:20 AM CEST
Install Date    : Sun 19 Sep 2021 07:58:27 AM CEST
Install Reason  : Explicitly installed
Install Script  : No
Validated By    : Signature

arpwatch /usr/
arpwatch /usr/bin/
arpwatch /usr/bin/arpsnmp
arpwatch /usr/bin/arpwatch
arpwatch /usr/lib/
arpwatch /usr/lib/systemd/
arpwatch /usr/lib/systemd/system/
arpwatch /usr/lib/systemd/system/arpwatch@.service
arpwatch /usr/share/
arpwatch /usr/share/licenses/
arpwatch /usr/share/licenses/arpwatch/
arpwatch /usr/share/licenses/arpwatch/LICENSE
arpwatch /usr/share/man/
arpwatch /usr/share/man/man8/
arpwatch /usr/share/man/man8/arpsnmp.8.gz
arpwatch /usr/share/man/man8/arpwatch.8.gz
arpwatch /var/
arpwatch /var/lib/
arpwatch /var/lib/arpwatch/
arpwatch /var/lib/arpwatch/ethercodes.dat

Konfiguration

Um ARPwatch richtig unter ArchLinux betreiben zu können, benötigt es nachfolgende Konfiguration.

Die Standard-Konfiguration von ARPwatch kann unter ArchLinux in der systemd-Konfigurationsdatei (systemd-Start Service)

  • /usr/lib/systemd/system/arpwtach@.service

eingesehen werden, da es hier keine separate Konfigurationsdatei gibt, sondern Parameter beim Starten des Dienstes via systemd-Service übergeben werden.

/etc/systemd/system/arpwatch@.service

Um den Start von ARPwatch unter ArchLinux anzupassen, vor allem die entsprechenden Parameter mit geben zu können, ist es erforderlich, den systemd-Start Service mit nachfolgendem Befehl

  • # systemctl edit --full arpwatch@.service

zu verändern. Dabei werden alle Änderungen in nachfolgender Konfigurationsdatei gespeichert:

  • /etc/systemd/system/arpwatch@.service
[Unit]
Description=Watch ARP on interface %i
# Tachtler
# default: After=network.target
After=network.target network-online.target postfix.service
# Tachtler - new -
Wants=network-online.target
 
[Service]
Type=forking
WorkingDirectory=/var/lib/arpwatch
ExecStartPre=/usr/bin/touch /var/lib/arpwatch/%i.dat
# Tachtler
# default: ExecStart=/usr/bin/arpwatch -f /var/lib/arpwatch/%i.dat -i %i
ExecStart=/usr/bin/arpwatch -D /var/lib/arpwatch -f /var/lib/arpwatch/%i.dat -i %i -w klaus@tachtler.net -W arpwatcher@tachtler.net -Z
 
[Install]
WantedBy=multi-user.target

Erklärungen:

Nachfolgende Parameter wurden zum Aufruf von /usr/bin/arpwatch hinzugefügt:

  • After=network.target network-online.target postfix.service
    Wants=network-online.target

Der Service soll nicht nur nach dem Start des Netzwerkes, sondern auch erst nach dem das Netzwerk ativ ist und nach dem Start des Dienstes Postfix gestartet werden.

  • -D /var/lib/arpwatch

Das Flag -D wird verwendet, um das Arbeitsverzeichnis von ARPwatch anzugeben.

  • -w klaus@tachtler.net

Das Flag -w wird verwendet, um die Zieladresse für den Versand des E-Mail-Berichtes anzugeben.

  • -W arpwatcher@tachtler.net

Das Flag -W wird verwendet, um die Quelladresse für den Versand des E-Mail-Berichtes anzugeben.

  • -Z

Das Flag -Z verwendet mit Null aufgefüllte Ethernet-Adressen in arp.dat, z. B. 00:08:e1:01:02:d6.

Nach Abschluss der Änderungen, kann noch nachfolgender Befehl abgesetzt werden, um die Änderungen auch wirksam werden zu lassen:

# systemctl daemon-reload

:!: HINWEIS - Keine Ausgabe bedeutet eine korrekte Ausführung des Befehls!

ARPwatch starten

Dienst: postfix.service einrichten

:!: WICHTIG - Auf die Konfiguration von Postfix wird hier NICHT speziell eingegangen!

Bevor ARPwatch gestartet werden kann, muss sichergestellt sein, das auch der Dienst postfix.service bereits gestartet ist.

Falls dies nicht der Fall sein sollte, muss dies ebenfalls noch wie folgt eingerichtet werden, was mit nachfolgenden Befehlen erfolgen kann

Um das Starten von Postfix auch nach einem System-(re)-start zukünftig und dauerhaft zu realisieren, kann folgender Befehl genutzt werden:

# systemctl enable postfix.service
Created symlink /etc/systemd/system/multi-user.target.wants/postfix.service → /usr/lib/systemd/system/postfix.service.

Ein Überprüfung, ob Postfix Dienst/Daemon des Betriebssystems bei einem System-(re)-start mit gestartet wird, kann mit folgenden Befehlen ermittelt werden:

# systemctl list-unit-files --type=service | grep postfix
postfix.service                            enabled         disabled

bzw.

# systemctl is-enabled postfix.service
enabled

Dienst: postfix.service starten

Um Postfix zu starten, kann folgender Befehl ausgeführt werden:

# systemctl start postfix.service

Nachfolgender Befehl gibt den Status des Postfix-Daemon/Dienstes auf dem Bildschirm aus:

# systemctl status postfix.service 
● postfix.service - Postfix Mail Transport Agent
     Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; vendor p>
     Active: active (running) since Sun 2021-09-19 09:33:16 CEST; 35s ago
    Process: 64247 ExecStart=/usr/bin/postfix start (code=exited, status=0/SUCC>
   Main PID: 64315 (master)
      Tasks: 3 (limit: 2347)
     Memory: 13.2M
        CPU: 245ms
     CGroup: /system.slice/postfix.service
             ├─64315 /usr/lib/postfix/bin/master -w
             ├─64316 pickup -l -t unix -u
             └─64317 qmgr -l -t unix -u

Sep 19 09:33:16 server systemd[1]: Starting Postfix Mail Transport Agent...
Sep 19 09:33:16 server postfix/postfix-script[64313]: starting the Postfix mail>
Sep 19 09:33:16 server postfix/master[64315]: daemon started -- version 3.6.2, >
Sep 19 09:33:16 server systemd[1]: Started Postfix Mail Transport Agent.

Im journald sind dann ggf. entsprechend nachfolgende Meldungen zu sehen (nur relevanter Ausschnitt):

# journalctl -u postfix
-- Journal begins at Fri 2021-09-17 06:22:32 CEST, ends at Sun 2021-09-19 09:33>
Sep 19 09:33:16 server systemd[1]: Starting Postfix Mail Transport Agent...
Sep 19 09:33:16 server postfix/postfix-script[64313]: starting the Postfix mail>
Sep 19 09:33:16 server postfix/master[64315]: daemon started -- version 3.6.2, >
Sep 19 09:33:16 server systemd[1]: Started Postfix Mail Transport Agent.

Dienst: arpwatch@[interface].service einrichten

Um das Starten von ARPwatch auch nach einem System-(re)-start zukünftig und dauerhaft zu realisieren, kann folgender Befehl genutzt werden:

# systemctl enable arpwatch@eth0.service
Created symlink /etc/systemd/system/multi-user.target.wants/arpwatch@eth0.service → /etc/systemd/system/arpwatch@.service.

Bei mehreren Netzwerk-Interfaces muss der Befehl pro Interface einfach wiederholt werden, wie nachfolgend dargestellt:

# systemctl enable arpwatch@eth1.service
Created symlink /etc/systemd/system/multi-user.target.wants/arpwatch@eth1.service → /etc/systemd/system/arpwatch@.service.

Ein Überprüfung, ob ARPwatch Dienst/Daemon des Betriebssystems bei einem System-(re)-start mit gestartet wird, kann mit folgenden Befehlen ermittelt werden:

# systemctl --state=loaded | grep arpwatch@
  arpwatch@eth0.service                     loaded inactive dead      Watch ARP on interface net0
  arpwatch@eth1.service                     loaded inactive dead      Watch ARP on interface net1

bzw.

# systemctl is-enabled arpwatch@eth0.service
enabled

und bei mehreren Netzwerk-Interfaces muss der Befehl pro Interface einfach wiederholt werden, wie nachfolgend dargestellt:

# systemctl is-enabled arpwatch@eth1.service
enabled

Dienst: arpwatch@[interface].service starten

Um ARPwatch zu starten, kann folgender Befehl ausgeführt werden:

systemctl start arpwatch@eth0.service

und bei mehreren Netzwerk-Interfaces muss der Befehl pro Interface einfach wiederholt werden, wie nachfolgend dargestellt:

# systemctl start arpwatch@eth1.service

Nachfolgender Befehl gibt den Status des ARPwatch-Daemon/Dienstes auf dem Bildschirm aus:

# systemctl status arpwatch@eth0.service
● arpwatch@eth0.service - Watch ARP on interface eth0
     Loaded: loaded (/etc/systemd/system/arpwatch@.service; enabled; vendor pre>
     Active: active (running) since Sun 2021-09-19 09:36:18 CEST; 5s ago
    Process: 64339 ExecStartPre=/usr/bin/touch /var/lib/arpwatch/eth0.dat (code>
    Process: 64340 ExecStart=/usr/bin/arpwatch -D /var/lib/arpwatch -f /var/lib>
   Main PID: 64341 (arpwatch)
      Tasks: 1 (limit: 2347)
     Memory: 2.0M
        CPU: 24ms
     CGroup: /system.slice/system-arpwatch.slice/arpwatch@eth0.service
             └─64341 /usr/bin/arpwatch -D /var/lib/arpwatch -f /var/lib/arpwatc>

Sep 19 09:36:18 server systemd[1]: Starting Watch ARP on interface eth0...
Sep 19 09:36:18 server systemd[1]: Started Watch ARP on interface eth0.
Sep 19 09:36:18 server arpwatch[64341]: listening on eth0

und bei mehreren Netzwerk-Interfaces muss der Befehl pro Daemon/Dienst des Interfaces einfach wiederholt werden, wie nachfolgend dargestellt:

 systemctl status arpwatch@eth1.service
● arpwatch@net1.service - Watch ARP on interface net1
     Loaded: loaded (/etc/systemd/system/arpwatch@.service; enabled; vendor pre>
     Active: active (running) since Sun 2021-09-19 09:41:54 CEST; 7s ago
    Process: 64361 ExecStartPre=/usr/bin/touch /var/lib/arpwatch/eth1.dat (code>
    Process: 64362 ExecStart=/usr/bin/arpwatch -D /var/lib/arpwatch -f /var/lib>
   Main PID: 64363 (arpwatch)
      Tasks: 1 (limit: 2347)
     Memory: 1.5M
        CPU: 23ms
     CGroup: /system.slice/system-arpwatch.slice/arpwatch@eth1.service
             └─64363 /usr/bin/arpwatch -D /var/lib/arpwatch -f /var/lib/arpwatc>

Sep 19 09:41:54 server systemd[1]: Starting Watch ARP on interface eth1...
Sep 19 09:41:54 server systemd[1]: Started Watch ARP on interface eth1.
Sep 19 09:41:54 server arpwatch[64363]: listening on eth1

Im journald sind dann ggf. entsprechend nachfolgende Meldungen zu sehen (nur relevanter Ausschnitt):

# journalctl -u arpwatch*
-- Journal begins at Fri 2021-09-17 06:22:32 CEST, ends at Sun 2021-09-19 09:41>
Sep 19 09:36:18 server systemd[1]: Starting Watch ARP on interface eth0...
Sep 19 09:36:18 server systemd[1]: Started Watch ARP on interface eth0.
Sep 19 09:36:18 server arpwatch[64341]: listening on eth0
Sep 19 09:41:54 server systemd[1]: Starting Watch ARP on interface eth1...
Sep 19 09:41:54 server systemd[1]: Started Watch ARP on interface eth1.
Sep 19 09:41:54 server arpwatch[64363]: listening on eth1

ARPWatch überprüfen

ARPWatch: /var/lib/arpwatch/[interface].dat

In der Datei, hier z.B.

  • /var/lib/arpwatch/eth0.dat bzw.
  • /var/lib/arpwatch/eth1.dat

werden standardmäßig alle Ethernet-MAC/IP-Adressen-Paare und zusätzliche Informationen wie unix-Zeitstempel und hostname des Rechners abgelegt, hier ein Auszug daraus:

52:54:00:00:00:10	192.168.0.10	1632037980	server
52:54:00:3d:4c:3e	192.168.0.1	1632037980      _gateway

ARPwatch: E-Mail

Ein e-Mail-Benachrichtigung könnte wie folgt aussehen:

   Date: Sun, 19 Sep 2021 09:47:35 +0200 (CEST)
   From: arpwatch@tachtler.net (Arpwatch)
     To: root@tachtler.net
Subject: new station (server.tachtler.net)

            hostname: server.tachtler.net
          ip address: 192.168.0.10
    ethernet address: 52:54:00:01:00:10
     ethernet vendor: Fujitsu Siemens Computers
           timestamp: Sunday, September 19, 2021 9:47:35 +0200

ARPwatch: journald

Meldungen im journald könnten wie folgt aussehen: (nur relevanter Ausschnitt)

# journalctl -u arpwatch*
...
Sep 19 09:53:01 server arpwatch[64341]: new station 192.168.0.10 52:54:00:00:00:10
Sep 19 09:53:01 server arpwatch[64341]: new station 192.168.0.1 52:54:00:3d:4c:3e
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/arpwatch_archlinux.txt · Zuletzt geändert: 2021/09/19 16:11 von klaus