(Erledigt) Howto-Anfrage: Ports sperren/freigeben

Status
Für weitere Antworten geschlossen.

dirtysanchez

New Member
Hallo liebe Linux-User!
(Suchfunktion wurde genutzt, kein entsprechendes Thema gefunden)

Ganz nach dem KISS (Keep it simple and small)-Prinzip möchte ich auf einem Suse-System (Zugriff per SSH) nur die allernötigsten Ports öffnen (wie es mir hier in diversen Howtos geraten wurde).

In meinem Beispiel wären das jetzt 27015, 27016, 27017 und 9008.
Dazu kämen jetzt noch ein Port für FTP und SSH (denn man sollte wohl besser nicht den Ast absägen, auf dem man sitzt^^).
Und, falls nötig, andere unbedingt notwendige Ports (wüsste nicht wofür man sonst noch welche zwingend öffnen müsste, lasse mich aber gerne belehren).

An meinen Beispielports erkennt Ihr wahrscheinlich schon, dass auf dem Server nur 3 Spiele (bzw. ein Spiel in 3 Ausführungen) und Teamspeak laufen. Kein Webserver, kein Mailserver etc.

Gibt es hier vielleicht jemanden, der für solch eine Situation ein HowTo schreiben könnte? (Denn sicherlich betrifft das viele User.)

Danke schon im vorraus für alle Antworten. :)
 
AW: Howto-Anfrage: Ports sperren/freigeben

dirtysanchez schrieb:
Gibt es hier vielleicht jemanden, der für solch eine Situation ein HowTo schreiben könnte? (Denn sicherlich betrifft das viele User.)
Aber sonst geht es dir gut? :eek: - Beschäftige dich mit iptables

Ernsthaft:
Das Thema iptables (Firewall unter Linux) kann man nicht in einem drei-Zeilen-HowTo abhandeln, da das Thema doch etwas komplex ist.
(außerdem beschleicht mich das Gefühl ... da möchte einer eine fertige Firewall geschrieben haben :rolleyes: ).

Es gibt bereits gute HowTos/Erläuterungen zu iptables:
https://knecht.homelinux.net/phpBB2/viewtopic.php?t=263
Inhaltsverzeichnis Online-Version Linux-Firewalls - Ein praktischer Einstieg, 2. Auflage
Harry's Linux-Seite
IP-Tables-Index
 

Rain_Maker

Administrator
Teammitglied
AW: Howto-Anfrage: Ports sperren/freigeben

Mal davon abgesehen, daß ein Paketfilter maximal eine _zusätzliche_ Maßnahme sein kann um einen Server abzusichern.

Was nicht läuft, kann nicht angegriffen werden, was erreichbar sein soll, kann ich nicht durch eine Firewall blocken, denn sonst wäre es nicht mehr erreichbar.

Ein Paktfilter ist in jedem Fall aber zusätzlicher Code und kann eben auch zusätzliche Fehler beinhalten (siehe KISS-Prinzip)

Je komplexer diese Firewall ist, desto mehr Fehler können darin enthalten sein und der psychologische Effekt des sich in (trügerischer) Sicherheit Wiegens, weil man ja eine Firewall hat, ist ebenfalls nicht zu unterschätzen.

Viel wichtiger sind solche Maßnahmen wie:

- unbenötigte Dienste abschalten

- benötigte Dienste sicher konfigurieren und unbenötigte Features der Dienste abschalten.

- Sicherheitspatches _zeitnah_ einspielen

- Logfiles _regelmässig_ kontrollieren

Der "übliche Adminkram" eben.

Greetz,

RM
 

dirtysanchez

New Member
AW: Howto-Anfrage: Ports sperren/freigeben

danke schonmal für die tipps.

@dienste abschalten.
das ja sowieso. der server führt ja wie gesagt nicht viele komplizierte netzwerkdienste aus, sondern dient lediglich als game- und teamspeak-server.

