首页 > 其他分享 >Fail2Ban 教程

Fail2Ban 教程

时间:2024-02-27 10:33:05浏览次数:25  
标签:sshd 教程 etc Fail2Ban action destemail fail2ban

简介

Fail2Ban 是一个 Linux 系统的应用软件,用来防止系统入侵,主要是防止暴力破解系统密码。它是用 Python 开发的。

它主要通过监控日志文件(比如/var/log/auth.log/var/log/apache/access.log等)来生效。一旦发现恶意攻击的登录请求,它会封锁对方的 IP 地址,使得对方无法再发起请求。

Fail2Ban 可以防止有人反复尝试 SSH 密码登录,但是如果 SSH 采用的是密钥登录,禁止了密码登录,就不需要 Fail2Ban 来保护。

Fail2Ban 的安装命令如下。

# ubuntu & Debian
$ sudo apt install fail2ban

# Fedora
$ sudo dnf install epel-release
$ sudo dnf install fail2ban

# Centos & Red hat
$ yum install fail2ban

安装后,使用下面的命令查看 Fail2Ban 的状态。

$ systemctl status fail2ban.service

如果没有启动,就启动 Fail2Ban。

$ sudo systemctl start fail2ban

重新启动 Fail2Ban。

$ sudo systemctl restart fail2ban

设置 Fail2Ban 重启后自动运行。

$ sudo systemctl enable fail2ban

fail2ban-client

Fail2Ban 自带一个客户端 fail2ban-client,用来操作 Fail2Ban。

$ fail2ban-client

上面的命令会输出 fail2ban-client 所有的用法。

下面的命令查看激活的监控目标。

$ fail2ban-client status

Status
|- Number of jail:	1
`- Jail list:	sshd

下面的命令查看某个监控目标(这里是 sshd)的运行情况。

$ sudo fail2ban-client status sshd

Status for the jail: sshd
|- Filter
|  |- Currently failed: 1
|  |- Total failed:     9
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 1
   |- Total banned:     1
   `- Banned IP list:   0.0.0.0

下面的命令输出一个简要的版本,包括所有监控目标被封的 IP 地址。

$ sudo fail2ban-client banned
[{'sshd': ['192.168.100.50']}, {'apache-auth': []}]

下面的命令可以解封某个 IP 地址。

$ sudo fail2ban-client set sshd unbanip 192.168.1.69

配置

主配置文件

Fail2Ban 主配置文件是在/etc/fail2ban/fail2ban.conf,可以新建一份副本/etc/fail2ban/fail2ban.local,修改都针对副本。

$ sudo cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local

下面是设置 Fail2Ban 的日志位置。

[Definition]
logtarget = /var/log/fail2ban/fail2ban.log

修改配置以后,需要重新启动fail2ban.service,让其生效。

封禁配置

Fail2Ban 封禁行为的配置文件是/etc/fail2ban/jail.conf。为了便于修改,可以把它复制一份/etc/fail2ban/jail.local,后面的修改都针对jail.local这个文件。

$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

你也可以在目录/etc/fail2ban/jail.d里面,新建单独的子配置文件,比如/etc/fail2ban/jail.d/sshd.local

同样地,修改配置以后,需要重新启动fail2ban.service,让其生效。

配置文件里面,[DEFAULT]标题行表示对于所有封禁目标生效。举例来说,如果封禁时间修改为1天,/etc/fail2ban/jail.local里面可以写成:

[DEFAULT]
bantime = 1d

如果某人被封时,对站长发送邮件通知,可以如下设置。

[DEFAULT]
destemail = yourname@example.com
sender = yourname@example.com

# to ban & send an e-mail with whois report to the destemail.
action = %(action_mw)s

# same as action_mw but also send relevant log lines
#action = %(action_mwl)s

如果配置写在其他标题行下,就表示只对该封禁目标生效,比如写在[sshd]下面,就表示只对 sshd 生效。

默认情况下,Fail2Ban 对各种服务都是关闭的,如果要针对某一项服务开启,需要在配置文件里面声明。

[sshd]
enabled = true

上面声明表示,Fail2Ban 对 sshd 开启。

配置项

下面是配置文件jail.local的配置项含义,所有配置项的格式都是key=value

(1)bantime

封禁的时间长度,单位m表示分钟,d表示天,如果不写单位,则表示秒。Fail2Ban 默认封禁10分钟(10m 或 600)。

[DEFAULT]
bantime = 10m

(2)findtime

登录失败计算的时间长度,单位m表示分钟,d表示天,如果不写单位,则表示秒。Fail2Ban 默认封禁 10 分钟内登录 5 次失败的客户端。

[DEFAULT]

findtime = 10m
maxretry = 5

(3)maxretry

尝试登录的最大失败次数。

(4)destemail

接受通知的邮件地址。

[DEFAULT]
destemail = root@localhost
sender = root@<fq-hostname>
mta = sendmail

(5)sendername

通知邮件的“发件人”字段的值。

(6)mta

发送邮件的邮件服务,默认是sendmail

(7)action

封禁时采取的动作。

[DEFAULT]
action = $(action_)s

上面的action_是默认动作,表示拒绝封禁对象的流量,直到封禁期结束。

下面是 Fail2Ban 提供的一些其他动作。

# ban & send an e-mail with whois report to the destemail.
action_mw = %(action_)s
            %(mta)s-whois[sender="%(sender)s", dest="%(destemail)s", protocol="%(protocol)s", chain="%(chain)s"]

# ban & send an e-mail with whois report and relevant log lines
# to the destemail.
action_mwl = %(action_)s
             %(mta)s-whois-lines[sender="%(sender)s", dest="%(destemail)s", logpath="%(logpath)s", chain="%(chain)s"]

