Debian vps使用Fail2ban防止SSH密码暴力破解

文章目录

之前介绍过使用DenyHosts防止SSH密码暴力破解,今天再来介绍另外一个工具Fail2ban来实现防止SSH密码暴力破解。

关于DenyHosts的使用,请参考:

Debian vps使用DenyHosts防止SSH密码暴力破解

Fail2ban介绍

Fail2ban是linux下一款安全工具。通过监视系统日志,匹配日志的错误信息(正则式匹配),然后执行相应的屏蔽动作(一般情况下是调用防火墙屏蔽)。如:当有人在试探你的SSH、SMTP、FTP密码,只要达到你预设的次数,Fail2ban就会调用防火墙屏蔽这个IP,而且可以发送e-mail通知系统管理员,是一款很实用、很强大的软件。

Fail2ban具有以下特性:

1、支持大量服务。如sshd,apache,qmail,proftpd,sasl等等
2、支持多种动作。如iptables,tcp-wrapper,shorewall(iptables第三方工具),mail notifications(邮件通知)等等。
3、在logpath选项中支持通配符
4、需要Gamin支持(注:Gamin是用于监视文件和目录是否更改的服务工具)
5、需要安装python,iptables,tcp-wrapper,shorewall,Gamin。如果想要发邮件,那必需安装postfix或sendmail

Fail2ban安装

debian下执行以下命令:

1、更新系统

1
apt-get update && apt-get upgrade -y

2、安装fail2ban

1
apt-get install fail2ban

3、(可选)安装sendmail

1
apt-get install sendmail-bin sendmail

Fail2ban配置

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

1
2
3
4
5
6
7
[root@localhost ~]# cd /etc/fail2ban/
[root@localhost fail2ban]# ll
总计 24
drwxr-xr-x 2 root root  4096 10-28 17:00 action.d
-rw-rw-r-- 1 root root  1537 06-13 01:21 fail2ban.conf
drwxr-xr-x 2 root root  4096 10-28 17:00 filter.d
-rw-rw-r-- 1 root root 11514 06-13 01:21 jail.conf

该目录下有两个配置文件fail2ban.conf和jail.conf,两个配置文件夹action.d和filter.d。

1、fail2ban.conf配置文件

该文件定义了fail2ban日志位置及日志级别, 此配置文件保持默认即可,一般不做修改。
默认fail2ban.conf里面就三个参数,而且都有注释。

1
2
3
loglevel = 3     #默认日志的级别
logtarget = /var/log/fail2ban.log     #日志的目的
socket = /var/run/fail2ban/fail2ban.sock     #socket的位置

2、jail.conf配置文件

jail.conf是fail2ban主要的配置文件,下面将按照功能介绍各个字段的意义。

1)IP白名单

1
ignoreip = 127.0.0.1/3       #忽略IP,在这个清单里的IP不会被屏蔽,可以添加自己的IP,用空格隔开

如果希望将自己的IP设置为不屏蔽,可以添加为如下形式:

1
ignoreip = 127.0.0.1/3 123.45.67.89 #123.45.67.89为自己的IP

2)屏蔽时间和重试次数

1
2
bantime = 600                #屏蔽时间,600为10分钟,负数为永久
maxretry = 3                 #默认尝试次数

3)邮件提醒

1
2
3
destemail = root@localhost  #接收邮件的地址
mta = sendmail              #邮件执行程序
action = %(action_)s        #指定到达尝试次数后的动作,默认为仅屏蔽IP

4)ssh服务配置
fail2ban可以配置很多服务,但是默认仅启用ssh服务。

1
2
3
4
5
6
7
[ssh]
 
enabled  = true                    #true为启用
port     = ssh                     #ssh端口
filter   = sshd                    #过滤正则,位于/etc/fail2ban/filter.d
logpath  = /var/log/auth.log       #日志路径
maxretry = 6                       #最大尝试次数,会覆盖全局配置

3、filter.d配置文件夹

filter.d配置文件夹内日志的过滤规则,如filter.d/sshd.conf有可对sshd日志/var/log/secure进行分析。

我们可以通过命令fail2ban-regex [logfile] [filter.conf]来验证过滤规则是否有效

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

4、action.d配置文件夹

action.d文件夹为根据过滤情况要执行的动作。默认是iptable+mail-whois。执行何动作在jail.conf文件中定义。

fail2ban相关操作命令

启动fail2ban

1
fail2ban-client start

fail2ban-client start

1
fail2ban-client stop

观察fail2ban运行情况,有3种方式:
1)运行fail2ban-client status,会看到有个Jail list名称为sshd-iptables

1
2
3
4
[root@localhost ~]# fail2ban-client status
Status
|- Number of jail:     2
`- Jail list:          ssh-iptables, sasl-iptables

2)运行iptables –nL, 正常的话会看到多出来一个chain 名为fail2ban-SSH

1
fail2ban-SSH  tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22

3)通过日志/var/log/fail2ban.log,可以查看fail2ban是否启动正常,被禁用的IP也会在这里看到;

参考文章:

Using Fail2ban to Secure Your Server
使用fail2ban防止暴力破解



本文出自 TENNFY WU,转载时请注明出处及相应链接。

本文永久链接: http://www.tennfy.com/4337.html

下一篇文章:

上一篇文章:

2人参与了讨论

  1. faris 说:

    我就是来看看~哈哈~

  2. 我的LNMP的tools里倒是有这个执行脚本,到时试试!

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

3 + 1 = ?


您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

返回顶部