Fwlogwatch: Ein Firewall-Loganalysierer und Sicherheitswerkzeug

Eine der ersten Amtshandlungen auf dem neuen vServer war es, eine Firewall aufzusetzen. Das stellte sich Dank ufw als gar nicht so schwierig heraus. Ich experimentierte dann mit verschiedenen Logleveln und stellte schnell fest, dass ich ohne einen Loganalysierer für die Firewall schnell den Überblick verlieren würde.
Ich installierte daraufhin Fwlogwatch, ein Sicherheitswerkzeug, dass schon seit einem Jahrzehnt als Freie Software vorliegt. An dieser Stelle wollte ich es kurz vorstellen, da ich nicht wirklich viele Erfahrungsberichte dazu gefunden habe, die sich mit Fwlogwatch auseinander gesetzt haben. Mit Sicherheit gibt es noch andere Loganalysierer für Firewalls. Welche kennt und benutzt ihr davon und wie geht ihr generell mit dieser Thematik um?

Installation und Konfiguration

aptitude install fwlogwatch


Fwlogwatch kann sowohl per Konfigurationsdatei als auch über die Kommandozeile konfiguriert werden. Nur die Optionen, die nicht ausdrücklich in fwlogwatch.config definiert wurden, können per Kommandozeilenparameter geändert werden. Im Folgenden konzentriere ich mich auf die Beschreibung der Konfigurationsdatei.
Bei Debian und Ubuntu ist es am sinnvollsten zuerst die Standardeinstellungen mit

dpkg-reconfigure fwlogwatch


festzuschreiben. Die Einstellungen befinden sich danach in /etc/default/fwlogwatch. Die Screenshots zeigen die sechs Möglichkeiten, die zur Auswahl stehen. Ich habe mich dafür entschieden Fwlogwatch als Daemon im Echtzeitmodus zu starten und zusätzlich einmal täglich eine E-Mail-Benachrichtigung mit der Auswertung der vergangenen 24 Stunden zu erhalten. Auf das automatische Anlegen von Firewall-Regeln habe ich verzichtet.

Die zentrale Konfigurationsdatei existiert in /etc/fwlogwatch/fwlogwatch.config. Die Datei ist sehr gut in Englisch dokumentiert. Hier ist ein Auszug mit den für mich wichtigsten Einstellungen.

# Input-Datei
input = /var/log/messages
# Wir analysieren eine Netfilter-Firewall
parser = n
# Angezeigt werden: Quell-IP, Protokoll und Zielport.
src_ip = on
protocol = on
dst_port = on
# Diese Quelle soll ausgeschlossen werden
exclude_src_host = 123.123.123.123
# Sortierungsreihenfolge
sort_order = Sacd
# Anzeige der Paketgröße
data_amount = yes
# nur die letzten 24 Stunden anzeigen
recent = 24h
# Fwlogwatch soll als Benutzer nobody laufen
run_as = nobody
# Im Echtzeitmodus soll benachrichtigt werden
notify = yes

Einmal am Tag erhält man danach eine E-Mail, die alle Vorkommnisse in der vorher festgelegten Sortierreihenfolge auflistet. Dieser ältere Artikel für die Slackware-Distribution erklärt anhand einiger Beispiele wie man Fwlogwatch von der Kommandozeile bedient und verschiedene Sortierverfahren nutzen kann, um Muster in einem Angriff zu erkennen.

Jul 18 06:58:29 to - - [9948935.724847] [UFW BLOCK]  1 tcp packet (44 bytes) from xxx.xxx.xxx.xxx port 22
Jul 18 07:05:27 to - - [9949353.404245] [UFW BLOCK]  1 tcp packet (48 bytes) from xxx.xxx.xxx.xxx port 5900
Jul 18 07:30:49 to - - [9950876.155902] [UFW BLOCK]  1 udp packet (23 bytes) from xxx.xxx.xxx.xxx port 27970

Echtzeitmodus

Für den Echtzeitmodus existiert noch ein zusätzliches Webinterface, welches ebenfalls in fwlogwatch.config aktiviert wird. Das Statuspasswort muss verschlüsselt sein und lässt sich mit htpasswd -nb admin meingeheimesPasswort erzeugen. Man kann sich dann z.B. über einen SSH-Tunnel mit dem Webinterface verbinden.
ssh -p 44444 -L 8888:127.0.0.1:888 meinserver

server_status = yes
listen_port = 888
status_user = admin
status_password = Xjswdw/we3 #Beispiel für ein verschlüsseltes Passwort

Fwlogwatch-Status

Zum Schluss

Fwlogwatch bietet in /usr/share/doc/examples/ noch zwei CGI-Skripte, mit denen eine Zusammenfassung im HTML-Format auf einem Webserver präsentiert werden kann. Auch lassen sich alle täglichen Berichte per HTML-Mail verschicken, wenn man das möchte. Wurde notify=yes in der Konfigurationsdatei gesetzt wird zusätzlich eine Alarmnachricht versandt, wenn ein Schwellenwert an Verbindungen pro Zeitintervall überschritten wurde. Der Inhalt der Mail orientiert sich an den Angaben in /etc/fwlogwatch/fwlw_notify. Außerdem lassen sich auch automatisch neue Firewall-Regeln anlegen, wozu das Skript /etc/fwlogwatch/fwlw_respond berücksichtigt wird und externe CERT-Stellen mit vorgefertigten Templates alarmieren.
Ich persönlich finde die vielfältigen Sortierungsmöglichkeiten von Fwlogwatch nützlich, womit sich tatsächlich überhaupt erst eine Übersicht in die Analyse der Firewall-Logdateien bringen lässt. Ich stelle mir nur hin- und wieder die Frage, wie ich am besten auf die Tatsache reagiere, dass mein Server permanent gescant wird.

