Iptable blocked alle 5 sek. cstrike server

Post Reply
Message
Author
Debian Lamp Noob

Iptable blocked alle 5 sek. cstrike server

#1 Post by Debian Lamp Noob »

Moin!
Ich betreibe einen Debian 4.0 Etch mit Iptable-Firewall auf einem Root.
Ich habe von den Tables nicht so viel schnall, habe es dank Harry Generator Seite erstellen lassen und es funktioniert soweit echt gut.

Zum Problem:
Ich starte bei mir einen Cstrike 1.6 Server und wenn wir drauf connecten, kommt es alle 5 sek. zu einem kurzen hänger im Spiel, deaktiviere ich die Firewall läuft es flüssig durch.
Auslastung kann es auch nicht sein, da System bei max. 0,08% Auslastung liegt.
Denke das der Traffic von einer der Sicherheitsroutinen blockiert wird.
Hier mal die cfg, vielleicht kann mir hier ja jemand was dazu sagen.
THX

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

# HTTP
#iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 80 -j ACCEPT

# HTTPS
#iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 443 -j ACCEPT

# FTP
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 9999 -j ACCEPT

# SSH
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 2222 -j ACCEPT

# HALF-LIFE
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 6000:6003 -j ACCEPT
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 7001:7002 -j ACCEPT
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 27005 -j ACCEPT
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 27010 -j ACCEPT
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 27015:27016 -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
______

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#2 Post by Janka »

Kommentier alle Zeilen mit "limit" drin aus. Weiter habe ich mir das jetzt nicht angeguckt -- es ist sinnlos, einen Generator zu benutzen, wenmn man den Output dann doch von Hand anfassen muss. Lies lieber die Doku!

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Debian Lamp Noob

#3 Post by Debian Lamp Noob »

Ok, limit, guter Ansatz, schau mir die Doku bestimmt noch an, hab nur leider am Tag max. ne std zeit, da muss ich das Ziel vor Augen haben und schauen wie weit man kommt.
Wenn es nicht um so ein wichtiges Thema wie Firewall gehen würde, hätte ich bestimmt nicht gepostet und mir stück für stück das Wissen angeeignet. Nur steht der Server leider und ohne Firewall ists mir nicht recht.
Danke für den Tipp, werd ich gleich mal testen, genau so einen Anhalt brauchte ich.
Also THX!
Gruß

Debian Lamp Noob

#4 Post by Debian Lamp Noob »

Fein fein, das sieht nun echt schon um einiges besser aus, guter Tipp Janka ;)
Es kommt vereinzelt noch zu harkern, gibt es nicht die Möglichleit das Limit und die anderen härteren abwehrmaßnahmen aktiv zu lassen und nur für das forwarding "HAlf Life" eine auskommentierung zu schreiben. Vielleicht hast da ja noch ne fixe Idee, ansonsten versuch ich mal am Wochenende mich genauer zu informieren.
Besten Dank, auch dafür nicht gleich dem Forum mit solchen noob Fragen verwiesen zu werden.

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#5 Post by Janka »

Wie schon geschrieben, an Generator-Output sollte man nicht rumfummeln. Bestenfalls erhält man etwas, das keine sichtbaren Fehler mehr enthält, aber nur selten das, was man eigentlich beabsichtigt. Was genau willst du mit den iptables-Regeln denn erreichen?

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Debian Lamp Noob

#6 Post by Debian Lamp Noob »

Hi Janka!
Also erreichen will ich maximale Sicherheit bei sehr schneller Verbindung, es darf zu keinen lags kommen, der Datendurchsatz ist natürlich auch noch wichtig (ist nen sehr dicker Root, 1gb Wan Schnittstelle). Ich finde das eingesetzte Table schon richtig gut, hat ja schon ne menge an Verteidigung auf Tasche. nur müßte ich dann solche sache wie meine HilfeLife Ports aus den Limit einträgen und was noch so stören könnte raus bekommen. Ich mach mir im prinzip dann 2 Sicherheitszonen. Es werden mal 2 Webserver, 2 CS Server, min. 1Teamspeak, OpenVPN Server, und FTP-Server drauf laufen. Dann mal sehen wie sich das mit der Leistung verhält. Schaffen tut der Root das auf alle fälle, nur die Firewall begrenzt das grad.
Gruß :wink:

