我正在使用 ubuntu 15.04,我遭受了大量的 DDoS 攻击,我想通过阻止攻击者的 IP 来阻止这些攻击,所以我计划在 cron.d 中每分钟运行这个脚本并使其自动启动
我怎样才能做到这一点
#!/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
答案1
关注cron
脚本的条目而不是内容,假设脚本是~/foobar.sh
,每分钟运行一次脚本作为cron
作业,打开cron
表crontab -e
并添加:
*/1 * * * * ~/foobar.sh
首先确保该脚本是可执行的。
*/1
在分钟列中将crond
每分钟执行一次脚本,而如果只输入,1
脚本将仅在给定小时的第一分钟执行。
答案2
要向 中添加条目crontab
,请使用sudo crontab -e
,然后会打开编辑器(可能是 vi,或者程序会让您选择)。然后按照以下结构添加任务:minute hour (day of month) month (day of week) command
。使用数字值或 * 表示“任何”任务。每项任务占一行。然后,保存。
在你的情况下会是这样的*/1 * * * * /full/path/to/the/script.sh
看这一页,可以帮助您充分了解 crontab 和 cronjob 的工作原理。