Wyrd und Remind: Erinnerungen per E-Mail erhalten

Damit die Idee nicht ganz in Vergessenheit gerät, bekommt sie einen eigenen kurzen Beitrag. Remind, ein Terminplaner für die Konsole, hatte ich im Zusammenspiel mit Wyrd letztes Jahr vorgestellt. Beide zusammen kombinieren eine mächtige Syntax zur Beschreibung von Terminen mit einer effizienten und eleganten Benutzerschnittstelle auf Basis von Ncurses.
Nun habe ich in den letzten Monaten ebenfalls festgestellt, dass ich gar nicht alle Funktionen brauche, die dieses Programm mir zur Verfügung stellt, um Wyrd und Remind wirklich vollkommen auszureizen. Eine wiederkehrende Anforderung an Terminplaner und Erinnerer gibt es dennoch. Geburtstage!
Natürlich, in Zeiten von Sozialen Netzwerken war es nie einfacher an das Geburtsdatum eines flüchtig bekannten zu gelangen und darüber benachrichtigt zu werden. Doch nehmen wir an, wir kennen die Geburtstage unserer Freunde und Bekannten aus erster Hand, haben einen fertig eingerichteten Mailserver, der nur E-Mails versenden kann, dann funktioniert das Ganze unter Umständen nach diesem netten Tipp aus der FAQ von Remind.

  • Startet wyrd
  • Wählt das Datum aus und tragt einen beliebigen Geburtstag ein (Taste t)
  • Beispiel: REM Jul 10 +14 MSG Annas Geburtstag %b (14 Tage vorher möchte man eine Mail erhalten)
  • Tragt weitere Geburtstage nach dem selben Schema ein.
  • Startet Remind als Daemon. remind -z -k'echo "%s" | mail -s "Erinnerung" apo' ~/.reminders &

Mit der Option -z wird Remind als Daemon im Hintergrund ausgeführt und greift dabei auf die Textdatei ~/.reminders zu, in der Wyrd die Termine speichert. Durch die Option -k führt Remind ein Kommando aus, in diesem Fall den Echo-Befehl. Der Platzhalter %s wird durch den Text nach MSG ersetzt, also "Annas Geburtstag in 14 Tagen" und danach der gesamte Inhalt durch eine Pipe an mail geschickt.
Die E-Mail hat also den Inhalt %s, den Betreff "Erinnerung" und geht an den Benutzer apo. In /etc/aliases könnt ihr eine externe Mailadresse für diesen Benutzer definieren und schon erhaltet ihr zu jedem Geburtstag 14 Tage im Voraus eine Erinnerung.
Wenn man das jetzt noch mit etwas Skriptkunst kombiniert, einen Zufallsgenerator bemüht, sich Inhalte für die Variablen $ANREDE, $FLOSKELN, $GLUECKWUENSCHE ausdenkt, kann man aus der Erinnerungsmail direkt eine Glückwunschmail machen. Ah, die Wunder des Informationszeitalters. 🙄

Tiger: Hilft bei Sicherheitsüberprüfung und Einbrucherkennung auf dem Server

Das Logo von Tiger
Es sollte anspruchslos an die Ressourcen sein, nicht noch ein Daemon, der wertvollen Arbeitsspeicher in Besitz nimmt. Es sollte standardmäßig lautlos sein und nur Alarm geben, wenn es etwas Verdächtiges zu melden gibt und ganz klar, es musste ein nützliches Werkzeug sein, welches vor einer Vielzahl von Sicherheitsproblemen warnen konnte und regelmäßig das System auf Unregelmäßigkeiten überprüft.
So habe ich Tiger gefunden. Wie alle Programme in diesem Bereich ist auch Tiger nur ein Mosaikstein, um den Server etwas sicherer zu machen. Mich hat das modulare Design und die einfache Konfiguration überzeugt. Die meisten Module sind in purem Shell-Skript geschrieben und greifen ausschließlich auf UNIX-Werkzeuge zurück, um z.B. Datei- und Benutzerrechte zu überprüfen, unbenutzte Accounts anzuzeigen oder verdächtige Prozesse zu melden.
Des Weiteren existieren noch systemspezifische Programme, die im Fall von Debian die Md5-Summe von installierten Paketen überprüfen. Bei Veränderungen wird per Mail gewarnt. Neben Tiger werden noch John "the Ripper", chkrootkit und ab Wheezy auch Tripwire oder Aide als empfohlene Pakete installiert.
John versucht die Passwörter der Benutzer zu knacken und meldet schwache an den Admin oder direkt an den Benutzer. Chkrootkit testet auf typische Veränderungen, die von Rootkits verursacht werden und Tripwire bzw. Aide melden ebenfalls, ob wichtige Systemdateien verändert worden sind, nachdem zuvor in einer Datenbank der Ursprungszustand definiert worden ist.

