Vie Sauvage et Survie

Catégorie Générale => Feu de camp => Discussion démarrée par: James le 03 septembre 2007 à 19:56:56

Titre: firewall selectif pour serveur linux, ATTN: manitou
Posté par: James le 03 septembre 2007 à 19:56:56
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...
Titre: Re : firewall selectif pour serveur linux, ATTN: manitou
Posté par: DavidManise le 03 septembre 2007 à 20:08:49
Salut James :)

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

David
Titre: Re : firewall selectif pour serveur linux, ATTN: manitou
Posté par: James le 03 septembre 2007 à 20:28:38
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
Titre: Re : firewall selectif pour serveur linux, ATTN: manitou
Posté par: James le 03 septembre 2007 à 21:06:24
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...