werde mir die themen zu den iptables ansehen...
 

dirtysanchez

New Member
AW: Howto-Anfrage: Ports sperren/freigeben

NACHTRAG:
Hallo nochmal!
Habe das Internet nach einem Grundgerüst für eine halbwegs funktionierende Port-Vergabe durchsucht.
Eins vorab: Ich möchte hier keinen mit diesem ellenlangen Code nerven, der dies nicht möchte.
Also: Bitte nur weiterlesen, wenn man Zeit und Lust hat, diesen langen Code zu durchforsten. :)

Folgender Code ist bei meiner Suche herausgekommen (Achtung, hiermit weise ich darauf hin, dass ich nicht Eigentümer/Autor dieses Codes bin. Ist jedoch komplett frei erhältlich.)

Code:
#!/bin/bash
# ---------------------------------------------------------------------
# Linux-iptables-Firewallskript, Copyright (c) 2007 under the GPL
# Autogenerated by iptables Generator v1.22 (c) 2002-2006 by Harald Bertram 
# Please visit http://harry.homelinux.org for new versions of
# the iptables Generator (c).
# 
# If you have questions about the iptables Generator or about
# your Firewall-Skript feel free to take a look at out website or
# send me an E-Mail to webmaster@harry.homelinux.org.
# 
# My special thanks are going to Lutz Heinrich (trinitywork at hotmail dot com)
# who made lots of Beta-Testing and gave me lots of well qualified
# Feedback that made me able to improve the iptables Generator.
# --------------------------------------------------------------------
#
#
#
# BEGIN INIT INFO
# Provides: IP-Paketfilter
# Required-Start: $network $local_fs
# Required-Stop: $local_fs
# Default-Start: 3 5
# Default-Stop: 0 1 2 4 6
# Short-Description: Harry's IP-Paketfilter
# Description: Harry's IP-Paketfilter provides reasonable
#      IP-Security for Home-Computers and small networks
#
# END INIT INFO
#
case "$1" in
  start)
echo "Starte IP-Paketfilter"
# iptables-Modul
    modprobe ip_tables
# Connection-Tracking-Module
    modprobe ip_conntrack
# Das Modul ip_conntrack_irc ist erst bei Kerneln >= 2.4.19 verfuegbar
    modprobe ip_conntrack_irc
    modprobe ip_conntrack_ftp
# Tabelle flushen
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    iptables -X
    iptables -t nat -X
    iptables -t mangle -X
# Default-Policies setzen
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP
# MY_REJECT-Chain
    iptables -N MY_REJECT
# MY_REJECT fuellen
    iptables -A MY_REJECT -p tcp -m limit --limit 7200/h -j LOG --log-prefix "REJECT TCP "
    iptables -A MY_REJECT -p tcp -j REJECT --reject-with tcp-reset
    iptables -A MY_REJECT -p udp -m limit --limit 7200/h -j LOG --log-prefix "REJECT UDP "
    iptables -A MY_REJECT -p udp -j REJECT --reject-with icmp-port-unreachable
    iptables -A MY_REJECT -p icmp -m limit --limit 7200/h -j LOG --log-prefix "DROP ICMP "
    iptables -A MY_REJECT -p icmp -j DROP
    iptables -A MY_REJECT -m limit --limit 7200/h -j LOG --log-prefix "REJECT OTHER "
    iptables -A MY_REJECT -j REJECT --reject-with icmp-proto-unreachable
# MY_DROP-Chain
    iptables -N MY_DROP
    iptables -A MY_DROP -m limit --limit 7200/h -j LOG --log-prefix "PORTSCAN DROP "
    iptables -A MY_DROP -j DROP
# Alle verworfenen Pakete protokollieren
    iptables -A INPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "INPUT INVALID "
    iptables -A OUTPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "OUTPUT INVALID "
# Korrupte Pakete zurueckweisen
    iptables -A INPUT -m state --state INVALID -j DROP
    iptables -A OUTPUT -m state --state INVALID -j DROP