Bedienung

aptitude install tiger

  • cronrc. Die Skripte und Module laufen zu festgelegten Zeiten und werden durch Cron gesteuert. Die Konfigurationsdatei hierfür ist /etc/tiger/cronrc. Ich habe hier lediglich die Ausführung des Moduls "check_system" auf 3.00 Uhr geändert, weil zu dieser Zeit die wenigsten Leute auf dem Server spielen, um dadurch beeinträchtigt werden zu können. Check_System ist CPU-intensiv und überprüft unter anderem mit deb_checkmd5sums die Integrität aller installierten Pakete.
  • tigerrc. In /etc/tiger/tigerrc lässt sich wiederum festlegen, welche Checks ausgeführt werden sollen und welche nicht, wenn man Tiger manuell mit dem Befehl tiger aufruft. Dazu setzt man hinter dem betreffenden Modul entweder ein Y für Ja oder ein N für Nein. Die Datei ist sehr gut dokumentiert und ziemlich selbsterklärend.
  • tiger.ignore. In /etc/tiger/tiger.ignore kann Output eingetragen werden, der durch Tiger ignoriert werden soll.

Am Anfang wird Tiger mehrere Mails mit Warnungen verschicken, danach nur noch, wenn sich etwas geändert hat. Jede Warnung enthält einen typischen Code, z.B. [cron005w]. Das mitgelieferte Programm tigexp liefert dann die Erkenntnis, um was für ein Problem es sich handelt.
tigexp cron005w
Bei Debian ist es Standard, dass jeder Benutzer einen Cronjob anlegen darf. Das Verhalten kann man unterbinden, indem die Datei /etc/cron.allow angelegt und root eingetragen wird, wodurch schließlich nur noch der Admin diese Aufgaben erstellen darf.
Es gibt einige Warnungen, die gar nicht bedrohlich sind. Tiger regt jedoch an darüber nachzudenken. Insgesamt finde ich, dass das gesamte Paket eine interessante und nützliche Ergänzung für den Spieleserver ist.

Grundlagen: Der Weg zum leichtgewichtigen System mit Debian

Es gibt Dinge mit Debian, die lassen sich kurz und knapp beschreiben. Nachdem Chips und Cola bereit stehen, Netzinstallation und letzter Schliff angesetzt wurden, kommt nun der wirklich einfache Teil - Installieren und Konfigurieren des Lieblingssystems.

Server und Konsole

An dieser Stelle lässt sich direkt ein Server aufsetzen. Einige Ideen habe ich unter dem Namen meines Spieleprojekts verschlagwortet. Hat man einen älteren Computer oder setzt selbst auf pure Effizienz, bietet sich ein reines Konsolensetup an.
Lasst euch vom Charme des Schlichten inspirieren und wählt eure Softwarefavoriten aus. Gerade für so Dinge wie Musikbox mit Display, elektronischer Fotorahmen, Radio mit Wecker, zum E-Mail-Lesen oder als PIM gibt es haufenweise gute Software für die Konsole. Das Internet ist voll mit guten und verrückten Ideen, was man mit alten Computern machen kann.
Benutzt Screen oder Tmux, um die ganzen Effizienzwunder neben- und übereinander auszuführen und surft raaaww. Auf dem Thinkpad 600 hat sich das bewährt.


Wer die perfekte Illusion zu einer grafischen Oberfläche erschaffen möchte, findet mit FbTerm eine interessante Gestaltungsmöglichkeit.

Fenstermanager

Man kann natürlich Screen und Konsorten und eine grafische Oberfläche zusätzlich haben. Die besten Ergebnisse, nach Geschwindigkeit und Hardwareanforderungen, bieten alleinstehende Fenstermanager. Der ganze Trick läuft auf vier Punkte hinaus.

  • Xorg. Ihr braucht den X-Server, damit der Fenstermanager seine Arbeit verrichten kann.
  • alsa-base. Ist nützlich, wenn man Musik und Klängen lauschen will.
  • lightdm oder slim. Gute Alternativen, wenn es leicht und funktional sein soll. Es gibt aber auch noch andere, unter anderem Qingy.
  • Fenstermanager. Openbox, Fluxbox, Awesome, dwm, i3wm, Enlightenment, PekWM, ratpoison usw. usw. Debian bietet mehr als 40 verschiedene an. Weitere können mit aptitude show x-window-manager gefunden werden.

Anders ausgedrückt ein leichtgewichtiges System lässt sich mit
aptitude install xorg alsa-base lightdm openbox
installieren. Nach dem einmaligen Ausführen von lightdm als root, kann man sich wie gewohnt einloggen. Je nach Fenstermanager fällt der erste Eindruck unterschiedlich aus, aber mit wenigen Konfigurationsdateien lässt sich viel bewegen. Dazu in den Beiträgen zu den einzelnen Fenstermanagern später mehr.
Ich persönlich ziehe seit mehreren Monaten Lightdm Slim vor, da ich das Gefühl habe, dass hier seitens Ubuntu aktiv an der Verbesserung gearbeitet wird und er deswegen eine gute Zukunft hat. Wer schon erfahrener ist, kann auch ganz auf das grafische Login verzichten und sich mit der Lösung "X ohne Loginmanager" beschäftigen.
Also nicht vergessen: X+Alsa+Login+Fenstermanager. Das Spielesystem läuft immer noch nach diesem Prinzip. Eine Konfiguration zum Download befindet sich ebenfalls dort.

