安装配置fail2ban防止暴力破解

何为fail2ban

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

安装前的准备工作

必须的

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

可选的

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

gmain,文件更改监视器

sendmail、postfix,可以及时发邮件报告情况

安装fail2ban

安装也很简单!

下载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}

当你使用Nginx作为网页服务器时,可以结合使用Fail2Ban来增加安全性。Fail2Ban是一个用于防止恶意登录和暴力破解的工具,它监视日志文件并采取相应的措施来阻止攻击者。 要在Nginx上启用Fail2Ban,你可以按照以下步骤操作: 1. 安装Fail2Ban:使用适合你的操作系统的包管理器来安装Fail2Ban。例如,在Ubuntu上可以运行以下命令: ``` sudo apt-get install fail2ban ``` 2. 配置Fail2Ban:编辑Fail2Ban配置文件 `/etc/fail2ban/jail.conf` 或 `/etc/fail2ban/jail.local`,根据你的系统选择一个文件。在该文件中,你可以定义Fail2Ban监视的日志文件和设置封禁规则。 3. 创建自定义Nginx的Fail2Ban规则:在 `/etc/fail2ban/filter.d/` 目录下创建一个名为 `nginx.conf` 的文件,并添加以下内容: ``` [Definition] failregex = ^<HOST>.*"(GET|POST).*HTTP.*" (444|403|401) ignoreregex = ``` 4. 更新Fail2Ban配置:编辑 `/etc/fail2ban/jail.local` 文件,在 `[DEFAULT]` 部分添加以下内容: ``` [nginx] enabled = true filter = nginx action = iptables[name=nginx, port=http, protocol=tcp] logpath = /var/log/nginx/access.log findtime = 3600 maxretry = 5 ``` 这将启用针对Nginx的Fail2Ban规则,并定义了一些参数,如查找时间(findtime)和最大重试次数(maxretry)。 5. 重启Fail2Ban服务:根据你的操作系统,使用适当的命令重启Fail2Ban服务。例如,在Ubuntu上可以运行以下命令: ``` sudo service fail2ban restart ``` 现在,Fail2Ban将开始监视Nginx的访问日志文件,并根据你在配置文件中定义的规则来封禁恶意IP地址。 请注意,以上步骤仅提供了一个简单的示例配置。你可以根据自己的需求进行定制化设置,例如增加更多的Fail2Ban规则或调整封禁参数。同时,确保你的Nginx日志文件路径与Fail2Ban配置文件中指定的路径一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值