PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [IPtables] gegen (D)DoS o.ä...



Hu5eL
27.08.2008, 10:22
Hallo, ich hoffe ich spreche ein Thema an, was viele Root- (oder Virtual-)Server besitzer betrifft.., es geht um iptables.

Gibt es eine gute Regel gegen (D)DoS?
Wie handhabt ihr aktiv und passives FTP in euerer "Firewall"?

Oder habt ihr sonst allgemein nützliche Infos?!

dylan
23.09.2008, 20:01
ich weiß zwar auch nicht mehr den richtigen befehl, aber man kann es recht bequem einstellen das eine ip nicht mehr als eine bestimmte anzahl an verbindungen offen haben darf und des es nur eine bestimmte anzahl an verbindungsversuche in einer bestimmten zeit angenommen werden, sonst gehts direkt in dev0 und stört nicht mehr so wirklich, ausser das bissl bandbreite durch traffic flöten geht

Trii
23.09.2008, 20:11
Du kannst _nichts_ gegen DDoS machen!
Es kommt immer auf die Anzahl der floodenden Bots an .. also wie groß das Netz ist.

H4x0r007
23.09.2008, 20:21
Du kannst _nichts_ gegen DDoS machen!
Doch... Du kaufst dir eine 2x so gute Leitung wie Rapidshare hat und da kommts auf die paar Gigabits die da verloren gehen gar nicht mehr an...

b2t: Gegen wenig Bots (ca. 400-700) kannst du schon was machen mit iptables. Am besten ist es, dass du nur die Protokolle und Ports erlaubst, die du auch wirklich brauchst. Wenn du alle anderen Pakete verwirfst, bist du schonmal gegen Syn-Attacken geschützt, was nicht heißt, dass die Leitung nicht verstopft werden kann durch die hohe Menge an Anfragen.


Wie handhabt ihr aktiv und passives FTP in euerer "Firewall"?

Bitte benutze kein FTP! Wenn dann SFTP!
(Da im FTP-Protokoll deine Zugangsdaten unverschlüsselt übertragen werden und dass ist auch nicht unbedingt das gelbe vom Ei)

echoslider
24.09.2008, 09:32
Doch... Du kaufst dir eine 2x so gute Leitung wie Rapidshare hat und da kommts auf die paar Gigabits die da verloren gehen gar nicht mehr an...

lol witzpille.


gegen dos gibts nur nen schutz. komplett alles sperren. was rein und was raus geht. und dann gezielt das freigeben was du brauchst. für regeln die falsche pakete oder so droppen hab ich auch länger gesucht.



# Tabelle flushen
sudo iptables -F
sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -X
sudo iptables -t nat -X
sudo iptables -t mangle -X

# Default-Policies setzen
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -t nat -P PREROUTING ACCEPT
sudo iptables -t nat -P POSTROUTING ACCEPT
sudo iptables -t nat -P OUTPUT ACCEPT
sudo iptables -t mangle -P PREROUTING ACCEPT
sudo iptables -t mangle -P OUTPUT ACCEPT
sudo iptables -t mangle -P FORWARD ACCEPT
sudo iptables -t mangle -P INPUT ACCEPT
sudo iptables -t mangle -P POSTROUTING ACCEPT


# Loopback-Netzwerk-Kommunikation und LAN zulassen
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

# Setzt die MMS (Maximum Segment Size) auf weniger 40Bytes für SYN,RST SYN Packete
sudo iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

#TCP-SYN-Pakete ohne Status NEW droppen
sudo iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# Korrupte Pakete zurückweisen
sudo iptables -A INPUT -m state --state INVALID -j DROP
sudo iptables -A OUTPUT -m state --state INVALID -j DROP

# falsche gesendete pakete
sudo iptables -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j DROP

#Limiting the incoming icmp ping request:
sudo iptables -A INPUT -p icmp -m limit --limit 1/s --limit-burst 1 -j ACCEPT

# ping
sudo iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
#sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT #
sudo iptables -A INPUT -p icmp -j DROP
sudo iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
#sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT #
sudo iptables -A OUTPUT -p icmp -j DROP

#ping of death
sudo iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

#connection tracking/passive connection
sudo iptables -A OUTPUT -p tcp --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A OUTPUT -p udp --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p udp --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#ssh brutefoce schutz
sudo iptables -A INPUT -p tcp --sport $sshport -m state --state NEW -m recent --set --name SSH -j ACCEPT
sudo iptables -A INPUT -p tcp --sport $sshport -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j ULOG --ulog-prefix SSH_brute_force
sudo iptables -A INPUT -p tcp --sport $sshport -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j DROP

