发博文
Free Gentux

xiaosuo.blog.chinaunix.net

Free & Open   
个人资料
  • 博客访问:833774
  • 博文数量:392
  • 博客积分:10093
  • 博客等级:上将
  • 关注人气: 13
  • 注册时间:2005-03-21 00:59:15
订阅我的博客
  • 订阅
  • 订阅到鲜果
  • 订阅到抓虾
  • 订阅到Google
字体大小: 博文


无限发现他的ssh服务器有人企图暴力破解账号,我也自查了一下,发现我也一样受到了此类攻击,ssh中的相关log如下:


  1. May 10 23:20:21 localhost sshd[9075]: Invalid user x from x.x.x.x
明显x.x.x.x在进行账号猜测。随即写了个ruby脚本,监控sshd的此类日志,并对连续输错用户名十次以上的IP用iptables进行封堵。

  1. #!/usr/bin/ruby
  2. #

  3. class Daemon
  4.   def Daemon.start
  5.     exit!(0) if fork
  6.     Process::setsid
  7.     exit!(0) if fork
  8.     Dir::chdir("/")
  9.     File::umask(0)
  10.     STDIN.reopen("/dev/null")
  11.     STDOUT.reopen("/dev/null", "w")
  12.     STDERR.reopen("/dev/null", "w")
  13.     yield if block_given?
  14.   end
  15. end

  16. def block_ip(ip)
  17.   cmd = "iptables -A block_ip -s #{ip} -j DROP"
  18.   system(cmd)
  19. end

  20. def block_invalid(filename)
  21.   block_limit = 10

  22.   log_file = File.new(filename)
  23.   ips = Hash.new
  24.   blocked_ips = Hash.new
  25.   log_file.each do |line|
  26.     field = line.split
  27.     if field[5] == "Invalid"
  28.       ip = field[field.length - 1]
  29.       if ips.key?(ip)
  30.         ips[ip] += 1
  31.       else
  32.         ips[ip] = 1
  33.       end
  34.       if ips[ip] > block_limit and not blocked_ips.key?(ip)
  35.         blocked_ips[ip] = 1
  36.         block_ip(ip)
  37.       end
  38.     end
  39.   end
  40. end

  41. if system("iptables -nvL block_ip &>/dev/null")
  42.   system("iptables -F block_ip")
  43. else
  44.   system("iptables -N block_ip")
  45.   system("iptables -I INPUT -j block_ip")
  46. end

  47. Daemon.start do
  48.   block_invalid("/var/lib/myips.fifo")
  49. end
本质上,这就是一个简单的LIPS--基于日志的入侵防护系统。

[发评论] 评论 重要提示:警惕虚假中奖信息!
  • xiaosuo 2011-08-30 11:30
    caimeng: Myget这个工具是您开发的?有个问题,就是他缺少一个功能就是返回状态码,文件下载失败、还是成功、还是没有找到文件等,没有特定状态码,返回好像全是0。.....
    嗯,不过这个项目我已经不维护了,有人fork并维护,请向他发feature request吧。https://github.com/lytsing/Mytget
  • caimeng 2011-08-29 11:23
    Myget这个工具是您开发的?有个问题,就是他缺少一个功能就是返回状态码,文件下载失败、还是成功、还是没有找到文件等,没有特定状态码,返回好像全是0。
  • Linuxwhite 2011-05-28 02:31
    转载了。
  • 网络安全服务 2011-05-12 15:40
    防攻击```
亲,您还没有登录,请[登录][注册]后再进行评论