文档章节

使用Fail2ban阻挡针对公司邮件系统的暴力破解

prpr
 prpr
发布于 2014/01/09 13:02
字数 1249
阅读 2297
收藏 56
点赞 11
评论 13

公司使用的邮件系统经常被人使用pop暴力尝试破解,由于设置密码时并没有验证密码的复杂度,因此对于攻击者来说想破解那么一些账号真是轻而易举的事情;同时不断被人尝试破解也拖慢了系统速度。

不过还好邮件系统针对登录有日志(还不会烂到连日志都没有的地步吧 = =!),会记录尝试登录者的IP地址,因此利用iptables对可疑IP进行封锁便成为一个似乎可以执行的方案了,但是怎么做呢?搜索之后终于发现了fail2ban这款软件(点32个赞!)。


fail2ban是用python编写的开源软件:http://www.oschina.net/p/fail2ban,项目首页地址:http://www.fail2ban.org,授权协议为GPLv2。

其通过扫描日志文件,利用正则式匹配登录错误的IP地址,然后可以将IP地址列入防火墙中,同时还能给我发送email以提醒我有哪个IP地址被ban了。

嗯,正是我要的!开始安装它吧!

一、系统环境

OS:RHEL 5.6(32位)

Python:2.7.5(自带的2.4应该也可以)

二、安装软件

1. 安装fail2ban

http://www.fail2ban.org/wiki/index.php/Downloads 下载stable版本,然后源码安装:

[root@localhost tmp]# tar xvfj fail2ban-0.8.11.tar.bz2
[root@localhost tmp]# cd fail2ban-0.8.11
[root@localhost fail2ban-0.8.11]# python setup.py install

软件位于/usr/share/,二进制执行脚本位于/usr/bin,配置文件位于/etc/fail2ban。

然后将fail2ban放入开机启动列表里:

[root@localhost fail2ban-0.8.11]# chkconfig -a fail2ban

2. 安装pyinotify

由于邮件日志logrotate,每天凌晨会有一分钟左右不存在日志文件,如果使用默认的idle会导致fail2ban停止工作,因此需要安装pyinotify,该软件地址:http://www.oschina.net/p/pyinotify

https://github.com/seb-m/pyinotify 下载pyinotify,然后源码安装:

[root@localhost tmp]# cd pyinotify
[root@localhost pyinotify]# python setup.py install

3. (可选)安装mailx

由于RHEL 5自带的mailx太老,无法配置自定义的SMTP,因此需要安装最新的mailx程序。这个程序如何安装配置,这里就不赘述了。感兴趣的可以看这篇文章:http://www.cnblogs.com/xiaoshi1991/archive/2012/09/19/2694465.html

三、配置

配置前首先来看一下日志文件长什么样:

[root@localhost ~]# cat /var/log/pop_authlog
1381124478 M caohui example.com 0 ip:127.0.0.1 status:1
1381124481 M info example.com 0 ip:89.151.140.52 status:0
1381124482 M zhouqing example.com 0 ip:111.164.210.227 status:1
1381124487 M shell example.com 0 ip:89.151.140.52 status:0
1381124493 M linux example.com 0 ip:89.151.140.52 status:0
1381124495 M zhaoyong1 example.com 0 ip:127.0.0.1 status:1
1381124497 M unix example.com 0 ip:89.151.140.52 status:0
1381124502 M yangjun example.com 0 ip:180.109.216.129 status:1
1381124502 M webadmin example.com 0 ip:89.151.140.52 status:0
1381124508 M test example.com 0 ip:89.151.140.52 status:0
1381124511 M qc example.com 0 ip:180.166.242.30 status:1
1381124513 M admin example.com 0 ip:89.151.140.52 status:0
......

每一行关键数据是:账号,ip地址和状态,状态为1表示成功,状态为0表示失败。观察日志文件我们可以发现,来自89.151.140.52的设备正在不断更换常见账号尝试破解,因此我们需要让fail2ban将此ip用iptables封掉!

进入配置文件目录我们可以看到有这几个文件和目录:

/etc/fail2ban/
├── action.d
│   ├── dummy.conf
│   ├── hostsdeny.conf
│   ├── iptables.conf
│   ├── mail-whois.conf
│   ├── mail.conf
│   └── shorewall.conf
├── fail2ban.conf
├── fail2ban.local
├── filter.d
│   ├── apache-auth.conf
│   ├── apache-noscript.conf
│   ├── couriersmtp.conf
│   ├── postfix.conf
│   ├── proftpd.conf
│   ├── qmail.conf
│   ├── sasl.conf
│   ├── sshd.conf
│   └── vsftpd.conf
├── jail.conf
└── jail.local

每一个.conf文件都对应一个同名的.local文件,软件将先读取.conf文件,再读取对应的.local文件,.local文件会覆盖.conf文件中同名的配置。

1. 创建自定义规则

[root@localhost ~]# vim /etc/fail2ban/jail.local
#模块名称
[pop3-iptables]
#是否启用
enabled = true
#过滤器名称,注意这个名称与下面第二步所创建的过滤器文件名需一致
filter = my-pop3
#针对IP的行为,由于我们这里需要封的是pop3,因此端口是110,协议是tcp;第二行发送提醒信到管理员邮箱
action = iptables[name=pop3, port=110, protcol=tcp]
         mail-whois[name=POP3, dest=plutonji@example.com]
#检查的日志文件路径
logpath = /var/log/pop_authlog
#封禁时间(单位:秒)
bantime = 86400
#多少秒内匹配多少次就执行上面的action,这里是30s内匹配6次
findtime = 30
maxretry = 6

2. 创建过滤器

[root@localhost ~]#vim /etc/fail2ban/filter.d/my-pop3.conf
[Definition]

# Option:  failregex
# Notes.:  regex to match the password failures messages in the logfile. The
#          host must be matched by a group named "host". The tag "<HOST>" can
#          be used for standard IP/hostname matching and is only an alias for
#          (?:::f{4,6}:)?(?P<host>[\w\-.^_]+)
# Values:  TEXT
#使用正则表达式匹配到需要封的IP地址,即下面的<HOST>部分
failregex = ^.*ip:<HOST>\sstatus:0$

# Option:  ignoreregex
# Notes.:  regex to ignore. If this regex matches, the line is ignored.
# Values:  TEXT
#
ignoreregex =

四、启动程序

[root@localhost ~]# service fail2ban start


© 著作权归作者所有

共有 人打赏支持
prpr
粉丝 3
博文 15
码字总数 13479
作品 0
南京
系统管理员
加载中

评论(13)

prpr
prpr

引用来自“newban”的评论

引用来自“PlutonJi”的评论

引用来自“newban”的评论

引用来自“PlutonJi”的评论

引用来自“newban”的评论

mailx怎么没讲怎么配置,发送。。。1

http://www.cnblogs.com/xiaoshi1991/archive/2012/09/19/2694465.html

谢谢哥们回复,这个链接之前试过了,结果不行。fail2ban默认是action触发sendmail发送的。哥们有试过邮件通知吗

mailx安装好以后,如果没有改默认的命令的话,得把路径敲全了。这种情况下去/etc/fail2ban/action.d/下找到mail-whois.conf,复制一份重命名为mail-whois.local,修改文件中的命令:把mail改为/usr/local/src/mailx-12.4/mailx,三个地方都要改。

actionstart = printf %%b "Hi,\n
The jail <name> has been started successfully.\n
Regards,\n
Fail2Ban"|/usr/local/src/mailx-12.4/mailx -s "[Fail2Ban] <name>: started" <dest>

mailx设置了客户端通过外网smtp是可以发的,有个问题很奇怪,有个邮件地址没有在本机设置了客户端用户密码就能发送到目的邮箱地址,这个咋回事。。。
很多邮件客户端在不设置外网SMTP的情况下,会使用系统的sendmail邮件服务器(对于RHEL6则使用postfix)发送,你会发现发件人是你的机器名字
n
newban

引用来自“PlutonJi”的评论

引用来自“newban”的评论

引用来自“PlutonJi”的评论

引用来自“newban”的评论

mailx怎么没讲怎么配置,发送。。。1

http://www.cnblogs.com/xiaoshi1991/archive/2012/09/19/2694465.html

谢谢哥们回复,这个链接之前试过了,结果不行。fail2ban默认是action触发sendmail发送的。哥们有试过邮件通知吗

mailx安装好以后,如果没有改默认的命令的话,得把路径敲全了。这种情况下去/etc/fail2ban/action.d/下找到mail-whois.conf,复制一份重命名为mail-whois.local,修改文件中的命令:把mail改为/usr/local/src/mailx-12.4/mailx,三个地方都要改。

actionstart = printf %%b "Hi,\n
The jail <name> has been started successfully.\n
Regards,\n
Fail2Ban"|/usr/local/src/mailx-12.4/mailx -s "[Fail2Ban] <name>: started" <dest>