#synflood
sudo iptables -A INPUT -m state --state NEW -p tcp -m tcp --syn -m recent --name synflood --set
sudo iptables -A INPUT -m state --state NEW -p tcp -m tcp --syn -m recent --name synflood --update --seconds 1 --hitcount 60 -j DROP

# portscanner
sudo iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -m limit --limit 7200/h -j LOG --log-prefix "PORTSCAN DROP: " --log-level 6
sudo iptables -A INPUT -p tcp --tcp-flags ALL ALL -m limit --limit 7200/h -j LOG --log-prefix "PORTSCAN DROP: " --log-level 6
sudo iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -m limit --limit 7200/h -j LOG --log-prefix "PORTSCAN DROP: " --log-level 6
sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -m limit --limit 7200/h -j LOG --log-prefix "PORTSCAN DROP: " --log-level 6
sudo iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -m limit --limit 7200/h -j LOG --log-prefix "PORTSCAN DROP: " --log-level 6
sudo iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -m limit --limit 7200/h -j LOG --log-prefix "PORTSCAN DROP: " --log-level 6
sudo iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -m limit --limit 7200/h -j LOG --log-prefix "PORTSCAN DROP: " --log-level 6
sudo iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -m limit --limit 7200/h -j LOG --log-prefix "PORTSCAN DROP: " --log-level 6
sudo iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -m limit --limit 7200/h -j LOG --log-prefix "PORTSCAN DROP: " --log-level 6
sudo iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP
sudo iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP
sudo iptables -A FORWARD -p tcp --tcp-flags ALL NONE -m limit --limit 1/h -j ACCEPT
sudo iptables -A FORWARD -p tcp --tcp-flags ALL ALL -m limit --limit 1/h -j ACCEPT
sudo iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
sudo iptables -A INPUT -m recent --name portscan --rcheck --seconds 86400 -j DROP
sudo iptables -A FORWARD -m recent --name portscan --rcheck --seconds 86400 -j DROP
sudo iptables -A INPUT -m recent --name portscan --remove
sudo iptables -A FORWARD -m recent --name portscan --remove

# Schutz vor IP-Spoofing aktivieren
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $f
done


#maximal 20 verbindungen in einer minute erlauben
#sudo iptables -A INPUT -j LOG --log-prefix "ACCESS LIMIT: " --log-level 6 -m limit --limit 20/m
#sudo iptables -A INPUT -m limit --limit 20/m -j DROP

# max. 3 neue Verbindungen in 5 Sekunden pro Quelladresse erlauben
sudo iptables -A INPUT -m state --state NEW -m recent --set
sudo iptables -A INPUT -m state --state NEW -m recent --update --seconds 5 --hitcount 3 -j DROP

# 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

# 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

# ICMP Dead Error Messages protection.
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

# TCP-FIN-Timeout zum Schutz vor DoS-Attacken setzen
echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time
echo 0 > /proc/sys/net/ipv4/tcp_window_scaling
echo 0 > /proc/sys/net/ipv4/tcp_sack
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

# Required to enable IPv4 forwarding.
echo "1" > /proc/sys/net/ipv4/ip_forward

# This enables dynamic address hacking.
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

# This enables SYN flood protection.
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

# Ping flood protection
echo 1 > /proc/sys/net/ipv4/icmp_ratelimit

# This enables source validation by reversed path according to RFC1812.
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter

# This option allows a subnet to be firewalled with a single IP address.
echo "1" > /proc/sys/net/ipv4/conf/all/proxy_arp

# This kernel parameter instructs the kernel to ignore all ICMP
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# This option can be used to accept or refuse source routed
echo "0" > /proc/sys/net/ipv4/conf/all/accept_source_route

# This option can disable ICMP redirects. ICMP redirects
echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects

# Reverse-Path-Filter
echo "2" > /proc/sys/net/ipv4/conf/all/rp_filter

# Proxy-ARP ausschalten
echo "0" > /proc/sys/net/ipv4/conf/all/proxy_arp

# This option accepts only from gateways in the default gateways list.
echo "1" > /proc/sys/net/ipv4/conf/all/secure_redirects

# This option logs packets from impossible addresses.
echo "1" > /proc/sys/net/ipv4/conf/all/log_martians

# BOOTP-Relaying ausschalten
echo 0 > /proc/sys/net/ipv4/conf/all/bootp_relay




hab ich mal aus meiner fw zusammengewürfelt.



das problem ist bei ddos. das ein einziger bot so geringe bedrohung verursacht das es die firewall nicht interessiert. aber die firewall betrachtet ur einselne verbindungen. nie alle verbindungen gleichzeitig. und aus vielen kleinen störungen wird halt eine gewaltig große..