Fail2ban - 为 docker-container 日志创建第二个 sshd-jail 不起作用

2024-01-19

我有一个运行 Ubuntu 18.04.3 的 Linux 机器,并且有一个有效的 fail2ban 配置(就像在我的所有主机上一样)。

在本例中,我设置了一个 docker-container,它充当多个用户的 sftp 服务器 - docker-container 有一个正在运行的rsyslogd并将登录事件写入/var/log/auth.log - /var/log安装到主机系统以/myapp/log/sftp.

所以我用这个配置片段创建了第二个 sshd-jailjail.local

[myapp-sftp]
filter=sshd
enabled = true
findtime = 1200
maxretry = 2
mode = aggressive
backend = polling
logpath=/myapp/log/sftp/auth.log

日志文件/myapp/log/sftp/auth.log绝对存在,并且充满了许多失败的登录尝试 - 来自我自己和其他人。

但监狱永远不会被触发found登录条目fail2ban.log。 我已经重置了fail2ban数据库...并且不知道可能出了什么问题。

I tried backend = polling和默认值pyinotify.

检查与fail2ban-regex说匹配..

# fail2ban-regex /myapp/log/sftp/auth.log /etc/fail2ban/filter.d/sshd.conf

Running tests
=============

Use   failregex filter file : sshd, basedir: /etc/fail2ban
Use         maxlines : 1
Use      datepattern : Default Detectors
Use         log file : /myapp/log/sftp/auth.log
Use         encoding : UTF-8


Results
=======