mailx设置了客户端通过外网smtp是可以发的,有个问题很奇怪,有个邮件地址没有在本机设置了客户端用户密码就能发送到目的邮箱地址,这个咋回事。。。
n
newban

引用来自“PlutonJi”的评论

引用来自“newban”的评论

引用来自“PlutonJi”的评论

引用来自“newban”的评论

mailx怎么没讲怎么配置,发送。。。1

http://www.cnblogs.com/xiaoshi1991/archive/2012/09/19/2694465.html

谢谢哥们回复,这个链接之前试过了,结果不行。fail2ban默认是action触发sendmail发送的。哥们有试过邮件通知吗

mailx安装好以后,如果没有改默认的命令的话,得把路径敲全了。这种情况下去/etc/fail2ban/action.d/下找到mail-whois.conf,复制一份重命名为mail-whois.local,修改文件中的命令:把mail改为/usr/local/src/mailx-12.4/mailx,三个地方都要改。

actionstart = printf %%b "Hi,\n
The jail <name> has been started successfully.\n
Regards,\n
Fail2Ban"|/usr/local/src/mailx-12.4/mailx -s "[Fail2Ban] <name>: started" <dest>

貌似不行,这个邮件如过不设置账号密码,他怎么通过服务器验证发信件了。。。
prpr
prpr

引用来自“newban”的评论

引用来自“PlutonJi”的评论

引用来自“newban”的评论

mailx怎么没讲怎么配置,发送。。。1

http://www.cnblogs.com/xiaoshi1991/archive/2012/09/19/2694465.html

谢谢哥们回复,这个链接之前试过了,结果不行。fail2ban默认是action触发sendmail发送的。哥们有试过邮件通知吗

mailx安装好以后,如果没有改默认的命令的话,得把路径敲全了。这种情况下去/etc/fail2ban/action.d/下找到mail-whois.conf,复制一份重命名为mail-whois.local,修改文件中的命令:把mail改为/usr/local/src/mailx-12.4/mailx,三个地方都要改。

actionstart = printf %%b "Hi,\n
The jail <name> has been started successfully.\n
Regards,\n
Fail2Ban"|/usr/local/src/mailx-12.4/mailx -s "[Fail2Ban] <name>: started" <dest>
n
newban

引用来自“PlutonJi”的评论

引用来自“newban”的评论

mailx怎么没讲怎么配置,发送。。。1

http://www.cnblogs.com/xiaoshi1991/archive/2012/09/19/2694465.html

谢谢哥们回复,这个链接之前试过了,结果不行。fail2ban默认是action触发sendmail发送的。哥们有试过邮件通知吗
prpr
prpr

引用来自“newban”的评论

mailx怎么没讲怎么配置,发送。。。1

http://www.cnblogs.com/xiaoshi1991/archive/2012/09/19/2694465.html
n
newban
mailx怎么没讲怎么配置,发送。。。1
车开源
车开源
貌似我也正好需要
prpr
prpr

引用来自“BugTermina”的评论

楼主管理公司服务器,公司允许你随便装?

有备机做测试,把日志放进去看是否生效,ok就在正式机上搞。
BugScanner
BugScanner
楼主管理公司服务器,公司允许你随便装?
使用 fail2ban 防御 SSH 服务器的暴力破解

对于SSH服务的常见的攻击就是暴力破解攻击——远程攻击者通过不同的密码来无限次地进行登录尝试。当然SSH可以设置使用非密码验证验证方式来对抗这种攻击,例如公钥验证或者双重验证。将不同的...

linux-tao
2017/11/15
0
0
linux系统安全

方法一: 密码足够复杂 密码的长度要大于8位,最好大于14位。密码的复杂度是密码要尽可能有数字、大小写字符和特殊字符混合组成。 修改默认ssh端口 使用iptables关闭不需要使用的端口 sshd 默...

xucaibao1979
2017/06/30
0
0
Linux 王子 带你完成 Linux SSHD服务“gong fang”实战

重要声明: 本文以研究角度去说明SSHD服务的“gong ji”和防护原理,也不会提供文中所提到的“gong ji”工具(因为会被和谐掉哦!没办法^_^),请读者不要用违法用途,本人对于读者用户违法行...

xruan
06/21
0
0
fail2ban-防止用户暴力破解ssh工具

关于fail2ban: fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是防火墙),而且可以发送e-mail通知系统管理员,很好、很实用、很强大!...

weilovepan520
2017/09/30
0
0
fail2ban防暴力破解-ssh防爆力登录

介绍 fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙iptables屏蔽),如:当有人在试探你的SSH、SMTP、FTP密码,只要达到你...

RedbullMT
2016/06/10
181
0
安装配置fail2ban防止暴力破解

何为fail2ban fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙屏蔽),如:当有人在试探你的SSH、SMTP、FTP密码,只要达到你...

DragonFK
2013/02/20
0
0
邮件被暴力破解U-Mail邮件网关来帮忙

公司架设了一台邮件服务器,但是最近老是被攻击,还有两次有两个账号被暴力破解了。从日志上面看到不断的有接收到不同的IP发过来的各种邮箱的连接请求。虽然根据日志把不少的IP拉进了黑名单,...

小燕
2016/05/23
30
0
Linux 系统安全 -- 防暴力破解

fail2ban防止暴力破解 1. 下载stable稳定版解压缩1 2. 编译安装1 3. 拷贝启动脚本1 4. 修改配置文件1 5. 启动fail2ban2 6. 测试,ssh连接,连续输入3次密码2 7. 此时在查看服务端的防火墙和f...

雨后的春笋
2017/02/24
0
0
13款Linux运维比较实用的工具

本文介绍几款Linux运维比较实用的工具,希望对Linux管理员有所帮助。 1、查看进程占用带宽情况-Nethogs Nethogs 是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽。 下载:h...

xucaibao1979
2017/08/30
0
0
Fail2ban防暴力破解SSH

fail2ban 防止暴力破解各种程序密码 fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙屏蔽),如:当有人在试探你的SSH、SMT...

China_OS
2012/04/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring基础

Spring是什么? Spring是一个开源框架,最早由Rod Johnson创建,它解决的是业务逻辑层和其他各层的松耦合问题。 经过十几年的发展,Spring正在扩展其他的领域,如:移动开发、社交API集成、N...

这很耳东先生
7分钟前
0
0
面试系列-40个Java多线程问题总结

前言 这篇文章主要是对多线程的问题进行总结的,因此罗列了40个多线程的问题。 这些多线程的问题,有些来源于各大网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也...

Ryan-瑞恩
20分钟前
0
0
微信分享的细节

分享的缩略图要求: 一、图片大小小于32k 二、图片的尺寸为 宽度 :128px 高度:128px 分享title 和 description 出现金额等 以上情况存在会导致触发分享按钮 但是页面没有反应...

Js_Mei
26分钟前
0
0
【2018.07.23学习笔记】【linux高级知识 Shell脚本编程练习】

1、编写shell脚本,计算1-100的和; #!/bin/bashsum=0for i in `seq 1 100`do sum=$[$sum+$i]doneecho $sum 2、编写shell脚本,要求输入一个数字,然后计算出从1到输入数字的和,要求...

lgsxp
29分钟前
0
0
xss攻防浅谈

导读 XSS (Cross-Site Script) 攻击又叫跨站脚本攻击, 本质是一种注入攻击. 其原理, 简单的说就是利用各种手段把恶意代码添加到网页中, 并让受害者执行这段脚本. XSS能做用户使用浏览器能做的...

吴伟祥
29分钟前
0
0
js回调的一次应用

function hideBtn(option) { if (option == 1) { $("#addBtn").hide(); $("#addSonBtn").hide(); }}$("body").on("click", "#selectBtn", function () {......

晨猫
35分钟前
0
0
C++_读写ini配置文件

1.WritePrivateProfileString:写配置文件 WritePrivateProfileString 函数的定义形式为: BOOL WritePrivateProfileString(LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpString, LPCTST......

一个小妞
35分钟前
0
0
通往阿里,BAT的50+经典Java面试题及答案解析(上)

Java是一个支持并发、基于类和面向对象的计算机编程语言。下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改。 代码复用。 增强代码的可靠性和灵活性。 增加代码的可理解性...

Java大蜗牛
35分钟前
1
0
数据库两大神器【索引和锁】

前言 只有光头才能变强 索引和锁在数据库中可以说是非常重要的知识点了,在面试中也会经常会被问到的。 本文力求简单讲清每个知识点,希望大家看完能有所收获 声明:如果没有说明具体的数据库...

Java3y
39分钟前
0
0
Application Express安装

Application Express安装文档 数据库选择和安装 数据库选择 Oracle建议直接12.2.0.1.0及以上的版本,12.1存在20618595bug(具体可参见官方文档) Oracle 12c 中安装oracle application expr...

youfen
51分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部