Komplette Desktopumgebung

Nicht wirklich leichtgewichtig, ja, aber meiner Meinung nach schafft es Debian hier immer etwas mehr herauszuholen als sein bekanntes Derivat Ubuntu. Da war mal was vor vier Jahren...
Die vier großen Desktopumgebungen lassen sich in ihrer Minimalausführung so installieren.

Gnome 2 (Debian Squeeze)

aptitude install gdm gnome-core

Gnome 3 (Debian Wheezy)

aptitude install gdm3 gnome-core
Für Fortgeschrittene auch:
aptitude install gdm3 gnome-session

KDE (Debian Wheezy)

aptitude install kdm kde-plasma-desktop

Xfce 4

aptitude install lightdm xfce4

LXDE

aptitude install lightdm lxde
Alle notwendigen Abhängigkeiten werden installiert und ihr könnt von diesem Stand aus das System erweitern. Ein paar Screenshots und Anmerkungen zu den vier Desktopumgebungen findet ihr bald ™ hier.
Das Offensichtlichste zum Schluss. Je weniger Abhängigkeiten und Programme installiert sind, desto leichter wird die Kiste. Wählt weise.

Debian: Erste Schritte auf der Konsole

Du hast Debian via Netzinstallation installiert, kennst dich mit den Paketmanagern aus, befindest dich nach einem Neustart auf der Konsole und möchtest wissen, wie es nun weitergeht? Bevor ich eine neue Desktopumgebung installiere, passiert bei mir folgendes.

sources.list bearbeiten

Wenn man eine andere Version als Debian Stable nach der Netzinstallation installieren möchte, muss die Datei /etc/apt/sources.list wie in diesem Beitrag beschrieben angepasst werden. In der Regel lassen sich dafür Texteditoren wie vim-tiny oder nano benutzen. In der Regel kann die Datei unverändert belassen werden, wenn einem weder Testing noch Unstable interessieren oder unfreie Komponenten wie z.B. die Nvidia-Treiber installiert werden sollen.
nano /etc/apt/sources.list
vim /etc/apt/sources.list
Linux ist Weltklasse im Umgang mit Text und es gibt mehr Texteditoren als Sandkörner im Universum (na gut fast). Wählt denjenigen, mit dem ihr am besten zurechtkommt.

Das System auf den neuesten Stand bringen

aptitude update
aptitude safe-upgrade

Shell erweitern oder austauschen

Die Bash ist standardmäßig installiert. Damit die Tab-Vervollständigung noch hervorragender funktioniert, empfehle ich den Beitrag zur Bash-Completion. Seit mehreren Monaten benutze ich jedoch die ZSH und bin sehr zufrieden damit. Wer ebenfalls wechseln möchte, dem empfehle ich die Konfiguration von Grml und diese kurze Anleitung hier.

Nützliche Programme für die Konsole

Egal ob ein Server oder eine komplette Desktopumgebung entstehen soll, einige Konsolenanwendungen sind nicht mehr wegzudenken. Ich installiere mir davon mindestens

Solarized

Meine Terminals erstrahlen mittlerweile im Solarized-Thema. Terminal-Farben sind genauso eine Religionsfrage wie die Suche nach dem perfekten Texteditor. Im Zusammenspiel mit rxvt-unicode-256color sieht Solarized aber einfach nur Klasse aus. Denkt darüber nach. Wenn ihr nur das Prompt oder den Benutzernamen färben möchtet, findet ihr hier ein paar Worte dazu.

Secure Shell

Wirklich immer installiere ich das Paket ssh, welches gleichzeitig den OpenSSH-Client und OpenSSH-Server installiert. Es ist nicht nur praktisch von einem anderen Rechner aus sein System steuern zu können, im Falle eines Systemfehlers kann man sich in der Regel danach immer noch per SSH in die Maschine einloggen und das System kontrolliert herunterfahren. Auf einem Serversystem ist es sinnvoll dieser Anleitung zu folgen, um die Kiste wirklich sicher zu machen. Ansonsten gibt es noch einige sehr interessante Möglichkeiten mit SSH und die Option einen SFTP-Server nutzen zu können, sollte man sich ebenfalls nicht entgehen lassen.
Wenn alle Vorbereitungen getroffen sind, beginnt die eigentliche Installation und Konfiguration des gewünschten Systems.

Einführung in aptitude, apt-get, apt-cache und dpkg

