„Was werkelt denn da im (Inter-)Net(z)?

1. Allgemeines
„Unter Linux gibt es kein PhoneHome – oder falls ja, wird es bald bekannt und die Anwendung geächtet!“ Mag sein, doch wenn während der Internetnutzung die Festplatte plötzlich sehr aktiv wird oder Firefox anfangs beim Aufbau von Webseiten sehr langsam ist, obwohl Kinternet lebhafte Aktivitäten anzeigt, dann möchte man schon wissen, was sich da im (Inter-)Net(z) tut. Ein wichtiger Linuxforen-Beitrag einschl. Ausführungen zu den sehr leistungsfähigen aber aufwändigen Tools nmap und ethereal stammt von adme aus dem Jahr 2002 'Welche Ports werden momentan benutzt???' -> http://www.linuxforen.de/forums/showthread.php?t=36128

Doch im Ergebnis enthielt dieser Beitrag keine 'produktionsreife EINFACHE Einsatzlösung' für Workstations oder ein kleines Netzwerk - beispielsweise liefert tcpdump in 40 Minuten Internetnutzung mit einem Browser rund ein MB protokollierte tcp-Paktete - wer (nur) schon mal von eins bis tausend gezählt hat, der/die weiß, dass das (bis auf Ausnahmen) kein alltagstauglicher Lösungsansatz ist, denn die abgeleitete Frage lautet schlicht: Welche Anwendungen gehen (evtl. unerlaubt) ins Internet?

Lösungsansatz: Nur den vom user per KLICK bestätigten Anwendungen die Internetnutung erlauben? Die OpenSource-Anwendung FW-Builder geht ähnlich Windows-ZoneAlarm in diese Richtung, allerdings sind die Praxiserfahrungen hierzu bisher noch sehr zwiespältig. adme weist in seinem Beitrag auf den Lösungsvorschlag mit dem Perl-script 'socklist' hin [# Larry Doolittle <ldoolitt@jlab.org> # September 1997], aber ..

-socklist liefert nur eine einzelne Momentaufnahme
-hat keine Protokollfunktion
-es fehlen Uhrzeit und Datum der gelisteten Programme/Ports
-unerwünschte Routineanzeigen zum Beispiel 4x opera können nicht oder nur umständlich ausgefiltert werden.

Doch grundsätzlich ist socklist der richtige Weg, so dass socklist die Grundlage meiner erweiterten Lösung ppa [Programme-mit-Ports_Anzeige] wurde.

2.Die Lösung ppa (Namen sind Schall und Rauch)

a) Es wurde die mit SuSE9.0-Prof ausgelieferte socklist-Version um die Ausgabe HH:MM:SS sowie TT.MM.JJJJ erweitert und ist als socklistT(ime) zusammen mit der Original-socklist und diesem Text als Anhang beigefügt.
b) Im bash-script ppa wurden die in socklistT fehlenden Funktionen 'nachgerüstet' wie Refreshrate in Sekunden, Protokollschreibung, wahlweise Filterfunktion ..
c) ppa (mit Unteraufruf von socklistT im Refresh-Takt) muss jedoch als root gestartet werden, sonst können unter anderem KEINE Programmnamen aus dem Verzeichnis /proc ausgelesen werden (Musterausgabe siehe Ziffer 3). Mögliche Optionen sind im Kopfteil des 29 Zeilen langen scripts ppa aufgeführt, beispielsweise die Refresh-Rate per
Refresh=3 #Sekunden , siehe Zeile 'read -t $Refresh antwort'
oder die Anzahl der (jeweils letzten) Ausgabezeilen aus dem ppa.log.

3.'Die Installation'
Die Dateien ppa und socklistT sind konsequenterweise nach /usr/sbin zu kopieren, so dass sie sich nur für root im Pfad befinden; sie sind auf 'ausführbar' zu setzen.

