Schlagwort-Archive: Linux

Automatisches Update für einen Debian Server

In der Windows Welt ist es ganz normal, dass man nach der Installation gefragt wird, ob sich das System selbst mit (Sicherheits-) Updates versorgen soll. Auf einem Debian System ist dies etwas anderst und bedarf einer kurzen Konfiguration. Ich empfehle für diesen Zweck die Installation des Tools „unattended-upgrades“:

Die Grundkonfiguration ist an sich schon nicht schlecht, da ich jedoch gerne weiß was auf meinem System passiert lasse ich mir die logs der updates zuschicken. Dies erreicht man durch die Anpassung der Zeile:

In der Konfigurationsdatei

Zum aktivieren der automatischen Updates führt man nun noch folgenden Befehl aus:

oder legt alternativ die Datei

mit folgendem Inhalt von Hand an:

Das war es auch schon – nun sollten die Sicherheitsupdates automatisch auf dem System eingespielt werden und entsprechende Benachrichtungen zu root gesendet werden.

iptables – Debian Firewall Regeln für einen Webserver

In diesem Artikel werde ich erklären wie man die Firewall iptables auf einem Debian Linux einrichten um nur Zugriffe auf die erwarteten Dienste (HTTP, HTTPS und SSH) zu erlauben.

Firewall Grundlagen

Iptables bestimmt wie die meisten Firewalls ob ein Packet durch darf oder nicht indem es das eingerichtete Regelwerk von oben noch unten durchgeht. Sobald die erste Regel gefunden wird, die auf das Packet passt, wird diese Angewendet. Wenn unser Regelwerk also wie folgt aussehen würde, dann würden nur SSH Verbindungen zustande kommen und keine HTTP Verbindungen:

  1. Erlaube alle SSH Verbindungen
  2. Verbiete alle Verbindungen
  3. Erlaube HTTP Verbindungen

Es ist also wichtig auf die Reihenfolge der Regeln zu achten und am Schluss sollte immer eine Regel stehen “Verbiete alle Verbindungen” (Deny All).

 IPv4 vs IPv6

Die meisten Webserver sind heute sowohl über eine IPv4 wie auch eine neue IPv6 Adresse erreichbar. Die neue Protokollversion wird jedoch oft sträflich vernachlässigt obwohl diese auf den Systemen aktiv ist. Dies ist bei Firewalls im besonderen ein Problem. Wenn wir bei dem Beispiel oben bleiben und in der Standardkonfiguration von IPtables nun via IPv6 eine HTTP Verbindung öffnen würden, so würden wir bis zu dem Webserver kommen. Da IPv6 die Zukunft ist empfehle ich daher explizit nicht einfach alle solchen Verbindungen zu verbieten sondern die Regeln auch für dieses Protokoll einzurichten. Bei iptables ist dies besonders einfach, da die meisten Befehle in beiden Versionen funktionieren und das einzige was man ändern muss ist der Programmname (von iptables zu ip6tables). In meinem Beispielen führe ich daher jeweils beide Befehlssätze (IPv4 & IPv6) auf.

System Vorbereiten

Viel ist nicht nötig um mit der Konfiguration anfangen zu können. Wir müssen im wesentlichen nur ein Packet installieren (welches häufig schon vorhanden ist):

Filterregeln erstellen

Es gibt bei iptables im wesentlichen zwei Möglichkeiten Regeln zu erstellen. Man kann diese entweder in eine Datei schreiben und diese vom System automatisch laden lassen oder man schreibt die Regeln in den (flüchtigen) Speicher von iptables und lässt iptables am Ende das File schreiben. Ich bevorzuge und verwende hier letzteren Weg, da man hier bei einem Fehler das System nur neustarten muss um einen Weitere Versuch zu erhalten.

Derzeitiges Regelwerk anschauen

Um sich das aktuell vorhandene Regelwerk anzuschauen genügt ein einfacher Befehl. Im Auslieferungszustand sollte das Ergebnis wie folgt aussehen:

IPv4

IPv6

Regel für SSH Zugang und den Loopback Verkehr einrichten

Die erste Regel sollte immer für den Loopback Verkehr und dann für den Remotezugang verwendet werden. So wird verhindert, dass man sich zu einem späteren Zeitpunkt durch eine falsche Regel aussperrt bzw das System zu viel Zeit verbraucht um z. B. Verbindungen zum lokalen Datenbankserver aufzubauen.

IPv4

IPv6

Alle nicht explizit erlaubten Verbindungen ignorieren

Nachdem die SSH Regel gesetzt wurde können wir iptables scharf schalten und in der base policy einstellen, dass nur explizit erlaubte Verbindungen an unseren Server heran kommen dürfen.

