如何通过命令行手动禁用具有Fail2Ban的攻击者IP?
我的CentOS服务器后缀为MTA,它正在运行.当我输入命令时mail -s "testing" <my gmail address>,我会收到电子邮件.
但是,当IP被禁止时,Fail2ban无法向我的Gmail地址发送电子邮件.我可能在jail.conf中遗漏了一些配置.
这是我的jail.conf文件的一部分:
destemail = myaddress@gmail.com
sendername = fail2ban
mta = sendmail
protocol = tcp
action = %(action_mwl)s
Run Code Online (Sandbox Code Playgroud)
我已经尝试过mta = postfix但它没有用.
在此先感谢您的帮助.
编辑:我能够使它工作.我的fail2ban v0.8.10和我的linux CentOS 6上面没有一个配置是正确的.事实上,我删除了上面的所有行(垃圾).
我在/etc/fail2ban/action.d/mail.conf文件中找到了一个预定义的操作.我注意到这个动作使用了"mail -s"命令,该命令可以在我的服务器上运行.所以,我决定在我的jail.conf文件中使用这个动作:
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
mail[name=ssh, dest=my-address@gmail.com]
logpath = /var/log/secure
maxretry = 5
Run Code Online (Sandbox Code Playgroud)
从fail2ban获取电子邮件需要更改的唯一方法是在以"mail"开头的"action"下面添加该行.非常简单和容易.
我是fail2ban的新手,并且很难确定我正在考虑设置的不同配置的性能考虑因素.这是在覆盆子pi板上运行,所以性能是一个问题.
我能想到的明显的优化是使用高效的正则表达式,只需要最少数量的jail.我想我的具体问题是:
举个例子,这个监狱会让某人每天尝试3,600个SSH登录密码,如果他们弄清楚fail2ban配置并调整他们的脚本时间以适应.
[ssh]
enabled = true
action = iptables-allports[name=ssh]
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
findtime = 120
Run Code Online (Sandbox Code Playgroud)
如果我们将findtime更改为86400(1天)的不同极限,它每天只允许5次尝试,但现在它正在监视日志文件的更大部分.这对资源使用有何影响?
另一个例子,POST洪水攻击的监狱:
[apache-post-flood]
enabled = true
action = iptables-allports[name=apache-post-flood]
filter = apache-post-flood
logpath = /var/log/apache2/*access.log
maxretry = 10
findtime = 10
Run Code Online (Sandbox Code Playgroud)
在这里,我们有相反的情况,其中findtime计数器每10秒重置一次.它还监控所有*访问日志(我猜,再次,我是新手).这可能意味着它正在监视access.log,other_vhosts_access.log,以及https部分网站的https_access.log.如果这是忙碌的一天怎么样,这些文件都是10-20mb?
希望这有助于解释我的想法.在此先感谢您的帮助.
我想运行一个带有中央日志和fail2ban服务的docker容器来防止dos/ddos攻击.
我有一个问题是运行具有这种功能的容器,它也可以修改主机iptables.
有一个项目ianblenke/docker-fail2ban然而它不起作用......
赋予容器标志特权只允许我控制iptables此容器.有没有办法iptables通过容器控制主机?
问候.
我对 Regex 不是天才,但想知道是否有可能编写某种 Regex 模式来检测这些复杂的攻击字符串,我相信很多人都在他们的 Web 服务器日志中看到过。
这些字符串变化如此频繁,我相信精通正则表达式的人可以找到一种方法来检测这些字符串,并且可以在自定义的 Fail2Ban 过滤器中使用这个正则表达式。
这里只是一些 Attack 字符串的一些示例。
\x03\x00\x00)$\xE0\x00\x00\x00\x00\x00
\x03\x00\x00)$\xE0\x00\x00\x00\x00\x00
\x16\x03\x01\x01\x22\x01\x00\x01\x1E\x03\x03\xB2\xF2\x5CF\x0C\xD8eb\x92m\x19\xBB\x81\xCE\x90\x9C\xC5\x90r+\x98@\xC00\x1AS4\xF3\xB9\x86\xF6\xC2\x00\x00\x88\xC00\xC0,\xC0(\xC0$\xC0\x14\xC0
Gh0st\xAD\x00\x00\x00\xE0\x00\x00\x00x\x9CKS``\x98\xC3\xC0\xC0\xC0\x06\xC4\x8C@\xBCQ\x96\x81\x81\x09H\x07\xA7\x16\x95e&\xA7*\x04$&g+\x182\x94\xF6\xB000\xAC\xA8rc\x00\x01\x11\xA0\x82\x1F\x5C`&\x83\xC7K7\x86\x19\xE5n\x0C9\x95n\x0C;\x84\x0F3\xAC\xE8sch\xA8^\xCF4'J\x97\xA9\x82\xE30\xC3\x91h]&\x90\xF8\xCE\x97S\xCBA4L?2=\xE1\xC4\x92\x86\x0B@\xF5`\x0CT\x1F\xAE\xAF]
\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03\xCF#vw\x1Ew\x8A(7~R\x9F\xEF\xFFo\x1D\xDC\x97\x8A\xBC\xD4\x82\x1C\x81\x06\xC1\x93@mv\xF5\x15\x00\x00\xD8\x00\x05\x00\x04\x00\x02\x00\x01\x00\x16\x003\x009\x00:\x00\x18\x005\x00
\x16\x03\x01\x02\x00\x01\x00\x01\xFC\x03\x03\xE0^\xF6\x15\x9A\xA1\xD8\x02\x9A\xF2\x0B\x07\x89\xC7o\x83\xBE\xF4e\xC0\xC4\x0B\xA4\xA7_X\xFAItf\xA9\x00\x00\x00\xD8\x00\x05\x00\x04\x00\x02\x00\x01\x00\x16\x003\x009\x00:\x00\x18\x005\x00
\x16\x03\x01\x00\x8B\x01\x00\x00\x87\x03\x03\x22\xFCk\x07L\x07=\x22\xE9\x97\x82\xD9qu\x8C \x06\xE0\x10\x1E\x8A\xC5\xB1\xC7\xF2>6x
%D0%A2%D0%B8%D0%BC%D0%BE%D1%82%D0%B8%20%D0%A0%D0%B5%D0%B4%D1%84%D0%BE%D1%80%D0%B4
%D0%A7%D0%B0%D0%B4%20%D0%A1%D1%82%D0%B0%D1%85%D0%B5%D0%BB%D1%81%D0%BA%D0%B8
Run Code Online (Sandbox Code Playgroud)
更新:请求看起来像这样。不使用 GET、HEAD 或 POST。
164.52.7.132 - - [07/Sep/2017:11:07:29 +0200] "\x16\x03\x01\x01\x22\x01\x00\x01\x1E\x03\x03\xB2\xF2\x5CF\x0C\xD8eb\x92m\x19\xBB\x81\xCE\x90\x9C\xC5\x90r+\x98@\xC00\x1AS4\xF3\xB9\x86\xF6\xC2\x00\x00\x88\xC00\xC0,\xC0(\xC0$\xC0\x14\xC0" 400 166 "-" "-"
Run Code Online (Sandbox Code Playgroud) 是否可以设置过滤器maxretry的参数,以便立即禁止所有IP?客户端并没有抱怨这个设置,但它似乎也没有禁止 IP。所以我只是想问一下这是否真的有效。fail2ban0
到目前为止,我在单 VPC 上使用 Docker 手工制作托管解决方案,在主机上安装了fail2ban,并查看来自 Nginx 容器的 Docker 日志(每个服务器可以托管多个网站,通过 Nginx 代理提供服务)
我想知道如何使用 Kubernetes 实现相同的功能,特别是在 X 次尝试后阻止对 /wp-admin 访问的 POST 请求?
我考虑过为 Nginx 代理(K8s 中的 Ingress)构建一个自定义 Docker 镜像,包括 Fail2ban;但也许有一个更简单的解决方案:网络策略?
在未经我许可的情况下在我的系统上执行的持续海外网络攻击倾向于我安装fail2ban,因为cphulkd不禁止ips.我正在监控一些不受欢迎的渗透尝试的服务.服务启动后,我注意到它使用了极高的CPU资源.启动后的22封电子邮件显示SSH服务器jail已停止并启动.
这是我的fail2ban.conf http://pastebin.com/ptCLmpqm
我的jail.conf http://pastebin.com/KDdmTSCL 请注意,出于明显的安全和垃圾邮件原因,我的电子邮件被隐藏了
fail2ban log pastebin(dot)com/rq0cqm9J
我无法通过fail2ban来检测失败的apache-auth尝试
过滤器如下所示:
^%(_apache_error_client)s (AH01617: )?user .* authentication failure for "\S*": Password Mismatch$
^%(_apache_error_client)s (AH01618: )?user .* not found(: )?\S*\s*$
Run Code Online (Sandbox Code Playgroud)
以及出现的错误:
[Tue Dec 23 13:41:45.870693 2014] [auth_basic:error] [pid 2818] [client 97.171.82.123:91131] AH01617: user miati: authentication failure for "/test/file.html": Password Mismatch, referer: https://example.org/test/file.html
[Tue Dec 23 13:41:45.870693 2014] [auth_basic:error] [pid 2818] [client 97.171.82.123:91131] AH01617: user miati: authentication failure for "/test/file.html": Password Mismatch, referer: https://example.org/test/file.html
Run Code Online (Sandbox Code Playgroud)
都没有正常工作.我想让他们重新编写,以便他们工作,但我无法弄清楚过滤器是如何工作的,谷歌搜索并没有让我任何地方.大多数指南都认为我理解正则表达式,但我不这样做.
任何人都可以解释(或链接)过滤器中的这些参数是什么意思,所以我可以自己修改它?
我在 docker 容器中使用 nginx,并且可以轻松地与主机共享我的 nginx docker 容器上的日志文件。日志在它上面并在/var/log/nginx文件夹上工作。
我在主机上安装了 fail2ban 来检查日志文件,特别是access.log.
我测试了一个简单的过滤器
# Fail2Ban configuration file
# Author: Miniwark
[Definition]
failregex = ^<HOST> .*"GET .*w00tw00t
# try to access to admin directory
^<HOST> .*"GET .*admin.* 403
^<HOST> .*"GET .*admin.* 404
# try to access to install directory
^<HOST> .*"GET .*install.* 404
# try to access to phpmyadmin
^<HOST> .*"GET .*dbadmin.* 404
^<HOST> .*"GET .*myadmin.* 404
^<HOST> .*"GET .*MyAdmin.* 404
^<HOST> .*"GET .*mysql.* 404
^<HOST> .*"GET .*websql.* 404 …Run Code Online (Sandbox Code Playgroud)