Helle@Sonne:/usr/sbin> ./socklistT # durch user Helle – wenig brauchbar
HH:MM:SS ....Type ..Port .Inode .uid ..pid ..fd APPLICATION ~~
12:46:41 .....tcp ...111 .31889 ...0 ....0 ...0 .......0 ...6.12.2006
12:46:41 .....tcp ...631 .14076 ...0 ....0 ...0 .......0 ...6.12.2006
12:46:41 .....udp ...111 .31888 ...0 ....0 ...0 .......0 ...6.12.2006
12:46:41 .....udp ...631 .14077 ...0 ....0 ...0 .......0 ...6.12.2006

Sonne:/# socklistT # durch root ohne Pfadangabe, mit allen Daten
HH:MM:SS ....Type ...Port Inode .uid ..pid ..fd APPLICATION ~~
12:48:27 .....tcp ....111 31889 ...0 12991 ...5 portmap ...6.12.2006
12:48:27 .....tcp ....631 14076 ...0 .4177 ...0 cupsd ...6.12.2006
12:48:27 .....udp ....111 31888 ...0 12991 ...3 portmap ...6.12.2006
12:48:27 .....udp ....631 14077 ...0 .4177 ...2 cupsd ...6.12.2006

socklistT alleine ist schon nützlich: Wenn firefox zum Beispiel bei einem Modem-Nutzer bereits am Anfang lahmt und socklistT DREI firefox-ports anzeigt (üblicherweise sind es nur ZWEI), so ist davon auszugehen, dass firefox wieder bei der Suche nach evtl. Updates rumrödelt [die automatische Suche nach Updates wird bei mir nur bei Bedarf aktiviert]. Denkbar wäre natürlich auch, dass sich der Internetserviceprovider über meinen PC 'schlau machen will', dann hilft nur ein Vergleichstest mit einem anderen Provider.

4. Die Start- und Nutzungsmöglichkeiten
a) Als Einmalbefehl in einer user-konsole mit
su -c ppa [Ausgabe mit aktiver Filterung im Refresh-Takt] bzw.
su -c 'ppa /all' [Auflistung aller aktiven Ports im Refresh-Takt]

b)Dauerhaft: kdesu konsole # und
ppa bzw. ppa /all

Es kann auch 'kdesu xterm' gestartet werden, damit ist auch das Ausführen von GUI-Anwendungen (zB. kwrite zum Editieren) unter root möglich; eine entsprechende Verknüpfung habe ich mir in die Taskleiste gelegt, so dass ein Klick plus Passworteingabe die x-konsole öffnet: Ferner habe ich im xterm-Fenster durch Klick links oben – Erweitert – Spezielle Einstellungen für dieses Fenster – unter Geometrie 'Position und Größe merken' aktiviert, so dass xterm immer links oben fixiert ist.

c) Die Filterfunktion
Wenn per ppa die (Inter-)Net(z)-Kontrollanzeige mitläuft, so ist eigentlich nur die Anzeige 'des Unerwarteten / des Besonderen' erforderlich, das Unkritische also auszublenden; dies leistet per Default der Befehl 'ppa' mit der HINTER else „eingebauten“ Befehlsfolge
if [ "$1" = "/all" ] ; then
socklistT >> $ppalog
else
socklistT | grep -vE 'portmap| X|cupsd|sshd|tcp 25|firefox-bin|nscd|opera| lpc |0 0|HH:MM|kprinter|kdeinit)|4 zmd' >> $ppalog
fi

|0 0| zum Beispiel kennzeichnet 'absterbende' Portprozesse. Je nach Nutzungsart des PCs sind hier Filter-Eigenanpassungen sinnvoll!

