当前位置: 首页 > news >正文

Linux下如何安装配置Fail2ban防护工具

Fail2ban是一款在Linux服务器上用于保护系统免受恶意攻击的防护工具。它通过监视系统日志,检测到多次失败的登录尝试或其他恶意行为后,会自动将攻击源的IP地址加入防火墙的黑名单,从而阻止攻击者进一步访问服务器。本文将介绍如何在Linux系统上安装和配置Fail2ban。

  1. 检查系统版本和安装必要软件 在开始安装之前,首先需要确认系统版本和安装必要软件。可以使用以下命令检查系统版本:

    lsb_release -a
    

    确定系统版本后,使用以下命令安装必要软件(如果尚未安装):

    sudo apt update
    sudo apt install -y python3-pip fail2ban
    
  2. 配置Fail2ban Fail2ban的配置文件位于/etc/fail2ban目录下,打开该目录并编辑jail.local文件:

    sudo nano /etc/fail2ban/jail.local
    

    在文件中可以找到以下几个常用的配置选项:

    • bantime:设置封禁时间,单位为秒,默认为600秒(10分钟)。
    • findtime:在该时间段内,如果发现多次失败的登录尝试,则触发封禁。
    • maxretry:最大的登录尝试次数,超过该次数会触发封禁。
    • backend:指定Fail2ban使用的后端,默认为auto
    • destemail:指定发送邮件通知的收件人地址。
    • action:指定触发封禁后的操作,可以选择iptablesiptables-multiportshorewall等。

    根据需求修改这些参数,并保存文件。

  1. 创建自定义过滤器 Fail2ban通过正则表达式匹配系统日志中的行,以判断是否有恶意行为发生。可以根据自己的需求创建自定义的过滤器。创建过滤器的步骤如下:

    • filter.d目录下创建新的过滤器文件,例如sshd.conf
      sudo nano /etc/fail2ban/filter.d/sshd.conf
      
    • 在文件中添加以下内容,用于匹配SSH登录的失败尝试:
      [Definition]
      failregex = ^%(__prefix_line)s(?:error: PAM: )?[aA]uthentication failure(?:; logname=\S+ uid=\S+ euid=\S+ tty=\S+ ruser=\S+ rhost=<HOST>)?\s*$
      ignoreregex =
      
  2. 启动和配置Fail2ban 完成上述配置后,可以使用以下命令启动Fail2ban服务:

    sudo systemctl start fail2ban
    

    为了在系统启动时自动启动Fail2ban,使用以下命令:

    sudo systemctl enable fail2ban
    
  3. 监视Fail2ban日志 在配置Fail2ban之后,可以使用以下命令查看Fail2ban的日志:

    sudo tail -f /var/log/fail2ban.log
    

    通过观察日志,可以了解到Fail2ban的工作情况,包括封禁的IP地址和封禁的原因。

  4. 高级配置选项 Fail2ban还提供了一些高级配置选项,可以根据需要进行配置。以下是一些常用的高级配置选项:

    • ignoreip:指定不被封禁的IP地址列表。
    • bantime.increment:封禁时间的增加步长,默认为1。
    • maxretry.increment:最大登录尝试次数的增加步长,默认为1。
    • action_mw:指定触发封禁后的操作,可以选择iptables-multiportiptables-allports等。
    • action_d:指定触发解封后的操作,可以选择iptables-multiportiptables-allports等。

    修改这些选项的方法与修改jail.local文件类似,只需将相应的选项添加到文件中即可。

    以上就是在Linux系统上安装和配置Fail2ban的步骤。使用Fail2ban可以有效地保护服务器免受恶意攻击,提高服务器的安全性。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Postman中的数据驱动测试:API测试数据准备全攻略
  • HTML + CSS编程规范
  • MLIR的TOY教程学习笔记
  • wget下载github文件得到html文件
  • 2024年自动驾驶规划控制面试及答案
  • AI测试入门:认识AI大语言模型(LLM)
  • Excel下载模板文件和导入文件的步骤
  • Windows:批处理脚本学习
  • 【BUG】已解决:IndexError: positional indexers are out-of-bounds
  • C++树形结构(1 基础)
  • CSP-J模拟赛day1——试题
  • 锁相环 vivado FPGA
  • centos中zabbix安装、卸载及遇到的问题
  • Pytest进阶之fixture的使用(超详细)
  • BGP之选路MED
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【附node操作实例】redis简明入门系列—字符串类型
  • ES2017异步函数现已正式可用
  • ES6语法详解(一)
  • EventListener原理
  • in typeof instanceof ===这些运算符有什么作用
  • input实现文字超出省略号功能
  • Java IO学习笔记一
  • mongodb--安装和初步使用教程
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 使用SAX解析XML
  • 小程序01:wepy框架整合iview webapp UI
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #Spring-boot高级
  • #考研#计算机文化知识1(局域网及网络互联)
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (二)正点原子I.MX6ULL u-boot移植
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (四)React组件、useState、组件样式
  • (一)Docker基本介绍
  • (转)linux 命令大全
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • (自用)网络编程
  • ***测试-HTTP方法
  • .apk 成为历史!
  • .bat批处理(一):@echo off
  • .NET Core 和 .NET Framework 中的 MEF2
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET MVC之AOP
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .netcore 获取appsettings
  • .net连接oracle数据库