我在某些 CentOS 5 和 6 服务器上配置了fail2ban,每当 IP 被禁止时,它都会向我发送一封包含 IP 的 whois 的电子邮件。是否可以将 fail2ban 配置为也从 whois 报告向电子邮件发送通知?
这是我的监狱配置:
# /etc/fail2ban/jail.conf
[ssh-iptables]
enabled = true
filter = sshd
action = iptables-allports[name=SSH, protocol=all]
sendmail-whois[name=SSH, dest=root@mydomain.com, sender=fail2ban]
logpath = /var/log/secure
maxretry = 3
Run Code Online (Sandbox Code Playgroud)
是否有某种变量我可以将其dest=发送到 whois 电子邮件?
运行 cron 作业时出现以下错误,我不太确定如何修复。这是在 Ubuntu 12.04 LTS 上。
test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
/etc/cron.daily/logrotate:
error: error running non-shared postrotate script for /var/log/fail2ban.log of '/var/log/fail2ban.log '
run-parts: /etc/cron.daily/logrotate exited with return code 1
Run Code Online (Sandbox Code Playgroud)
这是/etc/logrotate.d/fail2ban的内容
/var/log/fail2ban.log {
weekly
rotate 4
compress
delaycompress
missingok
postrotate
fail2ban-client set logtarget /var/log/fail2ban.log >/dev/null
endscript
# If fail2ban runs as non-root it still needs to have write access
# to logfiles.
# create 640 fail2ban adm
create 640 root adm
} …Run Code Online (Sandbox Code Playgroud) 这个日志文件/var/log/kern.log包含一些 IP 地址,我希望系统自动禁止/阻止。
基本上,一个数据包来自UDP协议,并且是一个短数据包,那么我希望IPTables通过Fail2Ban禁止该数据包的主机。
03-serv:~# cat /var/log/kern.log | grep ' UDP: short packet: From '
Dec 19 16:05:12 03-serv kernel: UDP: short packet: From 74.60.6.213:1900 311/299 to x.x.x.x:27015
Dec 19 16:05:57 03-serv kernel: UDP: short packet: From 1.215.252.130:1900 11297/286 to x.x.x.x:27015
Dec 19 16:08:17 03-serv kernel: UDP: short packet: From 184.0.249.136:1900 363/299 to x.x.x.x:27015
Dec 19 16:09:54 03-serv kernel: UDP: short packet: From 1.214.66.49:1900 11297/310 to x.x.x.x:27015
Dec 19 16:11:28 03-serv kernel: UDP: short packet: From 1.214.214.2:1900 11297/320 …Run Code Online (Sandbox Code Playgroud) 我正在使用 iptables-persistent 包在启动时重新加载我的 iptables。我一直在想我应该将fail2ban规则添加到加载的配置文件中吗?现在我看到它们是重复的。
这是我的防火墙配置:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:fail2ban-ssh - [0:0]
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
# Accepts SSH connection
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# HTTP
-A INPUT -p tcp --dport 80 -j ACCEPT
# SSH
-A INPUT -p tcp --dport 22 -j ACCEPT
# MariaDB (private network)
-A INPUT -i eth1 -p tcp -m tcp --dport 3306 -j ACCEPT
# loopback device
-I …Run Code Online (Sandbox Code Playgroud) 我一直在使用fail2ban 没有任何问题。
前几天,我决定停止 fail2ban 以从我的默认 iptables 中删除一个规则。当我启动fail2ban时,它启动正常(根据命令:service fail2ban start)。
但是,当我检查 iptables 时,我没有看到添加了 fail2ban 链。我检查了fail2ban日志,发现了几个这样的错误:
fail2ban.action [32091]: 错误 iptables -w -N f2b- iptables -w -I INPUT -p tcp -m multiport --dports 0:65535 -j f2b- -- stderr: "iptables v1.4.7: option
-w' requires an argument\nTryiptables - h' 或 'iptables --help' 获取更多信息。\niptables v1.4.7:选项-w' requires an argument\nTryiptables -h' 或 'iptables --help' 获取更多信息。\niptables v1.4.7:选项-w' requires an argument\nTryiptables -h' 或 'iptables - -help' 了解更多信息。\n"
从这个日志来看,fail2ban 似乎正在尝试使用-w不存在的选项运行 iptables 。我检查了所有的 fail2ban 配置文件,特别是在 …
我必须承认,正则表达式一直是我的弱点。我从来没有坐下来花足够的时间学习它们以有效地使用它们。但是,我真的不知道为什么这不匹配。我正在尝试制作一个自定义的 failregex 来阻止人们试图利用任何 xmlrpc.php 错误(并且他们一直在尝试这样做)。
我在 Ubuntu 16.04.2 上使用 fail2ban v0.9.3,Apache 2.4.18。
这是我的正则表达式:
<HOST> - - \[\d{2}/\w{3}/\d{4}:\d{2}:\d{2}:\d{2} +\d{4}\] "POST /xmlrpc.php HTTP/1.0" 200
这是一个不匹配的示例行(IP 替换为 0):
0.0.0.0 - - [06/Apr/2017:07:45:42 +0000] "POST /xmlrpc.php HTTP/1.0" 200 752 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
我无法弄清楚为什么它不匹配。据我所知,这应该是完全匹配的。任何人都可以透露一些信息吗?
此外,让 + 和 - 符号的时区偏移量匹配会很好……我认为HTTP/1.0用HTTP/1.\d{1}它替换应该匹配 1.0 和 1.1,对吗?
提前致谢!
编辑:在使用fail2ban-regex 在命令行上玩弄之后,我发现它的正则表达式<HOST> - - \[将匹配所有行。但是,第二个我将其更改为<HOST> - - \[\d{2}它根本不匹配任何行。这似乎没有道理!
编辑 2:嗯,与此同时,我正在使用<HOST> - - \[.* "POST /(xmlrpc|wp-login).php HTTP/1.\d" 200并且与我想要的行匹配。但是,我仍然很想知道为什么我原来的不匹配,因为我宁愿使用更具体的正则表达式而不是我现在使用的广泛的正则表达式。
乌班图20.04。尝试为 SSH 配置fail2ban,但fail2ban 未禁止任何 IP
/etc/fail2ban/jail.local
[DEFAULT]
bantime = 10m
ignoreip = 127.0.0.1/8 ##.##.##.##/32 ##.##.##.##/32
findtime = 30m
maxretry = 3
[sshd]
enabled = true
# modes: normal (default), ddos, extra or aggressive (combines all).
#mode = normal
port = ssh,2233
logpath = %(sshd_log)s
backend = %(sshd_backend)s
Run Code Online (Sandbox Code Playgroud)
来自不在ignoreip上的主机进行了20多次错误尝试,但仍然看到这个
fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 0
|- …Run Code Online (Sandbox Code Playgroud) 我在我的邮件服务器上使用fail2ban。我今天早上发现通过 SMTP 有大约 5000 次失败的登录尝试(在 1 小时内)没有被我的 sasl 过滤器检测到。这是 /var/log/mail.log 中条目的示例
Jan 25 04:39:56 ***** postfix/smtpd[23828]: warning: 114-32-231-17.HINET-IP.hinet.net[114.32.231.17]: SASL LOGIN authentication failed: authentication failure
Run Code Online (Sandbox Code Playgroud)
这是我的(未修改的)fail2ban 的 sasl 过滤器定义:
# Fail2Ban configuration file
#
# Author: Yaroslav Halchenko
#
# $Revision: 728 $
#
[Definition]
# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named "host". The tag "<HOST>" can
# be used for …Run Code Online (Sandbox Code Playgroud) 我试图选择一个涵盖该主题的标题:
如果我PermitRootLogin设置为 ,为什么要使用fail2ban(或类似程序)without-password?
我认识的一位非常值得信赖且经验丰富的系统管理员建议我也安装fail2ban,因为开箱即用可以保护我的自定义服务器免受暴力攻击,因为它们消耗资源(而且我的可用资源数量有限)。
我认识的另一个非常值得信赖且经验丰富的系统管理员建议我不要安装fail2ban,因为我已经禁用了密码身份验证,因此没有必要防止暴力破解,因为没有可以工作的密码。
我真的很困惑。
感谢大家为我提供的任何帮助。
我需要在fail2ban 中将一个ipv6 地址列入白名单,但是当我将它们添加到我的jail.conf 中的ignoreip 语句时,它们无论如何都会被阻止。这就是我所拥有的/etc/fail2ban/jail.conf
[DEFAULT]
ignoreip = 192.168.100.0/24 , 2a02:2020:2020::1,
Run Code Online (Sandbox Code Playgroud)
有人知道如何在fail2ban中将IPv6地址列入白名单吗?