Netzwerküberwachung
ping
Mit „ping“ werden ICMP Anfragen (Echo Requests) an ein System gesendet. Es kann u.a. festgestellt werden ob ein Computer Online ist und noch reagiert. Das angeforderte Paket enthält 64 Bytes.
root@pluto:~# ping 176.9.20.230 PING 176.9.20.230 (176.9.20.230) 56(84) bytes of data. 64 bytes from 176.9.20.230: icmp_seq=1 ttl=52 time=35.2 ms 64 bytes from 176.9.20.230: icmp_seq=2 ttl=52 time=35.6 ms 64 bytes from 176.9.20.230: icmp_seq=3 ttl=52 time=36.0 ms 64 bytes from 176.9.20.230: icmp_seq=4 ttl=52 time=35.4 ms 64 bytes from 176.9.20.230: icmp_seq=5 ttl=52 time=34.4 ms 64 bytes from 176.9.20.230: icmp_seq=6 ttl=52 time=34.5 ms ....
Aus der ttl (time to live) kann man ablesen, wie viele Router das Paket durchlaufen hat. Jeder Router reduziert die ttl um 1, auf diese weise kann ein Routerbounce verhindert werden. Hat die ttl 0 erreicht, wird das Paket verworfen und der Absender erhält eine ICMP Fehlermeldung.
netstat
Das Diagnosewrkzeug „netstat“ dient zur Anzeige von Informationen über Netzwerkverbindungen, Routingtabellen, Schnittstellenstatistiken, maskierten Verbindungen uvm. Ohne Optionen Zeigt „netstat“ offene Netzwerk Sockets.
Syntax:
- netstat [opt]
Optionen:
- -n ⇒ Zeigt nur numerische Ausgaben ohne Namensauflösung.
- -l ⇒ Zeigt nur Sockets, die sich im Status LISTEN befinden.
- -p ⇒ Zeigt auch Prozesse mit der PID Nummer, die einen Socket geöffnet halten.
- -r ⇒ Gibt die Routing-Tabelle des Kernels aus.
- -i ⇒ Gibt Statistiken der übertagenen Pakete der Schnittstellen aus.
- -s ⇒ Gibt sehr ausführliche Statistik aus.
- -a ⇒ Zeigt alle Verbindungen, nicht nur die des Hosts an.
- -c ⇒ Ausgabe wird im Sekundentakt aktualisiert (Live). Beenden mit [Strg]+[C].
- -M ⇒ Zeigt maskierte Verbindungen auf einen Router mit NAT.
- -g ⇒ Zeigt Informationen über Multicast-Gruppen.
- -v ⇒ Detailierte Ausgaben. Zeigt auch Adressfamilien, die nicht im Kern konfiguriert sind.
Protokoll:
- --inet, -4 ⇒ Zeigt nur IPv4 Sockets an.
- --inet6, -6 ⇒ Zeigt nur IPv6 Sockets an.
- --unix, -x ⇒ Zeigt nur Unix-Domain-Sockets an.
- --tcp, -t ⇒ Zeigt nur TCP Sockets an.
- --udp, -u ⇒ Zeigt nur UDP Sockets an.
root@pluto:~# netstat -tulpen Aktive Internetverbindungen (Nur Server) Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 104 4432 1265/mysqld tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 0 3521 714/portmap ...
Zeigt auf welchen Ports Serverdienste aktiv sind, die für andere Rechner erreichbar sind.
Ausgabe:
- Proto: Vom Socket verwendetes Protokoll (TCP, UDP, RAW).
- Recv-Q: Anzahl der Bytes, die noch nicht von der Anwendung vom Socket abgeholt wurden.
- Send-Q: Anzahl der Bytes, die von der Gegenseite noch nicht bestätigt wurden.
- Local Address: Lokale Adresse und Portnummer des Sockets.
- Foreign Address: Adresse und Port der Gegenseite des Sockets.
- State: Zustand des Sockets (LISTEN, ETABLISHED, WAIT, …).
- User: Name oder Nutzer-ID des Sockets.
- Inode: Prozess-ID und Programm, das den Socket besitzt.
ss (Socket State)
Das Kommandozeilentool „ss“ ermöglicht die Ausgabe von existierenden Netzwerkverbindungen.
Syntax:
- ss [opt] [filter]
nmap
Das Programm „nmap“ (Network Mapper) ist ein Portscanner, mit dem sich Netzwerke oder Rechner auf offene Ports und den darauf lauschenden Diensten überwachen lassen. Es können IP Adressen oder Hostnamen verwendet werden. Mit dem Paket „zenmap“ steht auch eine grafische Benutzeroberfläche für „nmap“ zur Verfügung.
Syntax:
- nmap [scan-typ] [opt] [ziel]
Scan-Typ:
- -sT ⇒ Connect Scan. Es wird für jeden zu scannenden Port eine TCP Verbindung auf und abgebaut. Dieser Scan steht auch ohne root Rechte zur Verfügung.
- -sS ⇒ Stealth Scan. Baut keine komplette TCP Verbindung auf, ist daher unauffälliger.
- -sU ⇒ Scannt UDP Ports.
- -sP ⇒ Ping Scan. Prüft die Erreichbarkeit über Ping.
- -sL ⇒ List Scan. Kein Portscan. Überprüft nur Hostnamen.
- -sF, -sN, -sX ⇒ Sendet bewußt falsche(manipulierte) TCP Pakete an die Ports.
- -sA, sW ⇒ Überprüft Ports. Gut zum erkennen von Firewalls.
Optionen:
- -sR ⇒ Gibt Informationen über RPC Dienste aus.
- -sV ⇒ Versucht die laufenden Dienste zu identifizieren.
- -O ⇒ OS Detection.
- -A ⇒ Kurzform von -sV -O.
- -p [port|a, b, c|port-port] ⇒ Scannt nur port(s) [a, b, c] oder port-port.
- -p- ⇒ Scannt alle Ports.
- -r ⇒ Scannt Ports in numerischer Reihenfolge.
- -P0 ⇒ Portscan erzwingen.
- -e [schnittstelle] ⇒ Nmap nutzt Schnittstelle.
- -v ⇒ Zusätzliche Informationen ausgeben.
Beispiel:
root@hostname:~# nmap 176.9.55.221 Starting Nmap 5.00 ( http://nmap.org ) at 2013-01-04 10:51 CET Interesting ports on server4.bplaced.net (176.9.55.221): Not shown: 979 closed ports PORT STATE SERVICE 22/tcp filtered ssh 23/tcp filtered telnet 80/tcp open http 135/tcp filtered msrpc 139/tcp filtered netbios-ssn 445/tcp filtered microsoft-ds 631/tcp filtered ipp 1433/tcp filtered ms-sql-s 2049/tcp filtered nfs 3306/tcp filtered mysql 4444/tcp filtered krb524 5432/tcp filtered postgresql 5999/tcp filtered ncd-conf 6000/tcp filtered X11 6001/tcp filtered X11:1 6002/tcp filtered X11:2 6003/tcp filtered X11:3 7100/tcp filtered font-service 7741/tcp filtered unknown Nmap done: 1 IP address (1 host up) scanned in 4.81 seconds
whois
Mit dem Kommandozeilen Programm „whois“ können Informationen zu Internet-Domains und IP-Adressen und deren Eigentümern abgefragt werden.
Syntax:
- whois [opt] [args]
Optionen:
- -h ⇒ Mit Host verbinden.
- -p ⇒ Verbindung mit Port(X).
- --verbose ⇒ Geschwätzig.
- --help ⇒ Hilfe Modus.
Beispiele:
user@home:~$ whois 144.76.167.69
wireshark
tcpdump
Das Kommando „tcpdump“ gibt den Verkehr von Netzwerkverbindungen auf der Konsole aus.
Syntax:
- tcpdump [opt]
Optionen:
- -i [schnittstelle] ⇒ Gibt die Schnittstelle an, die Überwacht werden soll.
- -n ⇒ Zeigt IP Adressen und Ports in numerischer Ausgabe.
- -w [datei] ⇒ Leitet die Ausgabe in eine Datei um.
- -F [datei] ⇒ Liest aus Datei.
Beispiel:
root@pluto:~# tcpdump tcp port 22 -i eth0 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes 22:17:11.514354 IP 192.168.0.1.58372 > 192.168.0.37.22: . ack 16101792 win 6536 <nop,nop,timestamp 2848543 4015755> 22:17:11.514777 IP 192.168.0.37.42042 > 192.168.0.1.22: P 16101792:16101984(192) ack 11857 win 2720 <nop,nop,timestamp 4015756 2848543> 22:17:11.515377 IP 192.168.0.1.58372 > 192.168.0.37.22: . ack 16102160 win 6536 <nop,nop,timestamp 2848543 4015756> 22:17:11.515803 IP 192.168.178.37.42042 > 192.168.0.1.22: P 16102160:16102352(192) ack 11857 win 2720 <nop,nop,timestamp 4015757 2848543> 22:17:11.516409 IP 192.168.0.1.58372 > 192.168.0.37.22: . ack 16102528 win 6536 <nop,nop,timestamp 2848543 4015757> .... 20 packets captured 20 packets received by filter 0 packets dropped by kernel
lsof
Mit dem Programm „lsof“ (list open files) kann festgestellt werden, ob Dateien duch Nutzer geöffnet sind. Es können aber auch geöffnete Netzwerkverbindungen angezeigt werden.
Syntax:
- lsof [opt]
- lsof -i[46][protocol][@hostname|hostaddr][:service|port]
Optionen:
- -i ⇒ Gibt nur IP Sockets aus. Mit weiteren Filter kann die Ausgabe weiter eingeschränkt werden.
- -n ⇒ Numerische Ausgabe von IP Adressen.
- -P ⇒ Keine Auflösung von Portnummern in Servicenamen.
Beispiel:
root@pluto:~# lsof -i -n -P COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME portmap 1065 daemon 4u IPv4 4851 0t0 UDP *:111 portmap 1065 daemon 5u IPv4 4860 0t0 TCP *:111 (LISTEN) rpc.statd 1077 statd 4w IPv4 4888 0t0 UDP *:829 rpc.statd 1077 statd 6u IPv4 4897 0t0 UDP *:51997 rpc.statd 1077 statd 7u IPv4 4900 0t0 TCP *:34334 (LISTEN) cupsd 1621 root 9u IPv4 6013 0t0 UDP *:631 dhclient 2997 root 6u IPv4 106201 0t0 UDP *:68 ssh 3065 hans 3u IPv4 116221 0t0 TCP 192.168.0.31:58372->192.168.0.37:22 (ESTABLISHED) ....
Hier wird angezeigt, welche Dienste mit welchen Nutzernamen, Prozess-ID und IP Sockets geöffnet sind.
netcat
Das Programm „netcat“ (nc) ist ein vielseitiges Multifunktionswerkzeug zum lesen und schreiben von Daten über Netzwerkverbindungen. Netcat kann das TCP oder UDP Protokoll verwenden und liest dabei von STDIN ein und gibt es im Zielcomputer auf STDOUT aus. Netcat läßt sich sehr gut für die Diagnose der Verbindung zwischen Quell. und Zielcomputer benutzen.
Syntax:
- nc [-opt] hostname port[s] [ports]
- nc -l -p port [-options] [hostname] [port]
Optionen:
- -f [datei] ⇒ Führt eine Datei nach Verbindung aus. Vorsicht!
- -c [command] ⇒ Führt ein Shell Kommando (/bin/sh -c) nach Verbindung aus. Vorsicht!
- -h ⇒ Hilfe anzeigen.
- -l ⇒ Lauschen (LISTEN) Modus, für eingehende Verbindungen.
- -n ⇒ Nur numerische IP Adressen, kein DNS.
- -i [sek] ⇒ Verzögerungs Interval.
- -p [port] ⇒ Port Nummer (oder von [port-port]).
- -q [sek] ⇒ Nach eingabe x Sekunden warten, dann verlassen.
- -b ⇒ UDP Broadcasts erlauben.
- -r ⇒ Zufällige Lokale und entfernte Ports.
- -s [addr] ⇒ Lokale Adresse.
- -t ⇒ Aktiviert telnet Vermittlung.
- -u ⇒ Aktiviert UDP Modus.
- -v ⇒ Geschwätzige Ausgabe.
- -w [sek] ⇒ Timeout für Verbindung.
Beispiele:
Um z.B. Nachrichten von STDIN auf einem anderen Rechner zu senden, muß Rechner 1 auf LISTEN stehen und ein Port ausgewählt sein.
hans@pluto:~$ netcat -l -p 1234 Hallo Ein Text
Den zweiten Rechner mit dem Hostnamen des ersten Rechners und dem Port angeben.
martin@neptun:~$ netcat pluto 1234 Hallo Ein Text
Jetzt kann von den Rechnern jeweils von STDIN nach STDOUT geschrieben werden.
hans@pluto:~$ netcat -l -p 1234 > kopie-datei1
martin@neptun:~$ netcat pluto 1234 < datei1
hans@pluto:~$ netcat -l -p 1234 | dd of=/backup/hda3.iso
martin@neptun:~$ dd if=/dev/hda3 | netcat pluto 1234
hans@pluto:~$ netcat pop.mail.yahoo.de 110 +OK hello from popgate-0.8.0.357900 pop011.mail.ir2.yahoo.com user mail@yahoo.de +OK password required. pass geheim +OK maildrop ready, 37 messages (260464 octets) (336182) list +OK 37 messages (260464 octets) 1 6242 2 5386 3 6012 ... . quit +OK server signing off.
Cloud