• STATISTIQUES
  • Il y a eu un total de 3 membres et 6449 visiteurs sur le site dans les dernières 24h pour un total de 6 452 personnes!


    1 membre s'est inscrit dans les dernières 24h!


    Membres: 2 609
    Discussions: 3 580
    Messages: 32 820
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Zenk-Security
    La communauté zenk-security a pour objet principal la sécurité informatique, nous sommes des tou...
    Hacking
    [EN] CS Tutoring Center
    Site de challenge spécialisé dans les challenges de programmation C++ et java cependant, d'autres langages pe...
    Challenges
    [EN] hax.tor
    50 level de challenges mélangés
    Challenges
    [EN] Hack This Site
    Hack This Site est considéré comme un réel terrain d'entraînement légal pour le...
    Hacking
    [FR] WeChall
    Audio: 3, Coding: 11, Cracking: 9, Crypto: 18, Encoding: 11, Exploit: 44, Forensics: 1, Fun: 6, HTTP: 6, Image: 8, Java:...
    Challenges
    [FR] Asp-php
    Tutoriaux sur ASP, PHP, ASP.net, XML, SQL, Javascript, HTML, VML - Scripts et ressources pour webmasters - Forums d&#...
    Programmation
    [FR] Comment ca marche
     Gratuit et accessible à tous, ce site de communauté permet de se dépanner, se faire aider ...
    Webmaster

  • 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: 272
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 376 24-02-2014, 10h57
Dernier message: Ekroz
  [BASH] Interface User Friendly saywoot 3 258 28-01-2014, 21h18
Dernier message: saywoot
  [BASH] Connaitre les utilisateurs avec un le nom suivant InFamouZz 8 515 27-01-2014, 15h39
Dernier message: notfound
  [Bash] explorer son /home dans un pipemenu Openbox supersnail 2 244 28-10-2013, 17h08
Dernier message: thxer
  [Bash] programme d'installation InstinctHack 0 104 12-09-2012, 10h08
Dernier message: InstinctHack
  [Php/Bash] Importer une base de donné de plus de 5Mo CyberSee 1 152 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