• STATISTIQUES
  • Il y a eu un total de 0 membres et 33697 visiteurs sur le site dans les dernières 24h pour un total de 33 697 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] Rankk
    Site de challenge construit sur le principe d'une pyramide à 9 level. Level 1: 60,Level 2: 72,Level 3: 68,Lev...
    Challenges
    [EN] Bright Shadows
    JavaScript: 13, Exploit: 27, Crypto: 69, CrackIt: 52, Stegano: 67, Flash: 3, Programming: 16, Java-Applet: 10, Logic: 20...
    Challenges
    [FR] Cyber-Hacker
    CH - Cyber Hacker est un jeu par navigateur de simulation de hack, programmez et envoyez vos virus et piratez les aut...
    Hacking
    [EN] Astalavista
    Un site aux ressources incontournable depuis plusieurs années, Astalavista est réellement devenue un cl...
    Hacking
    [FR] Microcontest
    Cryptographie: 7, Mathématiques: 8, Image Son Vidéo: 5, Intelligence artificielle: 3, Réseau: 2, Divers: 7, Phy...
    Challenges
    [FR] Kalkulators
    Ce projet a plusieurs buts, le premier étant l’étude de toutes formes cryptographiques, le cot&ea...
    Cryptographie
    [EN] Exploit-db
    Une base de données d'exploits triés par genre (GHDB, Remote, Local, Web, DOS, ShellCode) à ...
    Vulnérabilités

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[BASH] Autoban iptables
12-08-2014, 20h18 (Modification du message : 12-08-2014, 20h21 par thxer.)
Message : #1
thxer Hors ligne
:(){ :|:& };:
*



Messages : 382
Sujets : 60
Points: 162
Inscription : Feb 2013
[BASH] Autoban iptables
Suite à notre discussion sur irc je me suis dit que ça peut interesser du monde.
J'ai fait un ensemble de petits scripts comme celui-ci qui check les logs Apache && SSH et qui ban les ip.
Le principe est simple : des tâches cron scannent les logs, et après ça append une liste ban.txt, de là tout les X temps les règles iptables sont mises à jours.

Exemple :
Code BASH :


# SSH banner by thxer

cd /home/script/iptables
for ip in `cat /var/log/auth.log | grep 'sshd.*Invalid'| awk {'print $10'} | sort -u `
do
    # On regarde si l'ip est déjà bannie
    if ! cat ban.txt | grep -q $ip
    then
        # Ban the IP
        echo $ip >> ban.txt  
        # Envoie d'un mail
        echo "TO: ex@ex.com" > mail.txt
        echo "From: alert@uk.server" >> mail.txt
        echo "Subject:Cron SSH ban" >> mail.txt
        echo  "SSH auth tentative banned : $ip" >> mail.txt
        cat mail.txt | msmtp ex@ex.com
    fi
done
 


Ajouter en crontab, créer d'autres règles sur les logs apaches etc ..



Code BASH :

#!/bin/bash

# Ban Zeus search Thxer
 
# On ban au bout de trois
TENTATIVES=3
 
# On cherche dans les X dernières ligne de log
LIGNES=50000
 
# on cherche ce motif
CHERCHE=jce
 
# Dans ce fichier log
LOG=/var/log/apache2/access.log
 

for ip in `tail -n $LIGNES $LOG | grep "$CHERCHE" | awk "{print \\$1}" | sort | uniq -c | sort -rn | head -20 | awk "{if (\\$1 > $TENTATIVES) print \\$2}"`
do
    # On regarde si déjà ban
    if ! cat ban.txt | grep -q $ip
    then
        # Ban de l' IP
        echo $ip  >> ban.txt
        # Envoi d'un mail
        echo "TO: ex@ex.com" > mail.txt
        echo "From: alert@ru.server" >> mail.txt
        echo "Subject:Cron New ban" >> mail.txt
        echo  "Apache access_log banned '$CHERCHE': $ip" >> mail.txt
        cat mail.txt | msmtp ex@ex.com
    fi
done
 


Le Script iptables qui vient récup le fichier ban.txt :

Code BASH :

#!/bin/bash
cd /home/script/iptables/
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X
/sbin/iptables -t mangle -F
/sbin/iptables -t mangle -X
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT

#---------------------------------------------------------------------------

#Inclure ban ip


if [ -f ban.txt ]; then
    for i in $(cat ban.txt)
    do
        /sbin/iptables -A INPUT -s $i -j DROP
        /sbin/iptables -A OUTPUT -d $i -j DROP
    done
fi

#{ etc ... }

/sbin/iptables-save
 
Thxer.com
Twitter Thxer_

Code BASH :
echo "JkZ Palx" | sed 'y/lPZaJxk/MG3@tEH/'




