Dovecot

UFW 正在阻止郵件伺服器流量(dovecot、postfix、MariaDB、Rspamd)

  • June 26, 2019

如標題中所述,我正在執行一個帶有 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 中被標記為紅色,但這可能什麼都不是……

CLI 中的 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-mysqlapt-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

引用自:https://serverfault.com/questions/972848