NetVision-Technik

Zur?ck   NetVision-Technik > Forum > Server > Webserver > Security

Security Hier kommen alle Fragen und Lösungen zur Sicherheit und zu Fixes am Serversystem rein

Antwort
 
Themen-Optionen Ansicht
Alt 04.04.2013, 12:52   #1
Script für iptables
Cerberus Cerberus ist gerade online 04.04.2013, 12:52

Aus gegebenem Anlass habe ich mal ein kleines Script gebaut, mit welchem man aus den Log-Files IP-Adressen "rausfummelt" und diese dann per Block in die iptables reinschreibt ...

Code:
#!/bin/bash

#Settings und Einstellungen
log_file="/var/log/nginx/access.log"
such_str="w00tw00t"
count=0

# in {print $1} steht die Position der IP-Adresse :)
for ip in `cat $log_file | grep $such_str | awk '{print $1}' | sed 's/]//g'  | sort -ug` ; do
    count=$[$count+1]

    #Prüfen, ob die IP schon enthalten ist
    if [ "iptables -L INPUT -v -n | grep '$ip'" == "" ]; then
        iptables -I INPUT -s $ip -j DROP
        iptables -I OUTPUT -s $ip -j DROP

        echo $ip hinzugefügt
    else
        echo $ip gefunden
    fi
done

#Abschliessende Statusmitteilung ausgeben
if [ "$count" -gt 0 ]; then
    echo $count Einträge bearbeitet
else
    echo keine Einträge
fi
Oben im config-Teil die entsprechende LOG angeben und die $-Variable in der FOR-Schleife anpassen.
Den entsprechenden Suchstring nicht vergessen....
Dann sollte das auch sauber laufen ....
__________________

Fragen gehören ins Forum - und NICHT in mein Postfach !
Ich erteile KEINEN Privatunterricht über e-mail und PN !

Hackliste Br. NV nach Threadstarter u. Aktualität <--+--> Liste Hacks Bereich NV Alphabethisch

 
Benutzerbild von Cerberus
Cerberus
Administrator
Registriert seit: 07.03.2008
Ort: 3. Bit Links hinter dem Kernel
Alter: 49
Beitr?ge: 9.639
Abgegebene Danke: 1.121
Erhielt 4.499 Danke für 458 Beiträge
Downloads: 18
Uploads: 9
Nachrichten: 2258
Hits: 82116
Mit Zitat antworten
Folgende 8 Benutzer sagen Danke zu Cerberus für den nützlichen Beitrag:
bl0bb (04.04.2013), BonkeR (04.04.2013), Bulli (04.04.2013), Flori12345 (04.04.2013), Gandalf (04.04.2013), Lex (04.04.2013), pat (08.04.2013), Schwamm (04.04.2013)
Alt 04.04.2013, 13:04   #2
bl0bb
Erfahrener Benutzer
Punkte: 12.526, Level: 73 Punkte: 12.526, Level: 73 Punkte: 12.526, Level: 73
Levelaufstieg: 19% Levelaufstieg: 19% Levelaufstieg: 19%
Aktivität: 0% Aktivität: 0% Aktivität: 0%
Letzte Erfolge
 
Benutzerbild von bl0bb
 
Registriert seit: 04.04.2011
Beitr?ge: 247
Abgegebene Danke: 6
Erhielt 94 Danke für 7 Beiträge
Downloads: 2
Uploads: 0
Nachrichten: 34
Renommee-Modifikator:
1013 bl0bb genießt hohes Ansehenbl0bb genießt hohes Ansehenbl0bb genießt hohes Ansehenbl0bb genießt hohes Ansehenbl0bb genießt hohes Ansehenbl0bb genießt hohes Ansehenbl0bb genießt hohes Ansehenbl0bb genießt hohes Ansehenbl0bb genießt hohes Ansehenbl0bb genießt hohes Ansehenbl0bb genießt hohes Ansehen
Standard

Wäre interessant zu erfahren wo der Nutzen liegt. Ich meine wenn ich die IP kenne, brauche ich die nicht in einer Log suchen lassen
bl0bb ist offline   Mit Zitat antworten Nach oben
Alt 04.04.2013, 13:26   #3
Cerberus
Administrator
 
Benutzerbild von Cerberus
 
