В прошлом материале, кратком пособии по безопасной работе с сетевыми портами, мы кратко разобрали, как с помощью различных межсетевых экранов защитить инфраструктуру. На самом деле, это не rocket science. Но это то, о чем важно всегда помнить при работе с инфраструктурой — например, при публикации веб-сервисов наружу. Ведь в сети есть темные лошадки, которые требуют особо пристального внимания, — наиболее популярные порты, подверженные эксплуатации уязвимостей.
Привет! Меня зовут Ваня, я ведущий инженер по информационной безопасности в Selectel. В этом материале разберу, какие порты наиболее интересны хактивистам и как быть в курсе актуальных уязвимостей. А в конце поделюсь чек-листом с планом действий при обнаружении открытых портов в своей инфраструктуре. Подробности под катом!
Больше материалов о том, как противостоять угрозам в сфере информационной безопасности и оградить свои системы от атак и взлома — в Security Center.
Используйте навигацию, если не хотите читать текст целиком:
→ Какие порты опасно открывать
→ Как быть в курсе актуальных уязвимостей
→ Чек-лист: что делать при обнаружении открытого порта
→ Заключение
Какие порты опасно открывать
Открытые порты представляют собой «незапертые двери» к потенциально уязвимым сервисам любой сети. Некоторые порты, изначально предназначенные для конкретных служб, могут быть использованы злоумышленниками для взлома. Например, 21/TCP (FTP), 22/TCP (SSH), 23/TCP (Telnet) и 3389/TCP (RDP) — опасные, так как часто подвергаются атакам подбора паролей и эксплуатации уязвимостей.
Для сбора статистики обратимся к данным поисковика Shodan.
Shodan — это поисковая система, которая индексирует устройства, подключенные к
интернету, включая серверы, маршрутизаторы и IoT-устройства. По сути, это непрерывный сканер глобальной сети для поиска доступных IP, портов и служб. При этом само по себе использование поисковика легальное, так как он показывает лишь ту информацию, что находится в интернете в свободном доступе. А вот подключение к конкретному устройству — далеко не всегда, даже если оно не защищено логином и паролем.
Главная страница Shodan.
По данным Shodan некоторые порты открываются чаще других, что может указывать на потенциальные уязвимости. Рассмотрим топ-10 наиболее «распахнутых» интерфейсов и причины их популярности.
1. Порт 22/TCP (SSH). Используется для защищенного удаленного доступа к серверам. Часто подвержен атакам подбора паролей. Рекомендуется использовать ключи SSH вместо паролей для повышения безопасности.
2. Порт 80/TCP (HTTP). Применяется для доступа к веб-страницам. Может быть атакован с помощью XSS, SQL-инъекций и других уязвимостей веб-приложений. Рекомендуем использовать HTTPS для шифрования данных.
3. Порт 443/TCP (HTTPS). Используется для защищенной передачи данных через интернет. Хоть HTTPS и шифрует данные, уязвимости в SSL/TLS могут позволить злоумышленникам их перехватывать. Поэтому крайне важно поддерживать сертификаты и настройки безопасности в актуальном состоянии.
4. Порт 3389/TCP (RDP). Применяется для доступа к службе удаленных рабочих столов в ОС Windows. Часто становится целью атак из-за слабых паролей и уязвимостей данной системы. Рекомендуем ограничивать доступ по IP и использовать многофакторную аутентификацию.
5. Порт 21/TCP (FTP). Используется для передачи файлов. Отправка данных в открытом виде делает FTP уязвимым для перехвата. Рекомендуем использовать FTPS или SFTP для защиты информации.
6. Порт 3306/TCP (MySQL). Применяется для работы с базами данных MySQL. Неконтролируемый доступ к базе данных может привести к утечкам информации. Рекомендуем ограничить доступ к этому порту до авторизованных пользователей.
7. Порт 23/TCP (Telnet). Используется для удаленного доступа и управления устройствами. Как и FTP, Telnet передает данные в открытом виде. Рекомендуем полностью отказаться от Telnet в пользу SSH.
8. Порт 445/TCP (SMB). Применяется для обмена файлами в сетях Windows. Может быть использован для распространения вредоносного ПО. Рекомендуем отключить SMB, если он не нужен, или использовать актуальные версии протокола.
9. Порт 5432/TCP (PostgreSQL). Используется для доступа к базам данных PostgreSQL. Аналогично MySQL, открытый порт может быть использован для атак. Рекомендуем ограничить доступ и использовать надежные пароли.
10. Порт 5900/TCP (VNC). Применяется для удаленного доступа к графическому интерфейсу. Может быть подвержен атакам из-за слабых паролей. Рекомендуем использовать VPN для защищенного доступа.
Актуальные примеры кибератак
В кибератаках часто хактивисты используют уязвимые порты для доступа к системам. Например, в атаках с использованием вредоноса WannaCry использовался 445/TCP (SMB), что привело к масштабным последствиям для организаций по всему миру. Другие примеры включают атаки на серверы, использующие порты 80 и 443 для внедрения вредоносного кода.
Шифровальщики, такие как Ryuk и Cryptolocker, использовали порты 445 и 3389 для распространения вредоносных программ. Эти порты позволяют злоумышленникам получать доступ к системам и шифровать данные. Указанные интерфейсы часто становятся целями для атак, что подтверждается отчетами таких организаций, как McAfee и Kaspersky.
Как быть в курсе актуальных уязвимостей
С потенциально опасными портами познакомились. Но какие уязвимости могут эксплуатировать хактивисты при нелегитимном доступе через данные сетевые интерфейсы? С этим поможет разобраться CVE, который периодически актуализируется.
Common Vulnerabilities and Exposures (CVE) — это база данных организации MITRE, которая собирает информацию об общеизвестных уязвимостях информационной безопасности. Каждой присваивается идентификационный номер вида CVE-год-номер, описание и ряд общедоступных ссылок с описанием.
Главная страница CVE.
Давайте на примере CVE этого года рассмотрим, какие порты использовались для эксплуатации уязвимостей различных систем.
CVE-2024-5035
- Уязвимое устройство: TP-Link Archer C5400X;
- Тип уязвимости: CMD-инъекция.
Важно. Уязвимой является служба rftest, работающая на портах 8888/TCP, 8889/TCP, 8890/TCP.
CVE-2024-44087
- Уязвимая служба: Automation License Manager вендора Siemens;
- Тип уязвимости: DoS.
Важно. Уязвимые службы работают на порту 4410/TCP.
CVE-2024-42505-42507
- Уязвимый протокол: Aruba's Access Point management protocol в составе Aruba OS от вендора HP;
- Тип уязвимости: CMD-инъекция.
Важно. Доступ к уязвимой службе осуществляется по протоколу 8211/UDP.
CVE-2024-39864
- Уязвимый продукт: Apache CloudStack от вендора Apache Software Foundation;
- Тип уязвимости: RCE.
Важно. При неверной конфигурации CloudStack возможно включение API сервера без авторизации на порту 8096/TCP.
CVE-2024-36346
- Уязвимый продукт: Apache CloudStack от вендора Apache Software Foundation;
- Тип уязвимости: RCE.
Важно. По умолчанию служба кластера CloudStack работает на порту 9090/TCP и выполняет команды без аутентификации.
CVE-2024-37855
- Уязвимое устройство: Nepstech Wifi Router xpon (terminal) NTPL-Xpon1GFEVN с прошивками hardware verstion 1.0 и firmware 2.0.1;
- Тип уязвимости: RCE.
Важно.По умолчанию служба ожидает команды на порту 2345/TCP и без авторизации позволяет выполнить команды.
Как видим, уязвимые службы находятся не на привычных нам стандартных портах, а их доступность после инсталляции сервиса может быть неочевидной.
Чек-лист: что делать при обнаружении открытого порта
Предположим, у вас настроен мониторинг портов или вы используете сторонние сервисы для непрерывного мониторинга вашей инфраструктуры. Что делать, если вам пришло уведомление о новом открытом порту?
1. Проверьте, действительно ли порт должен быть открыт. Если он «висит» распахнутым, но используется вашими службами, закройте. Сокращение числа открытых портов упрощает дальнейший контроль и снижает вероятность эксплуатации уязвимостей.
2. Проанализируйте службы, работающие на порту. Это можно легко сделать с помощью такой команды:
$ sudo netstat -tulpn
Можно увидеть, на каких портах какие службы работают. Само собой, для более быстрого поиска по порту можно грепнуть вывод:
$ sudo netstat -tulpn | grep <номер порта>
Далее с помощью команды можно посмотреть краткое описание выбранного сервиса:
$ whatis <имя службы>
Так можно проанализировать, какие порты относятся к тем или иным службам.
3. Обновите программное обеспечение и системы безопасности.
Свежие обновления или срочные патчи можно найти на сайтах вендоров, а также, например, в описании найденных уязвимостей. Также обычно в базах сканеров уязвимостей есть рекомендации по закрытию конкретной уязвимости.
4. Установите межсетевой экран и настройте его. Есть несколько вариантов связности, как это сделать. Например, можно установить виртуальную машину за облачным межсетевым экраном или отдельной машиной с Usergate VE. Подробнее о типовых безопасных схемах я рассказал в предыдущей статье.
5. Установите дополнительные средства защиты (IDPS/WAF) для защиты службы. К слову, мы с коллегами выпустили в Академии Selectel текст про погружение в работу с WAF — если вы новичок, может пригодиться. А вот с IDSP куда интереснее. Есть несколько решений, который можно использовать, и у каждого — свои особенности в настройке. Подробнее о популярных IDPS-системах рассказали в отдельной статье.
6. Проведите внутренний аудит безопасности. Проще всего это можно сделать с помощью заранее настроенной SIEM-системы. Если вы не знакомы с данным видом средств защиты информации, читайте статью моего ex-коллеги Андрея Салиты. Если коротко: SIEM-системы не блокируют инциденты напрямую, но оперативно информируют о сбоях и нарушениях в работе программных и аппаратных ресурсов системы.
SIEM анализируют программные логи. Данные в логах система сопоставляет между собой, что позволяет выявлять сложные замаскированные атаки. На их основании специалисты могут принять меры по устранению уязвимостей.
7. Оповестите ответственных лиц о выявленной уязвимости. Все замыкается на людях, поэтому важно поставить в известность профильных специалистов, чтобы они устранили уязвимости в вашей инфраструктуре.
Заключение
Открытый порт — это не только потенциальная уязвимость, но и маяк, который напоминает, что вашим сервисом могут интересоваться здесь и сейчас. И далеко не всегда это делают из добрых намерений.
Не забывайте контролировать процесс публикации открытых портов и разрабатывать внутренние инструкции на случай, если двери вдруг распахнуться. Тогда инфраструктуре не будут страшны нежданные гости.
Приглашаем 10 октября на Selectel Tech Day
Расскажем о новинках на рынке и обновлениях в наших продуктах. Вас ждут доклады, нетворкинг, мастер-классы и вечерняя программа. Участие бесплатное, но нужно зарегистрироваться.
Комментарии (26)
LinkToOS
30.09.2024 16:03+8Открытые порты представляют собой «незапертые двери» к потенциально уязвимым сервисам любой сети.
Нам немного иначе преподавали.
Порт это склад, а не дверь. В него приносят пакеты, а служба их забирает.
Если порт закрыт, то служба которая его использует нормально работать не сможет. Закрыть порт - сломать службу. Она не станет безопаснее, просто не будет работать.
Уязвимыми являются службы, а не порты. В любой службе (MS Win.) внезапно может обнаружиться уязвимость. Закрывать надо уязвимости, а не порты. Если открытый порт представляет опасность, значит службе которая его использует требуется заплатка.
Открытые порты - это нормально. "Неожиданно" открытые порты - вот это возможно признак проблемы. Или необычная активность на портах.Wesha
30.09.2024 16:03Порт это склад, а не дверь. В него приносят пакеты, а служба их забирает.
Я Вам больше скажу: если служба по какой-то причине их долго со склада не забирает, работники склада их вообще выбросить могут (или отказаться принимать новые), ибо место не резиновое.
HardWrMan
30.09.2024 16:03Вот, правильная аналогия. Я вспоминаю TCP/IP времён DOS: там даже TSR сетевой карты назывался REDIRECTOR ("перенаправлятель"), а "открытие порта" суть аренда одного стеллажа этого почтового склада с определённым номером, размер которого, как уже сказали выше, не резиновый. Сродни обычного почтового абонентского ящика до востребования.
CodeDroidX
30.09.2024 16:03+1Лучше бы советовали Spacedesk server удалять и его порт закрывать. Порой диву даёшься, сколько обывателей с забытой включённой службой spacedesk сидят в публичных сетях кафе, университетов и светят буквально RDP без какого-либо пароля)
savostin
30.09.2024 16:03Предположим, у вас настроен мониторинг портов или вы используете сторонние сервисы для непрерывного мониторинга вашей инфраструктуры
Лучше б подробнее рассказали как это настроить или использовать.
Testman2023
30.09.2024 16:03+3Проанализируйте службы, работающие на порту. Это можно легко сделать с помощью такой команды:
sudo netstat -tulpnnetstat из пакета net-tools давно заменили на ss из iproute2(используется по умолчанию)
https://packages.debian.org/bookworm/iproute2
"Эти утилиты взаимодействуют с ядром по интерфейсу (rt)netlink, благодаря чему они предоставляют больше возможностей, чем утилиты ifconfig и route пакета net-tools."
NetToolsDeprecation
Page to gather information about the intended deprecation of net-tools.
https://wiki.debian.org/NetToolsDeprecation
Nice page with iproute equivalences for every net-tools use:
http://dougvitale.wordpress.com/2011/12/21/deprecated-linux-networking-commands-and-their-replacements/alan008
30.09.2024 16:03Судя по ссылке, оно уже в 2011 году считалось deprecated.... ) Видимо в Linux период дожития deprecated функций оооочень велик
Testman2023
30.09.2024 16:03+2Пакет сохранили во всех дистрибах. Просто net-tools не устанавливается по умолчанию.
https://pkgs.org/search/?q=net-tools
NAI
30.09.2024 16:03В windows то же, люди до сих пор используют ipconfig для посмотреть, вместо Get-Net...
Shaman_RSHU
30.09.2024 16:03Скорее всего заголовок статьи должен быть: "Самые опасные сетевые порты по-умолчанию: как узнать и закрыть все лазейки"
0Bannon
30.09.2024 16:03Shodan — это поисковая система, которая индексирует устройства, подключенные к
интернету
Это вымышленный искусственный интеллект и главный антагонист компьютерных игр System Shock и System Shock 2
Vdm_ro
30.09.2024 16:03+2Как порт может быть опасным? это просто интерфейс взаимодействия, опасность исходит из уязвимости служб, которые получают данные из этого порта, но порт у них может быть абсолютно разным.
Фраза аналогична: самый опасный провод - коричневый.
AdmAlexus
30.09.2024 16:03Мне кажется здесь больше подойдет: "Самый опасный провод - тот который под электричеством" :)
Wesha
30.09.2024 16:03Напомнило
Сидят два электрика на столбе. Мимо идёт старушенция. Старший:
— Бабуля, подай провод!
Старушка подаёт и идёт своей дорогой. Старший младшему:
— Говорил тебе — ноль, а ты всё — "фаза", "фаза"...Чернушный вариант
— Видишь — окочурилась. Говорил я тебе — фаза, а ты всё — "ноль", "ноль"...
dopk
30.09.2024 16:03445 порт можно закрыть на исходящие соединения на роутере. Самая крутая уязвимость была с smb+ntml, которая позваляла украсть креды, достаточно было заставить перейти по ссылке на smb-ресурс, ничего вводить или подтверждать не требовалось, авторизация срабатывала автоматически.
Ещё было несколько уявзимостей связанных с протоколом DNS, использование своего DNS-сервера внутри сети, и закрытие для всех остальных устройств доступа в интернет на 53 порт тоже закрывает несколько векторов атак, или делает их сложнее.
Возможность выхода в интернет на 22 порт - возможность для злоумышленника построить обратный туннель.
Вообще практика на выход в интернет открывать только определенные порты встречается редко, потому как создает определенные неудобства, но закрывает большой вектор атак на периметре сети.
ogost
30.09.2024 16:03+1От ведущего инженера по информационной безопасности в Selectel ожидаешь большего. Нет, я понимаю, что может вы действительно крутой спец, только статья явно не уровня хабра.
Wesha
Кто-нибудь, расскажите дяденьке, что любой сервис можно сконфигурировать слушать совершенно любой порт. У меня вот вебсервер отвечает на порту 8421.
redfox0
У меня на одной из машине подкручены параметры ядра и порт 80 слушает непривилегированный процесс (не root).
Wesha
Хм, по-моему, апач с детства умел после форканья депривилегизировать себя.
redfox0
Да, многие приложения сбрасывают привилегии и оставляют их только для прослушивания порта. Сейчас довольно удобным стал selinux, который ещё больше защищает систему.
А в данном случае я подкрутил параметр
net.ipv4.ip_unprivileged_port_start=80
HardWrMan
А какая разница, на каком порту слушает уязвимый демон, если сканеры портов детектят сервис вне привязки его к стандартной карте портов? Не порты надо закрывать, а демонов своих держать в тонусе (обновлёнными). Ну и неиспользуемое не открывать "на всякий случай".
Wesha
Так и я ровно про то же. А то у аффтара так написано, что создаётся впечатление, что "порты — наше всё".
HardWrMan
Я заметил, что такая тема у людей, которые с сетью знакомы только на уровне документации на сокеты, причём есть небольшая девиация в зависимости от использованной системы (линукс, виндовс, etc) но в общем одинаково. И только те, кто пощупал сеть нормально, хотя-бы акулой (лучше, когда анализируешь сырые датаграммы в буфере сетевой платы, но если уже есть удобный инструмент то почему бы и его не использовать?) или углублялся в пакетный фильтр/маршрутизацию понимает как именно оно всё работает. Такова особенность составления документации англосаксов: побольше сущностей и уровней в простую модель. И люди изучают только до нужного им уровня модели OSI а потом недоумевают, что не так?
Wesha
ДНК жеж!