只说python版的 , 环境centos6.5 , 现在有一部分人 , 专门暴力破解shadowsocks , 所以不得不防 .
wget https://raw.githubusercontent.com/shadowsocks/shadowsocks/master/utils/autoban.py
\cp autoban.py ~/
## 复制到家目录 , 可以更改 , 那下面路径相应得也需要更改
easy_install argparse
## 安装Python库 因为有些Python版本比较低 , 如 : 2.6.6就没有这个库
vim /etc/supervisord.conf
## 编辑这个文件加入下面三行
log_stdout=true ## 开启标准输出到log功能 log_stderr=true ## 开启错误输出到log功能 logfile=/var/log/shadowsocks.log ## log存放路径
vim /etc/rc.local
## 编辑这个文件加入下面两行 实现开机自启
python ~/autoban.py < /var/log/shadowsocks.log ## 读取/var/shadowsocks.log nohup tail -F /var/log/shadowsocks.log | python ~/autoban.py 1>/dev/null 2>&1 & ## 实时检查日志
整个过程是这样 : 当有人试图连接shadowsocks 如果出现错误 , /var/log/shadowsocks.log 就会记录下来 , 错误如果超过 3 次 autoban.py 脚本就会利用 iptables 防火墙把这个IP DROP掉 , 所以这个日志非常重要 , 一定要日志输出 , 在日志中主要匹配的是这一句关键词 : can not parse header when
当然 , 还可以加一点额外得功能 , 比如在自动Ban掉某个IP的同时 , 自动发邮件通知自己 , 本来想写一个shell脚本的 , 后来发现还是太麻烦了 , 仔细一看python脚本 , 利用了os.system函数执行了iptables命令来DROP掉IP , 那么干脆直接在后面加上几句 , 发现邮件的命令的命令就行了.后来测试了一下 , 完全没问题 .
具体的步骤是 , centos 6.5 默认就是mail 命令 ,虽然不知道这个命令属于哪个包 , 不需要搭建邮件服务器 , 没有必要而且太麻烦 , 在终端输入which mail 看一下有没有这个命令 . 如果有那就OK , 没有的话就去搭建吧 . 去Google
vim vim /etc/mail.rc
## 编辑这个文件 , 加入下面4行
set [email protected] ## 用户名 set smtp=smtp://smtp.163.com:25 ## SMTP邮件服务器 set [email protected] ## 用户名 set smtp-auth-password=password ## 密码
然后可以在终端输入 : mail -s "zhuti" 123456.com <mail.log 来测试一下能不能收 , 163的发送 , QQ收 测试正常 , 其它邮箱未测试
vim ~/autoban.py
## 编辑这个文件并做如下修改
Code :
cmd = 'iptables -A INPUT -s %s -j DROP' % ip ## 这个是原有的代码 , 把新增加的代码加入到后面
cmd1 = 'echo "Dear Xiao : " >>./tmp.log' ## cmd1到cmd5都是新增加的 , 主要功能就是创建一个tmp.log的文件 , 作为发送邮件的内容 , 自定义 , 还有接受邮件的邮箱号
cmd2 = 'echo "" && echo " Unknown ip is trying to brute force your shadowsocks" >>./tmp.log'
cmd3 = 'echo "" && echo " IP is rejected : %s" >>./tmp.log' % ip
cmd4 = 'echo "" && echo " Time is rejected : `date`" >>./tmp.log'
cmd5 = 'mail -s "Please note that the warning from the vps" [email protected] <./tmp.log'
print(cmd, file=sys.stderr)
os.system(cmd)
os.system(cmd1) ## 下面也要增加cmd1到cmd5
os.system(cmd2)
os.system(cmd3)
os.system(cmd4)
os.system(cmd5)
cmd = 'iptables -A INPUT -s %s -j DROP' % ip ## 这个是原有的代码 , 把新增加的代码加入到后面 cmd1 = 'echo "Dear Xiao : " >>./tmp.log' ## cmd1到cmd5都是新增加的 , 主要功能就是创建一个tmp.log的文件 , 作为发送邮件的内容 , 自定义 , 还有接受邮件的邮箱号 cmd2 = 'echo "" && echo " Unknown ip is trying to brute force your shadowsocks" >>./tmp.log' cmd3 = 'echo "" && echo " IP is rejected : %s" >>./tmp.log' % ip cmd4 = 'echo "" && echo " Time is rejected : `date`" >>./tmp.log' cmd5 = 'mail -s "Please note that the warning from the vps" [email protected] <./tmp.log' print(cmd, file=sys.stderr) os.system(cmd) os.system(cmd1) ## 下面也要增加cmd1到cmd5 os.system(cmd2) os.system(cmd3) os.system(cmd4) os.system(cmd5)
此方法只适用于python版的shadowsocks , 当然以上的python代码可以写得更加优雅一点 , 但是关键我不会啊 , 本来还想多家点功能 , 暂时这样吧