如何在 CentOS 8 上安装和配置 Fail2ban

2023-11-10

所有暴露在互联网上的服务器都面临着恶意软件攻击的风险。例如,如果您有一个连接到公共网络的软件,攻击者可以使用暴力尝试来获取对该应用程序的访问权限。

Fail2ban 是一款开源工具,可通过监控服务日志中的恶意活动来帮助保护您的 Linux 计算机免受暴力破解和其他自动攻击。它使用正则表达式来扫描日志文件。所有与模式匹配的条目都会被计数,当它们的数量达到某个预定义阈值时,Fail2ban 会在特定的时间内禁止违规 IP。默认系统firewall用作禁止操作。禁止期限届满后,该 IP 地址将从禁止列表中删除。

本文介绍如何在 CentOS 8 上安装和配置 Fail2ban。

在 CentOS 上安装 Fail2ban#

Fail2ban 软件包包含在默认的 CentOS 8 存储库中。要安装它,请以 root 身份输入以下命令或具有 sudo 权限的用户 :

sudo dnf install fail2ban

安装完成后,启用并启动 Fail2ban 服务:

sudo systemctl enable --now fail2ban

要检查 Fail2ban 服务器是否正在运行,请键入:

sudo systemctl status fail2ban
● fail2ban.service - Fail2Ban Service
   Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-09-10 12:53:45 UTC; 8s ago
...

就是这样。此时,您的 CentOS 服务器上已运行 Fail2Ban。

Fail2ban 配置#

默认的 Fail2ban 安装带有两个配置文件,/etc/fail2ban/jail.conf and /etc/fail2ban/jail.d/00-firewalld.conf。不应修改这些文件,因为更新包时它们可能会被覆盖。