Für erfahrene Debianbenutzer sicher kein Thema was brandneue Informationen verspricht, als Fußnote ist es mir dennoch wichtig. Mich hat es früher immer geärgert, dass man das scheinbar Selbstverständliche erst einmal mühsam im Internet nachforschen musste. Nun kann ich nicht versprechen, dass ich nicht an anderer Stelle in diesem Blog es genauso gemacht habe, aber zumindest bei meiner Anleitung zur Debian-Netzinstallation möchte ich eine "triviale" Sache nicht übergehen - das Paketmanagement.
Bekanntlich ist es die große Stärke von Linux, die gesamte Software aus einer Hand, sprich einem Repositorium, herunterladen und installieren zu können. Debian nennt das Werkzeug dazu "Advanced Packaging Tool" oder kurz APT. Für APT gibt es verschiedene Paketmanager, Frontends und Werkzeuge, die diese wiederkehrenden Prozesse vereinfachen sollen. Natürlich gibt es auch grafische wie Synaptic. Mein Favorit ist jedoch Aptitude. Aptitude kombiniert einige Merkmale von apt-get und apt-cache, was es, denke ich, einfacher macht sich die Befehle zu merken. Auf der anderen Seite gibt es einige Alleinstellungsmerkmale von apt-get und apt-cache. Um die Verwirrung komplett zu machen, existiert noch dpkg, welches zur eigentlichen Paketverwaltung auf dem lokalen System von den Frontends genutzt wird.

Paketquellen anpassen

Bevor man neue Software installieren möchte, muss man die Quellen in /etc/apt/sources.list an seine Anforderungen anpassen. Entscheidend dabei ist, für welches Debian man sich entschieden hat.

deb http://ftp.de.debian.org/debian stable main contrib non-free
deb-src http://ftp.de.debian.org/debian stable main
deb http://security.debian.org/ squeeze/updates main contrib non-free
deb http://ftp.de.debian.org/debian unstable main

Die Quelle für Binärpakete wird mit deb eingeleitet. Danach folgt die URL des Spiegelservers. Schließlich definiert man mit stable, testing oder unstable, welchen Debianzweig man verwenden möchte. Als Alternative lassen sich auch die Codenamen
squeeze, wheezy und sid an dieser Stelle eintragen, die sich natürlich in der Zukunft ändern werden. Die Verwendung des Codenamens bedeutet nur, dass man dieser Version durch die verschiedenen Stadien des Veröffentlichungszyklus folgen möchte. Wheezy wandert z.B. jetzt von Testing in ein paar Monaten nach Stable und ist in ca. 2,5 Jahren dann nur noch Oldstable bis es ein weiteres Jahr später überhaupt keinen Support mehr geben wird.

Nach der Definition der Debianversion bestimmt man noch aus welchen der drei Repos man Pakete beziehen möchte. Das sind main, contrib und non-free. In main befindet sich ausschließlich freie Software nach den Debian Free Software Guidelines (DFSG). In contrib existiert ebenfalls nur freie Software, die aber zum Funktionieren noch eine unfreie Komponente benötigt, z.B. ist der Server von Cube 2:Sauerbraten frei, die Medieninhalte hingegen stehen teilweise unter unfreien Lizenzen. In non-free befinden sich konsequenterweise Daten und Software, die nicht mit den DFSG vereinbar sind.

Grundlagen

Paketcache updaten

aptitude update oder apt-get update

Pakete suchen

aptitude search Ausdruck oder apt-cache search Ausdruck

Paketinformationen anzeigen

aptitude show Paketname oder apt-cache show Paketname

Pakete installieren

aptitude install Paketname oder apt-get install Paketname

Pakete entfernen

aptitude remove Paketname oder apt-get remove Paketname

Pakete inkl. Konfigurationsdateien entfernen

aptitude purge Paketname oder apt-get purge Paketname

System auf den neusten Stand bringen

aptitude safe-upgrade oder apt-get upgrade

System auf eine andere Version upgraden (z.B. Squeeze->Wheezy)

aptitude full-upgrade oder apt-get dist-upgrade

Den Quellcode herunterladen

apt-get source mutt


Wenn man in der /etc/apt/sources.list mit der Zeile deb-src den Zugang zu den Quelldateien freigeschaltet hat, ist es möglich mit apt-get den Quellcode herunterzuladen. Das Alleinstellungsmerkmal, das apt-get bisher von aptitude unterscheidet.

dpkg

Dpkg wird nur bei der Installation oder Deinstallation lokaler Dateien direkt aufgerufen, wenn man also z.B. ein Paket selbst erstellt hat

dpkg -i Paketname
dpkg -P Paketname

Oft viel interessanter sind Optionen wie
// listet alle installierten Pakete auf
dpkg -l
// listet Paket mutt mit ein paar Informationen auf
dpkg -l mutt
// Gibt die Orte der Dateien aus, die sich im Paket mutt befinden
dpkg -L mutt
// Sucht nach dem Muster/Ausdruck mutt im gesamten Paketcache
dpkg -S mutt
Gerade auf älteren Rechner ist der direkte Aufruf von dpkg, um mehr Informationen über den Paketzustand herauszufinden, gefühlt schneller als mit aptitude.

Was ich 99% meiner Zeit mit aptitude mache

// Täglich
aptitude update
aptitude safe-upgrade
// Wenn ich Testing oder Unstable benutze, die Konsequenzen kenne und einen Konflikt auflösen möchte
aptitude update
aptitude full-upgrade
// Programme installieren, z.B. htop, ncdu und cmus
aptitude update
aptitude install htop ncdu cmus
// Die Programme htop, ncdu und cmus mit Konfigurationsdateien entfernen
aptitude purge htop ncdu cmus
// Alle Pakete der Sektion web und games auflisten
aptitude search '~sweb'
aptitude search '~sgames'

