UFW 正在阻止郵件伺服器流量(dovecot、postfix、MariaDB、Rspamd)
如標題中所述,我正在執行一個帶有 MariaDB 的 dovecot/postfix/Rspamd Mailservercombo。
我注意到,在過去的幾天裡,我無法再從我的電子郵件客戶端接收/發送任何郵件。Thunderbird 也注意到:無法再連接 SMTP 伺服器。
這段時間我唯一改變的是:
- 我添加了一個 phpmyadmin 訪問權限以及來自 apache2 伺服器的附加 linux 使用者查詢和
- (在“朋友”的推薦下)安裝了 fail2ban 作為針對 Web 服務的暴力請求的額外保護。我將其保留為預設設置,僅將 bantime 更改為 1 hr。
從那以後我刪除並清除了fail2ban,確定這是問題所在。不是。(?)
從 syslog 讀取以下輸出後,我將其追溯到 UFW:
UFW本身有如下配置:
# cat /etc/ufw/user.rules *filter :ufw-user-input - [0:0] :ufw-user-output - [0:0] :ufw-user-forward - [0:0] :ufw-before-logging-input - [0:0] :ufw-before-logging-output - [0:0] :ufw-before-logging-forward - [0:0] :ufw-user-logging-input - [0:0] :ufw-user-logging-output - [0:0] :ufw-user-logging-forward - [0:0] :ufw-after-logging-input - [0:0] :ufw-after-logging-output - [0:0] :ufw-after-logging-forward - [0:0] :ufw-logging-deny - [0:0] :ufw-logging-allow - [0:0] :ufw-user-limit - [0:0] :ufw-user-limit-accept - [0:0] ### RULES ### ### tuple ### allow tcp 22 0.0.0.0/0 any 0.0.0.0/0 in -A ufw-user-input -p tcp --dport 22 -j ACCEPT ### tuple ### allow tcp 2222 0.0.0.0/0 any 0.0.0.0/0 in -A ufw-user-input -p tcp --dport 2222 -j ACCEPT ### tuple ### allow tcp 25 0.0.0.0/0 any 0.0.0.0/0 in -A ufw-user-input -p tcp --dport 25 -j ACCEPT ### tuple ### allow tcp 465 0.0.0.0/0 any 0.0.0.0/0 in -A ufw-user-input -p tcp --dport 465 -j ACCEPT ### tuple ### allow tcp 587 0.0.0.0/0 any 0.0.0.0/0 in -A ufw-user-input -p tcp --dport 587 -j ACCEPT ### tuple ### allow tcp 143 0.0.0.0/0 any 0.0.0.0/0 in -A ufw-user-input -p tcp --dport 143 -j ACCEPT ### tuple ### allow tcp 993 0.0.0.0/0 any 0.0.0.0/0 in -A ufw-user-input -p tcp --dport 993 -j ACCEPT ### tuple ### allow tcp 4190 0.0.0.0/0 any 0.0.0.0/0 in -A ufw-user-input -p tcp --dport 4190 -j ACCEPT ### tuple ### allow tcp 80 0.0.0.0/0 any 0.0.0.0/0 in -A ufw-user-input -p tcp --dport 80 -j ACCEPT ### tuple ### allow tcp 443 0.0.0.0/0 any 0.0.0.0/0 in -A ufw-user-input -p tcp --dport 443 -j ACCEPT ### END RULES ### ### LOGGING ### -A ufw-after-logging-input -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10 -A ufw-after-logging-forward -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10 -I ufw-logging-deny -m conntrack --ctstate INVALID -j RETURN -m limit --limit 3/min --limit-burst 10 -A ufw-logging-deny -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10 -A ufw-logging-allow -j LOG --log-prefix "[UFW ALLOW] " -m limit --limit 3/min --limit-burst 10 ### END LOGGING ### ### RATE LIMITING ### -A ufw-user-limit -m limit --limit 3/minute -j LOG --log-prefix "[UFW LIMIT BLOCK] " -A ufw-user-limit -j REJECT -A ufw-user-limit-accept -j ACCEPT ### END RATE LIMITING ### COMMIT
正如您在最後幾個條目中看到的那樣,它似乎可能是由 ufw-after-logging-input、ufw-after-logging-forward 或 ufw-logging-deny 觸發的。然而,這就是我現在的“知識”結束的地方。我唯一注意到的是以下行在 user.rules 中被標記為紅色,但這可能什麼都不是……
我重新安裝了fail2ban來做到這一點:
# fail2ban-client status Status |- Number of jail: 1 `- Jail list: sshd # fail2ban-client status sshd Status for the jail: sshd |- Filter | |- Currently failed: 1 | |- Total failed: 158 | `- File list: /var/log/auth.log `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 112.xxx.xxx.xxx # fail2ban-client set sshd unbanip 112.xxx.xxx.xxx 112.xxx.xxx.xxx # fail2ban-client status sshd [...] `- Banned IP list:
/var/log/auth.log
列出了許多此類條目,均來自相同的 IP:Jun 25 19:56:51 mail sshd[26691]: Connection closed by 112.xxx.xxx.xxx port 60391 [preauth] Jun 25 19:56:52 mail sshd[26693]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=112.xxx.xxx.xxx user=root Jun 25 19:56:54 mail sshd[26693]: Failed password for root from 112.xxx.xxx.xxx port 64328 ssh2 Jun 25 19:56:54 mail sshd[26693]: Connection closed by authenticating user root 112.xxx.xxx.xxx port 64328 [preauth] Jun 25 19:57:03 mail sshd[26697]: Connection closed by 112.xxx.xxx.xxx port 50264 [preauth]
這不可能是我,因為我從不使用 root 登錄。
我搜尋了很多網站,但找不到任何有用的線索來解決這個問題。它確實似乎來自我最近所做的一項更改,儘管我想不出任何其他可能在清除和刪除 fail2ban 後可能仍然存在的未刪除規則。
在修復它的過程中我還嘗試了一些事情: - 重新啟動和停止/啟動 UFW - 重新啟動 apache2 - 重新啟動 dovecot - 在 Rspamd 上查找發送的測試郵件中的事件條目(自從我進行更改以來,沒有收到任何內容! ) - 使用另一個郵件客戶端 - 將埠 25 的接受規則添加到 UFW(沒有改變任何東西)
PS:這台伺服器執行的是 Ubuntu。
有什麼辦法可以讓我的設置恢復到工作狀態?
經過多次嘗試,我現在似乎已經解決了我的問題。解決此問題的一些提示:
不,它與那些 UFW-Blocks 無關。首先,**檢查您是否使用正確的服務名稱!**我忘記了,因為一個錯誤,我用另一個服務名啟動後綴,而不是通常。
您可以通過比較伺服器上的這部分
systemctl status <servicename>.service
是否相同來確定您是否有錯誤的服務名稱:CGroup: /system.slice/system-postfix.slice/<servicename>.service ├─5832 /usr/lib/postfix/sbin/master -w ├─5833 pickup -l -t unix -u -c └─5834 qmgr -l -t unix -u
我的錯誤服務僅在其名稱下的 CGroup 上提供。
在獲得正確的服務名稱後,我可以很快找到問題,因為
systemctl status <servicename>.service
現在會發出正確的錯誤消息:Jun 26 18:32:40 mail postmulti[6814]: /usr/sbin/postconf: warning: /etc/postfix/main.cf: unused parameter: mua_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject Jun 26 18:32:40 mail postmulti[6814]: /usr/sbin/postconf: warning: /etc/postfix/main.cf: unused parameter: mua_sender_restrictions=permit_mynetworks,reject_non_fqdn_sender,reject_sender_login_mismatch,permit_sasl_authenticated,reject Jun 26 18:32:40 mail postmulti[6814]: /usr/sbin/postconf: warning: /etc/postfix/main.cf: unused parameter: mua_relay_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_mynetworks,permit_sasl_authenticated,reject
這些是錯誤 main.cf 和 master.cf 配置的結果。兩種配置相互依賴,如果您複製/粘貼,您將需要來自單一來源的兩種配置!
我還遇到了以下錯誤,這暗示了 postfix-mysql 數據包的失去(或在我的情況下已損壞)實現。只是
apt-get remove postfix-mysql
和apt-get install postfix-mysql
之後。Jun 26 18:20:41 mail postfix/submission/smtpd[6252]: error: unsupported dictionary type: mysql Jun 26 18:20:41 mail postfix/submission/smtpd[6252]: message repeated 3 times: [ error: unsupported dictionary type: mysql] Jun 26 18:20:41 mail postfix/submission/smtpd[6252]: fatal: in parameter smtpd_relay_restrictions or smtpd_recipient_restrictions, specify at least one working instance of: reject_unauth_destination, defer_unauth_destination, reject, defer, defer_if_permit or check_relay_domains Jun 26 18:20:42 mail postfix/master[5832]: warning: process /usr/lib/postfix/sbin/smtpd pid 6252 exit status 1 Jun 26 18:20:42 mail postfix/master[5832]: warning: /usr/lib/postfix/sbin/smtpd: bad command startup -- throttling
另一件事可以做到這一點是重做 mysql 使用者。我首先通過在命令行上使用 root 訪問伺服器並輸入
grant select on dbname.* to 'username'@'localhost' identified by 'verystrongpassword';
. 我現在刪除了該使用者,將其替換為使用 phpmyadmin 添加的使用者,並明確將其添加到'username'@'%'
而不是'username'@'localhost'
.我從中學到的最後一件事 - 如果您向伺服器添加新包,請檢查是否存在可能干擾或替換已配置服務的依賴項。(
sendmail
也可能是停止我的後綴伺服器的問題之一,遺憾的是在所有其他嘗試之後我無法確認這一點)
UFW 配置看起來正確。
您可能設法在 fail2ban 中禁止了您自己的 IP。
用於
fail2ban-client status
查看啟用了哪些監獄,然後fail2ban-client status <jail>
查看是否列出了您的 IP 地址。如果你找到你的IP,你可以解禁它。[root@localhost ~]# fail2ban-client status Status |- Number of jail: 1 `- Jail list: sshd [root@localhost ~]# fail2ban-client status sshd Status for the jail: sshd |- Filter | |- Currently failed: 3 | |- Total failed: 762 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 13 |- Total banned: 86 `- Banned IP list: 121.136.181.58 212.224.124.98 65.94.147.197 176.159.245.52 68.32.77.29 112.17.128.44 220.81.48.50 104.210.60.66 104.211.60.207 104.211.46.110 212.64.98.92 59.144.137.186 90.3.202.234 [root@localhost ~]# fail2ban-client set sshd unbanip 203.0.113.187 203.0.113.187