Dateien rekursiv in Verzeichnissen zählen

Damit kann man alle Dateien in einem Verzeichnis zählen inklusive der enthaltenen Unterordnern.

Wenn man zwei Ordner z.B. mit gleichem Namen hat (durch rsync), kann man das auch zum Vergleichen nutzen:

Master Boot Record (MBR) zurücksetzen

Mit einer Linux-Live-CD kann man relativ einfach einen Master Boot Record zurücksetzen, um eine leere Partitionstabelle zu bekommen. Dazu einfach auf der Konsole folgenden Befehl eingeben:

Dieser Befehl schreibt in die ersten 512 Byte der anzugebenden SATA-Festplatte Nullen rein. Sollten noch IDE-Festplatten im Einsatz sein, muss es nicht „sdx“, sondern „hdx“ lauten. Das x ist durch den Buchstaben der gewünschten Festplatte zu ersetzen.

SSH absichern

SSH

Der Root muss sich nicht per SSH einloggen können. Es ist besser, wenn sich nur Benutzer einloggen und hinterher zum Root machen. Um das zu ändern muss in der

der entsprechende Parameter von

auf

geändert werden. Das kann man entweder von Hand machen oder zu Übung mit sed:

Mit dieser Zeile wird die Originaldatei gesichert, der Parameter ersetzt und alles in eine neue Datei geschrieben. Diese neue Datei ersetzt dann durch Kopieren die Original-Datei. Hinterher sind folgende Dateien vorhanden:

so dass jederzeit auf die gewünschte Konfiguration gewechselt/zurückgesetzt werden kann.

Jetzt noch ein

damit die Konfiguration noch aktiv wird. Durch den Reload bleiben aktuell aufgebaute Sessions aktiv!

Grub absichern

Um sicherzustellen, dass ein Benutzer, der das System rebootet und Zugriff auf die Konsole hat, nicht einfach am Bootprompt

eingibt und sich damit eine Single-User-Shell erschleicht und einfach in das System einbrechen kann, sollte man den Bootprompt absichern. Nichts einfacher als das.

Zuerst sollte man sich einen md5-Hash für das Grub-Passwort erzeugen. Schön, dass Grub dafür gleich das entsprechende Werkzeug mitbringt:

Dazu also einfach den o.g. Befehl aufrufen, zwei Mal das gewünschte Passwort eingeben und man erhält einen md5-Hash, den Grub verwenden kann. Wer es gerne ausprobieren möchte, das Passwort ist „test“.

Jetzt zur Konfiguration. Die erfolgt in

Hier unter dem Bereich

folgende Zeile hinzufügen

Als MD5-Passwort-String ist der vorher generierte zu verwenden. Wie man der Beschreibung des Bereiches entnehmen kann, kann man das Passwort auch im Klartext setzen. Aber warum ein Sicherheitsrisiko eingehen, wenn es nicht notwendig ist.

Damit kann man die Boot-Prompt-Zeilen nicht mehr ohne Passwort editieren.

Schön und gut. Aber den Single-User-Modus, der automatisch von Grub immer mit eingerichtet wird kann immer noch gestartet werden. Um das zu verhindern, muss folgender Parameter geändert werden:

Von

auf

Damit muss dass Passwort auch für das Starten aller nicht-Default-Zeilen eingegeben werden.

Zum Schluss noch ein

damit Grub, die lockalternative-Direktive übernimmt.

Webserver absichern

Ein Apache-Webserver gibt standardmäßig auftretende Fehler auf der Webseite aus. Dass kann durch provozierte Aufrufe zur Preisgabe von unerwünschten Informationen wie

  • lokaler Verzeichnispfad des Webservers
  • Apache-Version
  • PHP-Version
  • Patchlevel von Apache2/PHP

führen.

Daher sollten diese Informationen auf Produktivsystem nicht öffentlich angezeigt werden.

PHP

Dazu muss man nur in der entsprechenden php.ini (hier: /etc/php5/apache2/php.ini) das Anzeigen der Fehler abschalten (Off).

Für den Administrator sind diese Fehler natürlich trotzdem wichtig. Daher sollte man das Logging der Fehler einschalten (On).

Die Fehlermeldungen werden in das error-Log der jeweiligen vHost- oder Standard-Konfiguration geschrieben.

Apache2

Auch der Apache2 kann noch etwas schweigsamer konfiguriert werden. Und damit das nicht so schwer fällt, ist es sogar schon vorbereitet.

Im Pfad „/etc/apache2/conf.d/“ existiert in Debian die Datei „security“. In dieser sind bereits die wichtigsten Einstellung vorhanden und müssen für Produktivsysteme nur noch aktiviert werden.

Kerberos-Authentifizierung

Allgemeines

Je weiter man in sicherheitsrelevante Netzwerke eintaucht, um so öfter begegnet man der Anforderung einer zentralen Benutzer-Authentifizierung. Klar man kann sich jetzt einen eigenen LDAP-Server mit openLDAP aufbauen, Schemata einrichten und mit Inhalten füllen. Wenn aber, wie in vielen Firmen, bereits ein Active Directory vorhanden ist, kann man ja auch gleich diese Möglichkeiten verwenden, oder? Also Kerberos-Utilities installiert, konfiguriert, Benutzer angelegt und los.

Ok, eine vollständige Integration, bei der neue Benutzer automatisch angelegt werden ist das nicht. Aber für die Administration von Linux-Servern über SSH wird das auch nicht unbedingt benötigt. Die Personen, die das System betreuen sind meistens überschaubar oder können z.B. durch Software-Verwaltungen wie Puppet angelegt werden.

Ich beschreibe hier die Einrichtung der Kerberos-Authentifizierung für Ubuntu/Debian. Für RPM-basierte Systeme müssen ggf. die notwendigen Pakete bzw. die Pfade angepasst werden.