Registriert seit: 07.03.2008
Ort: 3. Bit Links hinter dem Kernel
Alter: 49
Beitr?ge: 9.639
Abgegebene Danke: 1.121
Erhielt 4.499 Danke für 458 Beiträge
Themenstarter Themenstarter
Downloads: 18
Uploads: 9
Nachrichten: 2258
Renommee-Modifikator:
10 Cerberus genießt hohes AnsehenCerberus genießt hohes AnsehenCerberus genießt hohes AnsehenCerberus genießt hohes AnsehenCerberus genießt hohes AnsehenCerberus genießt hohes AnsehenCerberus genießt hohes AnsehenCerberus genießt hohes AnsehenCerberus genießt hohes AnsehenCerberus genießt hohes AnsehenCerberus genießt hohes Ansehen
Standard

ich habe das gebaut, weil auf dem Server um den es geht zu viele Anfragen von denen kommen ...
und damit wäre ich im "Hand-Modus" Stunden beschäftigt ....

so bügelt das Script drüber und fertig is die Lauge
__________________

Fragen gehören ins Forum - und NICHT in mein Postfach !
Ich erteile KEINEN Privatunterricht über e-mail und PN !

Hackliste Br. NV nach Threadstarter u. Aktualität <--+--> Liste Hacks Bereich NV Alphabethisch
Cerberus ist gerade online   Mit Zitat antworten Nach oben
Alt 04.04.2013, 18:02   #4
bl0bb
Erfahrener Benutzer
Punkte: 12.526, Level: 73 Punkte: 12.526, Level: 73 Punkte: 12.526, Level: 73
Levelaufstieg: 19% Levelaufstieg: 19% Levelaufstieg: 19%
Aktivität: 0% Aktivität: 0% Aktivität: 0%
Letzte Erfolge
 
Benutzerbild von bl0bb
 
Registriert seit: 04.04.2011
Beitr?ge: 247
Abgegebene Danke: 6
Erhielt 94 Danke für 7 Beiträge
Downloads: 2
Uploads: 0
Nachrichten: 34
Renommee-Modifikator:
1013 bl0bb genießt hohes Ansehenbl0bb genießt hohes Ansehenbl0bb genießt hohes Ansehenbl0bb genießt hohes Ansehenbl0bb genießt hohes Ansehenbl0bb genießt hohes Ansehenbl0bb genießt hohes Ansehenbl0bb genießt hohes Ansehenbl0bb genießt hohes Ansehenbl0bb genießt hohes Ansehenbl0bb genießt hohes Ansehen
Standard

Ach seh grad, du suchst ja gar nicht mit einer IP als Suchstring, sondern nach diesem w00tw00t. Hehe, dachte das is nur deine Art von "Platzhalter"
OK, dann sehe ich jetzt den Sinn


EDIT
Wußte das mir w00tw00t bekannt vorkommt. Habe mal eben in meine Firewall geschaut. Einfach diese Regel adden und schon ist das Skript obsolet.

Code:
$IPT -A INPUT -d <EIGENE_SERVER_IP> -p tcp --dport 80 -m String  --to 70 --algo bm --String  'GET /w00tw00t.at.ISC.SANS.' -j DROP

Ge?ndert von bl0bb (04.04.2013 um 22:33 Uhr)
bl0bb ist offline   Mit Zitat antworten Nach oben
Alt 25.09.2019, 10:22   #5
Flori12345
Profi
Punkte: 22.222, Level: 92 Punkte: 22.222, Level: 92 Punkte: 22.222, Level: 92
Levelaufstieg: 88% Levelaufstieg: 88% Levelaufstieg: 88%
Aktivität: 0% Aktivität: 0% Aktivität: 0%
Letzte Erfolge
 
Benutzerbild von Flori12345
 
Registriert seit: 22.06.2008
Alter: 38
Beitr?ge: 867
Abgegebene Danke: 188
Erhielt 82 Danke für 8 Beiträge
Downloads: 106
Uploads: 0
Nachrichten: 6
Renommee-Modifikator:
0 Flori12345 ist in Verruf geratenFlori12345 ist in Verruf geratenFlori12345 ist in Verruf geratenFlori12345 ist in Verruf geratenFlori12345 ist in Verruf geratenFlori12345 ist in Verruf geratenFlori12345 ist in Verruf geraten
Standard

Moin,
müsste das Skript die Ip´s nicht eigentlich automatich sperren ?
bei mir steht immer nur gefunden, die IP ist aber noch net gesperrt.
Flori12345 ist offline   Mit Zitat antworten Nach oben
Alt 26.09.2019, 14:09   #6
tantetoni2
König
Punkte: 116.452, Level: 100 Punkte: 116.452, Level: 100 Punkte: 116.452, Level: 100
Levelaufstieg: 0% Levelaufstieg: 0% Levelaufstieg: 0%
Aktivität: 0% Aktivität: 0% Aktivität: 0%
Letzte Erfolge
Auszeichnungen
Artikel Benutzer besitzt 1x Hilfe Level 3
 
