如何在 CentOS 6 上使用 fail2ban 保护 SSH

2023-11-12

Status:已弃用

本文介绍不再受支持的 CentOS 版本。如果您当前运行的服务器运行 CentOS 6,我们强烈建议您升级或迁移到受支持的 CentOS 版本。

Reason: CentOS 6 于 2020 年 11 月 30 日达到生命周期终止 (EOL)并且不再接收安全补丁或更新。因此,本指南不再维护。

请参阅:
本指南可能仍然可以作为参考,但可能不适用于其他 CentOS 版本。如果有的话,我们强烈建议您使用针对您所使用的 CentOS 版本编写的指南。

以下 DigitalOcean 教程可能会立即引起您的兴趣,因为它概述了如何在 CentOS 7 服务器上使用fail2ban 保护 SSH 服务守护进程:

  • 如何在 CentOS 7 上使用 Fail2Ban 保护 SSH

关于 Fail2Ban

服务器并不是孤立存在的,那些只有最基本 SSH 配置的服务器很容易受到暴力攻击。 fail2ban 提供了一种自动保护服务器免受恶意迹象的方法。该程序的工作原理是扫描日志文件并对违规操作(例如重复失败的登录尝试)做出反应。

第一步 — 安装 Fail2Ban

由于 CentOS 不提供fail2ban,因此我们应该首先下载 EPEL 存储库:


rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm  

接下来安装fail2ban:


yum install fail2ban  

第二步 — 复制配置文件

默认的fail2ban配置文件位于/etc/fail2ban/jail.conf。然而,配置工作不应该在该文件中完成,我们应该制作它的本地副本。


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

复制文件后,您可以在新的 Jail.local 文件中进行所有更改。许多可能需要保护的服务已在文件中。每个都位于自己的部分,进行配置和关闭。

第三步 - 在 Jail.Local 中配置默认​​值

打开新的fail2ban配置文件:


vi /etc/fail2ban/jail.local  

默认值的第一部分涵盖了fail2ban 将遵循的基本规则。如果您想为虚拟专用服务器设置更细致的保护,您可以自定义每个部分的详细信息。

您可以在下面看到默认部分。


