Bonjour à tous,
je cherche à faire un script et je me prends la tête depuis 2h, ne connaissant pas trop le langage.
Alors alors, voici ce que je voudrais faire:
dans mail.log je voudrais récupérer les IP qui ont eu le message d'erreur LOGIN authentication failed plus de 10 fois d'affilé, si l'ip n'est pas 123.456.789.123 ou 123.456.789.456
Cet IP, j'ai besoin du coup d'envoyer un rapport avec celle-ci à user@domaine.fr
Voilà voilà j'espère que c'est clair n'hésitez pas à me demander plus de précisions
Merci beaucoup d'avance
Solène
# Début ?
Posté par matthieu bollot (site web personnel, Mastodon) . Évalué à 5.
Si ça fait 2h que tu cherches, tu dois déjà avoir fait quelque chose, sur quelle partie tu bloques ?
Comment tu veux qu'on t'aide sans faire ton travail ?
(Sinon, je suis freelance, je peux te le faire pour 100€)
[^] # Re: Début ?
Posté par malhek69 . Évalué à 0. Dernière modification le 26 mars 2016 à 10:10.
Alors j'ai:
ce qui me permet de compter le nombre de ligne avec ma chaine de caractère dedans
C'est dans les conditions que j'ai du mal. En php et sql pas de soucis mais je connais pas du tout le shell donc j'ai la logique mais juste me dire quelle fonction utiliser qui pourrait être l'équivalent du if blabla
Oh non je ne veux surtout pas que tu me le fasses juste m'orienter en global, je veux réussir de moi-même !
[^] # Re: Début ?
Posté par BAud (site web personnel) . Évalué à 2.
euh pour enlever les IP, tu peux utiliser
|grep -vE "123.456.789.123|123.456.789.456"
'fin bon, si c'était des IP… dépasser 255 devrait t'inciter à revoir quelques cours de réseau :-)bin avoir les lignes pourra permettre de te proposer la regexp qui va bien, savoir si la commande
sort -k [n° champ]
serait utilisable et piper le tout vers awk au besoin voire perl si c'est vraiment trop sioux…[^] # Re: Début ?
Posté par malhek69 . Évalué à 1.
ahah en effet j'ai juste fait une suite de chiffre pour l'exemple de l'ip ^
Bon par exemple
/var/log/mail.log:May 13 19:59:36 monserveur postfix/smtpd[17538]: warning: unknown[151.232.189.104]: SASL LOGI authentication failed: authentication failure
/var/log/mail.log:May 13 19:59:36 monserveur postfix/smtpd[17538]: warning: unknown[151.232.189.104]: SASL LOGIN authentication failed: authentication failure
/var/log/mail.log:May 13 19:59:36 monserveur postfix/smtpd[17538]: warning: unknown[151.232.189.104]: SASL LOGIN authentication failed: authentication failure
/var/log/mail.log:May 13 19:59:36 monserveur postfix/smtpd[17538]: warning: unknown[151.232.189.104]: SASL LOGIN authentication failed: authentication failure
/var/log/mail.log:May 13 19:59:36 monserveur postfix/smtpd[17538]: warning: unknown[151.232.103.219]: SASL LOGIN authentication failed: authentication failure
/var/log/mail.log:May 13 19:59:36 monserveur postfix/smtpd[17538]: warning: unknown[151.232.215.94]: SASL LOGIN authentication failed: authentication failure
/var/log/mail.log:May 13 19:59:36 monserveur postfix/smtpd[17538]: warning: unknown[151.232.215.94]: SASL LOGIN authentication failed: authentication failure
/var/log/mail.log:May 13 19:59:36 monserveur postfix/smtpd[17538]: warning: unknown[151.232.215.94]: SASL LOGIN authentication failed: authentication failure
/var/log/mail.log:May 13 19:59:37 monserveur postfix/smtpd[17538]: warning: unknown[151.232.103.204]: SASL LOGIN authentication failed: authentication failure
Voilà par exemple mon fichier mail.log ressemble à ça,
concrètement je voudrais que mon script me dise: si dans le fichier mail.log, il y a une adresse ip différente de 151.232.103.XX (faisant partie de ce subnet), qui a eu plus de 2 LOGIN authentification failed, tu m'envoies par mail un rapport et tu ajoutes l'adresse ip dans le fichier ip.txt
Et du coup, non seulement j'arrive pas à récupérer l'ip, mais j'arrive pas à lui if != 151.232.103 et si en moins de 5 minutes y a eu 2 login authentification failed….
[^] # Re: Début ?
Posté par BAud (site web personnel) . Évalué à 2.
bin tu peux :
voilà voilà, tu as les grandes lignes. Si tu ne sais pas lire le
awk
, ça va être un peu plus dur :-) les pages de man sont un peu plus lisibles qu'elles ne l'étaient quand j'ai commencé :-)[^] # Re: Début ?
Posté par malhek69 . Évalué à 0.
Ouais ça ressemble moi à du php ou autre que je ne le pensais…
ton 7 c'est quoi? il ressemble en variable plus tard…
Bon le reste je comprends ça va reste à le peaufiner maintenant.
Merci infiniment en tout cas au moins j'ai une piste pour faire ce que je veux ça m'orient déjà énormément.
Merci merci
[^] # Re: Début ?
Posté par BAud (site web personnel) . Évalué à 2.
man sort
: le -k correspond au champ sur lequel trier, l'IP est dans le champ 7 (il faut compter les espaces, le séparateur par défaut).bon, ça affiche unknown[151.232.189.104]: mais un sed bien fait pourra virer le unknown[ et le ]: au besoin
# Fail2Ban
Posté par ptit_poulet . Évalué à 2.
Pourquoi ne pas utiliser Fail2ban qui fera ce que tu cherches à faire mais en mieux ???
[^] # Re: Fail2Ban
Posté par malhek69 . Évalué à 1.
Parce qu'avant d'utiliser de tels logiciels je veux comprendre comment ça fonctionne :-) même si oui au final fail2ban est plu recommandé dans un milieu professionnel
[^] # Re: Fail2Ban
Posté par NeoX . Évalué à 3.
pourtant tu utilises linux et postfix,
est-ce que tu sais comment le noyau linux fonctionne ?
ou comment circulent un email sur internet dns, mx, mta, mda, etc ?
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.