서버를 다시 시작한 후에는 더 이상 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
규칙은 iptables-save > /etc/iptables/rules.v4
IPv6을 사용하여 저장할 수 있습니다.ip6tables-save > /etc/iptables/rules.v6