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

  fail2ban运行机制:简单来说其功能就是防止暴力破解。工作的原理是通过分析一定时间内的相关服务日志,将满足动作的相关IP利用iptables加入到dorp(丢弃)列表一定时间。

  fail2ban 官方网址:http://www.fail2ban.org

  文章的主要内容: 1. 安装fail2ban   2. 配置fail2ban    3. fail2ban的常用命令以及详解   4.邮件预警  5.注意事项

1. 安装fail2ban

  源码安装:

  1.1 下载安装包并解压  

  1. cd /tmp && wget https://github.com/fail2ban/fail2ban/archive/0.8.14.tar.gz && tar -xvzf 0.8.14.tar.gz

   1.2  查看安装需要的环境

  1. [root@vultr fail2ban-0.8.14]# cd /tmp/fail2ban* && cat README.md
  2.  
  3. Installation:
  4. -------------
  5.  
  6. **It is possible that Fail2ban is already packaged for your distribution. In
  7. this case, you should use it instead.**
  8.  
  9. Required:
  10. - [Python >= 2.4](http://www.python.org)
  11.  
  12. Optional:
  13. - [pyinotify >= 0.8.](https://github.com/seb-m/pyinotify)
  14. - Linux >= 2.6.
  15. - [gamin >= 0.0.](http://www.gnome.org/~veillard/gamin)
  16.  
  17. To install, just do:
  18.  
  19. tar xvfj fail2ban-0.8..tar.bz2
  20. cd fail2ban-0.8.
  21. python setup.py install
  22.  
  23. This will install Fail2Ban into /usr/share/fail2ban. The executable scripts are
  24. placed into /usr/bin, and configuration under /etc/fail2ban.
  25.  
  26. Fail2Ban should be correctly installed now. Just type:
  27.  
  28. fail2ban-client -h
  29.  
  30. to see if everything is alright. You should always use fail2ban-client and
  31. never call fail2ban-server directly.

我把README.md里的主要内容贴出来了。

环境检查

  1. [root@localhost ~]# python -V
  2. Python 2.7.
  3. [root@localhost ~]# uname -r
  4. 3.10.-.el7.x86_64

  1.3 安装fail2ban

  1. cd /tmp/fail2ban-* && python setup.py install
    echo $?

   生成服务启动脚本并开机自启:

  1. cp /tmp/fail2ban-*/files/redhat-initd /etc/init.d/fail2ban
  2. /sbin/chkconfig fail2ban on

  yum安装:

  1. yum install fail2ban

  fail2ban的配置文件路径:/etc/fail2ban

  fail2ban安装目录:/usr/share/fail2ban

  日志文件:/var/log/fail2ban.log

  达到阈值之后的执行的动作的配置文件:   action.d

  包含所有的过滤规则filter.d/

2. 配置fail2ban并实现防暴力破解

  官方的文档写到:在配置时,我们应该避免修改由fail2ban安装创建的文件,我们应该去编写具有.local扩展名的新文件。在.local新文件里配置的内容会覆盖jail.conf内容里相同的值。

  当我们的配置发生改变了我们可以使用  fail2ban-client reload ,来加载新的配置。

  2.1配置fail2ban

    编辑配置文件 jail.local  并实现防暴力破解 

  1. vim /etc/fail2ban/jail.d/jail.local

文件内容:

  1. #defalut这里是设定全局设置,如果下面的监控没有设置就以全局设置的值设置。
  2. [DEFAULT]
  3. # 用于指定哪些地址ip可以忽略 fail2ban 防御,以空格间隔。
  4. ignoreip = 127.0.0.1/
  5. # 客户端主机被禁止的时长(默认单位为秒)
  6. bantime =
  7. # 过滤的时长(秒)
  8. findtime =
  9. # 匹配到的阈值(次数)
  10. maxretry =
  11.  
  12. [ssh-iptables]
  13. # 是否开启
  14. enabled = true
  15. # 过滤规则
  16. filter = sshd
  17. # 动作
  18. action = iptables[name=SSH, port=ssh, protocol=tcp]
  19. # 日志文件的路径
  20. logpath = /var/log/secure
  21. # 匹配到的阈值(次数)
  22. maxretry =

在这里需要注意一点就是:我们上面的action设置的时候,port=ssh,如果我们更改了sshd服务的端口号,我能需要在这里设置对应的端口号,否则配置不生效。

  2.2 防暴力破解测试

    在上面配置好了之后,我们需要让配置生效:

  1. fail2ban-client reload

    测试:故意输入错误密码3次,再进行登录时,会拒绝登录

  1. [root@~]# ssh 192.168.1.121
  2. root@192.168.1.121's password:
  3. Permission denied, please try again.
  4. root@192.168.1.121's password:
  5. Permission denied, please try again.
  6. root@192.168.1.121's password:
  7. Permission denied (publickey,password).
  8. [root@~]# ssh 192.168.1.121
  9. ssh: connect to host 192.168.1.121 port 22: Connection refused

   我们可以查看当前被禁止登陆的ip:

  1. [root@]# fail2ban-client status ssh-iptables
  2. Status for the jail: ssh-iptables
  3. |- filter
  4. | |- File list: /var/log/secure #日志文件路径
  5. | |- Currently failed: #当前失败次数
  6. | `- Total failed: #总失败次数
  7. `- action
  8. |- Currently banned: #当前禁止的ip数量
  9. | `- IP list: 192.168.1.112 #当前禁止的ip
  10. `- Total banned: #禁止的ip总数

3. fail2ban常用的命令

  3.1 启动暂停查看状态

  1. systemctl start/restart/stop/status fail2ban

    3.2 fail2ban-client

start 启动fail2ban server和监狱
reload 重新加载配置文件
stop 暂停fail2ban和监狱
status 查看运行的监控服务数量和列表
set loglevel  设置日志等级,有 CRITICAL, ERROR, WARNING,NOTICE, INFO, DEBUG
get loglevel 获取当前日志的等级
set <JAIL> idle on|off  设置某个监控(监狱)的状态。
set <JAIL> addignoreip <IP> 设置某个监控(监狱)可以忽略的ip
set <JAIL> delignoreip <IP> 删除某个监控(监狱)可以忽略的ip
set <JAIL> banip <IP> 将ip加入 监控(监狱)
set <JAIL> unbanip <IP> 将ip从监控(监狱)移除

     还有很多没有列出来,我只在列出了我常用的一些。

  3.3 fail2ban-regex 

   测试筛选规则设否匹配当前的日志格式:

  1. fail2ban-regex /var/log/secure /etc/fail2ban/filter.d/sshd.conf

4. fail2ban邮件预警

  fail2ban 利用sendmail 进行发邮件也可以用mail进行发邮件,在尝试了sendmail无果后,决定使用mail。

  具体步骤:

   4.1 在/etc/mail.rc末尾配置发件人的信息:

  1. set ssl-verify=ignore
  2. set from=djx
  3. set smtp=smtps://mail.163.com:25
  4. set smtp-auth-user=dj
  5. set smtp-auth-password=
  6. set smtp-auth=login
  7. set nss-config-dir=/root/.certs

     4.2 然后在jail.local(自己的配置文件里),加入:

  1. mail-whois[name=SSH, dest=@qq.com, sender=djx@.com]

dest 是填入收件人邮箱

sender 是填入 发送邮箱

最后重新加载下配置即可。

 注意的问题:

  时区问题:

http://www.fail2ban.org/wiki/index.php/FAQ_englishIf time reference is not the same everywhere, then fail2ban won't ban any IP!

当我们更改了时区后,然后日志的时间并没有修改过来,导致两者的时间不一致,这样fail2ban的工作就失效了

解决办法:重启日志服务:systemctl restart rsyslog,保证两者的时间一致。

  修改端口问题:

   sshd更改端口号后使用fail2ban需要注意在填写配置的时候也需要更改端口号。否则会出现就算会将ip添加到防火墙,但是由于我更改了端口号,是起不到禁止作用的。

解决方法:配置文件中  action = iptables[name=SSH, port=ssh, protocol=tcp] ,port位置修改为新的端口。

fail2ban一键安装脚本和fail2ban防cc攻击在端午节后会写出来。

  

fail2ban的使用以及防暴力破解与邮件预警的更多相关文章

  1. centos7防暴力破解五种方法

    什么是暴力破解,简单来说就是对一个服务器进行无数次尝试登陆,并用不同的密码进行登陆直到可以登陆成功.暴力破解的基本步骤可以分为以下几步: 1. 找到对应的linux服务器    Ip地址 2.扫描端口 ...

  2. fail2ban 防暴力破解总结

    公司服务器安全问题一直是个令人头疼的问题,许多运维的小伙伴一直在用脚本来监控服务器登录状态,然而脚本编写比较麻烦,今天就给大家推荐一款小而精致的防暴力破解工具 fail2ban ,他可以监控系统日志, ...

  3. Centos6.4 安装fail2ban防暴力破解

    Centos6.4 安装fail2ban防暴力破解 一. 安装 curl -O https://codeload.github.com/fail2ban/fail2ban/tar.gz/0.9.0 m ...

  4. openssh安装、设置指定端口号、免密码登录、变量传递、防暴力破解

    首先确保机器挂在好光盘镜像,然后查看软件包信息 [root@xuegod63 ~]# df -hFilesystem      Size  Used Avail Use% Mounted on/dev ...

  5. WordPress防暴力破解:安全插件和用.htpasswd保护WordPress控制面板

    正在用Wordpress的博主们一定知道最近全球兴起的一波黑客锁定Wordpress暴力破解控制面板密码的风波了,据CloudFlare执行长Matthew Prince所说,所谓的暴力密码攻击是输入 ...

  6. [典型漏洞分享]YS的防暴力破解设计存在缺陷

    YS使用的防暴力破解机制存在缺陷,该缺陷可被用于暴力破解其它用户密码[高] 问题描述: YS在用户登录页面设置了验证码机制,当用户输入密码错误次数达到3次时,再次登录需要验证码以防止攻击者进行暴力破解 ...

  7. Odoo14 防暴力破解登录密码

    1 # Odoo14 防暴力破解登录密码 2 # 主要工具:redis 3 # 实现思路:限制每个用户24小时内登录失败次数.连续超过5次失败后,需要等待一定时间后才能再次尝试登录 4 # 配置:在你 ...

  8. [CentOS7] 常用工具 之 防暴力破解工具 Fail2ban

    防止暴力破解密码: Fail2ban ==> 用于自动ban掉ip 先用yum search fail2ban看看是否yum源含有fail2ban这个package,若没有的话请yum inst ...

  9. 使用 fail2ban 防御 SSH 服务器的暴力破解攻击

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

随机推荐

  1. hdu 1877

    题目 一个进制转换的题,注意0+0的情况 代码如下: #include <cstdio> int d[1000]; void solve(int n,int base) { int p = ...

  2. Even and Odd Functions

    \subsection{Even and Odd Functions} For a function $f$ in the form $y=f(x)$, we describe its type of ...

  3. 集合(五)不正确地使用HashMap引发死循环及元素丢失

    前一篇文章讲解了HashMap的实现原理,讲到了HashMap不是线程安全的.那么HashMap在多线程环境下又会有什么问题呢? 几个月前,公司项目的一个模块在线上运行的时候出现了死循环,死循环的代码 ...

  4. 提高Android和iOS调试编译速度

    http://www.cnblogs.com/findumars/p/7841252.html 提高Android和iOS调试编译速度   如果您使用Delphi开发App,就会遇到:Android和 ...

  5. Elasticsearch 健康状态处理

    笔者在自己的 ubuntu 服务器上使用 GET /_cat/health?v 命令时,返回值如下所示 可以看到集群状态为 yellow,这是什么意思呢?原来在 es 的集群状态中,有三种情况,官网描 ...

  6. asp.net-分析器错误消息: 服务器标记的格式不正确。

    大多数都是引号造成的 错误: <asp:LinkButton ID="btnRefund" runat="server" CommandName=&quo ...

  7. C#中的NameValueCollection简介

    NameValueCollection继承自NameObjectCollectionBase,并且和一般的键值对不同的是,它支持集合中出现相同的Key. 引用:using System.Collect ...

  8. reids 安装

    第一步:在VMware中安装CentOS(参考Linux教程中的安装虚拟机) 第二步:在Linux下安装gcc环境 [root@hadoop ~]#yum install gcc-c++ 第三步:将下 ...

  9. 如何优化代码中大量的if/else,switch/case?

    前言 随着项目的迭代,代码中存在的分支判断可能会越来越多,当里面涉及到的逻辑比较复杂或者分支数量实在是多的难以维护的时候,我们就要考虑下,有办法能让这些代码变得更优雅吗? 正文 使用枚举 这里我们简单 ...

  10. 数据库的完整性约束(ForeignKey ,Unique)

    文字转自于 海燕.博客 一.介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 ...