+1 (2) -1 (0) Répondre
12-08-2014, 22h38 (Modification du message : 12-08-2014, 22h38 par notfound.)
Message : #2
notfound Hors ligne
#!/usr/bin/env bash
*



Messages : 687
Sujets : 47
Points: 271
Inscription : Sep 2012
RE: [BASH] Autoban iptables
Holla, tout d'abord merci pour le partage.

(12-08-2014, 20h18)thxer a écrit :
Code BASH :

for ip in `cat /var/log/auth.log | grep 'sshd.*Invalid'| awk {'print $10'} | sort -u `
do
     ...
done
 

Bon, si t'as un fichier de log très grand, ton for ip in `cat ...` va être super lent, car ça stock tout en RAM. De plus, le cat|grep|awk est pas très élégant.
Je te propose cette petite optimisation :

Code BASH :

while read ip; do ... ; done < <(awk '/ssh.*Failed/{print $10}' /var/log/auth.log|uniq)
 

L'unicité peut se faire via awk aussi, ce qui permet de supprimer le pipe. Mais ça fait remplir un array[] etc, donc c'est plus chiant et uniq fait très bien le taff.

Ensuite, pour éviter de te fatiguer à taper des echo à tout va, tu pourrais faire :
Code BASH :

cat << EOGAME > mail.txt
TO: ex@ex.com
From: alert@uk.server
Subject:Cron SSH ban
SSH auth tentative banned : $ip
EOGAME
 


Mais bon c'est du détail ça.

Et enfin :

(12-08-2014, 20h18)thxer a écrit :
Code BASH :

for ip in `tail -n $LIGNES $LOG | grep "$CHERCHE" | awk "{print \\$1}" | sort | uniq -c | sort -rn | head -20 | awk "{if (\\$1 > $TENTATIVES) print \\$2}"`
do
    ...
done
 

Cette partie, j'attend d'avoir un exemple (comme dit sur irc) pour voir ce qu'on peut faire. Mais vu d'ici, ça se simplifie grandement.
Et même remarque pour le for truc in $(cat...), et les echo

La partie iptables semble ok Smile

Enjoy
+1 (1) -1 (0) Répondre
13-08-2014, 17h00
Message : #3
gruik Hors ligne
gouteur de savon
*



Messages : 757
Sujets : 44
Points: 482
Inscription : Oct 2012
RE: [BASH] Autoban iptables
vite fait en passant, si je comprends bien le principe est de scanner *tout* le fichier de logs
si le fichier de logs rotate sur 1 semaine ou sur 1 mois on va scanner tout un tas de lignes pour rien et ça va ralentir sérieusement le processus
ce qu'il faudrait, ça serait qu'a chaque fois qu'on tail le fichier on ne traite que les lignes qui ont été écrites dans le fichier depuis le dernier tail
c'est précisément le propos de la commande logtail (ça doit faire partie du package logcheck possiblement)

pour tout le reste - et un traitement en temps réel - il y a sec qui mériterait bien quelques tutos sur son utilisation et est largement méconnu

ça c'est pour les solutions "faites maison", pour la solution usine à gaz il y a fail2ban évidement, mais qui marche très bien
Avant donc que d'écrire, apprenez à penser.
Selon que notre idée est plus ou moins obscure, l'expression la suit, ou moins nette, ou plus pure.
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément.
(Nicolas Boileau, L'Art poétique)
+1 (0) -1 (0) Répondre
13-08-2014, 19h04
Message : #4
thxer Hors ligne
:(){ :|:&amp; };:
*



Messages : 382
Sujets : 60
Points: 162
Inscription : Feb 2013
RE: [BASH] Autoban iptables
Merci pour vos retour, effectivement je me troune vers fail2ban c'est plus carré Smile
Thxer.com
Twitter Thxer_

Code BASH :
echo "JkZ Palx" | sed 'y/lPZaJxk/MG3@tEH/'




+1 (0) -1 (0) Répondre


Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  [Bash] Scripts vsftpd Ekroz 4 315 24-02-2014, 10h57
Dernier message: Ekroz
  [BASH] Interface User Friendly saywoot 3 219 28-01-2014, 21h18
Dernier message: saywoot
  [BASH] Connaitre les utilisateurs avec un le nom suivant InFamouZz 8 415 27-01-2014, 15h39
Dernier message: notfound
  [Bash] explorer son /home dans un pipemenu Openbox supersnail 2 219 28-10-2013, 17h08
Dernier message: thxer
  [Bash] programme d'installation InstinctHack 0 90 12-09-2012, 10h08
Dernier message: InstinctHack
  [Php/Bash] Importer une base de donné de plus de 5Mo CyberSee 1 145 29-02-2012, 23h28
Dernier message: InstinctHack

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut