安装配置fail2ban防止暴力破解

何为fail2ban

fail2ban能够监视你的系统日志,而后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动做(通常状况下是调用防火墙屏蔽),如:当有人在试探你的SSH、SMTP、FTP密码,只要达到你预设的次数,fail2ban就会调用防火墙屏蔽这个IP,并且能够发送e-mail通知系统管理员,是一款很实用、很强大的软件!php

安装前的准备工做

必须的前端

python>2.4(官网推荐使用2.5版本以上,2.4版本有bug)python

可选的git

iptables、shorewall、tcp-wrapper,当发生暴力破解现象时,使用其中一种方式来屏蔽ipgithub

gmain,文件更改监视器正则表达式

sendmail、postfix,能够及时发邮件报告状况vim

安装fail2ban

安装也很简单!centos

下载fail2ban:https://github.com/fail2ban/fail2ban多线程

cd /opt/fail2ban/

setup.py install

安装的默认路径:/usr/share/fail2ban并发

执行脚本路径:/usr/bin

配置文件路径:/etc/fail2ban

安装截图:

启动脚本与logrotate配置

1.配置/etc/init.d脚本

首先,咱们要建立一个服务脚本,便于管理fail2ban的启动与关闭,包括它的开机启动。

fail2ban安装内自带了几个系统的模板文件,centos的文件为:files/redhat-initd。

#将redhat-initd文件复制到/etc/init.d目录下
cp redhat-initd /etc/init.d/fail2ban

#更改权限
chmod 755 /etc/init.d/fail2ban

#加入开机服务项
chkconfig --add fail2ban

#开机启动
chkconfig fail2ban on

2.配置fail2ban的logrotate

建立这个文件:/etc/logrotate.d/fail2ban

#内容为:
/var/log/fail2ban.log {
    weekly
    rotate 7
    missingok
    compress
    postrotate
           /usr/bin/fail2ban-client reload 1>/dev/null || true
    endscript
}


其中fail2ban-client的路径值得注意,可使用这个命令查询:

which fail2ban-client
#或者
whereis fail2ban-client

Fail2Ban结构说明

首先来简述下fail2ban是如何工做的,涉及到哪些东西。

fail2ban包含下面5个要素,理解这5个要素之间的关系,对于如何配置如何使用fail2ban是颇有帮助的。

  • filter(过滤器):用于在日志文件中找出须要屏蔽信息的正则表达式
  • action(操做指令):发现须要屏蔽时所作的具体操做
  • jail(组合,一个filter或者多个action):filter和action的整合
  • fail2ban-client:客户端(/usr/bin/fail2ban-client)
  • fail2ban-server:服务端(/usr/bin/fail2ban-server)

前三个都是配置文件,在/etc/fail2ban目录下;最后两个是fail2ban的可执行文件。

Server

fail2ban有两部分组成:fail2ban-client和fail2ban-server。server是多线程的并用来监听unix socket的命令。server自己不加载任何配置。

所以,在启动时,server处于没有jail定义的默认状态!须要client给予具体的配置。

fail2ban-server的启动参数以下:

------------
-b                   start in background(后台启动)
-f                   start in foreground(前台启动)
-s                   socket path(套接字路径)
-x                   force execution of the server(强制执行server)
-h, --help           display this help message(显示帮助信息)
-V, --version        print the version(打印版本)
-----------

Client

fail2ban-client是fail2ban-server的前端程序,它链接server的socket并发送命令给server以配置和操做server。

client以命令行或交互模式(使用-i选项)读取配置文件或仅仅发送一个单独的命令给server。fail2ban-client也能够启动server。

fail2ban-client的启动参数:

-c               configuration directory(配置目录)
-s               socket path(socket路径)
-d               dump configuration. For debugging(打印出配置,用于调试)
-i               interactive mode(交互模式)
-v               increase verbosity(增长详细描述)
-q               decrease verbosity(减小详细描述)
-x               force execution of the server(强制执行server)
-h, --help       display this help message(显示帮助)
-V, --version    print the version(打印版本)

配置目录

目录结构以下图:

每一个.conf文件都会被名为 .local的文件覆盖。.conf首先被读取,其次是.local。新的配置会覆盖早先的。所以,.local 文件没必要包含每一个相应于.conf中的选项,只是填写你想要覆盖的设置。

具体请查看fail2ban使用手册:官网中文

开始体验fail2ban

/etc/fail2ban下已经自带了一些经常使用服务的filter,action脚本了。因此只要简单的配置下便可使用。

jail.conf文件里能够配置多个须要检测的服务,好比sshd,vsftpd等。每一段均可以指定如何过滤(filter),如何屏蔽(action)。

一般只需修改jail.conf文件,修改filter扫描的日志路径,修改action等。

而自带的filter和action,通常均可以用了。但若是自定义filter,须要了解正则表达式相关的知识。

vim /etc/fail2ban/jail.conf
#SSH的配置:
[ssh-iptables]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
                  sendmail-whois[name=SSH, dest=lijialong1314@foxmail.com, sender=root]
logpath  = /var/log/secure
maxretry = 5

#Vsftpd的配置
[vsftpd-iptables]
enabled  = true
filter   = vsftpd
action   = iptables[name=VSFTPD, port=ftp, protocol=tcp]
                sendmail-whois[name=VSFTPD, dest=lijialong1314@foxmail.com]
logpath  = /var/log/message
maxretry = 5
bantime  = 1800

启动/关闭/重启fail2ban:service fail2ban {start|stop|status|restart}

相关文章
相关标签/搜索