• STATISTIQUES
  • Il y a eu un total de 2 membres et 8503 visiteurs sur le site dans les dernières 24h pour un total de 8 505 personnes!


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


  • ANNUAIRE
  • [FR] frameip
    le site de partage des connaissances du monde TCPIP
    Protocole
    [EN] Bright Shadows
    JavaScript: 13, Exploit: 27, Crypto: 69, CrackIt: 52, Stegano: 67, Flash: 3, Programming: 16, Java-Applet: 10, Logic: 20...
    Challenges
    [EN] Reddit
    Subreddit dédié à la sécurité informatique.
    Hacking
    [FR] Root-me
    Script: 5, Système: 20, Cracking: 16, Cryptanalyse: 17, Programmation: 8, Réaliste: 11, Réseau: 10, Stéganog...
    Challenges
    [EN] CS Tutoring Center
    Site de challenge spécialisé dans les challenges de programmation C++ et java cependant, d'autres langages pe...
    Challenges
    [FR] Asp-php
    Tutoriaux sur ASP, PHP, ASP.net, XML, SQL, Javascript, HTML, VML - Scripts et ressources pour webmasters - Forums d&#...
    Programmation
    [FR] Infomirmo
    Challenge présenté sous la forme de 6 niveaux de difficultés diverses et variées avec chacun plusieurs chall...
    Challenges

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