[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1

# "bantime" is the number of seconds that a host is banned.
bantime  = 3600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 3  

将您的个人 IP 地址写入ignoreip线。您可以用空格分隔每个地址。 IgnoreIP 允许您将某些 IP 地址列入白名单,并确保它们不会被您的 VPS 锁定。包含您的地址将确保您不会意外地禁止自己使用自己的虚拟专用服务器。

下一步是决定bantime,如果发现主机违反任何规则,则主机将被服务器阻止的秒数。这对于机器人来说尤其有用,机器人一旦被禁止,就会简单地转向下一个目标。默认设置为 10 分钟 — 如果您愿意,可以将其延长至 1 小时(或更长)。

Maxretry是主机在被禁止一段时间内可能进行的错误登录尝试次数。

Findtime指主机必须登录的时间。默认设置为10分钟;这意味着,如果主机在指定的 10 分钟内尝试登录但失败超过最大重试次数,他们将被禁止。

第四步(可选)—在 Jail.Local 中配置 ssh-iptables 部分

SSH 详细信息部分位于配置的稍下方,并且它已经设置并打开。尽管您不需要在此部分中进行任何更改,但您可以在下面找到有关每行的详细信息。


[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com]
logpath  = /var/log/secure
maxretry = 5  

Enabled只是指 SSH 保护已打开这一事实。您可以用“假”一词将其关闭。

The filter,默认设置为 sshd,指的是包含fail2ban用来查找匹配的规则的配置文件。该名称是文件扩展名的缩写版本。例如,sshd 指的是 /etc/fail2ban/filter.d/sshd.conf。

Action描述了fail2ban将采取的禁止匹配IP地址的步骤。就像过滤器条目一样,每个操作都引用 action.d 目录中的一个文件。默认禁止操作“iptables”可以在 /etc/fail2ban/action.d/iptables.conf 中找到。

在“iptables”详细信息中,您可以进一步自定义fail2ban。例如,如果您使用非标准端口,则可以更改括号内的端口号以进行匹配,使该行看起来更像这样:


 eg. iptables[name=SSH, port=30000, protocol=tcp]  

您也可以在这一行中将协议从 TCP 更改为 UDP,具体取决于您想要fail2ban 监控的协议。

如果您在虚拟专用服务器上设置了邮件服务器,则 Fail2Ban 可以在禁止 IP 地址时向您发送电子邮件。在默认情况下,sendmail-whois 引用位于 /etc/fail2ban/action.d/sendmail-whois.conf 的操作。

log path指fail2ban将跟踪的日志位置。

The 最大重试次数SSH 部分中的行具有与默认选项相同的定义。但是,如果您启用了多项服务并希望为每一项服务指定特定值,则可以在此处设置新的 SSH 最大重试次数。

第五步 — 重新启动 Fail2Ban

对fail2ban配置进行任何更改后,请务必重新启动Fail2Ban:


sudo service fail2ban restart  

您可以在IP表中看到fail2ban生效的规则:


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

如何在 CentOS 6 上使用 fail2ban 保护 SSH 的相关文章

  • 还记得我的 Cookie 最佳实践吗?

    我读到了许多关于这个论点的老问题 我认为最好的做法是设置一个 cookieusername user id和一个随机令牌 相同 cookie 的数据在 cookie 创建时存储在数据库中 当用户拥有 cookie 时 它 们会进行比较 co
  • 我仍然认为在客户端哈希密码更好。我错了吗?

    我读过这些 https hackernoon com im harvesting credit card numbers and passwords from your site here s how 9a8cb347c5b5 https
  • 如何使用 php 通过 https 下载文件

    我需要使用 PHP 下载 xml 文件 我可以在对文件进行curl 调用时通过设置以下选项来读取文件的内容 curl setopt http CURLOPT SSL VERIFYPEER false curl setopt http CUR
  • Bower 安装 self_signed_cert_in_chain

    我正在 Windows 中使用 git bash 构建一个角度应用程序 到目前为止 我已经能够使用 yo 搭建脚手架 没有问题 但是当我尝试发出以下命令时 有人可以指出我来解决这个问题吗 Bower 安装 Angular Bootstrap
  • 如何在Rails 4.1中使用secrets.yml作为API_KEYS?

    在我最近的一个项目中 我开始于 gitignoring包含机密和环境变量的文件 因此 除了包含第三方机密 例如 Stripe Twitter API 或 Facebook Graph 或内部 api keys 等 的文件外 整个项目都致力于
  • JSF - 实施受限页面过滤器

    我正在关注 BalusC 的回答JSF 2 0 如何获取在浏览器地址栏中输入的 URL https stackoverflow com questions 4105263 jsf 2 0 how to get the url that is
  • 在 React 应用程序中使用 API 密钥

    我有一个使用两个第三方服务的 React 应用程序 该应用程序已开始使用react create app 这两项服务都需要 API 密钥 通过脚本标签提供一个密钥 如下所示 另一个 API 密钥在请求中使用 我将实际密钥存储在常量中并使用它
  • 在 JAX-WS 中使用安全性的最佳实践是什么

    这是场景 我有一些需要保护的 Web 服务 JAX WS 目前 为了身份验证需求 我提供了额外的 SecurityWService 它为授权用户提供了一些需要在请求其他服务时描述的 userid 和 sessionid 使用一些java安全
  • 有关 CredEnumerate 的帮助

    作为后续this https stackoverflow com questions 199518 how to programatically add mapped network passwords winxp我希望有人可以帮助解决这个
  • 如何使用 nohup 获取正在运行的程序列表

    我正在通过 SSH 连接访问运行 CentOS linux 发行版 的服务器 由于我无法始终保持登录状态 因此我使用 nohup command 来运行我的程序 我找不到如何获取我开始使用 nohup 的所有程序的列表 工作 只有在我注销之
  • 建立了无需 SSL 即可进行安全注册和身份验证的 javascript 解决方案

    有没有无需 SSL 即可实现安全用户注册和身份验证的解决方案 安全 我的意思是免受被动窃听 不是来自中间人 http en wikipedia org wiki Man in the middle attack 我知道只有带有签名证书的 S
  • 设计良好且安全的 Web 应用程序示例

    大多数人都会意识到OWASP WebGoat http www owasp org index php Category OWASP WebGoat Project或 Foundstone 的哈克姆图书 http www foundston
  • 为什么对参数哈希进行切片会在批量分配时带来安全问题?

    通过批量分配来预防安全风险的官方方法是使用属性可访问 http api rubyonrails org classes ActiveModel MassAssignmentSecurity ClassMethods html 然而 一些程序
  • 允许 iframe 跨域链接到目标父框架

    我有 2 个域 域 1 上的一个页面使用 iframe 加载域 2 中的内容 如何允许来自domain2 iframe 内 的链接在domain1 的完整父框架中打开 我一直在关注IE和w3c的新沙箱属性 http www w3 org T
  • php56 - CentOS - Remi 仓库

    我刚刚在测试盒上安装了 php 5 6 正常的 cli php 解释器似乎不存在 gt php v bash php command not found gt php56 v PHP 5 6 13 cli built Sep 3 2015
  • 为什么浏览器允许onmousedown JS改变href?

    我很长时间以来都注意到 当您尝试复制链接位置或在 Facebook 上打开链接时 它会修改链接并将其传递给l php 例如 我可以被发送到 http www facebook com l php u http 3A 2F 2Fwww goo
  • Google App Engine 的 JDO:转义引号

    如何转义 JDO Google App Engine 中的查询参数 例如 如果变量名称可能包含单引号 形式的不安全字符 如何使下一个片段安全 PersistenceManager pm String query select from Pe
  • 内容安全策略:页面设置阻止自行加载资源?

    我有基于 Java 的 Web 应用程序运行在Tomcat http en wikipedia org wiki Apache Tomcat6 我的应用程序在本地主机和端口 9001 上运行 为了使我的应用程序更加安全并降低风险XSS ht
  • 如何防止我的客户经常使用演示 Java 程序?

    我制作了一个演示小程序 想交付给我的客户 以便他可以运行它 5 次以检查其功能 它不是一个大软件 我为其实现了一些序列密钥功能并制作了试用软件 我想要一个简单的解决方案 可以限制程序的使用超过 5 次 或者可以在达到阈值限制后自行删除 我想
  • Node.js:将 repl 挂接到远程节点服务器

    假设我有一个节点服务器在 mysite com 上运行 有没有办法设置该服务器以便我可以使用节点的repl api http nodejs org docs latest api repl html to securely从我的本地计算机连

随机推荐

  • 如何在 Debian 9 上安装 WildFly (JBoss)

    WildFly 以前称为 JBoss 是一个用 Java 编写的跨平台开源应用程序运行时 可帮助您构建令人惊叹的应用程序 WildFly 灵活 轻量 并且基于可根据需要添加或删除的可插拔子系统 在本教程中 我们将引导您完成在 Debian
  • 如何在 Ubuntu 18.04 上安装 Git

    Git 是分布式版本控制系统事实上的标准 现在被大多数开发人员使用 它允许您跟踪代码更改 恢复到之前的阶段 创建分支以及与其他开发人员协作 Git 最初是由莱纳斯 托瓦尔兹Linux内核的创建者 本教程将指导您完成在 Ubuntu 18 0
  • 在 CentOS 7 上安装 Magento 2

    Magento 是一个领先的企业级电子商务平台 基于开源技术构建 将强大的功能与灵活性和用户友好的界面相结合 凭借引人入胜的购物体验 灵活的模块化架构以及企业级可扩展性和性能等功能 Magento 是大多数在线商家的首选平台 这是该系列的第
  • 如何在 CentOS 7 上安装 R

    R 是一种快速发展的开源编程语言和免费环境 专门从事统计计算和图形表示 它由 R 统计计算基金会支持 主要供统计学家和数据挖掘人员用于开发统计软件和执行数据分析 本教程将教你如何在CentOS 7上安装R以及如何从官方安装R包综合 R 档案
  • 如何在 Ubuntu 20.04 上安装 Yarn

    Yarn 是一个与 npm 兼容的 JavaScript 包管理器 可帮助您自动执行安装 更新 配置和删除 npm 包的过程 它缓存每个下载包并通过并行操作加快安装过程 在本教程中 我们将解释如何安装Yarn在 Ubuntu 20 04 上
  • 如何在 Debian 9 上安装 MongoDB

    MongoDB 是一个免费的开源文档数据库 它属于 NoSQL 数据库家族 与 MySQL 和 PostgreSQL 等传统的基于表的 SQL 数据库不同 在 MongoDB 中 数据存储在灵活的 类似 JSON字段可能因文档而异的文档 它
  • Bash if..else 语句

    本教程将引导您了解 Bash 的基础知识if声明并向您展示如何在 shell 脚本中使用它 决策是计算机编程最基本的概念之一 与任何其他编程语言一样 if if else if elif else 并嵌套ifBash 中的语句用于根据特定条
  • Java中的多重继承

    今天我们将研究Java中的多重继承 不久前我写了几篇关于遗产 界面 and 作品在Java中 在这篇文章中 我们将研究 java 多重继承 然后比较组合和继承 Java中的多重继承 Multiple inheritance in java
  • Java 中的装饰器设计模式示例

    装饰器设计模式用于在运行时修改对象的功能 同时 同一类的其他实例不会受此影响 因此单个对象会获得修改后的行为 装饰设计模式是结构设计模式之一 如适配器模式 桥梁图案 复合图案 并使用抽象类或接口作品来实施 装饰设计模式 We use inh
  • 获取R中的行数和列数

    各位读者大家好 在本文中 我们将重点讨论 R 中的行和列的概念 即R编程中获取对象的行数和列数 详细 那么 让我们开始吧 Be it a matrix or a 数据框 我们按照行和列来处理数据 在数据分析领域 尤其是统计分析 我们需要了解
  • 如何在 CentOS、Rocky Linux、RHEL 和 Fedora 上安装 Java

    介绍 本教程将向您展示如何在基于 RPM 的 Linux 发行版的当前版本上安装 Java Red Hat Enterprise Linux CentOS Fedora 和 Rocky Linux Java 是一种流行的编程语言和软件平台
  • 如何在 Ubuntu 14.04 上使用 Nginx 安装 WordPress

    介绍 WordPress 是世界上最流行的 CMS 内容管理系统 它使您可以轻松启动并运行您的网站或博客 安装后 您可以在简单的 Web 界面中管理几乎所有内容 在本指南中 我们将介绍如何在 Ubuntu 14 04 服务器上安装 Word
  • 如何使用 Nmap 和 Tcpdump 测试您的防火墙配置

    介绍 为您的基础设施设置防火墙是为您的服务提供安全性的好方法 一旦您制定了满意的策略 下一步就是测试您的防火墙规则 重要的是要充分了解您的防火墙规则是否按照您的想法进行 并了解您的基础设施在外界看来是什么样子 在本指南中 我们将介绍一些可用
  • Linux 终端简介

    介绍 本教程是 Linux 基础知识系列的第一篇 涵盖终端 Linux 命令行和执行命令的入门知识 如果您是 Linux 新手 您将需要熟悉终端 因为它是与 Linux 服务器交互的标准方式 如果您想充分利用本教程 您将需要连接和使用 Li
  • 最小堆二叉树

    A Min Heap二叉树是二叉树 其中根节点具有树中的最小键 上述定义对于树中的所有子树都适用 这被称为最小堆属性 除了最后两层之外 几乎每个节点都必须有两个子节点 也就是说 除了最后两层之外 这几乎是一个完整的二叉树 由于上述两个属性成
  • 在 Python 3 中使用循环时如何使用 Break、Continue 和 Pass 语句

    介绍 Using for 循环 and while 循环Python 允许您以有效的方式自动化和重复任务 但有时 外部因素可能会影响程序的运行方式 发生这种情况时 您可能希望程序完全退出循环 在继续之前跳过循环的一部分 或者忽略该外部因素
  • 休眠教程

    最近写了很多hibernate教程 休眠是当前市场上最好的Java ORM工具之一 所以这篇文章就像是所有 hibernate 教程和示例文章的索引 您可以依次浏览这些 hibernate 教程 从头开始学习 hibernate 我很可能会
  • Java 中的线程安全

    Java中的线程安全是一个非常重要的话题 Java使用Java线程提供多线程环境支持 我们知道从同一个对象创建的多个线程共享对象变量 这可能会导致数据不一致当线程用于读取和更新共享数据时 线程安全 The reason for data i
  • 如何使用 Ansible 角色抽象您的基础设施环境

    介绍 Ansible 是一种配置管理工具 旨在为管理员和运营团队自动控制服务器 借助 Ansible 您可以使用单个中央服务器来控制和配置许多不同的远程系统 仅使用 SSH 和 Python 作为要求 Ansible 根据任务定义在其管理的
  • 如何在 CentOS 6 上使用 fail2ban 保护 SSH

    Status 已弃用 本文介绍不再受支持的 CentOS 版本 如果您当前运行的服务器运行 CentOS 6 我们强烈建议您升级或迁移到受支持的 CentOS 版本 Reason CentOS 6 于 2020 年 11 月 30 日达到生