Benutzerbild von tantetoni2
 
Registriert seit: 15.10.2008
Beitr?ge: 1.923
Abgegebene Danke: 23
Erhielt 571 Danke für 38 Beiträge
Downloads: 8
Uploads: 0
Nachrichten: 4155
Renommee-Modifikator:
7257 tantetoni2 genießt hohes Ansehentantetoni2 genießt hohes Ansehentantetoni2 genießt hohes Ansehentantetoni2 genießt hohes Ansehentantetoni2 genießt hohes Ansehentantetoni2 genießt hohes Ansehentantetoni2 genießt hohes Ansehentantetoni2 genießt hohes Ansehentantetoni2 genießt hohes Ansehentantetoni2 genießt hohes Ansehentantetoni2 genießt hohes Ansehen
Standard

Warum so unbequem?

Jedes mal ins File rein um nach was bestimmten zu suchen ist doch kacke^^

Code:
#!/bin/bash

# IP tables 
IPT=$(which iptables)
IPT6=$(which ip6tables)


# Settings und Einstellungen
log_file="/var/log/nginx/access.log"
such_str=${1:-} #first bash param file.sh param1
count=0

[ -z "$such_str" ] && echo "missing search string" && exit 0;

# in {print $1} steht die Position der IP-Adresse :)
for ip in `cat $log_file | grep "$such_str" | awk '{print $1}' | sed 's/]//g'  | sort -ug` ; do
    ((++count)) # increment

    # IPv6 check
    if [[ ! -z "$IPT6" && "$ip" =~ ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$ ]]; then
        IPT="$IPT6"
    fi

    echo "using $IPT"

    if [ -z $($IPT -L INPUT -v -n | grep '$ip') ]; then
        $IPT -I INPUT -s $ip -j DROP
        $IPT -I OUTPUT -s $ip -j DROP

        echo "$ip hinzugefügt"
    else
        echo "$ip gefunden"
    fi

done

#Abschliessende Statusmitteilung ausgeben
([ "$count" -gt 0 ] && echo "$count Einträge bearbeitet") || echo "keine Einträge"
call
Code:
./script.sh suchstring
oder wenn leerzeichen
Code:
./script.sh "wort1 wort2"
Ein paar Punkte
  • Bei echos ohne Quote kann einiges kaputt gehen
  • increment in bach geht unter anderem so ((++var))
  • besser mit [ -z "$var" ] prüfen ob eine var leer ist == ist ein alias für = dem Stringvergleich in Bash, kann also unter bestimmten Voraussetzungen wenn man Zahlen erwartet daneben gehen
  • mit zb ${1:-"default"} kann man das erster Argument abfragen, wenn nicht gesetzt dann nimm den default wert nach :- ${2:-"default2"} wäre zb für Argument 2


IPv6 haste vergessen
__________________

Ge?ndert von tantetoni2 (26.09.2019 um 15:29 Uhr)
tantetoni2 ist offline   Mit Zitat antworten Nach oben
Alt 28.10.2019, 22:27   #7
Flori12345
Profi
Punkte: 22.222, Level: 92 Punkte: 22.222, Level: 92 Punkte: 22.222, Level: 92
Levelaufstieg: 88% Levelaufstieg: 88% Levelaufstieg: 88%
Aktivität: 0% Aktivität: 0% Aktivität: 0%
Letzte Erfolge
 
Benutzerbild von Flori12345
 
Registriert seit: 22.06.2008
Alter: 38
Beitr?ge: 867
Abgegebene Danke: 188
Erhielt 82 Danke für 8 Beiträge
Downloads: 106
Uploads: 0
Nachrichten: 6
Renommee-Modifikator:
0 Flori12345 ist in Verruf geratenFlori12345 ist in Verruf geratenFlori12345 ist in Verruf geratenFlori12345 ist in Verruf geratenFlori12345 ist in Verruf geratenFlori12345 ist in Verruf geratenFlori12345 ist in Verruf geraten
Standard

@tantetoni2 kannst du dir das nochmal bitte anschauen.
Die IPs die schon gesperrt wurden, werden bei nochmaligen ausführen des scriptes nochmal gesperrt.
is das normal oder soll das so sein



lg
Flori12345 ist offline   Mit Zitat antworten Nach oben
Antwort


Aktive Benutzer in diesem Thema: 2 (Registrierte Benutzer: 0, G?ste: 2)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beitr?ge zu antworten.
Es ist Ihnen nicht erlaubt, Anh?nge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beitr?ge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:19 Uhr.


Powered by vBulletin® Version 3.8.9 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Template-Modifikationen durch TMS