Hallo liebe Community,
ich möchte euch hier gerne zeigen und erklären, wie ihr euren Server vor unerlaubten Zugriffen schützen könnt. Beachtet bei dieser Anleitung bitte, dass ich die Konfiguration am Ende nur den Zugriff auf alle notwendigen TeamSpeak 3 Server Dienste, sowie den SSH Dienst erlaubt. Alle weiteren benötigten Dienste müssen manuell hinzugefügt werden, damit sie wieder erreichbar sind bzw. "funktionieren".
Inhaltsverzeichnis
- Vorwort
- Was ist iptables?
- Was ist eine Firewall?
- Konfiguration der Firewall
-
Vorwort
Das nachfolgende Tutorial wird anhand von Standardports und Beispiel IP Adressen gezeigt. Zum Schluss des Tutorials erlaubt euer Server nur noch den Zugriff auf die TeamSpeak 3 Server Dienste, sowie eure SSH-Verbindung (falls dieser vorhanden ist).(Eingehende) TeamSpeak 3 Dienste sind folgende:
- Sprachübertragung (Standardport UDP 9987)
- Avatar (Standardport TCP 30033)
- ServerQuery (Standardport TCP 10011)
- Accounting (Standardport TCP 2008 )
- TSDNS (Standardport TCP 41144)
Den Unterschied zwischen TCP und UDP ist relativ einfach. Beides sind Protokolle für unsere Ports. UDP ist, sagen wir mal, das "dumme" Protokoll. Mit UDP werden Pakete einfach nur an das Ziel gesendet. Ob es dort jemals angekommen ist oder nicht, ist dem Protokoll egal. Wenn also ein Paket verloren geht, interessiert das keinen und das Paket wird auch nicht erneut gesendet. Bei TCP dagegen wird überprüft, ob das Paket auch angekommen ist oder nicht. Sollte das Paket nicht angekommen sein, wird das Paket solange erneut gesendet, bis es beim Ziel ankommt. So hat TCP natürlich den Nachteil, dass es langsamer als UDP ist, da es immer wieder überprüfen muss, ob jedes einzelne Paket angekommen ist oder nicht.
Bei Spielen und Sprachübertragungen möchte man aber keine Verzögerungen haben. Hier möchte man "flüssig" spielen und hören können. Wenn hier mal ein von tausenden Pakete fehlt, fällt das (fast) nicht auf. Es kann sein, dass das Bild bzw. der Ton für eine sehr kleine Zeit nur mal kurz nicht ankommt und ihr ein kurzes Standbild bzw. einen Aussetzer des Sounds habt. Aber mal ehrlich: Wenn stört das bzw. fällt das wirklich auf? Beim Telefonieren ist das genauso. Wenn du ein, zwei Buchstaben vom Partner nicht verstanden hast, dann denkst du dir den Rest automatisch. Du fragst doch nicht nach, ob er/sie es dir nochmal sagen können... Oder etwa doch?!
Stellt euch vor, ihr würdet über TCP spielen und ein Paket würde dauernd verloren gehen: Ihr hättet ein dauerhaftes Standbild, da die einzelnen Pakete bei beiden Protokollen in der richtigen Reihenfolge erst wieder zusammengebastelt werden müssen. Wenn ihr gerade beim Paket 13 seid und das 14. nicht kommt, können auch die nachfolgenden Pakete 15, 16 ... nicht verarbeitet werden. Darum verlieren wir lieber das ein oder andere Pakete und nehmen "Laggs" bzw. "Aussetzer" entgegen, anstatts dauernd auf ein Paket zu warten.
Jut. Soviel zum Thema TCP und UDP. Machen wir mal weiter...
Die ausgehenden Dienste interessieren uns nicht, denn wenn wir nichts rein lassen, kann auch nichts nach außen. Das kann man mit einem Haus vergleichen: Wenn ihr die Türen offen lasst und die Diebe rein kommen bzw. könnten, können sie euch etwas klauen. Somit wäre der Gegenstand dann auch nicht mehr im Haus, sondern irgendwo anders. Würdet ihr die Türen zuschließen, hätte der Dieb keine Chance ins Haus rein zu kommen und somit kann auch nichts aus dem Haus gelangen. (Abgesehen davon, wenn sie ein paar Fensterscheiben zerstören... :D)
Eine SSH-Verbindung ist eine Shell-basierte Remote-Verbindung, die von eurem lokalen Rechner auf einen Zielrechner des Ports 22 (= Standardport) aufgebaut wird. Somit kann zum Beispiel von Nürnberg aus auf den Rechner in China zugegriffen werden, sodass ihr ihn administrieren könnt.
Für weitere Details siehe auch bei Wikipedia: Wikipedia | SSH (Secure Shell)HINWEIS: NICHT Copy & Pasten! Unter Umständen sperrt ihr euch komplett vom System aus und kommt nur noch lokal - also wenn ihr direkt davor sitzt - oder per VNC-Konsole rein. Darum bitte sehr gut drauf aufpassen, was ihr macht!
Eine VNC-Konsole ist übrigens das hier: Wikipedia | VNC (Virtual Network Computing)
-
Was ist iptables?
Da wir das ganze auf einem Linux System machen, benutzen wir einfach die integrierte Firewall des Linux Kernels, welche ab dem Kernel 2.4 vorhanden ist. Um die Firewall zu verwalten, benutzen wir das Linux Paket "iptables".iptables ist ein Administrationstool für die IPv4 Paketfilterung und NAT. Es ist also keine eigenständige Firewall. Es ist nur ein Tool, das die Firewall "steuert" bzw. konfiguriert.
- Was ist IPv4?
"Internetprotokoll Version 4" ist ein Protokoll für die Pakete, die über unser Netzwerk versendet und empfangen werden. Der Nachfolgender nennt sich übrigens "IPv6" und wird derzeit immer und immer mehr verwendet.Da das Thema jedoch zu komplex zum Erklären ist, verweise ich hier einfach auf die Wikipedia Seite. Wen es also interessiert und sich dazu mehr anschauen möchte, guckt sich das ganze bitte hier an: Wikipedia | IPv4
- Was bedeutet "Paketfilterung"?
Das bedeutet nichts anderes als: Wir schauen uns ein eingehendes bzw. ausgehendes Paket an und filtern es. Sprich wir entscheiden, was damit passiert. Wird es weitergeleitet? Wird es einfach ignoriert? Wird es verworfen und dem Absender wird Bescheid gegeben? Und und und...Das ist das, was wir für dieses Tutorial jetzt brauchen und verwenden werden.
Weitere Details findet ihr wieder auf Wikipedia: Wikipedia | Paketfilter
- Was bedeutet "NAT"?
Das ist für uns irrelevant, da wir das nicht nutzen werden. Prinzipiell bedeutet es aber nicht mehr als, dass bestimmte Paketinformationen - auch Adressinformationen genannt - durch andere ersetzt werden, um verschiedene Netze zu verbinden. Du hast Daheim sicherlich einen "Router" stehen. "NAT" ist ein Teil, den dein Router für dich bzw. dein komplettes privates Netz übernimmt.Für weitere Informationen gibt es wieder Wikipedia: Wikipedia | NAT (Network Address Translation)
- Was ist IPv4?
-
Was ist eine Firewall?
Gut... Dann kommen wir zum Begriff "Firewall". Was ist eine Firewall eigentlich? Eine Firewall ist eine Art Schutzwand, die anhand von Paketfilterungen z.B. bestimmte Pakete durchlässt und andere nicht. So kann man sich zum Beispiel gegen Hacker und Angriffen schützen. Mit einer Firewall kann man auch einfache Zugriffe wie "Personen aus dem Netz Zuhause" dürfen meine Webseite sehen, während alle anderen, die nicht in dem Netz sind das nicht dürfen.Wichtig ist, dass eine Firewall keine Angriffe oder bösartige bzw. nicht erlaubte Zugriffe erkennt. Sie hat einfach eine vom Administrator - also dir - vorgefertige Liste mit Regeln, welche sie für jedes einzelne Paket abarbeitet. Sollte bei dieser Liste nur irgendeine Regel falsch, nicht zutreffend oder fehlend sein, wird das Paket entsprechend weitergeleitet bzw. -verarbeitet. Das heißt, dass durch Fehlkonfigurationen in der Firewall auch nicht gewollte Pakete ins Netzwerk bzw. zum Server gelangen.
So kann es auch passieren, dass man bei Fehlkonfigurationen komplett vom System ausgesperrt wird und die Regeln erst wieder anpassen bzw. löschen muss. Anpassen und löschen ist leicht gesagt... Dazu muss man erstmal physisch vor dem Rechner stehen oder eine VNC-Konsole zur Verfügung haben. Ansonsten sieht es da schlecht aus.
Gut... Wer hierzu gerne noch mehr Informationen hätte, kann sich die schönen Bilder und Texte auf Wikipedia anschauen: Wikipedia | Firewall
-
Konfiguration der Firewall
Nochmal als extrem wichtigen Hinweis, falls den ganzen schönen Text oben keiner gelesen hat:- Es werden Standardports und Beispiel IP Adressen verwendet
- NICHT Copy & Pasten
Ihr sperrt euch unter Umständen vom kompletten System aus!
Dann fangen wir mal an...Schaut euch als aller erstes die Ports an, die euer TeamSpeak 3 Server aktuell verwendet. Das kann man zum Beispiel mit dem nachfolgenden Befehl auf einer Linux Konsole mit root Rechten tun:
Somit hat man zum Beispiel so eine Ausgabe:Code$ netstat -tulpen | grep -i ts3server tcp 0 0 0.0.0.0:30033 0.0.0.0:* LISTEN 2003 4760 2513/ts3server_linu tcp 0 0 0.0.0.0:10011 0.0.0.0:* LISTEN 2003 7754 2513/ts3server_linu udp 0 0 0.0.0.0:9987 0.0.0.0:* 2003 7751 2513/ts3server_linu udp 0 0 0.0.0.0:9988 0.0.0.0:* 2003 6868 2513/ts3server_linu
Wie hier gut zu sehen ist, sieht man, dass folgende Ports verwendet werden:- TCP 30033
- TCP 10011
- UDP 9987
- UDP 9988
Wie wir wissen oder bei TeamSpeak.com nachschauen können, stehen die Ports für folgende Dienste des TeamSpeak 3 Servers:- TCP 30033 = TeamSpeak Avatar
- TCP 10011 = TeamSpeak ServerQuery
- UDP 9987 = Voiceport für die Sprachübertragung von TeamSpeak
- UDP 9988 = Weiterer Voiceport für die Sprachübertragung von TeamSpeak
Diese Informationen speichern wir uns jetzt so, wie es in der letzten Liste da steht, in ein beliebiges neues/leeres Text-Dokument.