Панель управления хостингом смотрит в интернет: ISPmanager, FastPanel, cPanel, Plesk
Смена порта убирает панель из выдачи самых ленивых сканеров и больше не делает ничего: диапазон портов конечен и обходится за часы. Разбираем, где искать открытые двери на своём сервере и чем их закрывать вместо игры в прятки.
Панель управления на сервер ставит хостер. Владелец сайта заходит в неё пару раз при запуске, потом забывает — и дальше она годами висит в интернете на своём порту, доступная любому, кто этот порт спросит. А управляется через неё весь сервер целиком: файлы, базы, почта, сертификаты, пользователи.
Ниже — восемь мест, где обычно находится вход, к которому никто не собирался пускать посторонних. У каждого симптом, команда для проверки и понятный признак «всё в порядке». Команды рассчитаны на Linux, macOS или WSL; example.ru замените на свой домен.
Сначала: нестандартный порт — это не защита
Самый частый ответ на вопрос «а панель у вас закрыта?» звучит так: «она на нестандартном порту, никто не найдёт». Найдут. Диапазон портов конечен, и его целиком обходят за часы — этим занимаются и исследовательские проекты, и те, кто ищет цели для перебора паролей. Панель на порту 47821 находится ровно так же, как на 1500, просто чуть позже.
Смена порта решает ровно одну задачу: убирает вас из выдачи самых ленивых сканеров. От целенаправленного поиска она не спасает, и считать её мерой защиты — ошибка, которая стоит дорого именно потому, что создаёт ощущение сделанной работы.
Работает другое: ограничение доступа по IP-адресу, двухфакторная аутентификация и вынос панели за VPN. К этому вернёмся в конце.
1. ISPmanager: порт 1500 и путь /ispmgr
Симптом: по адресу https://example.ru:1500/ открывается форма входа с логотипом ISPmanager.
Самая распространённая панель на российском хостинге, и у неё две двери вместо одной. Кроме собственного порта 1500 она часто отвечает по пути /ispmgr на обычном 443-м — эту вторую дверь закрывают реже, потому что про неё просто не помнят.
curl -sk --max-time 4 https://example.ru:1500/ | grep -ioE 'ispmanager|ispmgr|ispsystem' | head -1
curl -sk --max-time 4 https://example.ru/ispmgr | grep -ioE 'ispmanager|ispsystem' | head -1Правильный ответ — пустой вывод обеих команд. Если печатается название панели, вход виден из интернета. Флаг -k здесь обязателен: панели почти всегда отдают собственный самоподписанный сертификат, и без него curl откажется соединяться, а вы решите, что всё закрыто.
2. FastPanel: порт 8888, иногда без шифрования
Симптом: https://example.ru:8888/ отдаёт страницу входа FastPanel.
Отдельная беда FastPanel в том, что на 8888 он нередко отвечает и по обычному http:// — без шифрования. Тогда логин и пароль от сервера уходят по сети открытым текстом, и перехватить их может кто угодно на пути: от соседа по кафейному Wi-Fi до провайдера.
curl -sk --max-time 4 https://example.ru:8888/ | grep -ioE 'fastpanel' | head -1
curl -s --max-time 4 http://example.ru:8888/ | grep -ioE 'fastpanel' | head -1Пустой вывод — хорошо. Если вторая команда что-то нашла, дело срочное: незашифрованный вход в панель сервера опаснее, чем зашифрованный, даже при одинаково открытом порте.
3. cPanel и Plesk: 2083, 2082, 8443, 8880
Симптом: любой из четырёх портов отвечает страницей входа.
Обе панели держат по паре портов: защищённый и исторический незащищённый. У cPanel это 2083 и 2082, у Plesk — 8443 и 8880. Вторые в паре остались с тех времён, когда шифрование было опцией, и на многих серверах их просто никто не выключал.
for p in 2083 2082 8443 8880; do
echo -n "$p: "
curl -sk --max-time 4 "https://example.ru:$p/" | grep -ioE 'cpanel|plesk' | head -1
echo
doneВ правильном выводе после каждого номера порта пусто. Название панели рядом с номером означает, что вход открыт.
4. Админка CMS: /bitrix/admin/ и соседи
Симптом: адрес админки открывается с любого IP и показывает форму входа.
Это не панель сервера, но дверь не менее интересная: через админку CMS ставят расширения, а значит — выполняют код. У каждой системы свой адрес: у Битрикса /bitrix/admin/, у Joomla /administrator, у Drupal /user/login, у множества самописных систем просто /admin.
for u in /bitrix/admin/ /administrator /user/login /admin /admin/login; do
printf "%-18s %s\n" "$u" "$(curl -s -o /dev/null -w '%{http_code}' --max-time 5 "https://example.ru$u")"
doneХороший ответ — 404, 403 или переадресация на страницу входа, закрытую по IP. Код 200 означает, что форма отдаётся всем желающим. Важная оговорка: сам по себе код 200 ещё не приговор — некоторые CMS отдают 200 и на несуществующие адреса. Смотреть надо на то, что на странице: если там поле для пароля, дверь настоящая.
5. База данных, которая слушает интернет
Симптом: порт 3306, 5432, 6379, 27017 или 9200 принимает соединения снаружи.
Базу открывают наружу обычно не по злому умыслу, а чтобы «подключиться клиентом с ноутбука» или потому, что так было в инструкции по настройке. Дальше про это забывают. Redis и MongoDB исторически запускались вообще без пароля, а Elasticsearch отдаёт содержимое по обычному HTTP-запросу — для них открытый порт означает не риск перебора пароля, а прямую выдачу данных.
for p in 21 22 23 3306 5432 6379 27017 9200 5601 3389; do
timeout 2 bash -c "echo > /dev/tcp/example.ru/$p" 2>/dev/null && echo "$p открыт"
doneПравильный вывод — пустой или только 22 открыт. Любая база в этом списке означает, что её нужно привязать к localhost и ходить в неё через SSH-туннель, а не по интернету.
Есть и обратная ситуация, о которой стоит знать: если команда напечатала четыре и более разнородных сервиса разом — скажем, и MySQL, и MongoDB, и Telnet, и RDP, — вероятнее всего, у вас не пять открытых баз, а фаервол или балансировщик, который принимает вообще любое соединение. Наш сканер в таком случае подавляет всю группу находок и не показывает ничего: стена ложных «критично» полезна ровно никому.
6. Kibana и другие витрины к данным
Симптом: порт 5601 открывает веб-интерфейс, где можно листать логи.
Kibana — не база, а витрина к ней, и потому её путают с безобидной страницей. Разница в том, что открытая Kibana без пароля отдаёт всё, что лежит в Elasticsearch: журналы приложения, а вместе с ними адреса, токены и всё, что туда попало по неосторожности. Совет «привяжите базу к localhost» здесь не работает — база может стоять правильно, а наружу смотрит именно витрина.
Проверяется той же командой, что и в предыдущем разделе: порт 5601 в списке уже есть. Правильный ответ — тишина.
7. Удалённый доступ: FTP, Telnet, SSH, RDP
Симптом: отвечают порты 21, 23, 22 или 3389.
FTP и Telnet — наследие, которое передаёт пароль открытым текстом. Их наличие на современном сервере почти всегда означает, что кто-то когда-то включил и не выключил. Замена очевидна: SFTP вместо FTP, SSH вместо Telnet.
SSH и RDP — другой разговор. Они шифруются, и держать SSH открытым — распространённая и рабочая практика. Это не проблема сама по себе, но и не невидимка: открытый 22-й порт означает, что по нему круглосуточно идёт перебор паролей. Минимум — вход по ключу вместо пароля и запрет входа под root. RDP наружу — вариант заметно хуже: для него ограничение по IP или VPN стоит считать обязательным.
Как закрыть правильно
Порядок действий один и тот же для любой панели.
Ограничьте доступ по IP. Если панель отдаётся через веб-сервер, это несколько строк в конфигурации. Всё остальное получает отказ ещё до формы входа — перебирать становится нечего.
location /ispmgr {
allow 203.0.113.10;
deny all;
}Если панель слушает собственный порт, то же самое делается фаерволом — правилом, которое разрешает подключение к порту 1500 или 8888 только с вашего адреса.
Включите двухфакторную аутентификацию. Все четыре панели её поддерживают. Это второй рубеж на случай, если пароль всё-таки утёк.
Если адрес динамический — а у домашнего интернета он обычно такой, — списком IP не обойтись. Рабочий вариант: поднять VPN и разрешить доступ к панели только из его сети. Промежуточный, но честный вариант на первое время — закрыть панель совсем и открывать её правилом фаервола на время работ.
И проверяйте повторно. Порт умеет открываться обратно: после обновления панели, миграции на новый сервер или правки конфигурации хостером. Именно поэтому проверку такого рода имеет смысл делать регулярно, а не один раз при запуске.
Чек-лист
| Что | Признак, что всё в порядке |
|---|---|
| ISPmanager | Порт 1500 и путь /ispmgr не отвечают снаружи |
| FastPanel | Порт 8888 закрыт, по http не отвечает тем более |
| cPanel, Plesk | 2083, 2082, 8443 и 8880 недоступны с чужого адреса |
| Админка CMS | Отдаёт 403 или закрыта по IP, а не форму входа всем |
| Базы данных | 3306, 5432, 6379, 27017, 9200 слушают только localhost |
| Kibana | 5601 закрыт или защищён паролем |
| FTP, Telnet | Выключены, вместо них SFTP и SSH |
| SSH | Вход по ключу, под root запрещён |
| RDP | Закрыт по IP или доступен только через VPN |
Чего эта проверка не покажет
Всё описанное — взгляд снаружи. У него есть чёткие границы, и лучше знать их заранее.
Пароли никто не подбирает. И команды выше, и наш сканер только смотрят, отвечает ли форма входа. Проверка того, что пароль слабый, — это уже попытка входа, а её без письменного разрешения владельца делать нельзя.
Ответ на порту сам по себе ничего не доказывает. Крупные сайты за CDN отвечают на множестве портов, ничего при этом не открывая. Поэтому панель считается найденной, только если в теле ответа есть её собственный признак — название в разметке страницы входа. Мы пришли к этому не от хорошей жизни: без такого требования сканер однажды пометил панелью vk.com.
Панель за VPN не видна — и это правильный результат. Если проверка ничего не нашла, это ровно то, чего вы добивались. Отсутствие находки здесь означает закрытую дверь, а не пропущенную.
Глубокие проверки требуют подтверждения владения. Проверять чужие порты и чужие панели мы не даём никому: обход портов и активные пробы включаются только для домена, владение которым подтверждено записью DNS, файлом на сервере или мета-тегом. Анонимная проверка ограничивается тем, что сайт и так отдаёт публично.
И последнее: панель — не единственное, что ломается незаметно. Если вы недавно меняли хостинг, посмотрите разбор семи вещей, которые ломает переезд: панель там лишь один пункт из семи, и остальные шесть отваливаются так же тихо.