Diesmal für ein etwas sicherers Linux,
der vollständige Artikel ist auf BotTrap Wiki von Airport1, übrigens Danke für Deine guten Projekte und Arbeiten !
1. Verwende Syn-Cookies und du hast keine Probleme mit SYN-Attacken:
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
2. iptables, dort auffaellige Bereiche sperren,
z.B. mit CIDR Notation (ggf. apt-get install netmask .. mit netmask ipstart:ipend … gutes Umrechnungstool)
iptables -I INPUT -s 88.224.0.0/16 -j DROP # block 88.224.0.0 to 88.255.255.255 TTNet (TTnet Autonomous System)
3. ddos deflate v0.6 installieren von Medialayer Network- zaehlt wie oft eine ip gleichzeitig verbindungen aufbaut mittels netstat und
wenn über einen bestimmten Schwellwert werden diese geblockt.
Am besten als cron job jede minute aufrufen.
/usr/local/ddos … ddos.conf … wenn kein apf installiert apf=0 … connection limit z.b. 35 oder 50
DDOS Deflate v0.6 – v1.0 in Planung:
http://www.deflate.medialayer.com/old/∞ – Projektseite auf http://blog.medialayer.com/projects-ddos-deflate/∞
Script installiert sich in /usr/local/ddos/ und zaehlt Anzahl Verbindungen je IP,
wenn ueber Schwellwert werden diese per
APF oder iptables fuer bestimmte Zeit (alles in ddos.conf einstellen) gebannt
Config: ddos.conf bei NO_OF_CONNECTIONS=150 ruhig runter gehen auf 35, apf auf 0, falls nicht vorhanden
CRON: cronjob ggf. manuell einrichten */1 * * * * root pfad parameter …
IPTABLES
http://de.wikibooks.org/wiki/Linux-Kompendium:_Linux-Firewall_mit_IP-Tables∞
http://de.wikipedia.org/wiki/Netfilter/iptables∞
#Limit bietet Schutz vor “Syn-Flood-Attacken
iptables -A FORWARD -p tcp –syn -m limit –limit 1/s -j ACCEPT
Pakete bestimmter hosts/ranges wegschmeissen:
iptables -I INPUT -s 88.224.0.0/16 -j DROP # block 88.224.0.0 to 88.255.255.255 TTNet (TTnet Autonomous System)
iptables -I INPUT -s 85.0.0.0/8 -j DROP
iptables -I INPUT -s 88.0.0.0/8 -j DROP
–michael bonge–
mit hilfe von iptables könnt ihr ein paar Sachen festlegen,
wie z.b die max connections pro IP beschränken auf z.b. 10
und ihr könnt mit hilfe von iptables packet verwerfen welche
sich nicht an den korrekten Aufbau einer TCP Verbindung halten z.B:
# alle TCP-Sessions müssen mit einem SYN beginnen, sonst werden sie verworfen
$iptables -A INPUT -p tcp ! –syn -m state –state NEW -j LOG –log-prefix “Stealth Scan”
$iptables -A INPUT -p tcp ! –syn -m state –state NEW -j DROP
# ungewöhnliche Flags verwerfen
$iptables -A INPUT -p tcp –tcp-flags ALL FIN,URG,PSH -j DROP
$iptables -A INPUT -p tcp –tcp-flags ALL ALL -j DROP
$iptables -A INPUT -p tcp –tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
$iptables -A INPUT -p tcp –tcp-flags ALL NONE -j DROP
$iptables -A INPUT -p tcp –tcp-flags SYN,RST SYN,RST -j DROP
$iptables -A INPUT -p tcp –tcp-flags SYN,FIN SYN,FIN -j DROP
# SYN-Flood-Schutz
$iptables -N syn-flood
$iptables -A INPUT -p tcp –syn -j syn-flood
$iptables -A syn-flood -m limit –limit 1/s –limit-burst 4 -j RETURN
$iptables -A syn-flood -j DROP
# Setzt die MMS (Maximum Segment Size) auf weniger 40Bytes für SYN,RST SYN Packete
$iptables -A FORWARD -p tcp –tcp-flags SYN,RST SYN -j TCPMSS –clamp-mss-to-pmtu
# max. 10 neue Verbindungen in 5 Sekunden pro Quelladresse erlauben, nimmt man meistens für SSH
$iptables -N tcp_packets
$iptables -A tcp_packets -p TCP -i $wan_iface –dport 22 -m state –state NEW -m recent –set
$iptables -A tcp_packets -p TCP -i $wan_iface –dport 22 -m state –state NEW -m recent –update –seconds 5 –hitcount 10 -j DROP
$iptables -A tcp_packets -p TCP -i $wan_iface –dport 22 -j ACCEPT
oder
# limitiert die Anzahl von HTTP-Verbindungen einer IP-Adresse auf vier Verbindungen
iptables -A INPUT -p tcp –dport 80 -m iplimit –iplimit-above 4 -j REJECT
Es gibt noch weiter Möglichkeiten, musst ihr einfach mal suchen ..
–michael bonge–
SYN Cookies
syn wiki
Größe der Backlog-Queue anpassen,
je nach Hardware. Standard 1024 offene SYN_RECV’s, z.B. auf 256:
echo 1024 > /proc/sys/net/ipv4/tcp_max_syn_backlog
Syn Packets Straffung:
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time
PDFs zu SYN Flood DDOS bei http://www.computec.ch/download.php?list.7∞ durcharbeiten
IP-Netze nach Ländern, fertig für die .htaccess habe ich unter http://tools.sistrix.com/co/∞
http://www.computerwelt.at/detailArticle.asp?n=4&a=84752∞
http://www.greengatelabs.at/∞
http://wiki.hping.org/109∞
http://virus-protect.org/synflood.html∞
http://www.cback.de∞ (???)
tuerkei komplett sperren
http://www.abakus-internet-marketing.de/foren/viewtopic.php?t=31506&highlight=t%FCrkei+aussperren∞
Achja, das ist auch eine gute Resource als Basis für IPTables Firewalls:
http://www.rfxnetworks.com/apf.php∞
http://www.rfxnetworks.com/apf/README∞
http://www.linuxsecurity.com/content/view/124633/177/∞
http://www.heise.de/security/artikel/43066/0∞
in der apache2.conf
SetHandler perl-script
PerlHandler Apache::PRout
Order Deny,Allow
Deny from 85.
Deny from 88.
<-- nicht garantiert, bessere loesung gesucht, evtl Container besser
Order Deny,Allow
Deny from 85.
Deny from 88.
KeepAlive OFF setzen:
Bei mir /etc/apache2/apache2.conf folgendes suchen:
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to “Off” to deactivate.
KeepAlive On
Ändern auf
KeepAlive Off
Auf die Weise bricht der Apache offene Anfragen einfach ab…. und die Last fällt wieder
.htaccess im Hauptverzeichnis – gilt fuer alle Unterverzeichnisse
Order Deny,Allow
deny from 192.168
APF
APF ist eine Abstraktionslayer zum einfachen konfigurieren von Netfilter via IPTables.
APF enthält schlicht bekannte Schalterchen und Drehknöpfe um verschiedenen Angriffsmustern den Hahn etwas abzudrehen.
Es hängt halt viel von dem auf RH verwendeten Linux ab, ob synflood protection schon an ist (Debian std.) usw.
APF (http://www.rfxnetworks.com/apf.php∞) legt halt viele Hebel schon mal richtig
OK, ihr könntet folgende 2 Programme noch zusätzlich installieren:
http://www.ossec.net/∞
und
http://sourceforge.net/projects/sentrytools/∞
Beides zusammen schafft auch noch mal einiges ins reine.
Im Anhang auch noch einiges zum Thema.
Und wenn nix mehr hilft dann:
Sperren einer einzelnen “bösen” IP-Adresse bzw. eines Netzblocks
per iptables-Filter lässt sich leicht eine einzelne IP-Adresse blocken: von Nick und Deltaflyer aus dem Forum
iptables -I INPUT -s böse_IP -j DROP
Es kann auch ein ganzer IP-Adressbereich geblockt werden, z.B.
iptables -I INPUT -s 213.133.99.0/24 -j DROP
Das Blockieren macht bei dynamischen Einwahl-IP’s des Angreifers/Störers natürlich wenig Sinn.
Schalte doch einfach vor deinen Server (oder machst es auf Softwarebasis) einen Router die diese Pakete ausfiltert.
Ein Text dazu: http://www.heise.de/security/artikel/43066∞
Ich weiß ja nicht, wo ihr eure Seiten hostet, aber wenn ihr einen Rootserver habt, könnt ihr Einstellungen vornehmen, wenn nicht muß euer Provider irgendwas machen.
Eine kurze Recherche im ergab diese Seite:
http://cr.yp.to/syncookies.html∞ (link von der wikipedia).
Interssant ist eigendlich dies hier:
SYN cookies are now a standard part of Linux and FreeBSD.
They are, unfortunately, not enabled by default under Linux. To enable them, add
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
to your boot scripts.