Fail2ban 按以下顺序读取配置文件:

  • /etc/fail2ban/jail.conf
  • /etc/fail2ban/jail.d/*.conf
  • /etc/fail2ban/jail.local
  • /etc/fail2ban/jail.d/*.local

Each .local文件覆盖设置.conf file.

配置 Fail2ban 最简单的方法是复制jail.conf to jail.local并修改.local文件。更高级的用户可以构建.local从头开始的配置文件。这.local文件不必包含相应的所有设置.conf文件,仅那些您想要覆盖的文件。

创建一个.local默认的配置文件jail.conf file:

sudo cp /etc/fail2ban/jail.{conf,local}

要开始配置 Fail2ban 服务器,请打开jail.local与您的文件文本编辑器 :

sudo nano /etc/fail2ban/jail.local

该文件包含描述每个配置选项的作用的注释。在此示例中,我们将更改基本设置。

白名单IP地址#

可以将要从禁止中排除的 IP 地址、IP 范围或主机添加到ignoreip指示。您应该在此处添加您的本地 PC IP 地址以及您想要列入白名单的所有其他计算机。

取消注释以以下内容开头的行ignoreip并添加您的 IP 地址,并用空格分隔:

/etc/fail2ban/jail.local
ignoreip = 127.0.0.1/8 ::1 123.123.123.123 192.168.1.0/24

禁止设置#

的价值观bantime, findtime, and maxretry选项定义禁止时间和禁止条件。

bantime是IP被禁止的持续时间。如果未指定后缀,则默认为秒。默认情况下,bantime值设置为 10 分钟。一般来说,大多数用户会希望设置更长的禁止时间。根据您的喜好更改值:

/etc/fail2ban/jail.local
bantime  = 1d

要永久禁止该 IP,请使用负数。

findtime是设置禁令之前失败次数之间的持续时间。例如,如果 Fail2ban 设置为在五次失败后禁止 IP(maxretry,见下文),这些故障必须发生在findtime期间。

/etc/fail2ban/jail.local
findtime  = 10m

maxretry是 IP 被禁止之前的失败次数。默认值设置为 5,这对于大多数用户来说应该没问题。

/etc/fail2ban/jail.local
maxretry = 5

电子邮件通知#

当 IP 被禁止时,Fail2ban 可以发送电子邮件警报。要接收电子邮件,您需要在服务器上安装 SMTP 并更改默认操作,即仅禁止 IP%(action_mw)s, 如下所示:

/etc/fail2ban/jail.local
action = %(action_mw)s

%(action_mw)s将禁止违规 IP 并发送包含 whois 报告的电子邮件。如果您想在电子邮件中包含相关日志,请将操作设置为%(action_mwl)s.

您还可以调整发送和接收电子邮件地址:

/etc/fail2ban/jail.local
destemail = admin@linuxize.com

sender = root@linuxize.com

禁止失败监狱#

Fail2ban 使用监狱的概念。监狱描述了一项服务,包括过滤器和操作。对与搜索模式匹配的日志条目进行计数,当满足预定义条件时,执行相应的操作。

Fail2ban 附带了许多针对不同服务的监狱。您还可以创建自己的监狱配置。

默认情况下,在 CentOS 8 上,不启用监狱。要启用监狱,您需要添加enabled = true监狱称号之后。以下示例展示了如何启用sshd jail:

/etc/fail2ban/jail.local
[sshd]
enabled   = true
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

我们在上一节中讨论的设置可以针对每个监狱进行设置。这是一个例子:

/etc/fail2ban/jail.local

过滤器位于/etc/fail2ban/filter.d目录,存储在与监狱同名的文件中。如果您有自定义设置并具有使用正则表达式的经验,则可以微调过滤器。

每次修改配置文件时,都必须重新启动 Fail2ban 服务才能使更改生效:

sudo systemctl restart fail2ban

Fail2ban 客户端#

Fail2ban 附带一个名为的命令行工具fail2ban-client您可以使用它与 Fail2ban 服务交互。

查看所有可用选项fail2ban-client命令,用以下命令调用 it-h option:

fail2ban-client -h

该工具可用于禁止/取消禁止 IP 地址、更改设置、重新启动服务等。这里有一些例子:

  • 检查监狱的状态:

    sudo fail2ban-client status sshd
  • 解封IP:

    sudo fail2ban-client set sshd unbanip 23.34.45.56
  • 禁止IP:

    sudo fail2ban-client set sshd banip 23.34.45.56

结论#

我们已经向您展示了如何在 CentOS 8 上安装和配置 Fail2ban。有关配置 Fail2ban 的更多信息,请访问官方文档 .

如果您有疑问,请随时在下面发表评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 CentOS 8 上安装和配置 Fail2ban 的相关文章

  • 在 Freemarker 模板中检查 Spring 安全角色和记录的用户名

    有谁知道 freemarker 标签来检查 freemarker 文件中的 spring 安全角色和用户名 我从网络上的几个资源中发现以下代码将打印登录的用户名 但它没有打印用户名 而是打印 登录为
  • 访问 Amazon EC2 上的 Mongodb 时出现问题

    我还有一个问题要问你 我有安装了 mondodb 的 Amazon EC2 实例 它工作得很好 除了一件事 我无法从外部 我的电脑 访问 连接到 它 我认为安全组的问题 这是某种默认防火墙 有谁知道如何配置EC2实例来访问mongodb 提
  • 如何防止我的客户经常使用演示 Java 程序?

    我制作了一个演示小程序 想交付给我的客户 以便他可以运行它 5 次以检查其功能 它不是一个大软件 我为其实现了一些序列密钥功能并制作了试用软件 我想要一个简单的解决方案 可以限制程序的使用超过 5 次 或者可以在达到阈值限制后自行删除 我想
  • GSSAPI 中的 javax.naming.AuthenticationException

    我正在尝试使用 JAVA GSSAPI 执行 NTLM 绑定 我收到此错误 javax naming AuthenticationException GSSAPI 根异常是 javax security sasl SaslException
  • 合并 2 个 .jks 信任库文件

    我正在使用启用了 SSL 的 Tomcat 并使用信任库进行客户端身份验证 我有两个 jks trustore 文件 第一个 我将其用于 PROD 环境 另一个用于 TEST 环境客户端证书 我在 Tomcat 上部署了 Web 应用程序
  • 是否可以在 ApplicationServices DB 中对电子邮件地址进行加密?

    为了在我正在进行的项目中保持电子邮件地址的私密性 提高安全性 我希望对存储在数据库中的所有电子邮件进行加密 但是 我们使用的是 Asp Net Membership 提供程序 并且电子邮件以明文形式显示在表 aspnet Membershi
  • Java程序验证signtool签名的数字签名

    我已经使用 SignTool 对文件 exe 或 dll 不是 jar 文件 进行了数字签名 Signtool还可以验证数字签名 但我的要求是使用java程序检查由signtool签名的文件的数字签名 我在互联网上搜索但没有找到任何信息 您
  • 为什么 iframe 请求不发送 cookie?

    兄弟部门创建了一个 HTML 文件 该文件实际上是少数 iframe 的支架 每个 iframe 都会调用一个托管在 Web 服务器上的报告 其参数略有不同 调用的报告将向未经身份验证的用户显示登录表单 或向已经过身份验证的用户显示报告内容
  • 将授权放在服务层而不是Web API层

    我正在使用 NET Core Web API 构建 REST API 我的控制器只是将请求转发到服务层并返回结果 HttpPost nameof Create public async Task
  • 如何保护 RESTful Web 服务的安全?

    我必须实施安全RESTful Web 服务 https www ibm com developerworks webservices library ws restful 我已经使用谷歌做了一些研究 但我陷入困境 Options TLS H
  • asp.net 中的 HTML 标签注入

    我的安全团队报告了以下代码的一个 html 标签注入安全问题 function ClosePopUp objBhID var pageName window location pathname var modalPopupBehavior
  • 当 .NET 项目开源时,谁应该拥有用于签署 .NET 程序集的私钥? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 更具体地说 是一个类库程序集 我最初的想法 让一些指定的管理员进行所有程序集签名 但是 当错误修复和新版本被编写时 二进制文件最终将依赖于它们的
  • 是否可以执行扩展名为 file.php.jpg 的 PHP?

    网站合法文件image upload php用于上传文件89471928047 php jpg这是简单的文件上传表单 将 tmp 文件复制到同一图像文件夹 他们如何设法执行它并通过它上传其他文件 有人知道这怎么可能吗 PHP version
  • 处理 PHP 中的会话劫持

    阅读了 Stackoverflow 上有关会话劫持的许多问题 我发现验证用户会话的唯一 解决方案 是检查用户代理 这是一个薄弱的保护层 我什至懒得去检查实施它 所以 我想知道你们实施了哪些解决方案 您是否使用 PHP 的本机会话或者是否有更
  • 解决 php 常见冲突的最佳方法:忽略、修复还是其他?

    我正在尝试在 CentOS 6 上的 PHP 5 3 3 上安装 Soap 模块 来自 webtatic PHP 5 6 当我运行 yum 命令时yum install php56w soap要安装它 我收到以下消息 错误 php56w c
  • 在本地安全存储用于 Web 服务的密码

    我有一个应用程序 通过发送用户名和密码来对第三方 Web 服务进行身份验证 目前 我每次启动应用程序时都会在 winform 上输入密码 但我需要它自动登录 我想比更安全地存储用户名 密码 Dim username as String us
  • 在 C# .net 中如何使用 RSA 和许可证提供程序类进行许可?

    我想为简单的控制台应用程序提供许可证 我使用 RSACrypttoServiceProvider 类来加密和解密 我还想使用 LicFileLicenseProvider 类来为我的应用程序授予许可证 如何继承LicFileLicenseP
  • 一个 Guice 就绪的安全框架?

    有没有人见过一个为与 Guice 一起工作而编写的框架 或者一个将现有安全系统 即 Acegi 与 Guice 集成的库 到目前为止我发现了以下内容 http code google com p warp security http cod
  • 如何使用过滤器进行输出编码以防止XSS?

    我在 servlet 中使用以下代码 protected void doGet HttpServletRequest request HttpServletResponse response throws ServletException
  • set-key-partition-list codesign 后仍提示密钥访问

    我正在导入一个PEM使用以下命令包含我的代码签名身份的公钥和私钥的文件 security import PEM FILE k Library Keychains login keychain T usr bin codesign T usr

随机推荐

  • Linux 中的 Curl 命令及示例

    curl是一个命令行实用程序 用于从服务器传输数据或向服务器传输数据 无需用户交互即可工作 和curl 您可以使用支持的协议之一下载或上传数据 包括 HTTP HTTPS SCP SFTP and FTP curl提供了许多选项 允许您恢复
  • 如何在 Ubuntu 18.04 上安装 Gradle

    Gradle 是一种通用构建工具 主要用于 Java 项目 它结合了 Ant 的最佳功能和Maven 与使用 XML 进行脚本编写的前辈不同 Gradle 使用Groovy 一种动态的 面向对象的编程语言 用于 Java 平台定义项目和构建
  • Linux中的Fdisk命令(创建磁盘分区)

    安装新的 SSD 或硬盘后 您需要做的第一件事就是对其进行分区 驱动器至少需要有一个分区 然后才能对其进行格式化并在其上存储文件 在 Linux 中 您可以使用多种工具来创建分区 其中fdisk是最常用的一种 在这篇文章中 我们将讨论fdi
  • Linux 中的 Rsync 命令及示例

    rsync是一个快速且多功能的命令行实用程序 用于通过远程 shell 在两个位置之间或从 到远程 Rsync 守护进程同步文件和目录 它通过仅传输源和目标之间的差异来提供快速增量文件传输 Rsync 可用于镜像数据 增量备份 在系统之间复
  • 如何在 Linux 中创建目录(mkdir 命令)

    在 Linux 系统中 您可以从命令行或借助桌面文件管理器创建新目录 允许您创建目录 也称为文件夹 的命令是mkdir 本教程涵盖了使用的基础知识mkdir命令 包括日常示例 Linux mkdir 命令语法 语法为mkdir命令如下 mk
  • 如何在 Ubuntu 20.04 上安装 Apache

    Apache 是世界上最流行的 Web 服务器之一 它是一个开源 跨平台的 HTTP 服务器 为大部分互联网网站提供支持 Apache 提供了许多强大的功能 可以通过附加模块进行扩展 本教程介绍如何在 Ubuntu 20 04 上安装和管理
  • 如何在 Debian 9 上设置 SSH 密钥

    Secure Shell SSH 是一种加密网络协议 用于客户端和服务器之间的安全连接 支持各种身份验证机制 两种最流行的机制是基于密码和基于公钥的身份验证 使用 SSH 密钥比传统的密码身份验证更安全 更方便 在本教程中 我们将描述如何在
  • 什么是 503 服务不可用错误

    浏览网页时最常见的错误之一是 503 服务不可用错误 此消息表明网络服务器遇到技术问题 无法处理请求 本文解释了 503 错误的含义 为什么会收到 HTTP 503 代码以及如何解决这些错误 什么是 HTTP 503 错误 当您打开网页时
  • 如何使用 SSHFS 通过 SSH 挂载远程目录

    SSHFS SSH 文件系统 是基于 FUSE 的文件系统客户端 用于通过 SSH 连接挂载远程目录 SSHFS 使用 SFTP 协议 它是 SSH 的一个子系统 并且在大多数 SSH 服务器上默认启用 与其他网络文件系统协议 例如 NFS
  • Linux 中的 pidof 命令

    pidof是一个命令行实用程序 可让您查找正在运行的程序的进程 ID 在这篇文章中 我们将解释如何使用Linuxpidof命令 如何使用pidof命令 有不同的实现pidof适用于基于 Red Hat 和 Debian 的发行版 在 Red
  • 在 Ubuntu 20.04 上安装 ONLYOFFICE 文档

    ONLYOFFICE Docs 是一个根据 AGPLv3 许可证分发的开源办公套件 它允许处理办公文档 电子表格和演示文稿 以及可填写的表格 您可以将其另存为 PDF 文件 该套件使用 DOCX XLSX 和 PPTX 作为核心格式 保证与
  • 如何在 CentOS 8 上安装 VirtualBox 来宾添加

    虚拟盒子是开源的跨平台虚拟化软件 允许您同时运行多个来宾操作系统 虚拟机 VirtualBox 提供了一组驱动程序和应用程序 VirtualBox Guest Additions 可以安装在来宾操作系统中以扩展来宾操作系统的功能 例如共享文
  • 如何在Linux中检查监听端口(正在使用的端口)

    在对网络连接或特定于应用程序的问题进行故障排除时 首先要检查的事情之一应该是系统上实际使用的端口以及哪个应用程序正在侦听特定端口 本文介绍了如何使用netstat ss and lsof命令来找出哪些服务正在侦听哪些端口 这些说明适用于所有
  • 如何在 CentOS 7 上安装 Nginx

    Nginx 发音engine x是一个免费 开源 高性能的 HTTP 和反向代理服务器 负责处理 Internet 上一些最大网站的负载 Nginx 可以用作独立的 Web 服务器 也可以用作反向代理 for Apache和其他网络服务器
  • 如何在 Debian 10 上安装 Anaconda

    Anaconda 是最流行的 Python R 数据科学和机器学习平台 它用于大规模数据处理 预测分析和科学计算 Anaconda 发行版附带 1 500 多个开源数据包 它还包括 conda 命令行工具和名为 Anaconda Navig
  • 如何在 Linux 中更改用户密码

    在本指南中 我们将解释如何在 Linux 中更改用户密码 我们还将向您展示如何强制用户在下次登录时更改密码 这些说明适用于任何 Linux 发行版 包括 Ubuntu Debian 和 CentOS 介绍 在 Linux 中 您可以使用以下
  • 如何在 Ubuntu 18.04 上安装 Elasticsearch

    Elasticsearch 是一个开源分布式全文搜索和分析引擎 它支持 RESTful 操作 允许您实时存储 搜索和分析大量数据 Elasticsearch 是最流行的搜索引擎之一 为具有复杂搜索要求的应用程序 例如大型电子商务商店和分析应
  • 如何在 CentOS 8 上更改主机名

    通常 主机名是在操作系统安装期间设置的 或者在创建虚拟机时动态分配给虚拟机的 您可能需要更改主机名的原因有很多 最常见的是在创建实例时自动设置主机名 本指南介绍了如何在 CentOS 8 上设置或更改主机名 而无需重新启动系统 先决条件 在
  • 如何在 Debian 9 上安装 VLC 媒体播放器

    VLC 是一个免费的开源多媒体播放器 它是跨平台的 可以播放几乎所有多媒体文件以及 DVD 音频 CD 和不同的流媒体协议 本教程介绍如何在 Debian 9 上安装 VLC 媒体播放器 先决条件 您需要以以下身份登录具有 sudo 访问权
  • 如何在 CentOS 8 上安装和配置 Fail2ban

    所有暴露在互联网上的服务器都面临着恶意软件攻击的风险 例如 如果您有一个连接到公共网络的软件 攻击者可以使用暴力尝试来获取对该应用程序的访问权限 Fail2ban 是一款开源工具 可通过监控服务日志中的恶意活动来帮助保护您的 Linux 计