Failregex: 268 total
|-  #) [# of hits] regular expression
|   3) [64] ^Failed \S+ for invalid user <F-USER>(?P<cond_user>\S+)|(?:(?! from ).)*?</F-USER> from <HOST>(?: port \d+)?(?: on \S+(?: port \d+)?)?(?: ssh\d*)?(?(cond_user): |(?:(?:(?! from ).)*)$)
|   4) [29] ^Failed \b(?!publickey)\S+ for (?P<cond_inv>invalid user )?<F-USER>(?P<cond_user>\S+)|(?(cond_inv)(?:(?! from ).)*?|[^:]+)</F-USER> from <HOST>(?: port \d+)?(?: on \S+(?: port \d+)?)?(?: ssh\d*)?(?(cond_user): |(?:(?:(?! from ).)*)$)
|   6) [64] ^[iI](?:llegal|nvalid) user <F-USER>.*?</F-USER> from <HOST>(?: port \d+)?(?: on \S+(?: port \d+)?)?\s*$
|  21) [111] ^<F-NOFAIL>Connection from</F-NOFAIL> <HOST>
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [642] {^LN-BEG}(?:DAY )?MON Day %k:Minute:Second(?:\.Microseconds)?(?: ExYear)?
`-

Lines: 642 lines, 0 ignored, 268 matched, 374 missed
[processed in 0.13 sec]

Missed line(s): too many to print.  Use --print-all-missed to print all 374 lines

and

# fail2ban-client status myapp-sftp
Status for the jail: myapp-sftp
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- File list:        /myapp/log/sftp/auth.log
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list:
# cat /var/log/fail2ban.log | grep myapp
2019-08-21 10:35:33,647 fail2ban.jail           [649]: INFO    Creating new jail 'wippex-sftp'
2019-08-21 10:35:33,647 fail2ban.jail           [649]: INFO    Jail 'myapp-sftp' uses pyinotify {}
2019-08-21 10:35:33,664 fail2ban.server         [649]: INFO    Jail myapp-sftp is not a JournalFilter instance
2019-08-21 10:35:33,665 fail2ban.filter         [649]: INFO    Added logfile: '/wippex/log/sftp.log' (pos = 0, hash = 287d8cc2e307c5f427aa87c4c649ced889d6bf6a)
2019-08-21 10:35:33,689 fail2ban.jail           [649]: INFO    Jail 'myapp-sftp' started

我真的从来没有得到过预期found入境……也不是禁令。 欢迎任何想法。

# fail2ban-server -V
Fail2Ban v0.10.2

Copyright (c) 2004-2008 Cyril Jaquier, 2008- Fail2Ban Contributors
Copyright of modifications held by their respective authors.

记录样本来自/myapp/log/sftp/auth.log

Aug 21 14:03:13 a9ede63166d9 sshd[202]: Failed password for invalid user mapp from <HOST> port 41766 ssh2
Aug 21 14:03:13 a9ede63166d9 sshd[202]: Received disconnect from <HOST> port 41766:11: Normal Shutdown, Thank you for playing [preauth]
Aug 21 14:03:13 a9ede63166d9 sshd[202]: Disconnected from <HOST> port 41766 [preauth]
Aug 21 14:03:49 a9ede63166d9 sshd[204]: Connection from <HOST> port 34722 on 172.17.0.3 port 22
Aug 21 14:03:49 a9ede63166d9 sshd[204]: Invalid user mapp from <HOST> port 34722
Aug 21 14:03:49 a9ede63166d9 sshd[204]: input_userauth_request: invalid user mapp [preauth]
Aug 21 14:03:49 a9ede63166d9 sshd[204]: error: Could not get shadow information for NOUSER
Aug 21 14:03:49 a9ede63166d9 sshd[204]: Failed password for invalid user mapp from <HOST> port 34722 ssh2
Aug 21 14:03:49 a9ede63166d9 sshd[204]: Received disconnect from <HOST> port 34722:11: Normal Shutdown, Thank you for playing [preauth]
Aug 21 14:03:49 a9ede63166d9 sshd[204]: Disconnected from <HOST> port 34722 [preauth]

问题“解决”了。 docker 容器只是使用了与主机不同的时区,并且日志文件时间戳不包含时区。

So fail2ban假设时间戳是在与其运行环境(在主机上)相同的时区中写入的,并且不解释“旧”日志条目(2小时差异)。

See https://github.com/fail2ban/fail2ban/issues/2486 https://github.com/fail2ban/fail2ban/issues/2486

我现在只是将主机时区设置为 UTC - 但现在将尝试设置 rsyncd 以使用时区日期格式

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

Fail2ban - 为 docker-container 日志创建第二个 sshd-jail 不起作用 的相关文章

随机推荐

  • 人们如何处理 RESTful api 的身份验证(与技术无关)

    我正在考虑构建一些移动应用程序 因此 这些应用程序将通过 JSON 和 REST 例如 put post 等 与我的服务器 对话 如果我想确保客户端手机应用程序正在尝试执行需要某些 许可 的操作 人们该如何处理 例如 我们的网站出售东西 g
  • 如何在运行时通过脚本检查 PowerShell 中是否存在 cmdlet

    我有一个需要在多个主机 PowerGUI PowerShell ISE https technet microsoft com en us library dd315244 aspx等 但我遇到一个问题 有时其中一台主机下不存在 cmdle
  • 在 Maven 中,为什么运行“mvn clean”?

    我想知道跑步之间的主要区别是什么mvn compile and mvn clean compile是 在实践中 我明白真正的区别是什么mvn clean compile删除所有生成的文件并从头开始 但我们为什么要这样做呢 我可以假设mvn
  • WSDL.exe - 生成接口以及具体类,以便以后轻松进行伪造/模拟

    当 WSDL exe 生成 Web 服务的代理时 是否可以让 WSDL exe 生成接口以及具体类 或者代替具体类 我们正在使用来自 ASP Net 应用程序的第 3 方 Web 服务 并使用 WSDL exe 生成了我们的代理类 一切都很
  • 核心数据多级父-子上下文

    在我的应用程序中我有UITableViewController显示事件列表 该控制器使用 ManagedObjectContext 说ParentContext 现在 如果选择任何事件 则会显示详细的视图控制器 用户可以在其中编辑事件的详细
  • 无法使用 PhantomJS 加载页面资源

    我正在使用 PhantomJS 获取给定 URL 的页面内容 问题是在某些页面上 PhantomJS 无法加载某些资源 js css 我收到的错误是 错误代码 5 操作取消 我可以重现此问题的网页是www lifehacker com ht
  • Django Rest Framework 中 CreateAPIView 的权限

    我查看了 CreateAPIView 的代码 发现创建过程中没有任何地方检查权限 所以我决定检查它们perform create挂钩如下 class CourseList generics CreateAPIView Create a co
  • 浮动元素被前一个元素按下

    http jsfiddle net 4gw8wank http jsfiddle net 4gw8wank 我有 3 个容器作为响应式页面的一部分 在移动视图中 它们必须按顺序显示 蓝色 红色 绿色 像这样堆叠在一起 div class b
  • 如何删除警告:“-pie 被忽略。它仅在链接主可执行文件时使用”

    自从更新到 Xcode10 和 Swift 4 2 以来 我总是在我的 pod 中收到此构建时间警告 我需要做什么才能删除这些警告 我尝试删除派生数据 清理并构建项目 但它不起作用 我发现有人在这里问同样的问题https github co
  • 保持对管道运算符之间的变量的访问

    我一直在尝试在节点应用程序中使用 Rxjs fileList 是从返回fs readdirsync 字符串数组 首先map 有一个称为文件名的参数 flatMap readFileAsObservable uses bindNodeCall
  • Azure 数据工厂:如何在另一个管道成功完成后触发管道

    在 Azure 数据工厂中 如何在其他管道成功完成后触发管道 详细地 我试图在其他管道成功完成后触发 SSIS 包 我已经知道我可以将 SSIS 包保存为管道 并像其他管道一样使用触发器运行它 但是如何确保 SSIS 包管道仅在其他管道完成
  • 从服务器端查找 HttpRequest 中的时区

    我努力了var dateHeaders HttpContext Current Request Headers Date 但它包含 null 显然没有这样的键 谁能告诉我还能在哪里找到当前客户的时区 参考 http en wikipedia
  • 让 CSS 插入框阴影出现在内部背景之上

    我希望 CSS 插入框阴影出现在带有框阴影的容器内元素的顶部 特别是子元素的背景颜色 Demo http jsfiddle net Q8n77 http jsfiddle net Q8n77 div class parent foo div
  • C# 面板列表

    我想创建包含有关某个项目的详细信息的面板 包括左侧的缩略图 然后将它们添加到可滚动列表中 与 iPhone 上的 iTunes 显示可用应用程序列表的方式非常相似 我已经进行了一些搜索 但迄今为止尚未找到任何帮助 有谁有任何想法或样本链接想
  • Bing 拼写检查 API 是否对 mode = 拼写有额外的长度限制?

    The Bing 拼写检查 API https msdn microsoft com en us library mt711411 aspx对于请求想要进行拼写检查 mode spell 或校对 mode proof default 的文本
  • 后备机制 - 最佳方法?

    我有三种不同类型的服务器连接 这些可以在属性文件中配置 假设有三台服务器 Server1 Server2 Server3 In Properties文件 我的配置如下 ServerPref1 Server1 ServerPref2 Serv
  • 如何使用 Spark-Submit 和 pyspark 运行 luigi 任务

    我有一个luigipython 任务 其中包括一些 pyspark 库 现在我想用spark submit在mesos上提交这个任务 我应该做什么来运行它 下面是我的代码框架 from pyspark sql import function
  • UIBarStyleBlack 与 TintColor 黑色

    设置和设置有什么区别tintColor的财产UINavigationBar to UIColor blackColor 和设置barStyle to UIBarStyleBlack在不透明的导航栏上 有一些细微的差别 例如 在 iPad 上
  • C#中如何从字符串中获取数字

    我在 HTML 中有一个字符串 3 Trip 中的 1 3 如何获取数字 3 在 trip 之前 并将其转换为 int 我想将其用作计数 找到了这段代码 public static string GetNumberFromStr strin
  • Fail2ban - 为 docker-container 日志创建第二个 sshd-jail 不起作用

    我有一个运行 Ubuntu 18 04 3 的 Linux 机器 并且有一个有效的 fail2ban 配置 就像在我的所有主机上一样 在本例中 我设置了一个 docker container 它充当多个用户的 sftp 服务器 docker