在 CentOS 7 上恢复原始的fail2ban配置

在 CentOS 7 上恢复原始的fail2ban配置

我使用 EPEL 安装了fail2ban yum install,然后在忘记备份后搞砸了配置/etc/fail2ban

现在我想要恢复原来的配置。

首先我尝试了yum reinstall fail2ban,但这很愚蠢,因为yum install不会覆盖现有的配置文件。然后我在其他地方再次尝试mv,根据一些旧的博客文章,这会给我原始的配置。没有这样的运气。我尝试卸载并重新安装。没有这样的运气。我感到沮丧并编辑了我的目录,认为可能正在发生某种奇怪的系统发现。重装后还是没有。/etc/fail2banyum reinstall fail2banrpm -erm -rf/etc/fail2ban.backup

最后,我下载并解压了 RPM 源代码,并将目录rsync编辑config/etc/fail2ban,这样我就完成了大部分工作。但日志文件的设置方式以及与 systemd 的集成方式仍然存在一些差异。我不想把一些东西放在一起,我真的只想恢复原来的配置。

有没有办法使用 YUM 或其他工具强制全新安装 RPM 软件包(包括配置和日志文件)?我正在使用标准的 Linode CentOS 7 镜像(如果这很重要的话)。

答案1

我认为 yum 太保守了,无法做你想做的事。为了获得最佳结果,您还应该准备使用一些 rpm 命令。

这将清除所有 rpm (ergo yum) 知道/信任的属于fail2ban 包的文件。

rpm -e --justdb --nodeps fail2ban

之后,您可以删除/移动 /etc 文件,然后 yum 将重新安装。

yum/rpm 对配置文件所做的所有神奇操作都在 RPM 规范文件中,其中包含前缀“%config(noreplace)”和宏“%{_sysconfdir}”,在您的情况下这意味着“/etc”。只需将这些全部排除掉,rpm 就会安装所有默认配置文件。

%config(noreplace) %{_sysconfdir}/fail2ban
%config(noreplace) %{_sysconfdir}/logrotate.d/fail2ban
%config(noreplace) %{_sysconfdir}/fail2ban/jail.d/00-firewalld.conf
%config(noreplace) %{_sysconfdir}/fail2ban/action.d/hostsdeny.conf
%config(noreplace) %{_sysconfdir}/fail2ban/action.d/complain.conf
%config(noreplace) %{_sysconfdir}/fail2ban/action.d/mail-*.conf
%config(noreplace) %{_sysconfdir}/fail2ban/action.d/sendmail-*.conf
%config(noreplace) %{_sysconfdir}/fail2ban/action.d/shorewall.conf
%config(noreplace) %{_sysconfdir}/fail2ban/jail.d/00-systemd.conf

你自己看看:

curl 'http://pkgs.fedoraproject.org/cgit/rpms/fail2ban.git/plain/fail2ban.spec?h=epel7' |
 grep '^%config(noreplace)'

答案2

在我的系统上,fail2ban 实际上分布在多个包中:

  • 失败2禁止
  • fail2ban-firewalld
  • failure2ban-systemd
  • 失败2禁止发送邮件
  • fail2ban-服务器
  • 系统Python

显然,除非安装了上述部分或全部内容,否则不会生成配置文件。yum autoremove摆脱它们,然后yum install fail2ban恢复原始配置文件。

答案3

我需要执行以下步骤来解决同样的问题:

sudo yum autoremove fail2ban -y
sudo yum autoremove fail2ban-server -y
sudo yum install fail2ban -y

相关内容