Root-Server Konfiguration


Root-Server Konfiguration

Die wichtigsten Grundeinstellungen für einen Root-Server werden hier zusammengefasst:
* einen nicht-privilegierten Benutzer hinzufügen
* eine rudimentäre Firewall einrichten(incl. automatisches Startskript)
* eine Java-Umgebung hinzufügen(optional)

Sicherheitshinweis

Achtung:
Der Betreiber eines Servers ist dafür verantwortlich, das dieser nicht für illegale Zwecke mißbraucht werden kann. Neben regelmäßigen Sicherheitsupdates und Verwendung starker Passwörter muß Sorge dafür getragen werden, das der Server so sicher wie möglich abgesichert wird.

Die von mir aufgeführten Hinweise/Tipps/Verfahren sind vielleicht inzwischen veraltet oder falsch.
Nutzung auf eigene Gefahr!

Normale User und der Superuser(root)

Hinweis:
Linux unterscheidet zwischen normalen Benutzern(Usern) und dem privilegiertem root-Zugang.
Der root-Zugang bei Linux ist vergleichbar mit dem Administrator-Zugang bei Windows.
Einziger Unterschied: Bei Linux darf der root wirklich alles ^^. Auch alles versehentlich kaputtmachen..

Bei Befehlen verdeutlicht ein vorangestelltes Zeichen wie $ oder # ob besondere Rechte für die Verwendung nötig sind.
$ bezieht sich auf Befehle, die von jedem normalen Nutzer verwendet werden können.
# bezieht sich auf Befehle, die nur vom Super-User(root) genutzt werden dürfen.
Diese Hinweiszeichen($ bzw. #) dürfen selbstverständlich NICHT mit eingegeben werden!!

Erste Schritte auf dem Server

Via PuTTY kann man sich bequem aus der Ferne in den Server einloggen
Dabei wählt man als Usernamen root und gibt dann das vorher gewählte Passwort für diesen User ein.
Nicht erschrecken: Alles läuft über eine Terminalemulation ab, daher sieht man auch nur Text(und keine "Buttons").

Linux aktuell halten

/etc/apt/sources.list enthält eine Liste der Update-Server.
Diese sollte man folgendermassen anpassen:
# main sources
deb     http://ftp.de.debian.org/debian/ stable         main contrib non-free
deb-src http://ftp.de.debian.org/debian/ stable         main contrib non-free
# security
deb     http://security.debian.org/      stable/updates main contrib non-free
deb-src http://security.debian.org/      stable/updates main contrib non-free
# stable-updates
deb     http://ftp.de.debian.org/debian/ stable-updates main contrib non-free
deb-src http://ftp.de.debian.org/debian/ stable-updates main contrib non-free
Anstelle von stable kann auch der Codename wie z.B. "Jessie" für Debian 8 oder "testing" für die nächste Version gesetzt werden.
# cat /proc/version  zeigt die aktuell genutzte Linux-Version an.
$ cat /etc/*-release zeigt auch den Codenamen der Linux-Version an.
$ lsb_release -a     zeigt auch den Codenamen der Linux-Version an.

Linux sucht nicht automatisch nach Updates!
Daher muss man mit den beiden folgenden Befehlen jedesmal selbst ein Update "anstossen":
# apt-get update  aktualisiert die Quellen,
# apt-get upgrade führt dann im Anschluß die eigentlichen Updates durch.
Diese beiden Befehle sollte man jedes Mal direkt vor der Installation weiterer Programme durchführen!

Linux aktuell halten(Versions-UPGRADE)

Bekommt man bei seinem Server-Vermieter nur eine veraltete Debian-Version(z.B. noch Wheezy(debian7)), kann man leicht upgraden:
Die Datei /etc/apt/sources.list muss dann meist angepasst werden(Stable reicht aus).
Debian-8(Jessie) ist momentan(Mai 2015) die "Stable"-Version, Debian-9(Stretch) ist die "Testing"-Version.
Das folgende Beispiel zeigt den Inhalt der Datei, wenn man unbedingt schon die neue(testing) Version von Debian testen möchte:
# main sources
deb     http://ftp.de.debian.org/debian/ Stretch         main contrib non-free
deb-src http://ftp.de.debian.org/debian/ Stretch         main contrib non-free
# security
deb     http://security.debian.org/      Stretch/updates main contrib non-free
deb-src http://security.debian.org/      Stretch/updates main contrib non-free
# stable-updates
deb     http://ftp.de.debian.org/debian/ Stretch-updates main contrib non-free
deb-src http://ftp.de.debian.org/debian/ Stretch-updates main contrib non-free

Wie immer vor Installationen/Updates zuerst die Quellen aktualisieren:
# apt-get update  aktualisiert die Quellen,
# apt-get dist-upgrade führt dann im Anschluß ein Distributions UPGRADE durch.
Debian.. kann eigentlich meist problemlos upgegraded werden(im Gegensatz zu einigen.. kommerziellen Betriebssystemen).
Es kann jedoch auch böse haken:
* Treiber für die Ethernetschnittstellen liegen für die neue Version noch gar nicht vor..
* Systemeinstellungen wurden geändert(statt System-V nun System-Init)
* Apache2 wird nun ganz anders konfiguriert..ooh ja!!
Besonders ärgerlich: Alte Anleitungen, die früher wunderbar helfen konnten sind nun WERTLOS -.-

Programme installieren

Fehlt ein Programm auf dem Server kann man es leicht nachinstallieren(sofern man den Namen des *Paketes* kennt):
# apt-cache search Dateimanager sucht z.B. nach Dateimanager in der Paketbeschreibung(aber nur genauso geschrieben).
# apt-get install mc installiert z.B. den mc(midnightcommander!), eine Art NortonCommander-Clone.

Vorsicht: Nicht immer weiß man, ob ein Programm für die Konsole oder gar für einen X11 Server gedacht ist.
Installiert man z.B. versehentlich krusader wird die komplette X11 Umgebung mitinstalliert -.- (sinnlos für Server!)
Vor der Installation werden alle für das gewünschte Paket zusätzlich nötigen Pakete und deren Größe angezeigt.
Grob gesagt: Würden mehr als 20MByte installiert werden sollte man abbrechen.

Dateieditoren

Linux hat mächtige Texteditoren zur Dateimanipulation vorinstalliert, leider erscheinen deren Tastenbefehle für Windowsumsteiger sehr verwirrend, zudem kennt fast niemand deren Namen um sie zu starten(z.B.nano,pico,vim).
Neuere Versionen bieten einen Alias namens editor an, der zumindest einen davon startet.
editor test würde die Datei "test" mit dem voreingestellten Editor öffnen.

# update-alternatives --config editor ändert den vorgegebenen Standard-Editor.
Ich empfehle noch den midnightcommander zu installieren und konfigurieren..

Farbiges Promt/volle Pfadanzeige

Den Prompt einfärben(User=grün/Superuser=rot) und Pfade komplett anzeigen lassen

Linux kürzt automatisch den angezeigten Pfad, sobald man sich im "home"-Verzeichnis befindet:
z.B. steht im Prompt nur ~ als Abkürzung für /home/<Username>/.

Für bereits vorhandene User ersetzt man in /home/<Username>/.bashrc das erste Vorkommen von PS1= durch:
PS1='${debian_chroot:+($debian_chroot)}\[\033[32m\]\u@\h\[\033[m\]:\[\033[36m\]$PWD\[\033[m\]$ ' (grüner Username)

Für root ersetzt man in /root/.bashrc die Zeile export PS1='\h:\w\$ ' durch:
export PS1='${debian_chroot:+($debian_chroot)}\[\033[31m\]\u@\h\[\033[m\]:\[\033[36m\]$PWD\[\033[m\]$ ' (roter Username)

Für alle zukünftigen User ersetzt man in /etc/skel/.bashrc das erste Vorkommen von PS1= durch:
PS1='${debian_chroot:+($debian_chroot)}\[\033[32m\]\u@\h\[\033[m\]:\[\033[36m\]$PWD\[\033[m\]$ ' (grüner Username)

Änderungen werden erst beim nächsten Einloggen sichtbar.

Bash anpassen

Doppelte Befehle in der Bash-Historie vermeiden:
In /etc/profile hinzufügen:
HISTCONTROL="erasedups"
export HISTCONTROL"

Gesamte Historie löschen:
# history -c

Ctrl+r Vervollständigt Befehle, die in der Historie vorhanden sind

Nichtprivilegierte Benutzer hinzufügen

Niemals ohne Grund mit root-Rechten arbeiten! Für jeden "Dienst" einen eigenen Benutzer einrichten!
Näheres unter Linux-Befehle-Userverwaltung

Da ich einen "MiniCraft"-Server anbiete, nenne ich den User mal zum BEISPIEL "minicraft"
(Es wäre schön blöd, einen so offensichtlichen Namen für einen Benutzer einzurichten; jeden *Hacker* würde dies freuen!)

Den User "minicraft", die Gruppe "minicraft" und das Heimatverzeichnis erstellen:
# useradd -s /bin/bash -m minicraft (-s /bin/bash definiert die Shell, -m minicraft kopiert 'Skeleton' nach /home/minicraft)

Für den User "minicraft" noch ein Passwort vergeben:
# passwd minicraft
Weitere User nach Bedarf hinzufügen; Passwordliste nicht vergessen..
Mögliche zusätzliche Dienste die einen eigenen "User" benötigen:
-minecraft(Spiel-Server) -teamspeak(Sprachübertragung)
Siehe auch Server-Sicherheit(Apache/Firewall/SSH)

SSH-Zugriffe absichern durch Verwendung von Schlüsselpaaren
Dabei beachten, das aus Sicherheitsgründen der User root sich KEINESFALLS direkt anmelden darf, auch nicht mit Schlüsselpaaren!
Dazu diesem Link folgen LINK

Eine Firewall einrichten

Siehe auch Linux-Befehle-iptables und vor allem Sicherheit-Firewall
Über den Wert einer Firewall, die AUF dem zu schützenden Server läuft streiten sich Millionen..
Eine separat vorgeschaltete Firewall ist sinnvoller, doch wer hat das Geld für sowas?
Zudem nutzt die tollste Firewall nichts, wenn sie falsch eingerichtet wurde oder gar ein Programm fehlerhaft ist.
Böse Buben nutzen jede Möglichkeit um an fremder Leute Geld zu kommen -.-

Wer sich dafür interessiert, was wirklich alles so auf einen Server prasselt(Datenpakete), kann sie als Filter nutzen.
Somit trennt man schnell die gewünschten Daten und den Rest(Schrott^^).

Regelwerk /etc/iptables.up beim Booten aktivieren

Ein mit iptables eingerichtetes Regelwerk bleibt nur bis zum nächsten Reboot aktiv!
Dies kann man zur Fehlersuche nutzen, indem man mehrere Regelwerke erstellt und diese testet.
So kann das eine Regelwerk /etc/iptables.up bei jedem Reboot automatisch geladen werden,
während das Regelwerk /etc/iptables.test nur für.. Testzwecke da ist.
Beispiel eines einfachen Regelwerkes:
# editor /etc/iptables.up (den folgenden Text hier einfügen)
*filter
-P FORWARD ACCEPT
-P INPUT   ACCEPT
-P OUTPUT  ACCEPT
# [   ] [    DRP<<] Alle "defekten" Pakete verwerfen
-A INPUT  -i eth0                       -p ALL                                  -m state --state INVALID                -j DROP
-A FORWARD                                                                                                              -j ACCEPT
-A INPUT                                                                                                                -j ACCEPT
-A OUTPUT                                                                                                               -j ACCEPT
COMMIT
Am Ende noch eine Leerzeile einfügen und das Werk abspeichern. Ohne Leerzeile gibt es einen Fehler!
# cp /etc/iptables.up /etc/iptables.test (das gerade erstellte Werk kopieren)

Beschreibung:
Dieses Beispiel entspricht fast der Vorgabe jedes Linux-Betriebssystems und sperrt GAR NICHTS, alles ist erlaubt.
Einzige Änderung bisher: "Defekte" Pakete werden ignoriert. Das betrifft auch manipulierte Pakete..
KEINESFALLS sollte man jetzt schon am Ende bei INPUT und OUTPUT das ACCEPT zu REJECT ändern!
Denn.. dann würde der Server GAR nichts mehr rein und rauslassen.
WENN man für alle benötigten Dienste entsprechende Regeln gesetzt hat und das auch getestet hat, dann würde es erst Sinn machen..
So muss für den Fernzugriff SSH (Port22) freigegeben sein. Ebenso für HTTP (wenn ein Webserver laufen soll).
Auch für Teamspeak und MineCraft müssen entsprechend die Ports freigegeben werden. Das kommt im Anschluss..

Damit dieses Regelwerk (/etc/iptables.up) bei jedem Start auch geladen wird muss noch ein Skript erstellt werden.
Dieses Skript ändert einige "Variablen"(die ganzen echo-Befehle) und aktiviert am Schluß die IPTABLES (/etc/iptables.up)
Es KANN sein, das einige Systeme meine Werte der "Variablen" übel nehmen. Sorry dafür, aber Netzwerke sind nicht alle gleich!
Wer "Angst" hat, kann alle "echo" Zeilen weglassen. Das sollte keine Probleme verursachen.
# editor /etc/network/if-pre-up.d/iptables (Datei erstellen und den folgenden Text hinein)
#!/bin/bash
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/all/secure_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/accept_source_route
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/default/secure_redirects
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects
echo 2 > /proc/sys/net/ipv4/tcp_synack_retries
/sbin/iptables-restore < /etc/iptables.up
# chmod +x /etc/network/if-pre-up.d/iptables (Datei ausführbar machen)

Ein komplettes Regelwerk..

Die Reihenfolge in der die folgenden Regeln aufgeführt sind ist auch die, die genutzt werden sollte.
Was nicht gebraucht wird, kann weggelassen werden. Es sei denn da stände "WICHTIG!"

BEGINN eines jeden iptables-Regelwerks:

Hiermit muss jede iptable-Regel beginnen. Dieser Text steht zu Beginn jeder Datei.
Dieses Beispiel verwirft ALLE eingehenden Datenpakete!! Daher darf es NICHT alleine stehen und aktiviert werden!
Nur was in den zusätzlichen Regeln erlaubt wird kommt überhaupt beim Server an.
Nötig! Aber.. zuerst alle DROP durch ACCEPT ersetzen!!

*filter
# [*P*] **** Policy set default DROP:(FORWARD,INPUT,OUTPUT)
-P FORWARD DROP
-P INPUT   DROP
-P OUTPUT  DROP

Defekte/manipulierte Pakete verwerfen

Alle defekten(nicht angeforderten, verirrten, manipulierten) Datenpakete werden verworfen.
Eine sehr praktische Regel ;)

# [   ] [    DRP<<] Alle "defekten" Pakete verwerfen
-A INPUT  -i eth0                       -p ALL                                  -m state --state INVALID                -j DROP

Nicht an den Server gerichtete Pakete verwerfen

Unter ServerIP sollte die IP des Servers eingetragen sein, NICHTS anderes!
Aktuell ist MiniCraft.hopto.org auch unter der IP 85.25.99.61 erreichbar
Hält UNMENGEN an Datenmüll aus den Log-Dateien fern.

# [F01] [    DRP<-] Nicht an SERVERIP(85.25.99.61) gerichtete Pakete verwerfen
-A INPUT  -i eth0 ! -d 85.25.99.61                                                                                      -j DROP

loopback schüzten und intern freigeben

Was ist ein loopback? Die lokale Schnittstelle? Keine Ahnung ^^ Wäre nur blöde, wenn von aussen direkter Zugriff möglich wäre..
Zusätzlich laufen auf einem Server verschiedene Dienste, die hierüber miteinander "sprechen" können sollten..
Nötig!

# [F02] [    DRP<-] Nicht von lo0 kommendende Pakete nach 127/8 verwerfen
-A INPUT ! -i lo -d 127.0.0.0/8                                                                                         -j DROP
# [F03] [    ACC<>] Pakete von/zu loopback (lo0) erlauben
-A INPUT   -i lo                                                                                                        -j ACCEPT
-A OUTPUT  -o lo                                                                                                        -j ACCEPT

# [F04] [    DRP<-] Eingehende Pakete mit (FAKE!)Ursprung SERVERIP(85.25.99.61) verwerfen
-A INPUT  -i eth0 -s 85.25.99.61                                                                                        -j DROP
# [   ] [    ACC<>] ICMP3               [ ICMP type: 3 ] Destination unreachable: 3/00..3/04
-A INPUT  -i eth0                       -p icmp --icmp-type network-unreachable                                         -j ACCEPT
-A OUTPUT -o eth0                       -p icmp --icmp-type network-unreachable                                         -j ACCEPT
-A INPUT  -i eth0                       -p icmp --icmp-type host-unreachable                                            -j ACCEPT
-A OUTPUT -o eth0                       -p icmp --icmp-type host-unreachable                                            -j ACCEPT
-A INPUT  -i eth0                       -p icmp --icmp-type protocol-unreachable                                        -j ACCEPT
-A OUTPUT -o eth0                       -p icmp --icmp-type protocol-unreachable                                        -j ACCEPT
-A INPUT  -i eth0                       -p icmp --icmp-type port-unreachable                                            -j ACCEPT
-A OUTPUT -o eth0                       -p icmp --icmp-type port-unreachable                                            -j ACCEPT
-A INPUT  -i eth0                       -p icmp --icmp-type fragmentation-needed                                        -j ACCEPT
-A OUTPUT -o eth0                       -p icmp --icmp-type fragmentation-needed                                        -j ACCEPT
# [   ] [    ACC<>] ICMP4               [ ICMP type: 4 ] Source-quench
-A INPUT  -i eth0                       -p icmp --icmp-type source-quench                                               -j ACCEPT
-A OUTPUT -o eth0                       -p icmp --icmp-type source-quench                                               -j ACCEPT
# [   ] [    ACC<>] ICMP11              [ ICMP type:11 ] time-exceeded
-A INPUT  -i eth0                       -p icmp --icmp-type time-exceeded                                               -j ACCEPT
-A OUTPUT -o eth0                       -p icmp --icmp-type time-exceeded                                               -j ACCEPT
# [   ] [    ACC<=] PINGprovider        [ ICMP type: 8 ] nur vom ISP-Pool kommentarlos erlauben
-A INPUT  -i eth0 -s 11.22.123.0/17     -p icmp --icmp-type echo-request        -m state --state NEW,ESTABLISHED        -j ACCEPT
-A INPUT  -i eth0 -s 22.33.128.0/17     -p icmp --icmp-type echo-request        -m state --state NEW,ESTABLISHED        -j ACCEPT
-A INPUT  -i eth0 -s 123.123.0.0/17     -p icmp --icmp-type echo-request        -m state --state NEW,ESTABLISHED        -j ACCEPT
-A INPUT  -i eth0 -s 17.123.0.0/17      -p icmp --icmp-type echo-request        -m state --state NEW,ESTABLISHED        -j ACCEPT
-A OUTPUT -o eth0                       -p icmp --icmp-type echo-reply          -m state --state ESTABLISHED,RELATED    -j ACCEPT
# [   ] [LOG/DRP<<] Alle anderen ICMPs
-A INPUT  -i eth0                       -p icmp                                 -m limit                                -j LOG --log-prefix "IP4[ICMP/IN:] "
-A INPUT  -i eth0                       -p icmp                                                                         -j DROP
# [   ] [LOG/ACC<-] ECHO-request/reply  [ ICMP type: 8 ] alle NICHT vom ISP-Pool loggen und erlauben
-A INPUT  -i eth0                       -p icmp --icmp-type echo-request        -m state --state NEW,ESTABLISHED        -j LOG --log-prefix "IP4[I.PING   ] "
-A INPUT  -i eth0                       -p icmp --icmp-type echo-request        -m state --state NEW,ESTABLISHED        -j ACCEPT
-A OUTPUT -o eth0                       -p icmp --icmp-type echo-reply          -m state --state ESTABLISHED,RELATED    -j ACCEPT
# [   ] [    ACC>=] ECHO-request/reply  [ ICMP type: 8 ] vom Server ausgehend erlauben
-A OUTPUT  -o eth0                      -p icmp --icmp-type echo-request        -m state --state NEW,ESTABLISHED        -j ACCEPT
-A INPUT -i eth0                        -p icmp --icmp-type echo-reply          -m state --state ESTABLISHED,RELATED    -j ACCEPT
# [   ] [    DRP<<] CHARGEN             [Port:   19 t/u] eingehend verwerfen
-A INPUT  -i eth0                       -p tcp                  --dport    19                                           -j DROP
-A INPUT  -i eth0                       -p udp                  --dport    19                                           -j DROP
# [   ] [    ACC>=] FTP                 [Port:   21 tcp] vom Server ausgehendes FTP                                     (für FTP(active/passive) zu einem anderen FTP-Server benötigt)
-A OUTPUT -o eth0                       -p tcp  --sport 1024:   --dport    21   -m state --state NEW,ESTABLISHED        -j ACCEPT
-A INPUT  -i eth0                       -p tcp  --sport    21   --dport 1024:   -m state --state RELATED                -j ACCEPT
# [   ] [    ACC>=] FTP-DATA            [Port:   20 tcp] vom Server ausgehendes FTP<active>                             (für FTP(active) zu einem anderen FTP-Server benötigt)
-A INPUT  -i eth0                       -p tcp  --sport    20   --dport 1024:   -m state --state NEW,ESTABLISHED        -j ACCEPT
-A OUTPUT -o eth0                       -p tcp  --sport 1024:   --dport    20   -m state --state ESTABLISHED,RELATED    -j ACCEPT
# [   ] [    ACC<=] SSHprovider         [Port:   22 tcp] nur vom Ursprung <Serviceprovider IP-Pool> erlauben            (für Remotezugriff auf den Server benötigt)
-A INPUT  -i eth0 -s 11.22.123.0/17     -p tcp                  --dport    22   -m state --state NEW,ESTABLISHED        -j ACCEPT
-A INPUT  -i eth0 -s 22.33.128.0/17     -p tcp                  --dport    22   -m state --state NEW,ESTABLISHED        -j ACCEPT
-A INPUT  -i eth0 -s 123.123.0.0/17     -p tcp                  --dport    22   -m state --state NEW,ESTABLISHED        -j ACCEPT
-A INPUT  -i eth0 -s 17.123.0.0/17      -p tcp                  --dport    22   -m state --state NEW,ESTABLISHED        -j ACCEPT
-A OUTPUT -o eth0                       -p tcp  --sport    22                   -m state --state ESTABLISHED,RELATED    -j ACCEPT
# [   ] [LOG/REJ<-] SSH                 [Port:   22 tcp] alle NICHT vom ISP-Pool loggen und zurückweisen
-A INPUT  -i eth0                       -p tcp                  --dport    22                                           -j LOG --log-prefix "IP4[dpt:00022.PRB]"
-A INPUT  -i eth0                       -p tcp                  --dport    22                                           -j DROP
# [   ] [    DRP<<] TELNET              [Port:   23 tcp] eingehend verwerfen
-A INPUT  -i eth0                       -p tcp                  --dport    23                                           -j DROP
# [   ] [    ACC<=] SMTP                [Port:   25 tcp] eingehend erlauben
-A INPUT  -i eth0                       -p tcp  --sport 1024:   --dport    25   -m state --state NEW,ESTABLISHED        -j ACCEPT
-A OUTPUT -o eth0                       -p tcp  --sport   25    --dport 1024:   -m state --state ESTABLISHED            -j ACCEPT
# [   ] [    ACC>=] SMTP                [Port:   25 tcp] ausgehend erlauben
-A OUTPUT -o eth0                       -p tcp  --sport 1024:   --dport 25      -m state --state NEW,ESTABLISHED        -j ACCEPT
-A INPUT  -i eth0                       -p tcp  --sport 25      --dport 1024:   -m state --state ESTABLISHED            -j ACCEPT
# [   ] [    ACC>=] WHOIS Query         [Port:   43 tcp] vom Server ausgehend erlauben                                  (für WHOIS-Abfrage benötigt)
-A OUTPUT -o eth0                       -p tcp  --sport 1024:   --dport    43   -m state --state NEW,ESTABLISHED        -j ACCEPT
-A INPUT  -i eth0                       -p tcp  --sport    43   --dport 1024:   -m state --state ESTABLISHED,RELATED    -j ACCEPT
# [   ] [    ACC>=] DOMAIN (DNSquery)   [Port:   53 t/u] vom Server ausgehend erlauben                                  (für Namensumwandlung von "opel.de" zu IPs benötigt)
-A OUTPUT -o eth0                       -p tcp  --sport 1024:   --dport    53   -m state --state NEW,ESTABLISHED        -j ACCEPT
-A INPUT  -i eth0                       -p tcp  --sport    53   --dport 1024:   -m state --state ESTABLISHED,RELATED    -j ACCEPT
-A OUTPUT -o eth0                       -p udp  --sport 1024:   --dport    53   -m state --state NEW,ESTABLISHED        -j ACCEPT
-A INPUT  -i eth0                       -p udp  --sport    53   --dport 1024:   -m state --state ESTABLISHED,RELATED    -j ACCEPT
# [   ] [    DRP<<] DNS Query           [Port:   53 t/u] vom ausserhalb verwerfen
-A INPUT  -i eth0                       -p tcp                  --dport    53                                           -j DROP
-A INPUT  -i eth0                       -p udp                  --dport    53                                           -j DROP
# [   ] [    DRP<<] w00tw00t            [Port:    80 tcp] eingehend verwerfen
-A INPUT  -i eth0                       -p tcp                  --dport    80    -m string --to 70 --algo bm --string "GET /w00tw00t.at.ISC.SANS." -j  LOG --log-prefix "IP4[DRP:w00tPRB]"
-A INPUT  -i eth0                       -p tcp                  --dport    80    -m string --to 70 --algo bm --string "GET /w00tw00t.at.ISC.SANS." -j DROP
# [   ] [    ACC>=] HTTP                [Port:   80 tcp] vom Server ausgehend erlauben
-A OUTPUT -o eth0                       -p tcp  --sport 1024:   --dport    80   -m state --state NEW,ESTABLISHED        -j ACCEPT
-A INPUT  -i eth0                       -p tcp  --sport    80   --dport 1024:   -m state --state ESTABLISHED,RELATED    -j ACCEPT
# [   ] [    ACC<>] HTTP                [Port:   80 tcp] erlauben
-A INPUT  -i eth0                       -p tcp  --sport 1024:   --dport   80:                                           -j ACCEPT
-A OUTPUT -o eth0                       -p tcp  --sport    80   --dport 1024:                                           -j ACCEPT
# [   ] [    ACC<<] POP3                [Port:  110 t/u] eingehend erlauben
-A INPUT  -i eth0                       -p tcp  --sport 1024:   --dport   110   -m state --state NEW,ESTABLISHED        -j ACCEPT
-A OUTPUT -o eth0                       -p tcp  --sport   110   --dport 1024:   -m state --state ESTABLISHED            -j ACCEPT
# [   ] [    DRP<<] SUNRPC              [Port:  111 t/u] eingehend verwerfen
-A INPUT  -i eth0                       -p tcp                  --dport   111                                           -j DROP
-A INPUT  -i eth0                       -p udp                  --dport   111                                           -j DROP
# [   ] [    DRP<<] LOC-SRV             [Port:  135 t/u] eingehend verwerfen
-A INPUT  -i eth0                       -p tcp                  --dport   135                                           -j DROP
-A INPUT  -i eth0                       -p udp                  --dport   135                                           -j DROP
# [   ] [    DRP<<] NETBIOS-ns          [Port:  137 t/u] eingehend verwerfen
-A INPUT  -i eth0                       -p tcp                  --dport   137                                           -j DROP
-A INPUT  -i eth0                       -p udp                  --dport   137                                           -j DROP
# [   ] [    DRP<<] NETBIOS-dgs         [Port:  138 t/u] eingehend verwerfen
-A INPUT  -i eth0                       -p tcp                  --dport   138                                           -j DROP
-A INPUT  -i eth0                       -p udp                  --dport   138                                           -j DROP
# [   ] [    DRP<<] NETBIOS-ssn         [Port:  139 t/u] eingehend verwerfen
-A INPUT  -i eth0                       -p tcp                  --dport   139                                           -j DROP
-A INPUT  -i eth0                       -p udp                  --dport   139                                           -j DROP
# [   ] [    DRP<<] SNMP                [Port:  161 udp] eingehend verwerfen
-A INPUT  -i eth0                       -p udp                  --dport   161                                           -j DROP
# [   ] [    DRP<<] rsh-spx             [Port:  222 t/u] eingehend verwerfen
-A INPUT  -i eth0                       -p tcp                  --dport   222                                           -j DROP
-A INPUT  -i eth0                       -p udp                  --dport   222                                           -j DROP
# [   ] [    ACC>=] HTTPS               [Port:  443 tcp] vom Server ausgehend erlauben
-A OUTPUT -o eth0                       -p tcp  --sport 1024:   --dport   443   -m state --state NEW,ESTABLISHED        -j ACCEPT
-A INPUT  -i eth0                       -p tcp  --sport   443   --dport 1024:   -m state --state ESTABLISHED,RELATED    -j ACCEPT
# [   ] [    DRP<<] Microsoft-ds        [Port:  445 tcp] eingehend verwerfen
-A INPUT  -i eth0                       -p tcp                  --dport   445                                           -j DROP
# [   ] [    DRP<<] SOCKS               [Port: 1080 tcp] eingehend verwerfen
-A INPUT  -i eth0                       -p tcp                  --dport  1080                                           -j DROP
# [   ] [    DRP<<] MS SQL Server       [Port: 1433 t/u] eingehend verwerfen
-A INPUT  -i eth0                       -p tcp                  --dport  1433                                           -j DROP
-A INPUT  -i eth0                       -p udp                  --dport  1433                                           -j DROP
# [   ] [    DRP<<] NDL-aas             [Port: 3128 tcp] eingehend verwerfen
-A INPUT  -i eth0                       -p tcp                  --dport  3128                                           -j DROP
# [   ] [    DRP<<]                     [Port: 3251 udp] eingehend verwerfen
-A INPUT  -i eth0                       -p udp                  --dport  3251                                           -j DROP
# [   ] [    DRP<<] RDP                 [Port: 3389 tcp] eingehend verwerfen
-A INPUT  -i eth0                       -p tcp                  --dport  3389                                           -j DROP
# [   ] [    DRP<<] X11                 [Port: 6000 tcp] eingehend verwerfen
-A INPUT  -i eth0                       -p tcp  --sport  6000                                                           -j DROP
# [   ] [    DRP<<] HTTP-alt            [Port: 8080 t/u] eingehend verwerfen
-A INPUT  -i eth0                       -p tcp                  --dport  8080                                           -j DROP
-A INPUT  -i eth0                       -p udp                  --dport  8080                                           -j DROP
# [#99] [LOG/REJ->] all FORWARD traffic
-A FORWARD                                                                                                              -j LOG --log-prefix "IP4[F.---.REJ] "
-A FORWARD                                                                                                              -j REJECT
# [#99] [LOG/REJ<-] all INPUT   traffic
-A INPUT                                                                                                                -j LOG --log-prefix "IP4[I.---.REJ] "
-A INPUT                                                                                                                -j REJECT
# [#99] [LOG/REJ->] all OUTPUT  traffic
-A OUTPUT                                                                                                               -j LOG --log-prefix "IP4[O.---.REJ] "
-A OUTPUT                                                                                                               -j REJECT
COMMIT
# [F14] [ACC<=>   ] MineCraft SERVER    [Port:25565 tcp]
-A INPUT  -i eth0                                -p tcp               --dport 25565 -m state --state NEW,ESTABLISHED        -j ACCEPT
-A OUTPUT -o eth0                                -p tcp --sport 25565               -m state --state ESTABLISHED,RELATED    -j ACCEPT