• {{ item.name }}
  • Home
  • Linux
  • Programming
    • Python
  • Life
  • Other
  • Tools
  • 投资者该如何参与优秀的区块链项目- NuLink社区圆桌会议
  • 什么是NuLink?- 项目中文社区与项目研究组成员 Rookie 对话实录
  • NuLink 融资 400 万美元用于开发隐私保护技术
  • NuLink的零知识证明介绍(1)
  • 用bitwarden_rs搭建属于自己的密码管理器
  • 修复 CentOS vps 网卡失效
  • 记录用mac给Nexus6P刷Android10的错误
  • Centos 6.8启用 TCP BBR拥塞控制算法
  • Nginx 启用HTTP2功能
  • Mac 安装adb工具
  • WordPress 默认编辑器代码按钮

shadowsocks自动Ban掉尝试暴力的IP

  • iansiu
  • 2015-01-28
  • 0

只说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 "" &amp;&amp; echo " Unknown ip is trying to brute force your shadowsocks" >>./tmp.log'
cmd3 = 'echo "" &amp;&amp; echo " IP is rejected : %s" >>./tmp.log' % ip
cmd4 = 'echo "" &amp;&amp; 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代码可以写得更加优雅一点 , 但是关键我不会啊 , 本来还想多家点功能 , 暂时这样吧

© 2023 laowang's blog
Theme by Wing