我目前习惯于使用像fail2ban这样的工具通过禁止IPv4地址来阻止不需要的流量远离我的服务器:每个IP有太多坏日志条目,禁止IP。
然而,当世界完成向 IPv6 的迁移时,禁止单个地址可能不再起作用,因为“普通”僵尸网络计算机或攻击者拥有相当多的 IPv6 地址?
如果我想阻止 IPv6 用户,那么最好的方法是什么?使用某个 IP 掩码还是其他什么?
当您在 IPv6 中获得多个单独的点击然后禁止整个块时,如何进行“升级启发式”?
对我来说,减轻威胁更为重要。如果一些可怜的真正用户与被阻止的 IP 属于同一个块,那么这些人和他们的 ISP 之间的问题是清除该网络块。
最近我的备份开始失败,我将问题跟踪到文件 /var/lib/fail2ban/fail2ban.sqlite3. 它超过500mb。我不确定它是否随着时间的推移而增长,或者这是否是最近的发展。
我怎样才能让它达到合理的尺寸并保持它的尺寸?(出于这个目的,我们假设小于 500mb。)
是否值得运行fail2ban、sshdfilter 或类似工具,将尝试登录和登录失败的 IP 地址列入黑名单?
我已经看到有人认为这是“适当保护”服务器上的安全剧院。但是,我觉得这可能会让脚本小子移动到他们列表中的下一个服务器。
假设我的服务器“得到了适当的保护”,而且我并不担心暴力攻击实际上会成功——这些工具是简单地保持我的日志文件干净,还是我在阻止暴力攻击尝试方面获得了任何有价值的好处?
更新:很多关于密码蛮力猜测的评论 - 我确实提到我并不担心这一点。也许我应该更具体地问一下,fail2ban 对于只允许基于密钥的 ssh 登录的服务器是否有任何好处。
使用搜索引擎在 MySQL 和 fail2ban 上搜索互联网会产生很多将您的 fail2ban 日志放入 MySQL 的结果,但是我想监视失败的 MySQL 尝试登录并禁止这些 IP。
我的应用程序要求我保持 MySQL 的端口打开,但我已经更改了默认端口以增加安全性。不过,为了额外的安全性,我想使用 fail2ban 监控 MySQL 日志。
有没有人有为 MySQL 配置 fail2ban 的快速指南?我已经安装了它并且正在处理一些其他服务,因此您可以跳过安装部分并直接跳转到配置配置文件或其他任何必要的内容。
fail2ban无法识别失败的公钥 ssh 登录,我认为这可以通过修改failregexof/etc/fail2ban/filter.d/sshd.config以匹配以下行来解决:
<date> <time> <server-hostname> sshd[25917]: Connection closed by <client-ip> [preauth]
Run Code Online (Sandbox Code Playgroud)
但是我找不到关于如何正确修改所述失败正则表达式的体面介绍。因为我真的不知道像^%(__prefix_line)sinclude 这样的变量很难得到一个有效的正则表达式。
我知道最新版本 0.9.1 包含正则表达式以匹配“由 [preauth] 关闭的连接”行,但我使用的是 Debian 存储库中的 fai2ban,并且 0.9.1 的配置与我的配置不兼容有。
我每次都试图在不重新启动 Fail2Ban 的情况下解除对 IP 地址的阻止,这样做的最佳方法是什么?或者你能指出我有用指南的方向吗?
正如您在下面看到的,我尝试删除的 IP 地址是:89.31.259.161
# iptables -L -n
Chain INPUT (policy DROP)
target prot opt source destination
fail2ban-apache-badbots tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443
fail2ban-httpd tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
fail2ban-sasl tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 25,465,143,220,993,110,995
fail2ban-SSH tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
fail2ban-httpd tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
fail2ban-httpd tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
fail2ban-vsftpd tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT …Run Code Online (Sandbox Code Playgroud) 在 Ubuntu 14.04 服务器上运行。
所以我已经正确配置了 fail2ban 来处理/var/log/auth.logSSH 登录尝试。
在 3 次尝试失败后,我在 fail2ban 日志中看到了这一点:
2014-11-19 15:22:56,822 fail2ban.actions: WARNING [ssh] Ban BANNED_IP_ADDY
Run Code Online (Sandbox Code Playgroud)
iptables -L 显示这个链:
Chain fail2ban-ssh (1 references)
target prot opt source destination
REJECT all -- BANNED_IP_ADDY anywhere reject-with icmp-port-unreachable
RETURN all -- anywhere anywhere
Run Code Online (Sandbox Code Playgroud)
然而,从那个 IP 我仍然可以通过 SSH 登录而没有任何问题。
同样的故事适用于我所有的 fail2ban 监狱。例如 Apache,我可以看到 fail2ban 正确检测到日志并声称它禁止了一个 IP。该 IP 最终位于 iptables 链中,但该 IP 实际上并未被拒绝。
在这些情况下,我有一种感觉是因为 SSH 不在标准端口上。它位于不同的端口上。
因此,如果我强制 ssh 监狱规则使用新端口:
[ssh]
enabled = true
port = 32323
filter = sshd …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我们的 Amazon EC2 Linux AMI (CentOS) 上安装 fail2ban。我知道fail2ban在EPEL中,所以我做了以下事情:
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo rpm -Uvh epel-release*rpm
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,我收到以下消息:
package epel-release-6-8.9.amzn1.noarch (which is newer than epel-release-6-8.noarch) is already installed
Run Code Online (Sandbox Code Playgroud)
这对我来说意味着 EPEL 已经可用,但如果我这样做:
sudo yum install fail2ban
Run Code Online (Sandbox Code Playgroud)
我得到:
Loaded plugins: priorities, security, update-motd, upgrade-helper
amzn-main | 2.1 kB 00:00
amzn-updates | 2.3 kB 00:00
Setting up Install Process
No package fail2ban available.
Error: Nothing to do
Run Code Online (Sandbox Code Playgroud)
我假设我误解了一些东西,但我如何从 EPEL 安装?
编辑:我刚刚完成了以下操作,发现未启用 repo:
yum repolist all
Run Code Online (Sandbox Code Playgroud)
那么如何在 EC2 上启用存储库?
我的 fail2ban 日志中/var/log/fail2ban.log充满了以下条目:
fail2ban.filter : WARNING Determined IP using DNS Lookup: [IP address]
Run Code Online (Sandbox Code Playgroud)
我认为这可能是在我更改 ssh 端口后开始的...
知道这是什么原因以及如何阻止它吗?
我怀疑我是否应该在登录 SSH 时使用密钥身份验证,或者只是使用 fail2ban + ssh(禁用 root 登录)。
fail2ban 是安全的还是直接在我所有需要连接到 ssh 的客户端机器上生成密钥和配置真的更好?