Добавление службы firewalld закрывает требуемый порт вместо того, чтобы открывать его.
У меня есть новая установка Rocky Linux 9 на экземпляре общего процессора Linode. Я просто установил, чтобы настроить его. По умолчанию он имеетhttp
иssh
службы включены.
Делаюnmap
сканирование на этом этапе показывает, что порты 22 и 80 открыты, а остальные отфильтрованы следующим образом:
Host is up (0.59s latency).
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
9090/tcp closed zeus-admin
(Я не знаю, что такое zeus admin, не знаю, актуально ли это как-то)
Мне сейчас нужно открытьhttps
иsmtp
порты для некоторых вещей, которые я настраиваю. Я пытаюсь запустить следующую команду:
sudo firewall-cmd --permanent --add-service=https
После этого я перезагружаюfirewalld
обслуживание черезsystemctl
.
Я ожидаю, что порт 443 будет открыт, но вместо этого вывод nmap показывает следующее:
Host is up (0.51s latency).
Not shown: 996 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp closed https
9090/tcp closed zeus-admin
Я получаю тот же результат для любой службы, которую пытаюсь добавить с помощью--add-service
флаг, порты закрыты. Протестировав их через URL-адрес службы, которую я настраиваю, я просто получаюConnection refused
ошибки.
Я также попробовал добавить порты напрямую с помощью следующей команды:
sudo firewall-cmd --permanent --add-port=443/tcp
Однако результаты те же, порт отображается как закрытый.
Как я могу это решить?
1 ответ
Добавление службы firewalld закрывает требуемый порт вместо того, чтобы открывать его.
Это не то, что означают здесь «открытые» и «закрытые». Перезапустите nmap, чтобы увидеть больше.
Вывод Nmap ориентирован на сервисы, а не на брандмауэр, и оба «открытые» и «закрытые» указывают на то, что был какой-то ответ на пакеты на этом порту – т.е. они оба указывают на то, что брандмауэр пропустил пакеты.
Разница заключается в типе полученного ответа: «Открытый» означает, что TCP-соединение было успешно установлено (т. е. есть служба, прослушивающая этот порт), а «закрытый» означает, что TCP-подтверждение было явно отклонено, т. е. оно было разрешено . через брандмауэр, но соединений нет, поэтому обратно был получен стандартный TCP RST.
(Сообщение браузера или HTTP-клиента «Соединение отклонено» означает то же самое, что и «закрыто» nmap — это означает, что сервер получил ваш пакет подтверждения TCP через брандмауэр, но активно отклонил его из-за того, что служба не прослушивает этот порт.)
Между тем, если пакеты подтверждения TCP вызывают ошибку ICMP (например, «Административно запрещено») или если вообще нет ответа (некоторые межсетевые экраны просто отбрасывают запрещенные пакеты), nmap отобразит порты как «фильтрованные» — в вашем случае они сообщается как «Не показано: 997 отфильтрованных портов» (nmap группирует ответы большинства и показывает только исключения).
Для более точного вывода укажите список портов для сканирования, используя
$ nmap -p 21,22,23,24 ember
Starting Nmap 7.92 <...>
PORT STATE SERVICE REASON
21/tcp filtered ftp no-response
22/tcp open ssh syn-ack
23/tcp closed telnet conn-refused
24/tcp filtered priv-mail host-unreach
Nmap done: 1 IP address (1 host up) scanned in 0.20 seconds
В этом примере оба порта 22 и 23 «открыты» с точки зрения брандмауэра, но только один из них имеет прослушивающий сокет (хост отвечает TCP ACK), а другой — нет (получено TCP RST), а порты 21 и 24 «фильтруются» брандмауэром.
(Для иллюстрации оба фильтруются по-разному: порт 21 имеет правило «отбрасывания», а порт 24 имеет правило «отклонять с помощью icmpx, запрещенного администратором». Обычно вы увидите только одно или другое.)
Как я могу это решить?
Ваша служба httpd не прослушивает порт 443 (например, модуль mod_ssl не включен или порт 443 не добавлен в список
(Я не знаю, что такое zeus admin, не знаю, актуально ли это как-то)
Я тоже не знаю, что это такое, но 9090 — это один из тех номеров портов, которые многие службы выбирают из эстетических соображений (например, 8888, 5555 или 8080), независимо от того, чему он был официально присвоен, поэтому в 99,99% случаев он не имеет ничего общего с исходным списком «zeus-admin».
Конечно, Nmap на самом деле не знает, намеревался ли сервер использовать этот порт для zeus-admin или нет (особенно, если порт «закрыт» и нет службы , которую можно было бы проверить дальше), поэтому он просто сообщает имя из своей базы данных «nmap-services».