noxxxx

Gleiches Problem mit lenny

#7 Post by noxxxx »

Ich habe exakt das gleiche Problem mit lenny.
Limit rules verwende ich nicht,
CS läuft in einem linux-vserver gast mit Kernel 2.6.22.18-vs2.2.0.6.
Hat noch irgendjemand einen anderen evt Debian spezifischen Ansatz (evt /proc settings)
Vserver relevante Probleme halte ich für weniger wahrscheinlich, allerdings war es mit einem kurzen test mit 2.6.20.4-vs2.2.0 nicht aufgefallen.

ops

#8 Post by ops »

nox du knauber!

Debian Lamp Noob

#9 Post by Debian Lamp Noob »

Moin nochmal!
Habe mich bis jetzt hauptsächlich um die Gamingserver gekümmert, es laufen aktuell 2 cs 1.6 Server, 1 Webserver, 1 FTP, 1 Teamspeak. Alles ohne Probs, Auslastung laut Webmin 0,3%-1% je nach Besucheranzahl.
Ein Problem gibt es noch nachdem ich alle "Limit" Einträge auskommentiert habe, wenn der Server länger als ca. 3 Tage läuft. Dann kommt es in den CS Servern zu Lags. Stoppe ich die Firewall läuft alles wieder 1a, bis zum Start der Firewall.
Reboote ich den Server ist alles wieder ca. 3 Tage stabil.

@noxxxx ohne Firewall habe ich noch keine einzige macke erlebt, denke das liegt wohl mehr an deinem VServer, versuch doch mal was Analyse mässiges mit loggen zu lassen...

Meine aktuelle config sieht wie folgt aus... , vielleicht hat ja noch jemand von euch ne Idee...

#!/bin/bash
# ---------------------------------------------------------------------
# Linux-iptables-Firewallskript, Copyright (c) 2008 under the GPL
# Autogenerated by iptables Generator v1.22 (c) 2002-2007 by Harald Bertram
# Please visit http://harry.homelinux.org for new versions of
# the iptables Generator (c).
#
# This Script was generated by request from:
#
#
# 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.
# --------------------------------------------------------------------

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

# HTTP
#iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 80 -j ACCEPT

# TS
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 8767 -j ACCEPT

# TS Administration TEMP
# iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport XXXX -j ACCEPT


# HTTP
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport XXXXX -j ACCEPT

# HTTPS
#iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport XXXX -j ACCEPT

# FTP
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport XXX:XXX -j ACCEPT
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport xxxxx:xxxxxxx -j ACCEPT


# SSH
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport xxxx -j ACCEPT

# HALF-LIFE
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 6000:6003 -j ACCEPT
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport 7001:7002 -j ACCEPT
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 27005 -j ACCEPT
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 27010 -j ACCEPT
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 27015:27020 -j ACCEPT

# OPENVPN_V2
iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport XXXX -j ACCEPT

# Webmin
iptables -A INPUT -i eth0 -m state --state NEW -p tcp --dport XXXX -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 (aufs 4fache hochgesetzt)
echo 120 > /proc/sys/net/ipv4/tcp_fin_timeout

# Maximal 3 Antworten auf ein TCP-SYN (aufs 4fache hochgesetzt)
echo 12 > /proc/sys/net/ipv4/tcp_retries1

# TCP-Pakete maximal 15x wiederholen (aufs 4fache hochgesetzt)
echo 60 > /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
Die Setiings die mit "aufs 4fache hochgesetzt" makiert sind, habe ich grade erst editiert und noch nicht getestet, werde hier die tage mal posten obs was gebracht hat...
Gruß

Post Reply