Suche zusammenfassung von Iptablesregeln gegen bekannte Angriffe

Dieses Thema im Forum "Firewalls" wurde erstellt von sono, 18.10.2005.

  1. sono

    sono Sack Flöhe Hüter

    Dabei seit:
    31.01.2004
    Beiträge:
    1.299
    Zustimmungen:
    0
    Ort:
    http://webfrap.de
    Ich hab diese Frage schon auf nem anderen Board gestellt , aber da dort die letzen Tage nichts passiert ist versuche ich es mal ob hier jemand sowas kennt .

    Ich beschäftige mich zur Zeit ein wenig mit IP Tables , und mittlerweile habe ich auch einige Dokumentationen dazu gelesen und viele Scripte haben ( als sozusagen Schmanckerl ) ein bis 2 Reglen zum blocken bekannter Angriffe , abschächen von ddos , erkennen und abschwächen von synflooding , anti spoofing , nmap erkennen usw .

    In der Tat könnte ich natürlich einiges einfach über die Policies blocken und nur die notwendigsten Sachen erlauben , ( Hab ich im letzten Tread dieser Art hier im Forum gelsesen => Boardsuche verwendet :-) ) aber da fehlt mir erstens etwas der kick und 2tens würde ich diese Angriffe / Übergriffe oder was auch immer gerne mitloggen.

    Wie schon erwähnt habe ich bereits einiges zu dem Thema gefunden aber das ist quasi zusammengestückelt aus 20 scripten diversen Googelabfragen und 3 Tutorials und für meinen geschmack einfach ein wenig mickrig im Vergleich dazu was es alles gibt .
    Ich bekomme zwar immer mal wieder was neues zu Gesicht aber sehr effektiv ist diese Art der Suche wohl nicht .

    ( Ja Snort wäre teilweise besser geeignet , aber wäre nur ein zusätzlicher angreifbarer Dienst denn ich nicht auf meiner Firewall zum Internet haben möchte ).

    Hat sich schonmal jemand mit dem Thema beschäftigt und vor allem eine Seite oder eine Dokumentation gefunden die sich spezielle mit Angriffstechniken und deren erkennen ( loggen ) und blocken per Iptables beschäftigt ?

    ( Ich suche wirklich was was speziell einzellne Angriffe behandelt, nicht ein allgemeines Tutorial für Iptables , da hab ich mittlerweile einige 100 Seiten vo n durch )

    Gruß Sono
     
  2. Anzeige

    Schau dir mal diesen Ratgeber an. Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 lordlamer, 18.10.2005
    lordlamer

    lordlamer Haudegen

    Dabei seit:
    15.05.2003
    Beiträge:
    703
    Zustimmungen:
    0
    Ort:
    hamburg
    hi

    nicht ganz was du suchst aber vielleicht auch erwähnenswert in diesem zuge.

    in debian sid gibts ein packet fail2ban. das hilft gegen ssh brutforceattacken. einfach installiert und konfiguriert. funktioniert bei mir auch wunderbar unter debian stable. einfach erstklassig.

    es blockt nach einer gegebenen anzahl von fehlversuchen beim sshdienst die ip für eine gewisse zeit.

    einfach mal angucken.

    mfg frank
     
  4. sono

    sono Sack Flöhe Hüter

    Dabei seit:
    31.01.2004
    Beiträge:
    1.299
    Zustimmungen:
    0
    Ort:
    http://webfrap.de
    :D

    Aber danke .
     
  5. theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    Hier ein Beispiel fuer ein einfaches aber recht effektives Firewall-Script eines Routers:

    Code:
    #!/bin/bash
    
    echo "Starting firewall"
    
    LOGLIMIT=20
    IPTABLES=/sbin/iptables
    
    case "$1" in
    start)
            # alle alten Regeln entfernen
            echo "Loesche alte Regeln"
            $IPTABLES -F
            $IPTABLES -X
            $IPTABLES -t nat -F
            # Routing
            echo 1 > /proc/sys/net/ipv4/ip_forward
            $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
            $IPTABLES -t nat -A POSTROUTING -o eth1 -j MASQUERADE
            ### ERSTELLE NEUE KETTEN ###
            # Chain to log and reject a port by ICMP port unreachable
            $IPTABLES -N LOGREJECT
            $IPTABLES -A LOGREJECT -m limit --limit $LOGLIMIT/minute -j LOG --log-prefix "FIREWALL REJECT " --log-level notice --log-ip-options --log-tcp-options
            $IPTABLES -A LOGREJECT -j REJECT --reject-with icmp-port-unreachable
    
            ### PROC MANIPULATION ###
            # auf Broadcast-Pings nicht antworten
            echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
            # halt die Klappe bei komischen ICMP Nachrichten
            echo 0 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
            # Kicke den ganzen IP Spoofing Shit
            # (Source-Validierung anschalten)
            echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
            # Setze Default-TTL auf 61 (Default fuer Linux ist 64)
            echo 61 > /proc/sys/net/ipv4/ip_default_ttl
            # sende RST-Pakete wenn der Buffer voll ist
            echo 1 > /proc/sys/net/ipv4/tcp_abort_on_overflow
            # warte max. 30 secs auf ein FIN/ACK
            echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
            # unterbreche Verbindungsaufbau nach 3 SYN-Paketen
            # Default ist 6
            echo 3 > /proc/sys/net/ipv4/tcp_syn_retries
            # unterbreche Verbindungsaufbau nach 3 SYN/ACK-Paketen
            # Default ist 6
            echo 3 > /proc/sys/net/ipv4/tcp_synack_retries
    
            ### MAIN PART ###
            $IPTABLES -P INPUT DROP
            $IPTABLES -P FORWARD DROP
            $IPTABLES -P OUTPUT ACCEPT
            $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
            $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
            # im Loopback koennen wir jedem trauen
            $IPTABLES -A INPUT -i lo -j ACCEPT
            # ebenso im LAN
            $IPTABLES -A INPUT -i eth0 -j ACCEPT
            # erlaube Pings
            $IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
            # erlaube SSH
            $IPTABLES -A INPUT -p tcp --dport 22 --tcp-flags ALL SYN -j ACCEPT
            $IPTABLES -t nat -A POSTROUTING -s 192.168.0.1 -o eth0 -j SNAT --to-source 123.123.123.123
            $IPTABLES -t nat -A PREROUTING -i eth0 -d 123.123.123.123 -j DNAT --to-destination 192.168.0.1
            # Alle TCP Packete, die bis hier hin kommen, werden
            # geloggt und rejected
            # Der Rest wird eh per Default Policy gedroppt...
            $IPTABLES -A INPUT -p tcp -j LOGREJECT
            $IPTABLES -A FORWARD -p tcp -j LOGREJECT
            ;;
    *)
            echo "Usage: `basename $0` {start}" >&2
            exit 64
            ;;
    esac
    
    Die proc-Manipulation kann von System zu System leicht variieren. Ich hoffe, dass die Kommentare ausreichen, was nicht kommentiert ist, sollte eigentlich klar sein.
     
  6. sono

    sono Sack Flöhe Hüter

    Dabei seit:
    31.01.2004
    Beiträge:
    1.299
    Zustimmungen:
    0
    Ort:
    http://webfrap.de
    Hi , danke für dein Script , bei den Proc Einstellungen war was dabei was ich noch nicht kannte .

    Vielleicht interessiert es dich was ich bis jetzt da so habe.

    Code:
    # Modul zum sicheren Konfigurieren des /proc Systems
    procinit(){
    
    	# Wollen wir überhaupt ICMP Traffic ?
    	if [ $BLOCK_ICPM == "1" ]; then
    		echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
    	else
    		echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all
    	fi
    
    	# Sollen wir ICPM Redirects Akzeptieren ?
    	if [ $ICMP_REDIRECT == "1" ]; then
        	echo "1" > /proc/sys/net/ipv4/conf/all/accept_redirects
      	else
       	 echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
    	fi
    
    
    	# Synfloodprotection mit Syncookies ?
    	if [ -f /proc/sys/net/ipv4/tcp_syncookies ]; then
    			if [ $SYN_COOKIE == 1 ]; then
    					echo "1" > /proc/sys/net/ipv4/tcp_syncookies
    			else
    					echo "0" > /proc/sys/net/ipv4/tcp_syncookies
    			fi
    	fi
    
    	# Reagieren wir auf Broadcasts ?
    	if [ -f /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts ]; then
    			if [ $IGNORE_BROADCASTS == 1 ]; then
    					echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
    			else
    					echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
    			fi
    	fi
    
    	# Wollen wir nicht routbare IPS droppen ? (Spoofing Protection)
    	if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
    		for nam in /proc/sys/net/ipv4/conf/*/rp_filter; do
    			if [ $IGNORE_ROUTEABLE == "1" ]; then
    			echo "1" > $nam
    			else
    			echo "0" > $nam
    			fi
    		done
    	fi
    
    	# DoS Prävention durch frisieren der Timeouts
      	if [ $TUNE_TIMEOUTS == "1" ]; then
        	echo "15" > /proc/sys/net/ipv4/tcp_fin_timeout
        	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
    		# 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
      	fi
    
    	# Hallo ich bin Windows XP mit einer checkpoint-firewall 
      	if [ $FAKE_WINXP == "1" ]; then
    		echo "8738140" > /net/core/rmem_max
    		echo "8738140" > /net/core/wmem_max
    		echo "4096 873814 8738140" > /net/ipv4/tcp_rmem
    		echo "4096 873814 8738140" > /net/ipv4/tcp_wmem
    	fi
    
    	# Protokolliere Pakete mit unmöglichen IPv4-Adressen
    	if [ $LOG_MARTIANS == "1" ]; then
    		echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
    	else
    		echo "0" > /proc/sys/net/ipv4/conf/all/log_martians
    	fi
    
    	# Prüfen auf Netzwerküberlastung (Explicit Congestion Notification)
      	if [ -e /proc/sys/net/ipv4/tcp_ecn ]; then
        	if [ $ECN == "1" ]; then
          	echo "1" > /proc/sys/net/ipv4/tcp_ecn
        	else
          	echo "0" > /proc/sys/net/ipv4/tcp_ecn
        	fi
      	fi
    
    	# Dem Kernel mitteilen das wir eine Dynamische IP haben
      	if [ $DHCPIP == "1" ]; then
        	echo "1" > /proc/sys/net/ipv4/ip_dynaddr
      	else
        	echo "0" > /proc/sys/net/ipv4/ip_dynaddr
      	fi
    
      	# Die Maximale Anzahl an Connections die gehalten werden können
    	# Ist ein wenig Tricky da dieses Modul wohl an 2 Stellen sein könnte !
    	if [ ! -f /proc/sys/net/ipv4/ip_conntrack_max ] && [ ! -f /proc/sys/net/ipv4/netfilter/ip_conntrack_max ] ; then
    		echo -e "\033[1;31mWARNUNG: ip_conntrack_max Konnte nicht gefunden werden!\033[0m"
    	else
    		# Default location for ip_conntrack_max
    		if [ -f /proc/sys/net/ipv4/ip_conntrack_max ]; then
    			if [ $MAX_CON != "" ]; then
    			echo "$MAX_CON" > /proc/sys/net/ipv4/ip_conntrack_max
    			else
    			echo "4096" > /proc/sys/net/ipv4/ip_conntrack_max
    			fi
    		fi
    
    		# Alternate location for ip_conntrack_max
    		if [ -f /proc/sys/net/ipv4/netfilter/ip_conntrack_max ]; then
    			if [ $MAX_CON != "" ]; then
    			echo "$MAX_CON" > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
    			else
    			echo "4096" > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
    			fi
    		fi
    	fi
    
    	# IP forwarding aktivieren (Sind wir ein Router ?)
      	if [ $IP_FORWARDING == "1" ]; then
        	if [ -e /proc/sys/net/ipv4/ip_forward ]; then
          	echo "1" > /proc/sys/net/ipv4/ip_forward
         	fi
      	else
        	if [ -e /proc/sys/net/ipv4/ip_forward ]; then
         	 	echo "0" > /proc/sys/net/ipv4/ip_forward
        	fi
      	fi
    
    	# Abschalten des UDP Patches
      	if [ -e /proc/sys/net/ipv4/ip_masq_udp_dloose ]; then
        	if [ $LOOSE_UDPP == "1" ]; then
          	echo "1" > /proc/sys/net/ipv4/ip_masq_udp_dloose
        	else
          	echo "0" > /proc/sys/net/ipv4/ip_masq_udp_dloose
        	fi
      	fi
    
    	# TIME TO LIFE wie lange geistert das Packet durchs Netzwerk
      	if [ -e /proc/sys/net/ipv4/ip_default_ttl ]; then
    		if [$TTL != ""]; then
        		echo $TTL > /proc/sys/net/ipv4/ip_default_ttl
    		else
    			echo "64" > /proc/sys/net/ipv4/ip_default_ttl
    		fi
      	fi
    
    #
    ## Ab hier die Einträge die nicht in der Conf stehen
    #
    
    	# Unterbinden des auslesens der Uptime
      	if [ -e /net/ipv4/tcp_timestamps ]; then
        	echo "0" > /net/ipv4/tcp_timestamps
      	fi
    
    	# Ändere Portbereich für ausgehende Pakete
      	if [ -e /proc/sys/net/ipv4/ip_local_port_range ]; then
        	echo "30000 60000" > /proc/sys/net/ipv4/ip_local_port_range
      	fi
    
      	#Verlangsamt ICMP bei zu vielen Paketen
      	if [ -e /proc/sys/net/ipv4/icmp_ratelimit ]; then
        	echo "5" >/proc/sys/net/ipv4/icmp_ratelimit
      	fi
    
    	# Die default Schlangenlänge verdoppeln
      	if [ -e /proc/sys/net/ipv4/ipv4/ip_queue_maxlen ]; then
        	echo "2048" > /proc/sys/net/ipv4/ip_queue_maxlen
    	fi
    
    	# Antworten auf unsinnige Fehlermeldungen ignorieren
    	if [ -e /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses ]; then
    		echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
    	fi
    
    	# Automatisches defragmentieren von IP Fragmenten
    	if [ -e /proc/sys/net/ipv4/ip_always_defrag ]; then
    		echo "1" > /proc/sys/net/ipv4/ip_always_defrag
    	fi
    
    	# ICMP send_redirect für jedes Interface deaktivieren
    	if [ -e /proc/sys/net/ipv4/conf/all/send_redirects ]; then
    		for interface in /proc/sys/net/ipv4/conf/*/send_redirects; do
    			echo "0" > $interface
    		done
    	fi
    
    	# routed packets werde nicht akzeptiert !
     	if [ -e /proc/sys/net/ipv4/conf/all/accept_source_route ]; then
        	for interface in /proc/sys/net/ipv4/conf/*/accept_source_route; do
          	echo "0" > $interface
        	done
      	fi
    
    	#Killt Pakete aus dem Adressraum 0.X.X.X
     	if [ -e /proc/sys/net/ipv4/conf/all/accept_source_route ]; then
        	for interface in /proc/sys/net/ipv4/conf/*/bootp_relay; do
          	echo "0" > $interface
        	done
      	fi
    
      	# Keine ICMP-Redirects akzeptieren. Diese Packete könnten die Kernel Routing-Einstellungen
    	# ändern.
     	if [ -e /proc/sys/net/ipv4/conf/all/accept_source_route ]; then
        	for interface in /proc/sys/net/ipv4/conf/*/accept_redirects; do
          	echo "0" > $interface
        	done
      	fi
    
    }
    
    
    Die Varibalen kommen aus nen Konfigurationsfile, ich denke mal die kann jeder dann selbst wo setzten.

    Kennt ihr sonst Sinnvolle Einstellungen in Proc die von diesem und dem letzen Post nicht abgedeckt wurden ?

    ( Ich glaube wenn ich Fertig bin muss ich die Hardware der Firewall updaten weil das Script von der Größe nicht mehr auf die Platte passt oder so . )
     
  7. theton

    theton Bitmuncher

    Dabei seit:
    27.05.2004
    Beiträge:
    4.820
    Zustimmungen:
    0
    Ort:
    Berlin, Germany
    Daran das Ganze von Variablen abhaengig zu machen hab ich noch garnicht gedacht, steigert natuerlich die Wiederverwendbarkeit des Skripts enorm und der "Durchschnittsuser" kann dann problemlos Aenderungen machen. Danke fuer den Hinweis. :)
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. sono

    sono Sack Flöhe Hüter

    Dabei seit:
    31.01.2004
    Beiträge:
    1.299
    Zustimmungen:
    0
    Ort:
    http://webfrap.de
    Jo , ist so ne schlecht Angewohnheit aus jedem kleinen Script ein Zigtausendzeiler mit eigener Conf zu bauen .
    Aber dafür brauch ich das ganze dann nur einmal zu schreiben und kann auf jedem anderen Rechner nur noch die conf manipulieren und gut .

    Freut mich wenn ich dir eine kleine Anregung geben konnte .

    Gruß Sono
     
  10. Gronau

    Gronau Doppel-As

    Dabei seit:
    28.02.2004
    Beiträge:
    113
    Zustimmungen:
    0
    Das Buch "iptables kurz & gut" von o´reilly finde ich sehr praktisch, sozusagen als referenz.
     
Thema:

Suche zusammenfassung von Iptablesregeln gegen bekannte Angriffe

Die Seite wird geladen...

Suche zusammenfassung von Iptablesregeln gegen bekannte Angriffe - Ähnliche Themen

  1. Shell-Skript Datum in einer Datai suchen

    Shell-Skript Datum in einer Datai suchen: Hallo zusammen Ich komm eigentlich aus der Klicki-Bunti-Welt von Windows. Seit geraumer Zeit versuche ich meine Künste mit verschiedenen...
  2. [Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter

    [Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter: Hallo zusammen, ich bin an einem Punkt angekommen, wo ich nicht mehr weiter komme und hoffe ihr könnt mir weiter helfen. Anbei ein Ausschnitt aus...
  3. Funktionssuche in C: Emacs oder Vim?

    Funktionssuche in C: Emacs oder Vim?: Hallo, ich muss mir häufig C-Projekte angucken, und dann suche ich bspw., wo eine aufgerufene Funkion definiert oder deklariert (Header) wird....
  4. Artikel: Suche und Analyse in Echtzeit mit Elasticsearch und dem Elastic Stack

    Artikel: Suche und Analyse in Echtzeit mit Elasticsearch und dem Elastic Stack: Mit dem Elastic Stack kann man in Echtzeit die wichtigen Informationen aus jedem Datensatz herauslesen, ungeachtet seiner Größe. Dieser Artikel...
  5. Dansguardian blockt nur Websuche und nicht die Bidlersuche - verzweifelt!

    Dansguardian blockt nur Websuche und nicht die Bidlersuche - verzweifelt!: Hallo liebe Gemeinde, ich habe dansguardian, Squid und Clamav installiert auf einem Ubuntu 14.04 LTS System, der benutzte Browser ist Firefox, in...