《自写程序防止Linux FTP爆力破解》

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

 最近发现Linux扫描SSH,MYSQL,FTP进行用户爆力破解越来越猖獗!特意写了脚本程序来解决下,理论上说:只要是对外网络应用服务,此脚本可以通用,因为它的实现原理很简单“通过程序读取->带登录信息验证的日志文件->调用iptables直接进行封杀”

脚本下载地址:http://down.51cto.com/data/486912

我以FTP举列,我使用Pure-ftp作为FTP服务器,它日志文件跟系统日志文件绑定在一起:/var/log/messages 知道这些以后,我说下如何使用此脚本

一:修改脚本参数如下

1. vi deny_port 打开此脚本,找到#Basic steup对如下5个参数跟据你实际需求修改.

 

 
 
  1. #Basic steup  
  2. deny_port= '21'  服务端口
  3. log_path = '/var/log/messages' FTP日志文件位置
  4. ip_count= '30' 累计验证失败多次,进行封杀
  5. aut_message = tm[4:10]+ '.*pure-ftpd.*failed.*' 抓取FTP日志失败验证信息
  6. list_path='/shell/ip_list.txt 记录封杀IP列表目录(此文件程序会自动创建

 

注意:aut_message = tm[4:10]+ '.*pure-ftpd.*failed.* 这可能有些人迷糊,这怎么改啊。

A: tm[4:10]代表当前时间,这个不需要改

B: .* 代表多个字符串

下面是我的失败验证信息格式,这句意思:tm[4:10](当前时间)+ '.*pure-ftpd.*(从pureftpd)failed.*(到failed及后面结尾) 明白了吧

Aug 20 21:44:54 localhost pure-ftpd: (?@192.168.2.2) [WARNING] Authentication failed for user [kkk]

说明:通过修改如上5个参数,可以得出结论是:当天同一个IP使用FTP登录验证失败30次以上,进行IP封杀

二:使用脚本

1:chmod 700 deny_port.py 设置权限 

2:./deny_port.py 手动运行该脚本,如果发现如下报错,是因为日志文件内容中没有登录失败信息,这个报错可以忽略!

 
 
  1. Traceback (most recent call last): 
  2.   File "./deny_port.py", line 49in <module> 
  3.     D.iptables() 
  4.   File "./deny_port.py", line 40in iptables 
  5.     for ip in self.ip_list.readlines(): 
  6. AttributeError: port instance has no attribute 'ip_list' 

3:vi /etc/crontab 在计划任务里面,创建每隔1分钟运行一次

 
 
  1. * * * * * root /shell/deny_port.py 

 

三:测试脚本是否成功

怎么测试呢,5个基本参数中ip_count 数字改小,我这里改成ip_count= '1'

然后使用FTP故意输错密码,让它验证下,

然后等一分钟,使用iptables --list 看看是否被封杀了

在重新登录FTP试试,连登录信息没木有了,完全屏蔽了

好了就到这里了,祝大家好运!最后附下原代码

 

 










本文转自 ibelieveme 51CTO博客,原文链接:http://blog.51cto.com/skyson/968319,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
2天前
|
安全 Linux Shell
Linux上执行内存中的脚本和程序
【9月更文挑战第3天】在 Linux 系统中,可以通过多种方式执行内存中的脚本和程序:一是使用 `eval` 命令直接执行内存中的脚本内容;二是利用管道将脚本内容传递给 `bash` 解释器执行;三是将编译好的程序复制到 `/dev/shm` 并执行。这些方法虽便捷,但也需谨慎操作以避免安全风险。
|
9天前
|
网络协议 Linux
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
79 2
|
9天前
|
Linux Python
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
23 2
|
5天前
|
Ubuntu Linux 网络安全
Linux系统通过fail2ban对暴力破解进行防护
Linux系统通过fail2ban对暴力破解进行防护
|
13天前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
|
14天前
|
JavaScript Linux 应用服务中间件
【Azure 应用服务】FTP 部署 Vue 生成的静态文件至 Linux App Service 后,访问App Service URL依旧显示Azure默认页面问题
【Azure 应用服务】FTP 部署 Vue 生成的静态文件至 Linux App Service 后,访问App Service URL依旧显示Azure默认页面问题
|
16天前
|
安全 Ubuntu Linux
在Linux中,如何进行FTP服务器配置?
在Linux中,如何进行FTP服务器配置?
|
18天前
|
Linux API
在Linux中,程序产生了库日志虽然删除了,但磁盘空间未更新是什么原因?
在Linux中,程序产生了库日志虽然删除了,但磁盘空间未更新是什么原因?
|
18天前
|
网络协议 Linux Shell
在Linux中,如何通过一个端口找到程序?
在Linux中,如何通过一个端口找到程序?
|
9天前
|
Linux Windows Python
最新 Windows\Linux 后台运行程序注解
本文介绍了在Windows和Linux系统后台运行程序的方法,包括Linux系统中使用nohup命令和ps命令查看进程,以及Windows系统中通过编写bat文件和使用PowerShell启动隐藏窗口的程序,确保即使退出命令行界面程序也继续在后台运行。
下一篇
DDNS