1.扫描同一网络内IP使用情况

 
  
  1. #!/bin/bash 
  2. #------------------------------- 
  3. #Version        0.1 
  4. #Filename:      ipscan.sh 
  5. #Date:          2011.03.22 
  6. #Email:         liyaoyi@163.com 
  7. #------------------------------- 
  8. #定义变量 
  9. NETWORK=$(ifconfig eth0 | grep "inet addr" | awk '{print $2}'|awk -F: '{print $2}' \ 
  10. | awk -F"." '{print $1"."$2"."$3}') 
  11. IPTEMP=$(mktemp) 
  12. IPUP="/tmp/ipup.txt" 
  13. IPDOWN="/tmp/ipdown.txt" 
  14.  
  15. if [ ! -f "$IPUP"  -a ! -f "$IPDOWN" ]; then  
  16.         touch $IPUP $IPDOWN 
  17. fi 
  18. #扫描网络并分类输出IP 
  19. echo "正在执行扫描,请稍候..." 
  20. echo "" 
  21. for ip in `seq 1 254` 
  22. do 
  23.         arping -c 1 "$NETWORK".$ip > $IPTEMP 
  24.  
  25.         if [ $? -eq 0 ]; then 
  26.                 cat $IPTEMP | grep "reply" | awk '{print $4,$5}' >> $IPUP 
  27.         else 
  28.                 cat $IPTEMP | head -n 1 | awk '{print $2}' >> $IPDOWN 
  29.         fi 
  30. done 
  31. #将结果输出并清除临时文件 
  32. clear 
  33. echo  "正在使用的IP及MAC:" 
  34. echo "" 
  35. cat $IPUP 
  36. echo "" 
  37.  
  38. echo "未使用的IP:" 
  39. echo "" 
  40. cat $IPDOWN 
  41. echo "" 
  42. rm -f $IPTEMP $IPUP $IPDOWN 

实现原理:通过for循环,使用arping判断IP是否存活,判断的结果分类输出,包含IP、MAC。
 
2.防SSH和vsftpd暴力破解
 
   
  1. #!/bin/bash 
  2. #Date:  20120322 
  3. TMP=`mktemp` 
  4. DEFINE=20 
  5. log=/var/log/black.log 
  6. cat /var/log/secure | awk '/Failed/{print $(NF-3)}' | sort | uniq -c | awk '{print $2"="$1}' > $TMP 
  7.  
  8. for i in `cat $TMP` 
  9. do 
  10.         IP=`echo $i | awk -F"=" '{print $1}'` 
  11.         NUM=`echo $i | awk -F"=" '{print $2}'` 
  12.         if [ $NUM -gt $DEFINE ]; then 
  13.                 grep $IP /etc/hosts.deny > /dev/null 
  14.                  if [ $? -gt 0 ];then 
  15.                                 echo "sshd:$IP">>/etc/hosts.deny 
  16.                  fi 
  17.         fi 
  18. done 
  19.  
  20. rm -rf $TMP 
实现原理:分析/var/lob/secure日记,计算同一IP地址访问验证失败次数,达到次数后加入/etc/hosts.deny文件中禁止其访问。