Аудит защищённости ИС своими силами: пошаговый план без бюджета на пентест

Если вы читаете это не из праздного любопытства, значит, перед вами, скорее всего, стоит вопрос: насколько на самом деле защищена информационная система, за которую вы отвечаете. Внешний пентест от серьёзной компании стоит от трёхсот тысяч рублей и занимает недели, а бюджет на него выделяют не всегда. Но это не повод закрывать глаза: приличную часть проблем реально найти самому за выходные — если действовать по плану, а не запускать наугад пару «хакерских» утилит и смотреть, что выпадет.

Дисклеймер, который должен быть в начале, а не в конце: всё, о чём пойдёт речь ниже, касается только ваших собственных систем и систем, на проверку которых у вас есть письменное разрешение. Сканировать чужие сети «просто посмотреть» — это статья 272 УК РФ, а не этичный хакинг. Мы здесь про защиту, а не про приключения.

Аудит или пентест: в чём разница и что вам нужно

Пентест имитирует действия реального злоумышленника: он ищет путь снаружи внутрь, эксплуатирует уязвимости и пытается закрепиться в системе. Аудит — это оценка текущего состояния: конфигурация, обновления, права доступа, процессы. Для самостоятельной проверки реалистичен именно аудит. Вы не будете писать эксплойты, но системно пройдётесь по слоям защиты и вытащите на свет то, что обычно и приводит к инцидентам.

Хорошая новость: большинство реальных взломов происходит не из-за хитрых zero-day, а из-за элементарных вещей — забытого сервиса с дефолтным паролем, устаревшей библиотеки или секрета, закоммиченного в публичный репозиторий. И всё это находится обычной методичной проверкой, без магии.

Шаг 0. Инвентаризация: сначала понять, что защищаем

Самый частый провал аудита случается до его начала: вы проверяете то, что помните, а проблема живёт в том, что забыли. Начните с полного списка активов. Не поленитесь — именно этот список станет основой всего дальнейшего.

  • серверы и виртуальные машины, включая «экспериментальные» в облаке, о которых уже все забыли;
  • веб-приложения, API, базы данных и очереди сообщений;
  • рабочие станции и ноутбуки сотрудников;
  • внешние сервисы: CRM, почта, файлообменники, подрядчики с доступом к вашим системам;
  • сетевая инфраструктура: роутеры, VPN-шлюзы, точки доступа Wi-Fi.

Если не можете заполнить этот список за час — это уже результат аудита, причём неутешительный. Никакой инструмент не спасёт систему, о существовании которой вы не знаете.

Шаг 1. Внешний периметр: что смотрит наружу

Возьмите список публичных IP и доменов и посмотрите, какие порты реально открыты наружу. Бесплатного Nmap с определением версий сервисов (ключ -sV) хватит, чтобы получить картину за вечер. Вопрос не в том, как «взломать», а в том, что отвечает на запросы из интернета.

Нормальная ситуация: наружу торчат 80-й и 443-й порты веб-сервера, SSH скрыт за VPN или ограничен по IP, а базы данных и админки извне не видны вообще. Если вы обнаружили наружу MongoDB, Redis или панель управления без ограничений доступа — это уже готовая строка в отчёте об инциденте, а не «мелочь, потом поправим».

Для веб-сервисов проверьте конфигурацию TLS: утилита testssl.sh покажет устаревшие протоколы и слабые шифры, а SSL Labs даст понятную оценку от A до F. Оценка ниже B — повод разобраться. Заодно посмотрите заголовки безопасности ответов: отсутствие CSP, HSTS и X-Content-Type-Options у веб-приложения — типичная находка, которая закрывается за полчаса.

Шаг 2. Обновления и известные уязвимости

Дальше — проверка на известные CVE. Тут не нужны «волшебные» коммерческие сканеры: для старта хватает связки бесплатных инструментов.

  • OpenVAS (Greenbone) — сканер сети, ищет устаревшие версии ПО и известные уязвимости на хостах;
  • Trivy — проверка образов контейнеров и файловой системы на CVE, бесплатный и быстрый;
  • WPScan — если у вас есть WordPress, это отдельная вселенная боли;
  • бюллетени вендоров: рассылки или RSS вместо чтения новостей про «очередной апокалипсис».

Главное — не просто запустить сканер, а назначить ответственного за обновления и сроки. Уязвимость, о которой вы узнали в день выхода патча и закрыли через месяц, — это месяц, когда вы работали с открытой задолженностью перед злоумышленниками. Особое внимание публичным сервисам: их патчат первыми.

Шаг 3. Код, секреты и CI/CD

Если у вас есть собственная разработка, аудит не заканчивается на серверах. Первое и самое больное — секреты в репозиториях. Пароли, токены и ключи доступа, закоммиченные в git, живут там вечно: даже если вы удалили файл, история коммитов его сохранила.

Проверка простая: прогоните по репозиториям Gitleaks или TruffleHog. Обе утилиты бесплатные, ищут ключи, пароли и токены по сигнатурам и подозрительным строкам. Нашли — считайте секреты скомпрометированными: ротация обязательна, а не «удалим и закоммитим заново». Дальше настройте ту же проверку в CI/CD, чтобы новый секрет не проскочил в основную ветку.

Попутно посмотрите, что происходит в пайплайне: не хранятся ли переменные окружения в открытом виде в конфигах сборки, не собирается ли образ с правами root, не тянет ли CI/CD зависимости из непроверенных источников. Это DevSecOps-гигиена, и именно она отличает систему, которую можно развивать, от системы, которую останется только переписывать после утечки.