# See the IMPORTANT note in action.d/xarf-login-attack for when to use this action
#
# ban & send a xarf e-mail to abuse contact of IP address and include relevant log lines
# to the destemail.
action_xarf = %(action_)s
             xarf-login-attack[service=%(__name__)s, sender="%(sender)s", logpath="%(logpath)s", port="%(port)s"]

# ban IP on CloudFlare & send an e-mail with whois report and relevant log lines
# to the destemail.
action_cf_mwl = cloudflare[cfuser="%(cfemail)s", cftoken="%(cfapikey)s"]
                %(mta)s-whois-lines[sender="%(sender)s", dest="%(destemail)s", logpath="%(logpath)s", chain="%(chain)s"]

(8)ignoreip

Fail2Ban 可以忽视的可信 IP 地址。多个 IP 地址之间使用空格分隔。

ignoreip = 127.0.0.1/8 192.168.1.10 192.168.1.20

(9)port

指定要监控的端口。可以设为任何端口号或服务名称,比如ssh222200等。

ssh 配置

下面是 sshd 的设置范例。

[sshd]
enabled   = true
port = ssh
filter    = sshd
banaction = iptables
backend   = systemd
maxretry  = 5
findtime  = 1d
bantime   = 2w
ignoreip  = 127.0.0.1/8

首先需要注意,为了让 Fail2Ban 能够完整发挥作用,最好在/etc/ssh/sshd_config里面设置LogLevel VERBOSE,保证日志有足够的信息。

标签:sshd,教程,etc,Fail2Ban,action,destemail,fail2ban
From: https://www.cnblogs.com/javayihao/p/18036338

相关文章

  • 【MMD x EEVEE教程】EEVEE中隐藏材质,保留反射和阴影
    要用到光程节点中的是相机射线,一个非0即1的值,相机直接看到的为1,通过其它物体间接看到的为0,比如反射折射,漫射。如果要隐藏材质本身,在光滑地面中保留反射和阴影,下面为节点,材质混合模式需要设置为alphahashed。 如果要隐藏材质,保留阴影,但屏蔽掉地面反射中的物体,可以 ......
  • Git 教程:解密 .gitignore 文件、合并分支、解决冲突、及 Git 帮助
    Git帮助如果你忘记了命令或命令的选项,你可以使用Git帮助。在命令行中,有几种不同的使用帮助命令的方式:gitcommand-help-查看特定命令的所有可用选项githelp--all-查看所有可能的命令让我们看看不同的命令。Git-help查看特定命令的选项任何时候,如果你需要帮助......
  • Taurus.MVC WebMVC 入门开发教程2:一个简单的页面呈现
    前言:在上一篇中,我们了解了如何下载、配置和运行Taurus.MVCWebMVC框架。现在,让我们开始编写一个简单的页面并进行呈现。步骤1:创建控制器首先,我们需要创建一个控制器来处理页面呈现的逻辑。在VisualStudio中,右键单击项目文件夹,选择「添加」->「类」。在弹出的对话框中,......
  • 雾锁王国服务器一键部署教程
    去年1月24日有一款游戏登录了Steam,它的名字叫《雾锁王国》,如果不出意外的话,它可能就是游戏界的汪峰了,因为此时正值另一款游戏《幻兽帕鲁》热度正高之时。。然而它顶住了帕鲁的压力,短时间内就荣登Steam热度趋势榜单的榜首。到目前为止已经收获了超过2.7w条的好评,好评率高......
  • 【教程】 iOS混淆加固原理篇
     摘要本文介绍了iOS应用程序混淆加固的缘由,编译过程以及常见的加固类型和逆向工具。详细讨论了字符串混淆、类名、方法名混淆、程序结构混淆加密等加固类型,并介绍了常见的逆向工具和代码虚拟化技术。 引言在iOS开发中,为了保护应用程序免受逆向工程和反编译的威胁,需要对应......
  • 智能AI客服系统+企业专属AI知识库实现原理+配置教程
    企业专属AI知识库实现原理知识库是GPT用户咨询问题,调用文本转向量接口将问题转为向量数据,向量化搜索知识数据库,将相关知识文本整合后发送给GPT聊天补全接口 知识库服务主要基于以下两个接口:OpenAI聊天接口(/v1/chat/completions)OpenAI向量生成接口(/v1/embeddings......
  • Redis 教程
    Redis教程Redis概述Redis(RemoteDictionaryServer),即远程字典服务。是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把......
  • Taurus.MVC WebMVC 入门开发教程1:框架下载环境配置与运行
    前言:之前有网友说Mvc系列的教程对新手不友好,因此补充新手入门系列教程。在开始使用Taurus.Mvc 进行Web应用开发之前,建议可以观摩一下之前的文章:WebAPI系列教程因为两者的教程,有相通的部分,唯一的差别部分,在于Web应用涉及到UI界面。本系列的目录大纲为:Taurus.MVCWebMVC......
  • 基于Python的地图绘制教程
    本文将介绍通过Python绘制地形图的方法,所需第三方Python相关模块包括rasterio、geopandas、cartopy等,可通过pip等方式安装。1示例代码1.1导入相关模块importrasterioimportgeopandasasgpdimportnumpyasnpimportcartopy.crsasccrsimportmatplotlib.pyplot......
  • 3阶魔方还原教程
    还原过程黄心白色十字(拼顶层十字)确定中点和最下层一致并做成白心白色十字(拼底层十字)对齐固定中点与最下层中点一致翻转向下90度此时白色为底色置于最下层确定最下层与中心方块一致(拼底层角块全白)当第一层有白色混合棱角移到另外两色块中间使用右手公式(上左下右)......