Das wars?

Jep. Nicht vergessen immer mal die TAB-Taste zu drücken ;), aber ansonsten ist es das. Solltet ihr keine Root-Rechte haben, könnt ihr auch mit der angehängten Option -s die einzelnen Optionen nur simulieren.
aptitude install htop -s
Ansonsten hilft ab und an ein
aptitude autoclean,
damit der Paketcache nicht zu viel Platz auf der Festplatte belegt. Diese Befehle sollten vollkommen ausreichend sein, um das eigene Linuxsystem erweitern und gestalten zu können. Alle weiteren Ideen mit Aptitude habe ich unter dem Stichwort Aptitude verschlagwortet. Für mehr Informationen zu den einzelnen Paketmanagern hilft wie immer man weiter.

FTP, NcFTP, wput, Midnight Commander: Vier FTP-Alternativen für die Konsole

Freunden, die noch nicht die Segnungen von Linux empfangen haben, empfehle ich meistens Filezilla oder das Firefox-Addon FireFTP. Letzteres ist bei mir seit mindestens zwei Jahren standardmäßig installiert. Es ist einfach zu praktisch aus dem Browser heraus mal schnell sich in den FTP-Account einzuloggen. Meistens muss ich aber nur ein, zwei Dateien herunter- oder hochladen und dazu funktionieren diese Konsolenprogramme hier ausgesprochen gut.

FTP

Eines der Standardprogramme ist ftp. Im Regelfall sollte es deshalb automatisch installiert sein.

ftp 123.123.123.123


Handelt es sich um einen anonymen Server wird man sofort nach einem Namen gefragt. Ein "anonymous" garantiert den Zugriff. Das Passwort kann man auslassen. Sofort fällt aber auf, dass TAB-Vervollständigung nicht funktioniert. Ein getipptes help hilft weiter. Um eine Datei herunterzuladen genügt

get Dateiname


In die andere Richtung geht es mit

put Dateiname

NcFTP

Aaah, TAB-Vervollständigung und eine History-Funktion. 🙂 NcFTP ist ein FTP-Client, der mitdenkt und sich mit dem nachfolgenden Befehl ohne weitere Angaben in den anonymen FTP-Server einloggen würde.

ncftp 123.123.123.123


Genauso wie bei ftp erhält man mit Eingabe von help Hilfe. Ein sehr nützliches Merkmal von NcFTP sind Lesezeichen, die sich mit dem Kommando "bookmark" setzen lassen und später mit "bookmarks" auflisten lassen.

wget und wput

Wget hatte ich schon als einen der Downloadmanager vorgestellt. Unter anderem beherrscht er das FTP-Protokoll. In die andere Richtung geht es mit wput, einem winzigen FTP-Client.

Anonymer Zugang

wput test.txt ftp://ftp.example.com

Mit Passwort

wput test.txt ftp://benutzer:passwort@ftp.example.com


Damit man das Passwort nicht jedes Mal eingeben muss, gibt es zwei Konfigurationsdateien .wputrc und .netrc.

Midnight Commander


Bisher habe ich den Midnight Commander hauptsächlich als FTP-Client und zum Vergleichen von Verzeichnissen benutzt. Für alles andere genügen mir fast immer die Standardwerkzeuge.

Anonymer Zugang

In der Kommandozeile braucht man nur cd ftp://ftp.example.com eingeben. Zum Ausloggen genügt cd.

Mit Passwort

cd ftp://benutzer@ftp.example.com
Dann das Passwort eingeben.
Eine weitere Möglichkeit sich mit einem FTP-Server zu verbinden ist das Links/Rechts-Menü und der dortige Eintrag "FTP-Verbindung".

Fazit

Ich bevorzuge den Midnight Commander oder NcFTP. Beide machen das Hoch- und Herunterladen von Dateien zu einem FTP-Server von der Konsole aus zum Kinderspiel.

vnstat und vnstati: Volumen des Netzwerkverkehrs übersichtlich visualisieren

Im Zeitalter von Flat-Angeboten rangierten bei mir Programme zum Überwachen des Datenverkehrs bisher eher auf den hinteren Plätzen. Seitdem ich aber einen vServer mein Eigen nenne, interessiert mich das tägliche Volumen an ein- und ausströmenden Bits und Bytes umso mehr.
Gut, ich denke die meisten VPS-Anbieter bieten schon eine Art von Netzwerkmonitor an, da sie selbst daran interessiert sind, dass der Kunde die vereinbarte Trafficgrenze nicht überschreitet. So macht das mein Anbieter auch und stellt mir sogar eine grafische Übersicht und Charts zur Verfügung, wann und wie viel Datenverkehr durch die Leitungen fließt.
Der Nachteil des Ganzen ist, ich muss mich erst einmal in das Kundenmenü einloggen und kann nicht eben so die Daten auch auf meiner Projektseite darstellen.
Wie immer gibt es mehrere Alternativen. Ich dachte zuerst an RRDtool und MRTG oder ntop. Beide sahen sehr vielversprechend aus, doch sie boten mir zu viele Funktionen, wenn man das so pauschal umschreiben kann. Ich hingegen wollte etwas schlichtes und einfaches. Eine Ausgabe auf der Konsole, vielleicht noch ein paar nette Graphen dabei, die die Datenmenge visualisieren.
Womit ich bei vnstat gelandet war und ein charmantes Werkzeug gefunden hatte.
Vnstat hat ein Init-Skript und startet als Daemon. Im Hintergrund überwacht er dann das vorher definierte Interface und sammelt die mitgezählte Datenmenge in einer Datenbank. Keine Sorge, vnstat ist äußerst genügsam. 1 MB RAM solltet ihr aber einplanen.
Zuerst muss das Interface in /etc/vnstat.conf definiert werden, welches standardmäßig überwacht werden soll. Danach wird die Datenbank erstellt bzw. erneuert. Z.B. für eth0:

