Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2036420
  • 博文数量: 369
  • 博客积分: 10093
  • 博客等级: 上将
  • 技术积分: 4271
  • 用 户 组: 普通用户
  • 注册时间: 2005-03-21 00:59
文章分类

全部博文(369)

文章存档

2013年(1)

2011年(2)

2010年(10)

2009年(16)

2008年(33)

2007年(146)

2006年(160)

2005年(1)

分类: 网络与安全

2011-05-10 23:24:33

无限发现他的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--基于日志的入侵防护系统。
阅读(7361) | 评论(4) | 转发(1) |
0

上一篇:全国哀悼日

下一篇:打工子弟的最后一课

给主人留下些什么吧!~~

xiaosuo2011-08-30 11:30:36

caimeng: Myget这个工具是您开发的?有个问题,就是他缺少一个功能就是返回状态码,文件下载失败、还是成功、还是没有找到文件等,没有特定状态码,返回好像全是0。.....
嗯,不过这个项目我已经不维护了,有人fork并维护,请向他发feature request吧。https://github.com/lytsing/Mytget

caimeng2011-08-29 11:23:42

Myget这个工具是您开发的?有个问题,就是他缺少一个功能就是返回状态码,文件下载失败、还是成功、还是没有找到文件等,没有特定状态码,返回好像全是0。

Linuxwhite2011-05-28 02:31:27

转载了。

网络安全服务2011-05-12 15:40:48

防攻击```