
重新啟動伺服器後,我無法再透過 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