d) Weitere Nutzungshinweise
d1) Wenn sich nichts Besonderes ereignet, sieht die ppa-Anzeige ganz gleichförmig aus
.......
--- /var/log/ppa.log /all BEENDET: Mi 06 Dez 2006 16:18:50 CET ~~
--- /var/log/ppa.log GESTARTET: Mi 06 Dez 2006 16:19:15 CET ~~
--- /var/log/ppa.log --- [q + Enter=exit] Mi 06 Dez 2006 16:19:15 CET ~~
--- /var/log/ppa.log --- [q + Enter=exit] Mi 06 Dez 2006 16:19:18 CET ~~
--- /var/log/ppa.log --- [q + Enter=exit] Mi 06 Dez 2006 16:19:21 CET ~~
--- /var/log/ppa.log --- [q + Enter=exit] Mi 06 Dez 2006 16:19:24 CET ~~
--- /var/log/ppa.log --- [q + Enter=exit] Mi 06 Dez 2006 16:19:27 CET ~~

dh. schon optisch erkennt man hier ggf. alle drei Sekunden, ob eine Besonderheit eingetreten ist. Soll eine unerwünschte Anwendung gestoppt werden, genügt in ppa ein 'q + Enter' sowie 'kill -9 pid'(-Nummer der jeweiligen Anwendung).

d2) /var/log/ppa.log-Auswertungen [Leserecht besteht auch für user]
Wie sicherlich schon bemerkt, hängt an manchen Ausgabezeilen ein '~~' [Tilde, Alt+126]: Dies sind Ausgaben, die der optischen Information dienen, aber nicht zwingend sind, und die angehängten Sonderzeichen sollen deren leichtes Ausfiltern ermöglichen, beispielsweise mit
cat /var/log/ppa.log | grep -vE '~~' | less
kann dann bequem mit Bild_up/_down/Pos1/Ende durch alle besonderen Programm-Portanzeigen gescrollt werden.

Oder mit
cat /var/log/ppa.log | grep '.12.' | less
in ALLEN Besonderheiten des 12. Monats blättern usw.

d3) Schwer identifizierbare Anwendungen
Im Grunde wird die ppa-konsolen-Ausgabe bei vielen Workstations eine langweilige Angelegenheit sein, weil sich da nämlich praktisch nichts Gefährliches ereignet – sollte man jedenfalls meinen:

Während der Testzeit im abgelaufenen Jahr war das auch so -mit einer Ausnahme-, als ich eine vertrauenswürdige Webseite besuchte und einen speziellen Button für eine Sonderfunktion klickte. Danach tauchte zweimal als Programmname „ sh" im /var/log/ppa.log auf - es ist natürlich nicht im Sinne des Erfinders, dass gestartete bash-scripte so anonym gelistet sind, doch andererseits kann socklistT den /proc-Infos wohl keine genauere Prozess-Angabe entnehmen. Doch meist weiß man ja, was gestartet wurde.

Falls nicht, lässt sich der Verursacher wie folgt ermitteln:
-Die Zeit der Portnutzung zB. 13:24 ist aus var.log bekannt
-Die Ausführungszeit wird auch bei dem benutzten script gespeichert
-Das script muss das Attribut x für executable besitzen.
Daraus folgt diese Suchsyntax
ls -laut /* | grep xr | grep 13:2 | grep -v drw | grep -v lrw | less
[so hat das jedenfalls damals bei mir geklappt :-) ].

Disclaimer: Die ppa-Anwendung ist so, wie sie ist, dh. meinen Bedürfnissen entsprechend und ohne irgendwelche Verantwortlichkeit gegenüber Dritten. Durch die rein lesenden Funktionen bestehen m.E. jedoch keinerlei Risiken, durch Lösung als scripte bieten sich aber eine Fülle von individuellen Anpassungsmöglichkeiten. Beispielsweise könnte damit eine Sonderversion ppa_amule realisiert werden, die nur amule-Portaktivitäten darstellt (socklistT bleibt unverändert): ppa(_xxx) ist 'reentrant', dh. kann mehrfach gestartet werden und nebeneinander laufen; in diesem Falle sollten unterschiedliche LOG-Dateinamen verwendet werden.