日期:2011-01-23 03:26:00 来源:本站整理
分享:linux底子防猜密码的脚本[Linux安全]
本文“分享:linux底子防猜密码的脚本[Linux安全]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
【bitsCN.com 独家特稿】redhat linux as3系统(4也可以),原理上是通过解析/var/log /secure文件,找出那些试图举行密码猜想的IP地址,并用iptables程序将其禁止.secure文件记录的典范以下:
Nov 11 11:28:31 localhost sshd[2357]: Server listening on 0.0.0.0 port 22.
Nov 11 11:28:57 localhost sshd[2459]: Accepted password for root from 123.120.15
7.29 port 18495 ssh2
Nov 11 11:29:13 localhost sshd[2565]: Failed password for root from 194.213.8.76
port 45528 ssh2
Nov 11 13:22:26 localhost sshd[24642]: Failed password for root from 202.41.93.1
35 port 34098 ssh2
Nov 11 13:22:29 localhost sshd[24756]: Illegal user fluffy from 202.41.93.135
Nov 11 13:22:31 localhost sshd[24756]: Failed password for illegal user fluffy f
rom 202.41.93.135 port 34352 ssh2
Nov 11 13:22:34 localhost sshd[24787]: Illegal user admin from 202.41.93.135
Nov 11 13:22:37 localhost sshd[24787]: Failed password for illegal user admin fr
om 202.41.93.135 port 34582 ssh2
我们将“Failed password”,“Illegal user ”和“Failed password for illegal user”作为3个关键字,举行辨认,并提取造成这3种错误的IP地址,然后禁止这个IP地址拜候服务器.
计划脚本名称为basickdefencehack.sh,把这个脚本放在crond中运行,可以通过改正/etc/crontab文件,设定每分钟运行一次该脚本,crontab文件需求在末尾处增添以下内容:
* * * * * root sh /root/managetools/basicdefencehack/basicprotect.sh
因为我的这个脚本放在/root/managetools/basicdefencehack/目录下了.
确认crond服务处于运行状况中:
# service crond status
crond (pid 5974) running……
假如crond服务没有在运行,运行service crond start号令,并设定开机启动该服务
# chkconfig --level 3 crond on
假如根本没安装crond服务……我也不知道该怎么讲了,不会装就重装系统吧……
basickdefencehack.sh脚本内容及明细以下.
#!/bin/bash //定义脚本履行器为bash
#Basic defence hack script //描写脚本作用,防备攻击
WORKDIR=/root/managetools/basicdefencehack //设定脚本工作目录
#Get suspect record from log in nearest 1 min.
LOGFILE=/var/log/secure //从/var/log/secure日记中提取错误日记
LOGFILE2=/root/managetools/basicdefencehack/temp/TMPsecure //放到本地脚本中削减资源损耗
ACTION=`env LC_TIME=en date +%e" "%H":"%M":" -d -1min` //设置时间为当前时间的前1分钟
#sshd keywords
word1="Failed password" //提取错误日记的关键字1
word2="Illegal user" //提取错误日记的关键字2
word3="Failed password for illegal user" //提取错误日记的关键字3
grep "$ACTION" $LOGFILE |grep -E "$word1|$word2" > $LOGFILE2
//上面这步将含有关键字1和2的记录放在交换文件中,下面四句作用是提取错误日记中含有关键字的记录中的IP,也就是猜你密码的那些IP地址.然后把这些IP举行排序和计数,便利背面持续举行判断.
grep "$word1" $LOGFILE2 |grep -v "$word3"|awk '{print $11}' > iplist1
grep "$word2" $LOGFILE2 |grep -v "$word3"|awk '{print $NF}' >> iplist1
grep "$word3" $LOGFILE2 |awk '{print $13}' >> iplist1
//grep -v $word3的缘由是关键字1和关键字2常常在同一条记录中,招致IP地址所处的位置发生了改变,所以需求将这些记录区脱离,具体的位置可以自己研究.别的假若有其他的错误关键字,你也可以自己增添word4大概word5.
scanner=`cat iplist1|sort|uniq -c|awk '{print $1"="$2}'`
//计划一个循环,辨别哪些IP是可疑IP,初步设定为一分钟内呈现了5次密码错误或错误用户的IP,可以自己改.
for i in $scanner
do
//定义一个变量NUM,以“=”作为脱离符,NUM将获得这个IP一分钟内呈现的次数,变量IP将记录对应的IP地址.
declare -i NUM
NUM=`echo $i|awk -F= '{print $1}'`
IP=`echo $i|awk -F= '{print $2}'`
//判断,假如NUM变量大于5次,同时iptables的INPUT链中,没有呈现过这个IP,则直接用iptables丢弃全部来自这个IP地址发送的恳求.同时把这个丢弃该IP的时间,以及这个IP在这个时间段内被记录的次数举行登记.
if [ $NUM -gt 5 ] && [ -z "`iptables -vnL INPUT|grep $IP`" ] ;then
/sbin/iptables -I INPUT -s $IP -m state --state NEW,RELATED,ESTABLISHED -j DROP
echo "`date`" >> $WORKDIR/scanner.log
echo "$IP"="$NUM" >> $WORKDIR/scanner.log
echo "$IP" >> $WORKDIR/oldrecord.log
else
echo "`date`" >> $WORKDIR/suspect.log
echo "$NUM"="$IP" >> $WORKDIR/suspect.log
fi
done
(bitsCN.com原创/文iamshiyu/转载请保存)
附件里有没有注释版的纯脚本文件,下载请点击论坛链接
以上是“分享:linux底子防猜密码的脚本[Linux安全]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论