在 CentOS 7 上恢復原始的 fail2ban 配置
我使用 EPEL 安裝了 fail2ban
yum install
,然後在忘記備份後繼續搞砸配置/etc/fail2ban
。現在我想要原始配置。
首先我嘗試
yum reinstall fail2ban
了,但這很愚蠢,因為yum install
它不會覆蓋現有的配置文件。然後我在其他地方mv
編輯並再次嘗試,根據一些舊部落格文章,這會給我原來的配置。沒有這樣的運氣。我嘗試解除安裝並重新安裝。沒有這樣的運氣。我很沮喪並編輯了我的目錄,認為可能有某種奇怪的系統發現正在發生。重裝後還是沒有。/etc/fail2ban``yum reinstall fail2ban``rpm -e``rm -rf``/etc/fail2ban.backup
最後,我下載並解壓了 RPM 原始碼並將目錄
rsync
編輯到,這讓我大部分時間都到達了那裡。但是在如何設置日誌文件以及如何與 systemd 集成方面仍然存在一些差異。與其把科學怪人放在一起,我真的只想恢復原來的配置。config``/etc/fail2ban
有沒有辦法使用 YUM 或其他工具強制全新安裝 RPM 包,包括配置和日誌文件?我正在使用標準的 Linode CentOS 7 映像,如果這很重要的話。
在我的系統上,fail2ban 實際上分佈在幾個包中:
- 失敗2禁令
- fail2ban-防火牆
- fail2ban-systemd
- fail2ban-發送郵件
- fail2ban-伺服器
- 系統蟒蛇
顯然,除非安裝了上述部分或全部,否則不會生成配置文件。
yum autoremove
擺脫它們,然後yum install fail2ban
恢復原始配置文件。
我認為 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)'