j'utilise ubuntu 15.04 j'ai eu d'énormes attaques DDOS Je voulais arrêter ces attaques en bloquant les ips attaquants, donc je compte exécuter ce script toutes les minutes à l'intérieur de cron.d et le faire démarrer automatiquement
comment puis je faire ça
#!/bin/bash
#Collecting list of ip addresses connected to port 20000
netstat -plan|grep :20000|awk {'print $5'}|cut -d: -f 1|sort|uniq -c|sort -nk 1 > /root/iplist
#Limit the no of connections
LIMIT=10;
for ip in `cat /root/iplist |awk '{print $2}'`;do
if [ `grep $ip /root/iplist | awk '{print $1}'` -gt $LIMIT ]
then
echo "100 connection from $ip... `grep $ip /root/iplist | awk '{print $1}'` number of connections... Blocking $ip";
#Blocking the ip ...
/etc/rc.d/init.d/iptables save > /dev/null;
CHECK_IF_LOCALIP=0;
/sbin/ifconfig | grep $ip > /dev/null;
if [ $? -ne $CHECK_IF_LOCALIP ]
then
{
FLAG=0;
grep $ip /etc/sysconfig/iptables | grep DROP > /dev/null;
if [ $? -ne $FLAG ]
then
iptables -I INPUT -s $ip -j DROP;
else
echo " Ipaddress $ip is already blocked ";
fi
}
else
echo " Sorry, the ip $ip cannot be blocked since this is a local ip of the server ";
fi
fi
done
En se concentrant sur l'entrée cron
plutôt que sur le contenu du script, en supposant que le script est ~/foobar.sh
, pour l'exécuter toutes les minutes en tant que travail cron
, ouvrez votre table cron
par crontab -e
et ajouter:
*/1 * * * * ~/foobar.sh
Assurez-vous que le script est exécutable au début.
*/1
dans la colonne des minutes fera crond
exécuter le script toutes les minutes, alors que si vous ne mettez que 1
, le script ne sera exécuté qu'à la première minute de la ou des heures données. .
Pour ajouter une entrée à crontab
, utilisez Sudo crontab -e
puis ouvrez un éditeur (probablement vi ou le programme vous laissera choisir). Ajoutez ensuite la tâche en suivant la structure: minute hour (day of month) month (day of week) command
. Utilisez des valeurs numériques ou * pour exprimer "n'importe lequel". Chaque travail dans une ligne. Et puis, enregistrez-le.
Dans votre cas, il y aura quelque chose comme */1 * * * * /full/path/to/the/script.sh
Voir cette page , pourrait vous aider à comprendre pleinement le fonctionnement de crontab et de cronjob.