Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:arpwatch_archlinux

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
tachtler:arpwatch_archlinux [2021/09/19 08:16] – [/etc/systemd/system/arpwatch@.service.d/override.conf] klaustachtler:arpwatch_archlinux [2022/03/31 05:35] (aktuell) – [Installation] klaus
Zeile 2: Zeile 2:
  
 [[https://ee.lbl.gov/|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 [[https://ee.lbl.gov/|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 //[[http://de.wikipedia.org/wiki/ARP-Spoofing|ARP-Spoofing]]//. [[https://ee.lbl.gov/|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 [[https://ee.lbl.gov/|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 //[[http://de.wikipedia.org/wiki/ARP-Spoofing|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 [[http://de.wikipedia.org/wiki/DECnet|Wiki DECnet Adressen]]
  
 ===== Installation ===== ===== Installation =====
Zeile 13: Zeile 39:
 </code> </code>
  
-:!: WICHTIG - **Es ist ein smtp-forwarder erfordelrich! Nachfolgend soll dafür ''postfix'' installiert werden!**+:!: **WICHTIG** - **Es ist ein smtp-forwarder erforderlich!** 
 +  
 +:!: **HINWEIS** - **Nachfolgend soll dafür ''postfix'' installiert werden!**
  
 Folgender Befehl ist zur Installation auszuführen: Folgender Befehl ist zur Installation auszuführen:
 +<code>
 +# pacman -S arpwatch
 +</code> 
 +++++ Installationsverlauf |
 <code> <code>
 # pacman -S arpwatch # pacman -S arpwatch
Zeile 70: Zeile 102:
 ==> root: 27 ==> root: 27
 </code> </code>
 +++++
  
 Mit nachfolgendem Befehl kann überprüft werden, was der Inhalt des Pakets ''arpwatch'' war und was und vorallem wo installiert wurde: Mit nachfolgendem Befehl kann überprüft werden, was der Inhalt des Pakets ''arpwatch'' war und was und vorallem wo installiert wurde:
 +<code>
 +# pacman -Qil arpwatch
 +</code> 
 +++++ Installierte Dateien |
 <code> <code>
 # pacman -Qil arpwatch # pacman -Qil arpwatch
Zeile 117: Zeile 154:
 arpwatch /var/lib/arpwatch/ethercodes.dat arpwatch /var/lib/arpwatch/ethercodes.dat
 </code> </code>
 +++++
  
 ===== Konfiguration ===== ===== Konfiguration =====
Zeile 126: Zeile 164:
 eingesehen werden, da es hier keine separate Konfigurationsdatei gibt, sondern Parameter beim Starten des Dienstes via **''systemd''**-Service übergeben werden. 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.d/override.conf ====+==== /etc/systemd/system/arpwatch@.service ==== 
 + 
 +Um den Start von [[https://ee.lbl.gov/|ARPwatch]] unter [[https://archlinux.org/|ArchLinux]] anzupassen, vor allem die entsprechenden Parameter mit geben zu können, ist es erforderlich, den **''systemd''**-Start Service mit nachfolgendem Befehl  
 +  * <code># systemctl edit --full arpwatch@.service</code> 
 +zu verändern. Dabei werden alle Änderungen in nachfolgender Konfigurationsdatei gespeichert: 
 +  * ''/etc/systemd/system/arpwatch@.service'' 
 + 
 +<code ini> 
 +[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 
 +</code> 
 + 
 +**__Erklärungen__**: 
 + 
 +Nachfolgende Parameter wurden zum Aufruf von ''/usr/bin/arpwatch'' hinzugefügt: 
 + 
 +  * <code ini>After=network.target network-online.target postfix.service 
 +Wants=network-online.target 
 +</code> 
 + 
 +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 [[http://www.postfix.org/|Postfix]] gestartet werden. 
 + 
 +  * <code ini>-D /var/lib/arpwatch</code> 
 + 
 +Das Flag ''-D'' wird verwendet, um das Arbeitsverzeichnis von [[https://ee.lbl.gov/|ARPwatch]] anzugeben. 
 + 
 +  * <code ini>-w klaus@tachtler.net</code> 
 + 
 +Das Flag ''-w'' wird verwendet, um die Zieladresse für den Versand des E-Mail-Berichtes anzugeben. 
 + 
 +  * <code ini>-W arpwatcher@tachtler.net</code> 
 + 
 +Das Flag ''-W'' wird verwendet, um die Quelladresse für den Versand des E-Mail-Berichtes anzugeben. 
 + 
 +  * <code ini>-Z</code> 
 + 
 +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: 
 +<code> 
 +# systemctl daemon-reload 
 +</code> 
 + 
 +:!: **HINWEIS** - Keine Ausgabe bedeutet eine korrekte Ausführung des Befehls! 
 + 
 +===== ARPwatch starten ===== 
 + 
 +==== Dienst: postfix.service einrichten ==== 
 + 
 +:!: **WICHTIG** - **Auf die Konfiguration von [[http://www.postfix.org|Postfix]] wird hier __NICHT__ speziell eingegangen!** 
 + 
 +Bevor [[https://ee.lbl.gov/|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 [[http://www.postfix.org|Postfix]] auch nach einem System-(re)-start zukünftig und dauerhaft zu realisieren, kann folgender Befehl genutzt werden: 
 +<code> 
 +# systemctl enable postfix.service 
 +Created symlink /etc/systemd/system/multi-user.target.wants/postfix.service → /usr/lib/systemd/system/postfix.service. 
 +</code> 
 + 
 +Ein Überprüfung, ob [[http://www.postfix.org|Postfix]] Dienst/Daemon des Betriebssystems bei einem System-(re)-start mit gestartet wird, kann mit folgenden Befehlen ermittelt werden: 
 +<code> 
 +# systemctl list-unit-files --type=service | grep postfix 
 +postfix.service                            enabled         disabled 
 +</code> 
 +bzw. 
 +<code> 
 +# systemctl is-enabled postfix.service 
 +enabled 
 +</code> 
 + 
 +==== Dienst: postfix.service starten ==== 
 + 
 +Um [[http://www.postfix.org|Postfix]] zu starten, kann folgender Befehl ausgeführt werden: 
 +<code> 
 +# systemctl start postfix.service 
 +</code> 
 + 
 +Nachfolgender Befehl gibt den Status des [[http://www.postfix.org|Postfix]]-Daemon/Dienstes auf dem Bildschirm aus: 
 +<code> 
 +# 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. 
 +</code> 
 + 
 +Im ''journald'' sind dann ggf. entsprechend nachfolgende Meldungen zu sehen (**nur relevanter Ausschnitt**): 
 +<code> 
 +# 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. 
 +</code> 
 + 
 +==== Dienst: arpwatch@[interface].service einrichten ==== 
 + 
 +Um das Starten von [[https://ee.lbl.gov/|ARPwatch]] auch nach einem System-(re)-start zukünftig und dauerhaft zu realisieren, kann folgender Befehl genutzt werden: 
 +<code> 
 +# systemctl enable arpwatch@eth0.service 
 +Created symlink /etc/systemd/system/multi-user.target.wants/arpwatch@eth0.service → /etc/systemd/system/arpwatch@.service. 
 +</code> 
 +Bei **__mehreren__ Netzwerk-Interfaces** muss der Befehl pro Interface einfach wiederholt werden, wie nachfolgend dargestellt: 
 +<code> 
 +# systemctl enable arpwatch@eth1.service 
 +Created symlink /etc/systemd/system/multi-user.target.wants/arpwatch@eth1.service → /etc/systemd/system/arpwatch@.service. 
 +</code> 
 + 
 +Ein Überprüfung, ob [[https://ee.lbl.gov/|ARPwatch]] Dienst/Daemon des Betriebssystems bei einem System-(re)-start mit gestartet wird, kann mit folgenden Befehlen ermittelt werden: 
 +<code> 
 +# 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 
 +</code> 
 +bzw. 
 +<code> 
 +# systemctl is-enabled arpwatch@eth0.service 
 +enabled 
 +</code> 
 +und bei **__mehreren__ Netzwerk-Interfaces** muss der Befehl pro Interface einfach wiederholt werden, wie nachfolgend dargestellt: 
 +<code> 
 +# systemctl is-enabled arpwatch@eth1.service 
 +enabled 
 +</code> 
 + 
 +==== Dienst: arpwatch@[interface].service starten ==== 
 + 
 +Um [[https://ee.lbl.gov/|ARPwatch]] zu starten, kann folgender Befehl ausgeführt werden: 
 +<code> 
 +systemctl start arpwatch@eth0.service 
 +</code> 
 +und bei **__mehreren__ Netzwerk-Interfaces** muss der Befehl pro Interface einfach wiederholt werden, wie nachfolgend dargestellt: 
 +<code> 
 +# systemctl start arpwatch@eth1.service 
 +</code> 
 + 
 +Nachfolgender Befehl gibt den Status des [[https://ee.lbl.gov/|ARPwatch]]-Daemon/Dienstes auf dem Bildschirm aus: 
 +<code> 
 +# 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 
 +</code> 
 +und bei **__mehreren__ Netzwerk-Interfaces** muss der Befehl pro Daemon/Dienst des Interfaces einfach wiederholt werden, wie nachfolgend dargestellt: 
 +<code> 
 + 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 
 +</code> 
 + 
 +Im ''journald'' sind dann ggf. entsprechend nachfolgende Meldungen zu sehen (**nur relevanter Ausschnitt**): 
 +<code> 
 +# 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 
 +</code> 
 + 
 +===== 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: 
 +<code ini> 
 +52:54:00:00:00:10 192.168.0.10 1632037980 server 
 +52:54:00:3d:4c:3e 192.168.0.1 1632037980      _gateway 
 +</code> 
 + 
 +==== ARPwatch: E-Mail ==== 
 + 
 +Ein e-Mail-Benachrichtigung könnte wie folgt aussehen: 
 +<code> 
 +   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 
 +</code> 
 + 
 +==== ARPwatch: journald ==== 
 + 
 +Meldungen im ''journald'' könnten wie folgt aussehen: (**nur relevanter Ausschnitt**) 
 +<code> 
 +# 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 
 +</code>
  
-Um den Start von  
tachtler/arpwatch_archlinux.1632032207.txt.gz · Zuletzt geändert: 2021/09/19 08:16 von klaus