正如标题所述,我正在运行 dovecot/postfix/Rspamd Mailservercombo,其后面有一个 MariaDB。
我注意到,最近几天,我无法再从我的电子邮件客户端接收/发送任何邮件。Thunderbird 也注意到了:无法再连接到 SMTP 服务器。
我这次唯一改变的是:
- 我从 apache2 服务器添加了一个带有附加 Linux 用户查询的 phpmyadmin 访问权限,并且
- (根据“朋友”的推荐)安装了 fail2ban 作为对网络服务的暴力请求的额外保护。我保留了默认设置,只将 bantime 更改为 1 小时。
从那时起,我删除并清除了 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 上查找已发送测试邮件的事件条目(自从我进行更改后就没有收到任何邮件!) - 使用另一个邮件客户端 - 为 UFW 添加端口 25 的接受规则(没有改变任何东西)
PS:该服务器运行的是 Ubuntu。
有什么方法可以让我的设置恢复到工作状态吗?
答案1
UFW 配置看起来正确。
您可能已设法在 fail2ban 中禁止您自己的 IP。
使用fail2ban-client status
查看哪些 jail 已启用,然后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
答案2
经过多次尝试,我似乎已经解决了我的问题。以下是解决此问题的一些提示:
不,这与那些 UFW-Blocks 无关。首先,检查您是否使用了正确的服务名称!我忘记了,由于一个错误,我使用与通常不同的服务名来启动 postfix。
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 访问服务器并输入 将用户添加到 mysqldb grant select on dbname.* to 'username'@'localhost' identified by 'verystrongpassword';
。我现在删除了该用户,将其替换为我用 phpmyadmin 添加的用户,并将其明确添加到'username'@'%'
而不是'username'@'localhost'
。
我从中学到的最后一件事是 - 如果您向服务器添加新软件包,请检查是否存在可能干扰或替换已配置服务的依赖项。(sendmail
也可能是停止我的 postfix 服务器的问题之一,遗憾的是在所有其他尝试之后我都无法确认这一点)