vnstat -u -i eth0


Macht man das nicht, erscheint diese Fehlermeldung.

Starting vnStat daemon: vnstatdZero database found, exiting.

Die restlichen Optionen in der Konfigurationsdatei sind gut dokumentiert. Dort lässt sich vor allem das Erscheinungsbild der Ausgabe festlegen.

Bedienung

Die Bedienung von vnstat ist unkompliziert.

vnstat -s

                     rx      /      tx      /     total    /   estimated
 eth0:
       May '12    911.31 MiB  /    1.45 GiB  /    2.34 GiB
       Jun '12    470.22 MiB  /  773.50 MiB  /    1.21 GiB  /   18.40 GiB
     yesterday    287.79 MiB  /  468.17 MiB  /  755.96 MiB
         today    182.42 MiB  /  305.33 MiB  /  487.75 MiB  /     496 MiB

vnstat -h

 eth0                                                                     23:35
  ^      t
  |      t
  |      t                                                           t
  |      t                                                           t
  |      t        t                                                  t
  |      t        t                                                  t
  |     rt        t                                                  t
  |   t rt        t                                t                 t
  |  rt rt  t     t                               rt              t  t r   t
  |  rt rt rt     t                      rt       rt rt          rt rt rt rt
 -+--------------------------------------------------------------------------->
  |  00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23
 h  rx (KiB)   tx (KiB)      h  rx (KiB)   tx (KiB)      h  rx (KiB)   tx (KiB)
00      14016      23119    08       1331       1338    16       9086       9262
01      30605      63348    09       2884       1561    17       3132       2485
02      10203      18235    10       3578       2039    18       5605       2448
03       2365       1848    11       6236       6186    19       5697       6172
04       2930      42386    12       8270       6724    20      12474      14342
05       1437       1210    13       5878       4099    21      11467      55362
06       1680       1886    14       5107       2972    22      17298      11634
07       1554       1231    15      13417      19035    23      12446      16185

vnstat -d

eth0 / daily

         day         rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
      05/28/12    159.61 MiB |  263.27 MiB |  422.88 MiB |   40.09 kbit/s
      05/29/12    215.86 MiB |  382.90 MiB |  598.75 MiB |   56.77 kbit/s
      05/30/12    227.47 MiB |  315.93 MiB |  543.41 MiB |   51.52 kbit/s
      05/31/12    308.36 MiB |  520.59 MiB |  828.96 MiB |   78.60 kbit/s
      06/01/12    287.79 MiB |  468.17 MiB |  755.96 MiB |   71.68 kbit/s
      06/02/12    184.27 MiB |  307.72 MiB |  492.00 MiB |   47.47 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated       187 MiB |     312 MiB |     499 MiB |

Abgerundet wird das Ganze noch durch vnstat -m und vnstat -t, eine monatliche Anzeige und die Übersicht der 10 verkehrsreichsten Tage.

vnstat als tägliche Zusammenfassung per E-Mail erhalten

Man kann z.B. einen Cron-Job definieren, der täglich um 23:59 die Zusammenfassung per Mail an den Superuser schickt.

59 23   * * *   apo             /usr/bin/vnstat -s | mail -s "vsrv52135: Daily traffic eth0" root@localhost

vnstati

Praktischerweise gibt es noch vnstati, dass die Statistiken in schöne, übersichtliche Graphen transformieren kann.

Ich habe mir ein simples Skript geschrieben, dass jeden Tag um Mitternacht die Graphen produziert und in ein Verzeichnis des Webservers kopiert.

#!/bin/sh
# Visualisierter Netzwerkverkehr mit Vnstat
# Ausgabe der Dateien in das Webserververzeichnis stats/traffic
set -e
Target="/home/linuxiuvat/linuxiuvat.de/stats/traffic/graph/"
# stündlich
/usr/bin/vnstati -h -o ${Target}vnstat_hourly.png
# täglich
/usr/bin/vnstati -d -o ${Target}vnstat_daily.png
# monatlich
/usr/bin/vnstati -m -o ${Target}vnstat_monthly.png
# Top10
/usr/bin/vnstati -t -o ${Target}vnstat_top10.png
# Zusammenfassung
/usr/bin/vnstati -s -o ${Target}vnstat_summary.png

Anschließend lässt sich die visualisierte Datenmenge unter http://linuxiuvat.de/stats/traffic/ anschauen.

apt-clone: Backup in verbesserter Debian-Manier

