Nos Partenaires

Stages de survie CEETS

Auteur Sujet: firewall selectif pour serveur linux, ATTN: manitou  (Lu 1450 fois)

03 septembre 2007 à 19:56:56
Lu 1450 fois

James


Tiens pour les unixiens, voici un chti ensemble de scripts qui font bien sauter les menaces avec rapidité.

/sbin/firewall-adapt a tourner toutes les deux minutes depuis le cron tab, pete la geule aux (essais d')intrusions ssh, et aux intrusions ftp, et aux mail relays qui polluent par spam.
#!/bin/bash
# jms

# ssh recent attempts
grep sshd /var/log/auth.log | grep "Invalid user" |  awk '{ print $10}' >/tmp/special
grep sshd /var/log/auth.log | grep "User" |  awk '{ print $9}' >>/tmp/special
grep sshd /var/log/auth.log | grep "Failed password for invalid" |  awk '{ print $13}' >>/tmp/special
# ftp recent attempts
grep ftp /var/log/auth.log  | grep "authentication failure" |  awk '{ print substr($13,7,30) }' >>/tmp
/special


if [ "$1" = "mail" ]; then
# reject shitty mail senders
grep smtpd /var/log/mail/info | grep "NOQUEUE: reject" |  awk '{ print $10 }' | awk -F "[" '{ print $2
}' | awk -F "]" '{ print $1}' >>/tmp/special ;
grep smtpd /var/log/mail/warnings | grep "warning:" |  awk '{ print $7 }' | awk -F ":" '{ print $1}' >
>/tmp/special ;
fi

if [ "$1" = "full" ]; then
# ssh attempts from older logs
zcat /var/log/auth.log.*.gz | grep sshd | grep "Invalid user" |  awk '{ print $10}' >>/tmp/special
zcat /var/log/auth.log.*.gz | grep sshd | grep "User" |  awk '{ print $9}' >>/tmp/special
zcat /var/log/auth.log.*.gz | grep sshd | grep "Failed password for invalid" |  awk '{ print $13}' >>/
tmp/special
#ftp attempts from older logs
zcat /var/log/auth.log.*.gz | grep ftp | grep "authentication failure" |  awk '{ print substr($13,7,30
) }' >>/tmp/special
fi

#remove always allowed sources
sort /tmp/special | uniq | grep -v allowed | grep -v 192.168.0. | egrep -v "Inserer ici les regexp de whitelist" >/tmp/blacklist
#and blacklist the rest
cat /tmp/blacklist | while read line; do
iptables -D dynamic -s ${line} -j DROP &>/dev/null ;
iptables -A dynamic -s ${line} -j DROP;
echo ${line} Dropped ;
done

Notez la modif a adapter sur la ligne du sort. part du principe de l'utilisation de proftpd, postfix et sshd, et d'un shorewall ou iptables, a adapter selon les linux. En gros, ca droppe toutes les datagrammes qui viennent d'emmerdeurs, tant qu'ils sont dans les logs et que la machine n'est pas redemaree. TRES efficace. avec un crontab a 2 minutes sur firewall-adapt &>/dev/null , c'est adaptatif toutes les deux minutes...


/etc/init.d/firewall-load
#!/bin/bash
# jms
# chkconfig: 345 56 50
# description: Automatic firewall blacklisting from logs
#
# processname: /usr/sbin/firewall-adapt

PATH=/sbin:/bin:/usr/bin:/usr/sbin

# Source function library.
. /etc/init.d/functions

# Get config.
test -f /etc/sysconfig/network && . /etc/sysconfig/network

# More config


# Check that networking is up.
[ -z "$NETWORKING" -o "$NETWORKING" = "no" ] && exit 0

start(){
    gprintf "Starting firewall adaptative behaviour"
    # Need to get rid of localization for external services -
    # it doesn't make much sense to have i18n on the server side here

    /sbin/firewall-adapt full &>/dev/null
    /sbin/firewall-adapt mail &>/dev/null
    RETVAL=$?
    echo
    return $RETVAL
}

stop(){
    gprintf "Stopping firewall adaptative behaviour"
    /sbin/shorewall restart
    RETVAL=$?
    echo
    return $RETVAL

}


restart(){
    stop
    start

# See how we were called.
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        restart
        ;;
    *)
        gprintf "Usage: %s %s\n" $0 "{start|stop|restart}"
        RETVAL=1
esac

exit $RETVAL

installer par chkconfig --add firewall-load


Ca ca pete la tronche aux chieurs sur mon serveur...
« Modifié: 03 septembre 2007 à 20:33:04 par James »

03 septembre 2007 à 20:08:49
Réponse #1

DavidManise


Salut James :)

Je transfère ça à l'admin.  Merci, c'est pas con comme principe.  Simple.  Droit au but.  J'aime bien :)

David
"Ici, on n'est pas (que) sur Internet."

Mon PATREON -
Stages survie CEETS - Page de liens a moi que j'aimeu

03 septembre 2007 à 20:28:38
Réponse #2

James


Si en plus tu met snort, et tu rajoutes 2-3 lignes pour l'integrer, c'est la mort du hacker. par contre veiller a whitelister les adresses qui doivent avoir un access, car meme les admins se plantent de password, doit etre possible de mettre ca dans un fichier, histoire de faire plus propre ;D
« Modifié: 03 septembre 2007 à 20:34:08 par James »

03 septembre 2007 à 21:06:24
Réponse #3

James


ligne de sort a replacer par:

sort /tmp/special | uniq | egrep -vf /etc/firewall-adapt-whitelist.conf > /tmp/blacklist
et hop les regex de whitelist dans /etc/firewall-adapt-whitelist.conf, et plus de problemes a editer le script :D
ha, ha ha ha, DEATH to pirates.

A noter, il est facile de rajouter un whois, de batir un mail et d'envoyer au compte abuse du provider automatiquement ! :D...

 


Keep in mind

Bienveillance, n.f. : disposition affective d'une volonté qui vise le bien et le bonheur d'autrui. (Wikipedia).

« [...] ce qui devrait toujours nous éveiller quant à l'obligation de s'adresser à l'autre comme l'on voudrait que l'on s'adresse à nous :
avec bienveillance, curiosité et un appétit pour le dialogue et la réflexion que l'interlocuteur peut susciter. »


Soutenez le Forum

Les dons se font sur une base totalement libre. Les infos du forum sont, ont toujours été, et resteront toujours accessibles gratuitement.
Discussion relative au financement du forum ici.


Publicité

// // //