使用 bash 脚本配置 Fail2Ban

使用 bash 脚本配置 Fail2Ban

我正在尝试使用 bash 脚本配置 /etc/fail2ban/jail.local 配置。我考虑使用 sed 和正则表达式来更改我需要的部分。

sed -i "s/^bantime  = 600/bantime  = $1/" /etc/fail2ban/jail.local
sed -i "s/^destemail = root@localhost/destemail = $2/" /etc/fail2ban/jail.local
sed -i "s/^action = %(action_)s/action = %(action_mwl)s/" /etc/fail2ban/jail.local

如您所见,对于 bantime、destemail 和 action,我可以这样做。只有完全匹配时才可以。可能是 bantime 或 destemail 发生了更改,那么脚本将无法运行。我可以用什么来使 = 符号后面灵活。例如,如果 bantime 不是 600 而是 700,它也将使用 bash 脚本进行更改。

另外还有一个部分用于配置 SSH 和 SSHD:

[ssh]

enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6

[dropbear]

enabled = false 
port = ssh
filter = sshd
logpath = /var/log/dropbear
maxretry = 6

[ssh-ddos]

enabled = false
port = ssh
filter = sshd-ddos
logpath = /var/log/auth.log
maxretry = 6

我还想使用 sed 和正则表达式指定用于 SSH 的端口或启用 SSHD。但正如您所见,当我匹配启用时,我将更改所有 jail,或者如果我匹配端口,我将更改配置中的所有端口。这不是我想要的。

有人可以帮助我使用脚本和灵活的方式配置 Fail2Ban 吗?

非常感谢,拉乌尔

答案1

对于单行编辑,您可以使用

sed -e "s/^bantime = .*/bantime = $1/"

或者更有弹性

sed -re "s/^bantime[[:blank:]]*=.*/bantime = $1/"

对于多行问题,使用行选择器来界定你的编辑

sed -re "/^\[ssh\]$/,/^\[/s/port[[:blank:]]*=.*/port = $1/"

相关内容