Benötigte Pakete

Für Kerberos ist eine Zeitsynchronisation essentiell. Daher ist NTP Pflicht. Zusätzlich natürlich die Kerberos-Utilities:

Konfiguration

NTP

Die Standard-Werte helfen uns in diesem Fall nicht weiter, da es darauf ankommt die gleiche Zeit wie der Kerberos-Server zu haben. Also müssen die vorhandenen Domain-Controller „herhalten“. Das ganze habe ich als sed-Statements zusammengeschrieben, damit ich es jedes Mal einfach auf die NTP-Konfigurationsdatei /etc/ntp.conf anwenden kann.

Backup der ntp.conf anlegen:

Domain-Controller angeben:

NTP-Sed für Debian:

NTP-Sed für Ubuntu:

Kerberos

Nun muss noch die Verbindung zu den Domain-Controllern konfiguriert werden. Die notwendigen Schreibweisen habe ich durch die entsprechenden Umformatierungen bereits eingebaut. Es müssen nur die Werte für WORKGROUP, DOMAIN und DOMAIN-CONTROLLER angegeben werden:

Benutzer anlegen

Wie oben bereits erwähnt wurde lediglich die Verbindung zum Kerberos-Server konfiguriert, damit bestehende Benutzer authentifiziert werden können. Die Benutzer müssen aber weiterhin manuell angelegt werden. Dies muss mit dem Kontonamen aus der Domäne erfolgen:

Um das zu testen, kann man sich jetzt ein Kerberos-Ticket ausstellen lassen:

Fallstricke

Zeitunterschied zu groß

Bei Kerberos darf der Zeitunterschied zwischen Client und Server maximal 5 Minuten sein. Sollte die Anmeldung mal nicht funktionieren unbedingt die Zeitsynchronisation prüfen und ggf. manuell synchronisieren:

Installations-Benutzer kann Passwort nicht ändern

In der Standard-Konfiguration kann der Benutzer, der bei der Installation angelegt wurde, sein Passwort nicht mehr ändern. Grund dafür ist die PAM-Konfiguration, die die Passwortänderung für alle Benutzer aber UID>=1000 an Kerberos weiterleitet. Da der Installationsbenutzer dort aber wahrscheinlich nicht existiert, schlägt die Änderung fehl.

Dies lässt sich aber sehr leicht durch das Austauschen der entsprechenden Zeile ändern:

Damit werden in allen common-Dateien unterhalb von /etc/pam.d/ die uid von 1000 auf 1001 hochgesetzt.

Dadurch wird der Installationsbenutzer wieder nur noch lokal authentifiziert.

mdadm checkarray auto-read-only

Ausgabe mdstat:

Wenn das Array neu eingerichtet und noch nie genutzt wurde, steht es noch im Zustand „auto-read-only“. Dadurch kann der Raid-Verbund nicht geprüft werden. Bei mir ist md1 das Raid-1-Array mit der Swap-Datei. Da mein Rechner relativ frisch installiert ist, wurde der SWAP noch nicht genutzt. Abhilfe schafft folgende Vorgehensweise:

Ausgabe mdstat danach:

Und schon klappt der Check wieder:

Weitere Infos dazu im Debian Bug Tracker

vim als Standard-Editor festlegen

Ich ziehe vim nano für die Arbeit mit Textdateien vor. Um ihn als Standardeditor unter Debian festzulegen, muss einfach der den Link für den bevorzugten Editor ändern. Dann kann man z.B. seine crontab wieder mit vim bearbeiten.

Konsolenauflösung vergrößern unter Debian Squeeze

In Squeeze hat sich diese Änderung auf einen Eintrag reduziert. Anfangs musste nur noch die folgende Zeile in der Datei /etc/default/grub erweitert werden:

Den Erweiterungsteil habe ich fett/kursiv markiert. Allerdings ist diese Konfiguration bereits überholt (deprecated).

Aktuell muss mann nur noch den GFXMODE in der Datei o.g. Datei angeben:

Damit diese Einstellung auch nach dem abgeschlossenen Boot-Vorgang noch aktiv ist, muss diese als permanent markiert werden. Das erfolgt in der Datei /etc/grub.d/00_header:

Dazu die Zeile set gfxpayload=keep unterhalb der Zeile set gfxmode=${GRUB_GFXMODE} einfügen.

Danach noch die GRUB Konfigurationsdateien aktualisieren:

Danke an Pronto, auf dessen Webseite, ich diesen Tipp gefunden habe.

Konsolenauflösung vergrößern unter Debian Lenny

Auf aktuellen Monitoren mit 19″ und mehr, kann die geringe Auflösung der Monitor-Konsole schon ziemlich lästig sein. Man kann daher die Konsole im Grafikmodus betreiben, muss dazu aber ein paar Einstellungen vornehmen.

Damit die benötigten Kernelmodule bereits beim Systemstart geladen werden, sind in der Datei /etc/initramfs-tools/modules folgende Zeilen hinzuzufügen:

Bei Debian Lenny noch die Initram-Datei neu generieren lassen (bei Squeeze nicht mehr notwendig).

Jetzt wird noch die entsprechende Modusnummer für die gewünschte Bildschirmauflösung benötigt. Das geht am besten mit dem Paket hwinfo und der Option –framebuffer.

Das Paket wird immer benötigt, um die unterstütze Auflösung herauszufinden.

Jetzt in Lenny noch die gewünschte Auflösung in der GRUB-Konfigurations-Datei an zwei Stellen eintragen. Einmal in der Zeile beginnend mit # defoptions und in der Kernelzeile, die durch Grub standardmäßig gestartet wird (meistens die Erste).

Datei /boot/grub/menu.lst