重新启动服务器后,我无法再通过 ssh 访问它。我正在运行无头 Ubuntu 20.04.5 在调查问题后,我注意到我的服务器上的所有端口似乎都已关闭(使用像 yougetsignal 这样的开放端口检查器)。我对之前打开的所有端口进行了测试。
但是,sudo netstat -tulpn | grep LISTEN
返回我的端口已打开。端口 22 的示例:
tcp6 0 0 :::22 :::* LISTEN 362/sshd: /usr/sbin
telnet localhost 22
也会导致超时。
我的下一个假设是 iptables 规则以某种方式被覆盖,所以我运行了iptables -S | grep '22'
,仍然使用端口 22 作为示例。结果是:
-A INPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
另外,没有安装 ufw,也没有安装我所知道的任何其他防火墙服务。
我现在有点迷失,因为我找不到问题所在,更不用说解决它了。
任何帮助是极大的赞赏。
更新:
nnmap localhost
有以下输出:
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000012s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 985 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
80/tcp open http
110/tcp open pop3
143/tcp open imap
443/tcp open https
465/tcp open smtps
587/tcp open submission
993/tcp open imaps
995/tcp open pop3s
3000/tcp open ppp
3306/tcp open mysql
8090/tcp open opsmessaging
但是,使用 nmap 从另一个系统扫描会返回:
Host is up (0.0011s latency).
Not shown: 995 filtered ports
PORT STATE SERVICE
53/tcp open domain
143/tcp open imap
993/tcp open imaps
995/tcp open pop3s
40193/tcp closed unknown
因此,虽然这些端口看起来是开放的,但从外部无法访问它们。
答案1
我能够解决这个问题,并留下说明,以防有人偶然发现这个线程有同样的问题。
问题是,重启后 iptables 规则不会保存。具体来说,IN_public_allow 部分。它应该列出服务器上所有打开的端口。如果没有,您必须手动附加所述规则,iptables -A IN_public_allow -p tcp --dport [PORT]-j ACCEPT
其中 [Port] 是应添加的端口。
为了避免在将来重新启动后出现这种情况,您只需安装一个包即可自动保存和恢复规则:apt-get install iptables-persistent
规则可以使用IPv6iptables-save > /etc/iptables/rules.v4
保存。ip6tables-save > /etc/iptables/rules.v6