Chinaunix首页 | 论坛 | 博客
  • 博客访问: 381693
  • 博文数量: 58
  • 博客积分: 2941
  • 博客等级: 少校
  • 技术积分: 970
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-21 11:37
文章分类

全部博文(58)

文章存档

2015年(1)

2014年(1)

2012年(1)

2011年(19)

2009年(1)

2008年(1)

2007年(11)

2006年(10)

2005年(13)

分类:

2005-12-27 11:39:10

如何做一个后台DEAMON来控制安全访问?这就是贯穿这篇文章的中心概念。

原创:dominic_80

如何做一个后台DEAMON来控制安全访问?这就是贯穿这篇文章的中心概念。

我的控制访问比较特殊,考虑到远程登陆点并非固定,所以无法设定固定IP通过SSH登陆服务器。这样N多IP会通过黑客软件试图破解您的用户名和密码(基本都是穷举,不怕一万只怕万一,因此我写了这个后台脚本)。

安全:利用/etc/hosts.deny、/etc/hosts.allow来做tcp wrapper控制访问,配合iptables作进一步过滤。

crontab最短执行周期是每隔1分钟执行一次,而以下这段代码的最短执行周期可以自定义(最短1秒)

脚本名:sshd_monitor

#!/bin/sh
while true                      

#使用while true来做循环,这样当脚本后台执行的时候总是会根据sleep时间的长短来执行任务

do

       cat /var/log/secure* |awk '{if($6=="Invalid")print $10}' |sed 's/::ffff://g' |sort -n |uniq -c |awk '{if($1>=5)print $2}' >/root/lawless_ip  

#在secure日志中,获取登陆失败大于5次的ip并输入到lawless_ip文件中

       row=`cat /root/lawless_ip|wc -l`             

#记录lawless_ip文件中的ip记录条数

       a=0                                                        

            for z in `seq 1 $row`                          

#从第一个ip开始写规则到lawless_ip_deny这个临时文件中,起结果会类似 ALL:123.123.123.123 ..........

      do
            a=$[$a+1]
            row_ip=`cat /root/lawless_ip |sed -n -e ""$a"p"` 
            echo -e "ALL:$row_ip" >> /root/lawless_ip_deny
      done
     

      cat /root/lawless_ip_deny > /etc/hosts.deny   

 #然后将lawless_ip_deny文件中的内容写入到hosts.deny。

      rm /root/lawless_ip_deny                            

   #删除该临时文件

sleep 10                                                             

#每隔10秒执行while操作
done

为防止自己登陆失败超过5次被禁止,需要在/etc/hosts.allow中加入自己本机或许可某个IP总是能够登陆的匹配规则如: ALL:192.168.10.12。记住,一般allow的优先级总比deny高。此外,在/etc/rc.local加句sh /dir/sshd_monitor &,保证每次启动服务器时都能后台运行该脚本。

以上方法只是抛砖引玉,这样的deamon可以写成监控ftp、http、进程等各种需求,相当实用。

阅读(1597) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~