Шаг 4. Зависимости: supply chain бьёт по всем

Отдельная строка аудита — сторонние библиотеки и пакеты. Историй, когда уязвимость в популярной зависимости ложила тысячи проектов, хватает: от Log4Shell до бэкдора в xz-utils. Если ваше приложение собирается из сотен пакетов, вы отвечаете за каждый из них.

Для языковых экосистем есть встроенные средства: npm audit, pip-audit, cargo audit, composer audit. Плюс общие SCA-инструменты вроде OWASP Dependency-Check, которые сверяют ваш список зависимостей с базами CVE. Механика простая: собираете lock-файлы, прогоняете проверку, смотрите на критичные уязвимости и решаете — обновить или осознанно принять риск.

Важный нюанс: обновление зависимостей — не разовая акция перед аудитом, а регулярный процесс. Договоритесь с командой, что проверка зависимостей входит в definition of done каждой задачи. Иначе через месяц картина будет ровно такой же, как до аудита.

Шаг 5. Конфигурация и «базовые» настройки

Теперь пройдитесь по конфигурации систем, которые нашли в шаге 0. Чек-лист короткий, но результативный:

  • смените все дефолтные пароли и учётные записи: на сетевом оборудовании, в БД, в панелях управления — везде;
  • проверьте, что нет учёток без пароля и гостевых доступов;
  • включите многофакторную аутентификацию везде, где она поддерживается, — начиная с почты, VPN и админок;
  • посмотрите права доступа: есть ли у рядовых сотрудников доступ к серверам и БД «на всякий случай»;
  • удалите учётные записи уволившихся сотрудников — классика, но именно на ней ловят каждого второго.

Если хочется структуры — возьмите OWASP ASVS и пройдитесь по уровню L1 для своих веб-приложений. Это готовый список проверок по аутентификации, управлению сессиями, контролю доступа и валидации ввода. Читать целиком за один вечер не нужно: выберите разделы под свою систему и честно отвечайте «да» или «нет» на каждый пункт. Там, где «нет», — ваш план работ на ближайшие месяцы.

Шаг 6. Логи и мониторинг: видите ли вы атаку

Система, которая не пишет логи, — это чёрный ящик: инцидент в ней обнаруживают по счёту из банка или звонку клиента. Проверьте, что у вас есть:

  • централизованный сбор логов с ключевых систем: веб-серверов, межсетевых экранов, VPN, контроллера домена;
  • хранение логов хотя бы 90 дней — по требованиям 152-ФЗ и просто по здравому смыслу;
  • оповещения о подозрительных событиях: множественные неудачные входы, активность в нерабочее время, изменение конфигурационных файлов.

Для старта не нужен дорогой SIEM: связки Elasticsearch — Logstash — Kibana или просто системный журнал с настроенными алертами закрывают 90% потребностей малого бизнеса. Проверка простая: зайдите ночью в свою систему несколько раз с неверным паролем и посмотрите, увидит ли кто-нибудь это. Если нет — мониторинг у вас декоративный.

Шаг 7. Бэкапы и восстановление — честный тест

Последний, но, возможно, самый важный пункт: резервные копии. Аудит защищённости без проверки бэкапов — это техосмотр без проверки тормозов. Уточните три цифры: как часто делаются копии (RPO), сколько времени займёт восстановление (RTO) и — главное — когда вы в последний раз реально восстанавливались из бэкапа.

Если ответ «давно» или «никогда» — проведите тестовое восстановление на отдельной системе. Бэкап, из которого нельзя подняться, — это не защита, а самоуспокоение. Отдельно проверьте, что копии хранятся отдельно от основной системы и что до них нельзя дотянуться через ту же уязвимость, через которую шифровальщик доберётся до серверов.

Чек-лист: с чего начать в эти выходные

  1. Составьте список активов и отметьте, что из него смотрит в интернет.
  2. Просканируйте внешний периметр: открытые порты, версии сервисов, TLS.
  3. Проверьте обновления на публичных серверах и назначьте даты закрытия найденных CVE.
  4. Прогоните Gitleaks по репозиториям и настройте проверку секретов в CI/CD.
  5. Соберите lock-файлы и проверьте зависимости на известные уязвимости.
  6. Пройдитесь по дефолтным паролям, MFA и правам доступа.
  7. Убедитесь, что логи собираются и алерты реально доходят до людей.
  8. Сделайте тестовое восстановление из бэкапа и зафиксируйте время.

По каждому пункту заведите список находок с приоритетами: критичное закрываем в течение недели, остальное — в план на квартал. Через три-шесть месяцев повторите аудит: удивитесь, как много изменится, если подходить к делу системно.

Что аудит своими силами не заменит

Честно, без самообмана: самостоятельный аудит не заменяет профессиональный пентест. Свежий взгляд со стороны находит то, к чему вы привыкли и перестали замечать, а специалисты проверяют сценарии атак, которые домашними утилитами не воспроизвести. Но для малого и среднего бизнеса с ограниченным бюджетом аудит своими силами — это не замена пентесту, а его фундамент: закрыв базовые проблемы, вы сделаете так, что дорогой внешний пентест не превратится в список из «дефолтных паролей и забытого Redis».

И последнее: аудит — это не разовая акция перед отчётом руководителю, а регулярная привычка. Система, которую проверили один раз и успокоились, через полгода снова обрастает уязвимостями. Проходите по чек-листу хотя бы раз в квартал — и большинство громких историй из новостей обойдут вас стороной.

guest

0 Комментарий