fail2ban的使用以及防暴力破解与邮件预警

 

  fail2ban能够监视你的系统日志,而后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动做(通常状况下是防火墙),并且能够发送e-mail通知系统管理员!php

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

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

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

1. 安装fail2ban
vim

  源码安装:bash

  1.1 下载安装包并解压  ssh

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

   1.2  查看安装须要的环境tcp

[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.3](https://github.com/seb-m/pyinotify)
  - Linux >= 2.6.13
- [gamin >= 0.0.21](http://www.gnome.org/~veillard/gamin)

To install, just do:

    tar xvfj fail2ban-0.8.12.tar.bz2
    cd fail2ban-0.8.12
    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里的主要内容贴出来了。测试

环境检查ui

[root@localhost ~]# python -V
Python 2.7.5
[root@localhost ~]# uname -r 
3.10.0-693.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/8
# 客户端主机被禁止的时长(默认单位为秒)
bantime  = 3600
# 过滤的时长(秒)
findtime  = 600
# 匹配到的阈值(次数)
maxretry = 3



[ssh-iptables]
# 是否开启
enabled  = true
# 过滤规则
filter   = sshd
# 动做
action   = iptables[name=SSH, port=ssh, protocol=tcp]
# 日志文件的路径
logpath  = /var/log/secure
# 匹配到的阈值(次数)
maxretry = 3

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

  2.2 防暴力破解测试

    在上面配置好了以后,咱们须要让配置生效:

fail2ban-client reload

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

[root@121~]# 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@121~]# ssh 192.168.1.121
ssh: connect to host 192.168.1.121 port 22: Connection refused

   咱们能够查看当前被禁止登录的ip:

[root@121]# fail2ban-client status ssh-iptables 
Status for the jail: ssh-iptables
|- filter
|  |- File list:    /var/log/secure     #日志文件路径 |  |- Currently failed:    0        #当前失败次数
|  `- Total failed:    3 #总失败次数
`- action
   |- Currently banned:    1        #当前禁止的ip数量
   |  `- IP list:    192.168.1.112 #当前禁止的ip
   `- Total banned:    1        #禁止的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=1120@qq.com, sender=djx@163.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攻击在端午节后会写出来。

相关文章
相关标签/搜索