Fail2ban - Python regex

Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    43
    Messaggi
    23,387
    configurazione

    Predefinito Fail2ban - Python regex

    Avrei bisogno di riuscire a scrivere alcune regex da inserire in fail2ban, per l'analisi dei log di un mio server linux ma ho qualche problemino... In teoria è semplice ma nella pratica ho poco tempo e enormi difficoltà a tirare fuori qualcosa di funzionante anche perchè sono assolutamente digiuno di programmazione.

    fail2ban è in python quindi credo che le regex debbano rispettare i criteri per questo linguaggio. Visto che dubito che esista una specie di wizard per la compilazione di regex, mi sapete indicare un qualche manuale online che sia sufficientemente chiaro e valido?

    Questa è la storia di 4 persone chiamate Ognuno, Qualcuno, Ciascuno e Nessuno. C'era un lavoro importante da fare e Ognuno era sicuro che Qualcuno lo avrebbe fatto. Ciascuno poteva farlo, ma Nessuno lo fece, Qualcuno si arrabbiò perché era il lavoro di Ognuno. Ognuno pensò che Ciascuno potesse farlo, ma Ognuno capì che Nessuno l'avrebbe fatto. Finì che Ognuno incolpò Qualcuno perché Nessuno fece ciò che Ciascuno avrebbe potuto fare.

  2. #2
    kibibyte
    Registrato
    Feb 2007
    Messaggi
    202

    Predefinito

    Ciao, quando devo scrivere roba riguardante regex faccio così:
    consulto questo sito dove c'è un bel po' di materiale Regular-Expressions.info - Regex Tutorial, Examples and Reference - Regexp Patterns; poi inizio a scrivere la regex progressivamente aiutandomi con un editor di testo evoluto tipo jedit o roba simile per permetta di scrivere regex.
    Carico sull'editor uno snippet di testo e faccio le prove lì.
    Una volta che ho "assemblato" correttamente la regex la implemento nel linguaggio che voglio.
    In generale le regex sono language indipendent ovvero cambia la primitiva o l'oggetto per usarle, ma la sintassi rimane fissa.
    Che filtro devi fare ?
    Intel i7 950@3600 Cooled by Noctua U12P | Asus Rampage III Extreme | 6GB Corsair Dominator 1600 CL8 | OCZ Vertex 2 120 GB boot | ZOTAC GTX 570 1280GB x2 SLI | 8800GTS 512(G92) PhysX | RAID0 x2 WD VelociRaptor 150 GB Programs | RAID0 x2 WD 1GB Green | Antec hcp 1200

  3. #3
    kibibyte
    Registrato
    Feb 2007
    Messaggi
    202
    Intel i7 950@3600 Cooled by Noctua U12P | Asus Rampage III Extreme | 6GB Corsair Dominator 1600 CL8 | OCZ Vertex 2 120 GB boot | ZOTAC GTX 570 1280GB x2 SLI | 8800GTS 512(G92) PhysX | RAID0 x2 WD VelociRaptor 150 GB Programs | RAID0 x2 WD 1GB Green | Antec hcp 1200

  4. #4
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    43
    Messaggi
    23,387
    configurazione

    Predefinito

    Grazie dei consigli, ora me li leggo.
    Avevo trovato altri siti ma non quello che mi hai segnalato, vedo se trovo quello che fà al caso mio.

    Avrei necessità di verificare i log d apache per individuare le sign del w00tw00t nelle varie versioni, i tentativi di utilizzo del modulo mod_proxy di apache e diverse altre cosine... Però si stà rivelando più complesso di quello che prevedevo. Purtroppo essere a digiuno di programmazione non aiuta.

    Questa è la storia di 4 persone chiamate Ognuno, Qualcuno, Ciascuno e Nessuno. C'era un lavoro importante da fare e Ognuno era sicuro che Qualcuno lo avrebbe fatto. Ciascuno poteva farlo, ma Nessuno lo fece, Qualcuno si arrabbiò perché era il lavoro di Ognuno. Ognuno pensò che Ciascuno potesse farlo, ma Ognuno capì che Nessuno l'avrebbe fatto. Finì che Ognuno incolpò Qualcuno perché Nessuno fece ciò che Ciascuno avrebbe potuto fare.

  5. #5
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    43
    Messaggi
    23,387
    configurazione

    Predefinito

    Originariamente inviato da Querty
    Ti aggiungo questo:
    Python Regex Tool
    Questo l'avevo trovato anche io ma non mi dai mai un esito, anche quando la stessa regex lanciata sul server trova dei match positivi. E' qui che credo mi manchi qualcosa...
    Originariamente inviato da Querty
    Avevo letto anche questo.
    Quindi per ottenere il match, ad esempio, per una registrazione nel log che contenga sia la frase "File not found:" che "w00tw00t" devo creare una regex che identifichi la classe di caratteri alfabetici e spazi in sequenza "F-i-l-e- -n-o-t- -f-o-u-n-d" seguita, dopo un numero variabile di caratteri alfabetici e numerici, dalla classe di caratteri e numeri in sequenza "w-0-0-t-w-0-0-t"??

    Questa è la storia di 4 persone chiamate Ognuno, Qualcuno, Ciascuno e Nessuno. C'era un lavoro importante da fare e Ognuno era sicuro che Qualcuno lo avrebbe fatto. Ciascuno poteva farlo, ma Nessuno lo fece, Qualcuno si arrabbiò perché era il lavoro di Ognuno. Ognuno pensò che Ciascuno potesse farlo, ma Ognuno capì che Nessuno l'avrebbe fatto. Finì che Ognuno incolpò Qualcuno perché Nessuno fece ciò che Ciascuno avrebbe potuto fare.

  6. #6
    kibibyte
    Registrato
    Feb 2007
    Messaggi
    202

    Predefinito

    Ciao,
    se ho capito bene devi tirare fuori le linee fatte così:

    caratteri vari "File not found" caratteri vari "w00tw00t" caratteri vari
    giusto ?

    se devi fare questo l'espressione regolare è questa:
    ^.*File not found.*w00tw00t.*$

    Puoi anche usare un grep sul file di log es:
    grep '^.*File not found.*w00tw00t.*$' nome_file_di_log

    gli apici ci vogliano.


    Spiegazione da sinistra a destra:
    ^ : match dell'inizio linea
    . : qualsiasi carattere
    * : precedente carattere ripetuto 0 o più volte (nel nostro caso "." quindi qualsiasi carattere)
    File not found : string
    . : qualsiasi carattere
    * : precedente carattere ripetuto 0 o più volte (nel nostro caso "." quindi qualsiasi carattere)
    w00tw00t : stringa
    . : qualsiasi carattere
    * : precedente carattere ripetuto 0 o più volte (nel nostro caso "." quindi qualsiasi carattere)
    $ : match di fine linea
    Ultima modifica di Querty : 26-07-2011 a 16:29
    Intel i7 950@3600 Cooled by Noctua U12P | Asus Rampage III Extreme | 6GB Corsair Dominator 1600 CL8 | OCZ Vertex 2 120 GB boot | ZOTAC GTX 570 1280GB x2 SLI | 8800GTS 512(G92) PhysX | RAID0 x2 WD VelociRaptor 150 GB Programs | RAID0 x2 WD 1GB Green | Antec hcp 1200

  7. #7
    Super Moderatore L'avatar di frakka
    Registrato
    May 2001
    Località
    Casalecchio di Reno (Bo)
    Età
    43
    Messaggi
    23,387
    configurazione

    Predefinito

    Grande!!
    Stò testando ora la regex ed alcune modifiche, per adattarla anche ad altre condizioni (altri log o altri tentativi di intrusione) e finalmente sembra funzionare correttamente usando la logica che mi hai spiegato.

    Ho modificato la regex che mi hai dato per in questo modo:

    Codice PHP:
    Per cercare i match del w00tw00t in error_log:
    failregex = [[]client <HOST>[]] .*File does not exist.*w00tw00t.*$
    Per cercare i match del w00tw00t access_log:
    failregex = <HOST> .*w00tw00t.*$ 


    Poi, siccome nei log ci sono anche i soliti ennmila tentativi di individuare match per phpmyadmin, etc... ho sfruttato i tuoi suggerimenti anche per questo

    Codice PHP:
    Per cercare i match per gli scanner phpmyadmin in error_log:
    failregex = [[]client <HOST>[]].*setup.php.*$
                [[]
    client <HOST>[]].*MyAdmin.*$
                [[]
    client <HOST>[]].*mysqlmanager$
                [[]
    client <HOST>[]].*mysql$
                [[]
    client <HOST>[]].*phpmanager$
                [[]
    client <HOST>[]].*phpadmin$
                [[]
    client <HOST>[]].*sqlmanager$
                [[]
    client <HOST>[]].*sqlweb$
                [[]
    client <HOST>[]].*webdb
    e sembrano funzionare:
    Codice PHP:
    Successthe total number of match is 18 
    Codice PHP:
    Per cercare gli errori 405 in access_log:
    failregex = <HOST> .*HTTP\/1.1" 405.*$ 
    Ultima modifica di frakka : 27-07-2011 a 13:15

    Questa è la storia di 4 persone chiamate Ognuno, Qualcuno, Ciascuno e Nessuno. C'era un lavoro importante da fare e Ognuno era sicuro che Qualcuno lo avrebbe fatto. Ciascuno poteva farlo, ma Nessuno lo fece, Qualcuno si arrabbiò perché era il lavoro di Ognuno. Ognuno pensò che Ciascuno potesse farlo, ma Ognuno capì che Nessuno l'avrebbe fatto. Finì che Ognuno incolpò Qualcuno perché Nessuno fece ciò che Ciascuno avrebbe potuto fare.

  8. #8
    kibibyte
    Registrato
    Feb 2007
    Messaggi
    202

    Predefinito

    OK. Sono felice di essere stato utile.
    Le regex sono un bell'affare se impari ad usarle sono veramente potenti...
    Intel i7 950@3600 Cooled by Noctua U12P | Asus Rampage III Extreme | 6GB Corsair Dominator 1600 CL8 | OCZ Vertex 2 120 GB boot | ZOTAC GTX 570 1280GB x2 SLI | 8800GTS 512(G92) PhysX | RAID0 x2 WD VelociRaptor 150 GB Programs | RAID0 x2 WD 1GB Green | Antec hcp 1200

Informazioni Thread

Users Browsing this Thread

Ci sono attualmente 1 utenti che stanno visualizzando questa discussione. (0 utenti e 1 ospiti)

Tags

Regole d'invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
nexthardware.com - © 2002-2022