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

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

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

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

1. 安装fail2ban

  源码安装:

  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  查看安装需要的环境

[root@vultr fail2ban-0.8.14]# cd  /tmp/fail2ban* && cat README.md

Installation:
------------- **It is possible that Fail2ban is already packaged for your distribution. In
this case, you should use it instead.** Required:
- [Python >= 2.4](http://www.python.org) Optional:
- [pyinotify >= 0.8.](https://github.com/seb-m/pyinotify)
- Linux >= 2.6.
- [gamin >= 0.0.](http://www.gnome.org/~veillard/gamin) To install, just do: tar xvfj fail2ban-0.8..tar.bz2
cd fail2ban-0.8.
python setup.py install This will install Fail2Ban into /usr/share/fail2ban. The executable scripts are
placed into /usr/bin, and configuration under /etc/fail2ban. Fail2Ban should be correctly installed now. Just type: fail2ban-client -h to see if everything is alright. You should always use fail2ban-client and
never call fail2ban-server directly.

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

环境检查

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

  1.3 安装fail2ban

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

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

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

  yum安装:

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  并实现防暴力破解 

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

文件内容:

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

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

  2.2 防暴力破解测试

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

fail2ban-client reload

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

[root@~]# ssh 192.168.1.121
root@192.168.1.121's password:
Permission denied, please try again.
root@192.168.1.121's password:
Permission denied, please try again.
root@192.168.1.121's password:
Permission denied (publickey,password).
[root@~]# ssh 192.168.1.121
ssh: connect to host 192.168.1.121 port 22: Connection refused

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

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

3. fail2ban常用的命令

  3.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 

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

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

4. fail2ban邮件预警

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

  具体步骤:

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

set ssl-verify=ignore
set from=djx
set smtp=smtps://mail.163.com:25
set smtp-auth-user=dj
set smtp-auth-password=
set smtp-auth=login
set nss-config-dir=/root/.certs

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

 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. APUE(5)---标准I/O库 (3)

    十.定位流 #include <stdio.h> long ftell(FILE *fp); //若成功,返回当前文件位置指示:若出错,返回-1L int fseek(FILE *fp, ...

  2. Scala类型检查与转换

    Scala类型检查与转换 isInstanceOf:检查某个对象是否属于某个给定的类. asInstanceOf:将引用转换为子类的引用. classOf:如果想测试p指向的是一个Employee对象 ...

  3. (原创)Hibernate 使用过程中(尤其是多对多关联中的级联保存和级联删除)的注意事项(基于项目的总结)

    一.先上知识点: 1.hibernate多对多关联关系中最重要的参数是(基于配置文件xxx.hbm.xml文件形式): 1):inverse属性,如果设置inverse=“true”就代表让对方参与维 ...

  4. 结对编程--四则运算(Java)梅进鹏 欧思良

    结对编程--四则运算(Java)梅进鹏 欧思良 Github项目地址:https://github.com/MeiJinpen/Arithmetic 功能要求 题目:实现一个自动生成小学四则运算题目的 ...

  5. Android 如何修改gen下包的名字

    前言 当将项目中包进行重命名后,所有包名字修改了,但是在gen目录下android sdk 自动生成的包名并没有修改,如果要引用R.java 中的字段, 又得import以前的包名字.   原因 出现 ...

  6. 微软DevOps软件开发高级培训课程(深圳站) 2016.04.06

    深圳特区云集了国内众多大型IT企业,作为北上广深的一线城市,当之无愧! 我们在深圳同方信息港的微软办公室是举行培训,60人的培训教室,生生被挤满了80人,过道都被全部占用了.可惜由于换了电脑,把照片搞 ...

  7. qt中多线程用法总结

    1.多线程的理解 在操作系统中线程和进程划分. 操作系统可以同时执行多个任务,每个任务就是进程:进程可以同时执行多个任务,每个任务就是线程. 线程之间相互独立,抢占式执行.对于单核CPU来说同一时刻只 ...

  8. ASP.NET Core 2 学习笔记(七)路由

    ASP.NET Core通过路由(Routing)设定,将定义的URL规则找到相对应行为:当使用者Request的URL满足特定规则条件时,则自动对应到相符合的行为处理.从ASP.NET就已经存在的架 ...

  9. pageadmin CMS网站建设教程:模板中如何实现信息数据共享

    pageadmin CMS网站制作教程:模板中如何实现信息数据共享 很多时候信息数据需要共享,一个最常用的应用场景就是手机版(独立手机,非响应式)本共享pc版本数据,下面以这个场景为例讲解. 假设手机 ...

  10. 730. Count Different Palindromic Subsequences

    Given a string S, find the number of different non-empty palindromic subsequences in S, and return t ...