[ 永远的UNIX::UNIX技术资料的宝库 ]

首页 > 系统管理 > 其它 > 正文

OpenBSD下面自动block密码测试不法分子

作者:duckybsd dream4ever.org (2005-07-07 00:02:06)

 感谢iamok在脚本上的支持,他确实在写shell方面很高。 :p

我的服务器是使用的OpenBSD 3.6,然后使用putty的公匙私匙方式登陆,并且在sshd_config里面禁止了密码登陆,但是仍有小人企图暴力测试root密码登陆,虽然无伤大雅,但是居心也叵测,所以做了一个脚本自动block这些小人。

首先,你需要在pf.conf 里面添加一个table,不妨叫做<ssh_auto_block>,设置成presist方式,方便后面动态添加新的IP地址。

table <ssh_auto_block> persist file "/etc/pf_table/ssh_auto_block"


pf.conf在适当的地方添加

# ssh_auto_block
block in quick on $ext_if from <ssh_auto_block> to any
block out quick on $ext_if from any to <ssh_auto_block>


建立相应的文件/etc/pf_table/ssh_auto_block,一行一个需要block的IP,格式:111.111.111.111/32

然后编写一个教本,基本思路是找到authlog中的非法登录IP,然后使用pfctl将这些IP加入ssh_auto_bloak表。并且将当前authlog的内容存入一个以当天日期命名的文件,形如:authlog.2005-05-22 的文件,教本如下:

# This shell check the /var/log/authlog "Failed" login IP
#/bin/sh

Year=`date +"%Y-%m-%d"`

grep "Failed" /var/log/authlog | awk '{print $11}' | grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" |
awk '{count[$1]+=1}END{for(i in count)print i"/32"}' >> /etc/pf_table/ssh_auto_block

grep "Failed" /var/log/authlog | awk '{print $11}' | grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" |
awk '{count[$1]+=1}END{for(i in count)print i"/32"}' >> /tmp/ssh_auto_block

/usr/bin/more /var/log/authlog >> /var/log/authlog."$Year"
/usr/bin/true > /var/log/authlog

while read block_ip;do
pfctl -t ssh_auto_block -T add $block_ip
done < /tmp/ssh_auto_block


把这个教本设置成一个合理的执行时间,我是每2分钟检查一次,这样的话,这些企图暴力测试密码的不法分子就会被block掉,如果不想永久加入黑名单的话,去掉上面脚本中的这一行就ok了。

grep "Failed" /var/log/authlog | awk '{print $11}' | grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" |
awk '{count[$1]+=1}END{for(i in count)print i"/32"}' >> /etc/pf_table/ssh_auto_block
(http://www.fanqiang.com)

原文链接:https://dream4ever.org/archive/t-44212.html

 相关文章

★  感谢所有的作者为我们学习技术知识提供了一条捷径  ★
www.fanqiang.com