我已经在 Amazon Linux 2 上设置了 Fail2Ban,使用nginx-http-auth以下覆盖配置启用内置监狱:
[nginx-http-auth]
enabled = true
action = iptables[name=HTTPS, port=https, protocol=tcp]
logpath = <snip>/logs/*error*.log
findtime = 15m
bantime = 15m
maxretry = 5
Run Code Online (Sandbox Code Playgroud)
该操作正在触发,我收到以下条目iptables -S:
-A f2b-HTTPS -s 120.<snip>.122/32 -j REJECT --reject-with icmp-port-unreachable
Run Code Online (Sandbox Code Playgroud)
但是,我可以继续从被禁止的 IP 发出新的 HTTPS 请求,这些请求正在接收来自 Nginx 的 401 响应。我从两个 IP 地址进行复制 - 我的手机和另一个 EC2 主机。
以下是完整输出iptables -L:(注意:Nginx 在 Docker 内部运行,另外两个与本地网络隔离的容器也是如此)
Chain INPUT (policy ACCEPT)
target prot opt source destination
f2b-HTTPS tcp -- anywhere anywhere tcp dpt:https
Chain …Run Code Online (Sandbox Code Playgroud) 问题
我正在尝试配置 fail2ban 以使用此处显示的块来阻止 ddos 攻击。
基本上它会查看所有请求,如果任何单个 IP 在 60 秒内发出超过 240 个请求,它将阻止它们两天。
然而,我的 nginx 访问中的所有日志都来自 127.0.0.1,这使得整个事情毫无意义。
什么可能导致 nginx 将所有流量记录为来自服务器?
(我正在使用perusio 的 nginx 配置在 LEMP 堆栈上运行 Drupal 。)
在 中/etc/fail2ban/jail.local,当我将 MTA 设置为 Postfix 时,Fail2Ban 显示错误并且无法启动。
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 1800
maxretry = 4
destemail = email@example.com
mta = postfix
action = %(action_mwl)s
Run Code Online (Sandbox Code Playgroud)
错误:
WARNING 'findtime' not defined in 'ssh'. Using default value
ERROR /etc/fail2ban/action.d/postfix-whois-lines.conf and /etc/fail2ban/action.d/postfix-whois-lines.local do not exist
ERROR Error in action definition postfix-whois-lines[name=ssh, dest="email@example.com", logpath=/var/log/auth.log, chain="INPUT"]
ERROR Errors in jail 'ssh'. Skipping...
['set', 'loglevel', 3]
['set', 'logtarget', '/var/log/fail2ban.log']
Run Code Online (Sandbox Code Playgroud)
错误指向其他地方,但是当我注释掉mta=postfix它时。
我有后缀为我的MTA(在Debian 7)安装,我想我应该改变默认sendmail到postfix这个设置。我错了吗?
在安装了 Fail2ban 的 Ubuntu 18.04.2 LTS 系统上运行时iptables -S,我注意到缺少以下几行:
-N f2b-sshd
-A f2b-sshd -j RETURN
Run Code Online (Sandbox Code Playgroud)
我应该运行什么命令来重新生成f2b-sshd链以及与其关联的所有规则?我尝试运行fail2ban-client restart,但这似乎没有任何效果。
根据我发现的一篇博客文章,禁用 Nginx 访问日志可以加快速度。每次有人访问该站点时,Nginx 都必须写入此文件。
但是,在设置 fail2ban 时,我意识到这些程序使用访问日志来保护服务器。所以我的问题是,我应该禁用访问日志还是应该启用它们并设置fail2ban?
我正在寻找一种使用 fail2ban 来控制/阻止 Ubuntu 12.04.3 LTS 上的 samba 登录的方法。
我已经设置了一个jail.local. samba 部分目前看起来像这样:
[samba]
enabled = true
port = 135,139,445,137,138
protocol = tcp,udp
Run Code Online (Sandbox Code Playgroud)
我缺少这两个选项:
filter =
logpath =
Run Code Online (Sandbox Code Playgroud)
我知道 samba 日志位于/var/log/samba,但每个主机名都有自己的文件,那么我必须将什么设置为日志路径和过滤器?或者这甚至可能吗?
非常感谢
我最近安装了fail2ban,它开始阻止不良的ssh 尝试。
我还设置了一个额外的过滤器来永久禁止屡犯者。
我现在注意到我的 iptables 中有一些条目作为 DNS 主机名而不是原始 IP 地址,这显然是一个糟糕的主意。
我已经use_dns = no在我的 /etc/fail2ban/fail2ban.conf 中添加了,并且已经添加UseDNS no到了 /etc/ssh/sshd_config。我已经重新启动了这两个服务,但是那些 iptables 条目仍然显示为主机名而不是 IP 地址。
还有什么可能导致 dns 名称?永久禁止的 ip 列表被存储为原始 IP,因此转换似乎是在幕后进行的,因为它们是由 fail2ban 在启动时添加的。
不进入底层平台,有没有什么有效的方法来保护 Web 服务器免受 SQL 注入?任何特殊的 Apache 模块或配置?fail2ban 在这里合适吗?
我添加了 20000 条这样的 iptable 规则:
iptables -A INPUT -s 108.62.150.0/24 -j DROP
iptables -A INPUT -s 109.108.64.0/19 -j DROP
iptables -A INPUT -s 109.110.32.0/19 -j DROP
Run Code Online (Sandbox Code Playgroud)
从我的服务器阻止俄罗斯和东欧 ips。
但是,对于这些范围内的许多 ip,我的 fail2ban 仍然无效。
我的规则集的开头看起来像这样:
Chain INPUT (policy DROP)
target prot opt source destination
DROP tcp -- 0.0.0.0/0 127.0.0.0/8
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
DROP all -- 224.0.0.0/4 0.0.0.0/0
PUB_IN all -- 0.0.0.0/0 0.0.0.0/0
PUB_IN all -- 0.0.0.0/0 0.0.0.0/0
PUB_IN all -- 0.0.0.0/0 0.0.0.0/0
PUB_IN …Run Code Online (Sandbox Code Playgroud)