IPv4

IPv6

Regeln für den Webserver anhängen

Für unseren Webserver erlauben wir nun noch HTTP und HTTPS Verbindungen auf den Ports 80 und 443:

IPv4

IPv6

Im Gegensatz zu dem Befehl den wir zum Anlegen der SSH Regel verwendet haben, haben wir hier den Parameter –I durch den Parameter –A ersetzt. Dies bewirkt, dass die Regel an das Regelwerk angehängt (append) wird.

Etablierte Verbindungen zulassen

Mit dem bestehenden Regelwerk würde der Webserver und der SSH Server wie erwartet funktionieren. Allerdings würdet Ihr vermutlich recht schnell über Fehlermeldungen z. B. von apt fallen, da hier verschiedene Verbindungen nicht durch gehen würden. Es ist daher ratsam noch folgende Regel hinzuzufügen:

IPv4

IPv6

Filterregeln permanent speichern

Alle Regeln die wir bis jetzt eingerichtet haben wären nach einer Reboot wieder weg. Um diese zu speichern ist ein kurzer Befehl notwendig:

Nach einem Reboot werden die Regeln nun automatisch wieder gelesen und geladen. Zur Sicherheit sollte man das System neustarten und prüfen ob dies auch der Fall ist.

Alles in einem Script für Schreibfaule

Um das setzen der Regeln zu vereinfachen habe ich alle Befehle in eine bash Datei geworfen. Ihr müsste diese also nur auf euer System herunter laden, die Datei ausführbar machen (chmod +x [name]) und danach ausführen. Den Schritt um die Regeln zu persistieren habe ich nicht mit aufgenommen um Fehlern vorzubeugen.

Datei herunterladen

Rechte von Dateien und Verzeichnissen unterschiedlich setzen

Hi,

… nachdem ich gerade etwas länger gebraucht habe um die Verzeichnisse eines Linux Webservers abweichenden zu den darin enthaltenen Dateien zu berechtigen – hier die Befehle um das zu erledigen:

Berechtigungen für alle Dateien und Ordner (rekursiv) setzen:

Berechtigungen für alle Dateien (und nur diese) rekursiv setzen:

Backtrack 4 USB Stick Installation

Seit kurzem steht Backtrack 4 in einer Pre Final Version zur Verfügung. Anlass genug die Installation auf einem USB Stick auszutesten. Das Vorgehen hat sich dabei trotz der Änderung der Basis nicht stark geändert. Um meinen USB Stick zu erstellen habe ich ein Backtrack 4 in eine VM gebootet (bei VMWare werden die USB Sticks durchgereicht).

Vorweg: Backtrack ist kein LiveLinux für Anfänger! Die Software bietet sehr viele Möglichkeiten Systeme und Netze auf Ihre Sicherheit zu prüfen – man sollte allerdings sehr genau wissen was man tut. Ich habe daher in meinem HowTo darauf verzichtet z. B. zu erklären wie man mit vi umgeht – wer daran scheitert sollt besser die Finger von BackTrack lassen 😉

Anzeigen der vorhandenen Datenträger im System

BT4_01_fdisk

Aufruf des Diskmanagers

Löschen der vorhandenen Partitionstabelle und erstellen einer leeren (o)

BT4_02_fdisk

BT4_03_fdisk

BT4_04_fdisk

Formatieren der ersten Partition mit vfat

Formatieren der zweiten Partition mit ext3

BT4_05_mkfs

Erstellen des Mountpoints und mounten der ersten Partition

Kopieren der BT4 Daten vom CD auf die soeben gemountete Partition

BT4_06_mkdir_mount_rsync

Info: Der Slash hinter cdrom ist wichtig. Sonst erhält man eine Fehlermeldung:

Installieren des Bootloaders Grub

BT4_07_grub

Bootmenü anpassen

Den default Booteintrag auf 5 ändern (zudem würde ich das splashimage raus löschen – sonst erkennt man die ausgewählten Einträge im Bootmenü nur schwer…):

BT4_08_grub

Im 5. Eintrag den Rechtschreibfehler in der Überschrift fixen und vga=0x317 in der kernel Zeile hinzufügen:

BT4_09_grub

Nun muß der USB Stick nur noch geunmountet werden:

… und fertig.

Debian hinter einem Proxy

Um Debian hinter einem Proxy betreiben zu können, ist es notwendig diesen einzurichten. Die entsprechenden Variablen findet man in der Datei /etc/environment. Hier müssen folgende Werte gesetzt werden:

Um speziel den Proxy für die Updates via APT einzurichten kann man den Konfigurationswizard von APT verwenden: