Einzelnen Beitrag anzeigen
Alt 17.05.2008, 17:08   #10
mcseeder
Erfahrener Benutzer
Punkte: 4.496, Level: 42 Punkte: 4.496, Level: 42 Punkte: 4.496, Level: 42
Levelaufstieg: 73% Levelaufstieg: 73% Levelaufstieg: 73%
Aktivität: 0% Aktivität: 0% Aktivität: 0%
Letzte Erfolge
Artikel Benutzer besitzt 1x Anfänger Benutzer besitzt 1x Hilfe Level 3
 
Benutzerbild von mcseeder
 
Registriert seit: 27.03.2008
Ort: Jamaika
Beitr?ge: 442
Abgegebene Danke: 26
Erhielt 93 Danke für 10 Beiträge
Themenstarter Themenstarter
Downloads: 5
Uploads: 0
Nachrichten: 0
Renommee-Modifikator:
553 mcseeder ist ein wunderbarer Anblickmcseeder ist ein wunderbarer Anblickmcseeder ist ein wunderbarer Anblickmcseeder ist ein wunderbarer Anblickmcseeder ist ein wunderbarer Anblickmcseeder ist ein wunderbarer Anblickmcseeder ist ein wunderbarer Anblickmcseeder ist ein wunderbarer Anblick
Standard

Hier auch noch sehr gut und meiner meinung nach sehr wichtig:

Firewall


Um dieser Anleitung folgen zu können, müssen Sie bereits einige Erfahrungen mit Linux gesammelt haben. Die Manipulation einer Firewall kann gefährlich sein. Sie könnten hierdurch z.B. die Möglichkeit eines Hard Reboot blockieren. Falls Sie ein fehlerhaftes Skript erstellen und dieses in den Autostart legen, könnten Sie sich selbst den Zugang zu Ihrer Maschine verwehren. Seien Sie also bitte sehr aufmerksam und nehmen Sie keine Änderungen an der Firewall vor, falls Sie sich unsicher sind.

Firewall - was ist das?



Es ist ein Programm, das gewisse Ports Ihres Servers blockiet und andere widerum öffnet. Stellen Sie sich Ihr Haus vor: Sie haben vorne und hinten jeweils eine Tür. Die hintere ist nutzlos, also wird sie zugemauert. Warum? Weil hierdurch eine zusätzliche, unnötige Gefahr eines Einbruchs besteht. Mit der Firewall ist das genau so: es werden alle Ports (Türen), die nicht benötigt werden, geschlossen.

Welche Ports?



ACHTUNG!
Sie müssen bei jeder Änderung sehr aufmerkseim vorgehen. Sie könnten nämlich die zu schließenden Ports verwechseln, was natürlich sehr schlecht wäre. Stellen Sie sich vor, Sie würden den SSH-Port schließen! In diesem Fall hätten Sie evtl. nur noch Zugriff via Telnet oder Webmin. Oder man müsste den Server im Rescue Modus hochfahren und die fehlerhafte Konfiguration rückgängig machen.

Die von OVH standardmäßig geöffneten Ports sind:


21 - ftp (FTP-Server - zur Benutzung des FTP-Dienstes offen lassen).
22 - ssh (Zugang zur verschlüsselten Shell  - offen lassen !).
23 - telnet (Zugang zur nicht verschlüsselten Shell  - zur eventuellen Reparatur offen lassen !).
25 - smtp (Postausgangsserver - können meistens offen bleiben).
53 - dns (DNS-Server - können meistens offen bleiben).
80 - http (Webserver - offen lassen !).
110 - pop3 (Posteingangsserver - können meistens offen bleiben).
143 - imap (Posteingangsserver - als Alternative zu POP3 offen lassen).
443 - https (verschlüsselter Webserver- je nach Wunsch offen lassen).
1000 - webmin (Plattform zur Konfiguration des Servers - offen lassen, wenn Sie diese benutzen möchten).