Eher durch Zufall bin ich erneut auf apt-clone gestoßen, nachdem ich nach Programmen mit vorangestelltem "apt-" gesucht hatte. Vor einem Jahr wurde dieses schicke Skript auf linuxundich.de vorgestellt, als apt-clone noch dabei war in Debian aufgenommen zu werden.
Apt-clone ist im Prinzip der verbesserte "The Debian Way" beim Backup machen.
Es übernimmt automatisch das Sichern des Paketstatus, speichert den Schlüsselring und kann sogar nicht mehr herunterladbare Pakete oder Drittprogramme mit dpkg-repack wieder in neue Pakete verschnüren. Ziemlich praktisch, wenn man seine Druckertreiber gelöscht hat und diese nun neu gepackt werden.

Backup machen

apt-clone clone /home/apo --with-dpkg-repack

Wiederherstellen

apt-clone restore apt-clone-state-rechnername.tar.gz


Die Syntax ist ziemlich übersichtlich. Mit apt-clone clone wird ein Backup gemacht und in meinem Home-Verzeichnis gespeichert und zusätzlich nicht mehr verfügbare Pakete neu gepackt. Nach kurzer Zeit landet alles in einer Tar-Datei und kann mit apt-clone restore wiederhergestellt werden. Das wars.
Sicher ein Vorteil, wenn man den aktuellen Paketzustand des Rechners dauerhaft klonen möchte. Zusätzlich muss dennoch /etc und /home gesichert werden, was aber in den meisten Fällen ausreichend ist um ein Debian-basiertes System zu sichern und wieder ruhig schlafen zu können :).

Aufräumtipps Teil II: Automatisch installierte Pakete mit Debian und Ubuntu entfernen

Hier ist ein weiterer Artikel zum Thema Aufräumen mit Debian und Ubuntu, der sich an den letzten Artikel nahtlos anschließt. Raphaël Hertzog hat in seinem englischen Blog daraus eine kleine Serie gemacht, die ich so interessant fand, dass ich sie in Deutsch hier festhalten wollte.
In diesem Fall geht es um automatisch installierte Pakete und wie man sie wieder loswerden kann.
Jeder kennt das sicherlich bei Debian und Ubuntu, wenn man apt-get oder aptitude benutzt und folgende Ausgabe im Terminal zu sehen ist.

apt-get install claws-mail
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut
Statusinformationen werden eingelesen... Fertig
Die folgenden zusätzlichen Pakete werden installiert:
claws-mail-i18n libcompfaceg1 libetpan15 libpisock9
Vorgeschlagene Pakete:
claws-mail-doc gedit kwrite mousepad nedit claws-mail-tools jpilot pilot-link kpilot gnome-pilot evolution sylpheed
Die folgenden NEUEN Pakete werden installiert:
claws-mail claws-mail-i18n libcompfaceg1 libetpan15 libpisock9
0 aktualisiert, 5 neu installiert, 0 zu entfernen und 2 nicht aktualisiert.
Es müssen 4.356 kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 11,3 MB Plattenplatz zusätzlich benutzt.
Möchten Sie fortfahren [J/n]?

Die "folgenden zusätzlichen Pakete" sind die automatisch installierten Pakete, die man zwar nicht explizit installieren wollte, die aber notwendig sind, damit das ursprüngliche Programm, claws-mail, reibungslos funktioniert.
Aptitude stellt für diese Pakete ein Extrafeld zur Verfügung.

Mit aptitude show claws-mail-i18n findet man z.B.

Automatically installed: yes

Je nachdem welches Frontend man bevorzugt, kann man entweder mit

apt-mark showauto

oder

aptitude search ~M


automatisch installierte Pakete finden. Während aptitude diese zusätzlich installierten Pakete mit aptitude remove claws-mail oder aptitude purge claws-mail entfernen würde, benachrichtigt apt-get einem nur über diese Möglichkeit. Tatsächlich muss man noch apt-get autoremove ausführen, damit apt-get diese automatisch installierten Pakete wieder entfernt.
Der Trick mit diesem Feature ist der folgende. Man kann zum einen Software als automatisch installiert markieren.

apt-mark markauto cmus

oder

aptitude markauto cmus

Damit erkennt der Paketmanager, dass diese Pakete nicht mehr gebraucht werden, sofern kein weiteres Paket mehr davon abhängt. Auf meinem System würde der letzte Befehl z.B. sofort zur Deinstallation von cmus führen.
Häufiger hingegen kommt es vor, dass plötzlich ganze Desktopumgebungen deinstalliert werden sollen, wenn man nur daran interessiert ist Teile der Gnome-Desktopumgebung zu entfernen.
Der "Trick" besteht auch hier darin, dem Paketmanager zu signalisieren, was man behalten möchte und was nicht. Stellt man fest, dass Metapakete oder wichtige Software wie gnome-session oder gnome-shell entfernt werden sollen, kann man mit

apt-mark unmarkauto gnome-session gnome-shell oder
aptitude unmarkauto gnome-session gnome-shell


dem System deutlich machen, dass man diese Pakete behalten möchte. Mit dieser Methode lässt sich gezielt automatisch installierte Software entfernen, ohne dass die ganze Distribution dadurch in Mitleidenschaft gezogen wird.
Zusammen mit den weiteren Hilfsmittel ist das eine gute Ausgangsbasis sein Debian minimal und sauber zu halten.