
После перезагрузки сервера я больше не могу подключиться к нему по ssh. Я использую headless 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
и ip6tables-save > /etc/iptables/rules.v6
для IPv6.