Diese Ports sind standardmäßig geöffnet. Aber vielleicht haben Sie eine Software installiert die andere Ports benutzt. Es liegt an Ihnen, zu erkennen, welche geöffnet werden müssen und welche nicht. Es wird nun erklärt, wie Sie vorgehen müssen, wenn Sie spezielle Ports öffnen möchten.

IPTables



IPTables ist eine sehr leistungsstarke Firewall, welche von OVH auf allen Servern installiert wird. Ihre Funktionen sind folgende: Spezielle Ports zu öffnen und alle anderen zu schließen. Im folgenden Beispiel werden die beiden Ports 22 (ssh) und 80 (http) geöffnet. Dies ist nur ein Beispiel, welches Sie jedoch auf Ihre individuellen Bedürfnisse anpassen können:


Verbinden Sie sich per ssh als root mit Ihrem Server.
Der erste Schritt besteht darin, die Version von IPTables zu erfahren:
$ /sbin/iptables -V
iptables v1.2.4

Diese Version ist sehr alt. Es wird mittlerweile die Version 1.3.7 eingesetzt (Stand: 03.04.2007)
$ CD  /root
$ wget http://www.netfilter.org/projects/ip...-1.3.7.tar.bz2
$ tar xvfj iptables-1.3.7.tar.bz2
$ CD  iptables-1.3.7
$ make KERNEL_DIR=/usr/src/linux
$ make install KERNEL_DIR=/usr/src/linux
$ CD  /sbin
$ mv  iptables iptables.old
$ mv  iptables-restore iptables-restore.old
$ mv  iptables-save iptables-save.old
$ ln  -s /usr/local/sbin/iptables iptables
$ ln  -s /usr/local/sbin/iptables-restore iptables-restore
$ ln  -s /usr/local/sbin/iptables-save iptables-save
$ /sbin/iptables -V
iptables v1.3.7



IPTables wurde aktualisiert, nun folgt der nächste Schritt.

Eine Liste der bestehenden Regeln erhält man wiefolgt:


$ /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination



Wie Sie sehen, gibt es drei Rubriken: INPUT, FORWARD und OUTPUT.
Wir werden uns zunächst um die Rubrik INPUT kümmern (für den eingehenden Verkehr).

Zur Öffnung der Ports 22 und 80 folgendes eingeben:


$ /sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
$ /sbin/iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT



-A INPUT : Eine Eingangsregel wird für die Firewall konfiguriert.
-i eth0 : Für diese Netzwerkkarte wird die Regel definiert.
-p tcp : Die Regel gilt für das Protokoll TCP (wir behandeln vorerst nur dieses).
--dport 22 : Die Regel gilt für den SSH-Port (22).
-j ACCEPT : Die Regel erlaubt eingehende Daten (Pakete).

Eine erneute Ausgabe der Regeln sieht nun so aus:


$ /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp — anywhere anywhere tcp dpt:ssh
ACCEPT tcp — anywhere anywhere tcp dpt:www

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination



Die Rubrik INPUT wurde erweitert, das ist ein gutes Zeichen.
Wie man unschwer erkennen kann, wird alles aktzeptiert => Chain INPUT (policy ACCEPT). Wir wollen den gesamten Verkehr, der nicht zuvor erlaubt wurde, blockieren. Wir müssen also eine Regel hinzufügen, welche alle anderen Ports blockiert. Aber hierbei gibt es ein Problem: Wenn wir zum Beispiel eine Verbindung von unserem Server zum Server kernel.org herstellen möchten, um einen neuen Kernel herunterzuladen, muss eine Verbindung zu der Seite hergestellt und auf eine Antwort gewartet werden. Wie aber kann diese Verbindung hergestellt werden, wenn standardmäßig alle Verbindungen blockiert werden? Glücklicherweise ist IPTables sehr leistungsfähig und kann Pakete gemäß ihres Zustandes sortieren und kann diverse Ausnahmeregelungen treffen. Es muss also eine neue Regel hinzugefügt werden:


$ /sbin/iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT



Es gibt zwei Möglichkeiten oder Stufen dieser Regel. Man droppt, d.h. man verwirft ein Paket, wenn es ankommt und nicht aktzeptiert wird. Der Client seinerseits wird bis zum timeout vergeblich auf eine Antwort warten. Die zweite Möglichkeit besteht darin, die Pakete abzulehnen (REJECT anstatt DROP). Wenn ein ungültiges Paket ankommt, erhält der Client einen Fehler und er wartet nicht mehr da er eine negative Antwort erhalten hat. Ein Paket abzulehenen ist sauberer, aber es zu verwerfen ist sicherer. Es ist also möglich, dass jemand versuchen wird, Ihnen ständig Pakete an den falschen Port zu schicken. Ihr Server wird nicht reagieren, aber mit der Regel REJECT werden diese Pakete beantwortet. Sie haben die Wahl.

Um Ihre Firewall "auf Null" zu setzen, müssen Sie folgendes eingeben:


$ /sbin/iptables -F INPUT



Dieser Befehl wird alle Regeln in der Rubrik INPUT löschen.

Wenn Sie eine Regel zwischen der ersten und der zweiten hinzufügen möchten, geben Sie folgendes ein:


$ /sbin/iptables -I INPUT 2 ... ihre Regeln



Um die dritte Regel zu löschen, geben Sie folgendes ein:


$ /sbin/iptables -D INPUT 3



Um eine IP komplett zu blockieren:


$ /sbin/iptables -I INPUT 1 -s -j DROP




Die Firewall ist nun aktiviert. Wenn nun ein Portscann an Ihrem Server vorgenommen wird, sind nur die beiden Ports 80 und 22 geöffnet. Es ist nicht ungewöhnlich dass der Scan sehr langsam ist. Dies ist auf die Regel DROP zurückzuführen.


IP ausschließen/erlauben



Falls Sie das ICMP-Protokoll (Ping-Abfrage) blockieren möchten, müssen Sie Ausnahmeregeln für folgende Servern treffen: ping.ovh.net, proxy.p19.ovh.net, proxy.rbx.ovh.net und proxy.ovh.net. Dies erlaubt dem OVH-Teams, den Zustand Ihres Servers trotzdem überwachen zu können.
Sie müssen also die IPs dieser Server freischalten.

Die IP Ihres Servers hat das Format aaa.bbb.ccc.ddd
Freizuschaltende IP: aaa.bbb.ccc.250
(z.B. müsste für die IP 213.186.57.143 diese IP durchgelassen werden: 213.186.57.250)
Falls Sie einen Server der HG-Serie besitzen müssen Sie folgende IP freischalten: aaa.bbb.ccc.249 (zeitweilig, wird ggf. demnächst geändert).

Wenn Sie alle Ports blockieren (auch die von OVH), werden wir den Zustand Ihres Servers nicht mehr überwachen können. Falls dieser dann ausfällt, müssten wir "manuell" von Ihnen benachrichtigt werden. Um den OVH-Überwachungsserver das Pingen zu erlauben, müssen folgende Regeln hinzugefügt werden:


/sbin/iptables -A INPUT -i eth0 -p icmp --source proxy.ovh.net -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --source proxy.p19.ovh.net -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --source proxy.rbx.ovh.net -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --source ping.ovh.net -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --source IP.250 -j ACCEPT # IP = aaa.bbb.ccc durch die vorhergehende Regel erhalten
/sbin/iptables -A INPUT -i eth0 -p icmp --source IP.249 -j ACCEPT # zeitweilig, nur für Server der HG-Serie



Falls Sie den SSH-Zugang nur auf Ihre IP beschränken wollen, ist es empfehlenswert, auch cache.ovh.net den Zugriff zu gestatten. Wenn Sie den Port 22 für die OVH-Techniker schließen, können wir nicht mehr direkt auf den Server zugreifen, um Probleme zu lokalisieren oder zu beheben.

Um den OVH-Servern den Zugriff auf Ihren Server zu ermöglichen, müssen Sie folgendes eingeben:


/sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 --source cache.ovh.net -j ACCEPT



Wenn Sie einen RAID-Filer haben, dürfen Sie nicht vergessen, dem NFS eine Verbindung zu ermöglichen. Hierfür sollte alles aktzeptiert werden, was aus dem Netz 192.168.0.0/16 kommt:


/sbin/iptables -A INPUT -i eth0 -p tcp --source 192.168.0.0/16 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p udp --source 192.168.0.0/16 -j ACCEPT




Wenn Sie Cluster-System? haben (zur Zeit nicht im Angebot), muß man den Port 79 öffnen, damit OCO mit dem Lastenverteiler kommunizieren kann:


/sbin/iptables -A INPUT -i eth0 -p tcp --dport 79 -j ACCEPT




Konfigurationsbeispiel



Hier ein Beispiel einer vollständigek Konfiguration, um Ihren Server via iptables zu schützen. Durch den Einsatz dieser Konfiguration wäre Ihr System größtenteils geschützt und die wichtigsten Dienste werden zugelassen. Sie kann als Basis für Ihre individuell angepasste Konfiguration dienen:


/sbin/iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p udp --dport 53 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 110 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 10000 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 21 --source xx.xx.xx.xx -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 --source cache.ovh.net -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 --source xx.xx.xx.xx -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --source proxy.ovh.net -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --source proxy.p19.ovh.net -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --source proxy.rbx.ovh.net -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p icmp --source ping.ovh.net -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --source 192.168.0.0/16 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p udp --source 192.168.0.0/16 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 79 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -j REJECT



In diesen Regeln muß man natürlich xx.xx.xx.xx durch die IP-Adresse des eigenen Servers ersetzen, auf dem die freizuschaltenden Dienste laufen.


Firewall automatisieren



Ihre Firewall wurde nun vollständig konfiguriert und für sie sollte jetzt ein Skript erstellt werden, das bei jedem Systemstart automatisch geladen wird.

Hier ein Beispiel, in dem ein Skript namens "Firewall" im /etc/init.d/-Register eingetragen wird:


  1. !/bin/sh

1. chkconfig: 3 21 91
2. description: Firewall


IPT=/sbin/iptables

case "$1" in
start)
$IPT -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 53 -j ACCEPT
$IPT -A INPUT -i eth0 -p udp --dport 53 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 110 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 10000 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 21 --source xx.xx.xx.xx -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 22 --source cache.ovh.net -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 22 --source xx.xx.xx.xx -j ACCEPT
$IPT -A INPUT -i eth0 -p icmp --source proxy.ovh.net -j ACCEPT
$IPT -A INPUT -i eth0 -p icmp --source proxy.p19.ovh.net -j ACCEPT
$IPT -A INPUT -i eth0 -p icmp --source proxy.rbx.ovh.net -j ACCEPT
$IPT -A INPUT -i eth0 -p icmp --source ping.ovh.net -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --source 192.168.0.0/16 -j ACCEPT
$IPT -A INPUT -i eth0 -p udp --source 192.168.0.0/16 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp --dport 79 -j ACCEPT
$IPT -A INPUT -i eth0 -j REJECT
exit 0
;;

stop)
$IPT -F INPUT
exit 0
;;
*)
echo "Usage: /etc/init.d/firewall {start|stop}"
exit 1
;;
esac



Erteilen Sie dem Skript nun das Recht 700 und geben Sie „/etc/init.d/firewall start“ ein, um es auszuführen und “/etc/init.d/firewall Stopschild ", um es anzuhalten.
Um es beim Systemstart automatisch auszuführen:


$ /sbin/chkconfig --level 3 firewall on
$ /sbin/chkconfig --level 06 firewall off



Achten Sie darauf, dass das Skript ordnungsgemäß funktioniert, bevor Sie es automatisch starten lassen, damit Ihr Server nicht automatisch blockiert wird !

quelle: OVH
mcseeder ist offline   Mit Zitat antworten Nach oben