# Stealth Scans etc. DROPpen
# Keine Flags gesetzt
   iptables -A INPUT -p tcp --tcp-flags ALL NONE -j MY_DROP
# SYN und FIN gesetzt
   iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP
# SYN und RST gleichzeitig gesetzt
    iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP
# FIN und RST gleichzeitig gesetzt
   iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP
# FIN ohne ACK
   iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP
# PSH ohne ACK
    iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP
# URG ohne ACK
    iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j MY_DROP
# Loopback-Netzwerk-Kommunikation zulassen
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT
# Connection-Tracking aktivieren
    iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# FTP
    iptables -A INPUT -i dsl1 -m state --state NEW,ESTABLISHED -p tcp --dport 21 -j ACCEPT
    iptables -A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -- ACCEPT
# SSH
    iptables -A INPUT -i dsl1 -m state --state NEW,ESTABLISHED -p tcp --dport 22 -j ACCEPT
# HALF-LIFE
    iptables -A INPUT -i dsl1 -m state --state NEW -p tcp --dport 6000:6003 -j ACCEPT
    iptables -A INPUT -i dsl1 -m state --state NEW -p tcp --dport 7001:7002 -j ACCEPT
    iptables -A INPUT -i dsl1 -m state --state NEW -p udp --dport 27005 -j ACCEPT
    iptables -A INPUT -i dsl1 -m state --state NEW -p udp --dport 27010 -j ACCEPT
    iptables -A INPUT -i dsl1 -m state --state NEW -p udp --dport 27015:27017 -j ACCEPT
# Default-Policies mit REJECT
    iptables -A INPUT -j MY_REJECT
    iptables -A OUTPUT -j MY_REJECT
# Max. 500/Sekunde (5/Jiffie) senden
    echo 5 > /proc/sys/net/ipv4/icmp_ratelimit
# Speicherallozierung und -timing für IP-De/-Fragmentierung
    echo 262144 > /proc/sys/net/ipv4/ipfrag_high_thresh
    echo 196608 > /proc/sys/net/ipv4/ipfrag_low_thresh
    echo 30 > /proc/sys/net/ipv4/ipfrag_time
# TCP-FIN-Timeout zum Schutz vor DoS-Attacken setzen
    echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
# Maximal 3 Antworten auf ein TCP-SYN
    echo 3 > /proc/sys/net/ipv4/tcp_retries1
# TCP-Pakete maximal 15x wiederholen
    echo 15 > /proc/sys/net/ipv4/tcp_retries2
    ;;
  stop)
    echo "Stoppe IP-Paketfilter"
# Tabelle flushen
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    iptables -X
    iptables -t nat -X
    iptables -t mangle -X
# Default-Policies setzen
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    ;;
  status)
    echo "Tabelle filter"
    iptables -L -vn
    echo "Tabelle nat"
    iptables -t nat -L -vn
    echo "Tabelle mangle"
    iptables -t mangle -L -vn
    ;;
    *)
    echo "Fehlerhafter Aufruf"
    echo "Syntax: $0 {start|stop|status}"
    exit 1
    ;;
    esac

Ich will jetzt nicht damit nerven, eine Korrektur des gesamten Scripts zu erbetteln, aber vielleicht fällt ja jemandem auf den ersten Blick ein Fehler auf.

Mich machen zum Beispiel die ersten Zeilen etwas stutzig, weil ich das Gefühl habe, das limitiert die Anzahl an Port-Anfragen pro Stunde. Das wäre bei einem Rootserver für Gameserver natürlich ungünstig.

Ein herzliches Dankeschön an alle, die sich die Zeit nehmen, das Script mal zu überfliegen.

PS: Doppelpost war leider nötig (bei einfachem editieren wäre der Thread nicht als Neu markiert). Sorry
 
Status
Für weitere Antworten geschlossen.
Oben