Важные процессы для обеспечения информационной безопасности

Информационная безопасность очень важна практически для любого бизнеса. В современном мире деятельность почти всех компаний зависит от информационных технологий и, как правило, в достаточно существенной мере.

Взломы, утечки данных или неработоспособность ключевых систем приводит как к финансовым потерям, так и к репутационным издержкам. Чтобы снизить риски в сфере информационной безопасности стоит внедрять базовые процессы ИБ в разработку, тестирование и системное администрирование.

Информационная безопасность в разработке ПО

  • Разработчики должны знать об угрозах ИБ — практически все типичные виды атак на приложения — SQL- и XSS‑инъекции, CSRF, SSRF, брутфорс, нарушение контроля доступа, DDoS — могут быть или исключены на уровне разработки, или их реализация будет сильно усложнена.
  • Запрещено всё, что не разрешено — это ключевая мантра безопасности в ИТ: реально хорошо работают только политики, которые основаны на простой модели — запрещаем всё и разрешаем только то, что необходимо. В разработке этот метод применяется при проектировании авторизации и ролевой модели доступа к системе.
  • Могут быть подделаны все входные данные, поступающие в приложение — это данные форм, параметры запроса, любые http‑заголовки, cookies. Подделанные данные используются для взлома, получения конфиденциальной информации или для нарушения нормальной работы приложения. Больше всего думать об этом стоит разработчикам публичных сервисов, доступных не только из внутрикорпоративной сети, но и из интернета. Тем не менее, даже если ваш сервис надёжно спрятан внутри компании, то это всё равно не гарантия 100% защиты от проникновения злоумышленников.
  • Используйте анализаторы кодовой базы — очень много ошибок в ИБ может быть выявлено именно благодаря подобным инструментам.
  • Используйте системы управления версиями, автоматизированного тестирования и разворачивания проекта — это сильно снижает риски попадания в кодовую базу как инородных фрагментов (типа вирусов), так и позволяет отлавливать возможные ошибки. Про тестирование более подробно написано ниже.
  • Помните о вреде «велосипедостроения» — для того, чтобы правильно написать ту же самую систему аутентификации надо достаточно много знать и разбираться в криптографии, хэшировании, знать как работают cookies или как работать с токенами, разбираться в применяющихся методиках брутфорса и других возможных атаках на систему аутентификации. Если нужные знания отсутствуют, то более рациональным решением будет воспользоваться зарекомендовавшей себя библиотекой, а не разрабатывать решение самостоятельно.
  • Код‑ревью — все люди ошибаются, причём собственные ошибки очень часто заметить бывает труднее, чем чьи‑то ещё. Поэтому код надо проверять не только самостоятельно, но и с помощью коллег.

Информационная безопасность и тестирование

  • Автоматизация тестирования — регулярно и в полном объёме делается только то, что делается автоматически. Ручное тестирование — штука тоже полезная, но полагаться только на него достаточно рисковая стратегия.
  • Нагрузочное тестирование — позволяет избежать как критичных проблем вроде перегрузки серверов от неэффективных алгоритмов, так и снижает возможные угрозы DDoS на уровень приложения.
  • Проверка отказоустойчивости — если вы спроектировали отказоустойчивую систему, то обязательно проверяйте запланированные сценарии отказа. Очень часто бывает так, что в теории решение выглядит идеальным, но на практике не работает.
  • Сканирование уязвимостей — наличие большинства типовых уязвимостей может быть проверены автоматически. Включите в сценарий автоматизированного тестирования те же проверки на XSS и инъекции исполняемого кода.
  • Канареечные релизы — в нагруженных проектах сначала тестируйте новый функционал на небольшой доле пользователей. Это позволяет избежать возможных отказов системы, если в кодовую базу вдруг попал неэффективный алгоритм, который в тестовой среде мог адекватно отработать, но под реальной пользовательской нагрузкой вполне может перегрузить инфраструктуру и привести к общей неработоспособности системы.
  • Учения — регулярно проверяйте всё, что можете проверить. Удостоверьтесь, что в случае вероятных форс‑мажоров у вас готов сценарий действий и сотрудники знают что в этом случае делать.

Информационная безопасность и системное администрирование

  • Настройка серверного ПО в соответствии с задачами и ресурсами системы — звучит банально, но проблема очень распространена: если служба не используется извне, то закройте к ней внешний доступ; если на сервере всего 8Gb RAM, то сервер СУБД не может быть сконфигурирован в расчете на 32Gb RAM; если для ПО устанавливается конфигурация «по умолчанию» — обязательно ознакомьтесь с ней, часть софта бывает весьма жадными до ресурсов и вы можете столкнуться с тем, что под нагрузкой это ПО будет прибито по OOM, а бывает и обратная ситуация — «дефолтные» настройки прописаны для работы на очень слабом железе и тогда вы просто не получите хорошей производительности.
  • Регулярное обновление ПО — уязвимости бывают в любом софте, чем быстрее вы их закроете — тем меньше риск того, что кто‑то их проэксплуатирует. Еще бывает так, что критическая уязвимость формируется как сумма мелких проблем различных используемых программ.
  • Запрещено всё, что не разрешено — этот подход верен и в разработке, и в системном администрировании. Ограничивайте всё, что не нужно для нормально работы.
  • Инфраструктура как код — очень хорошая практика, позволяющая ничего не забыть в настройке оборудования и ПО, а также позволяющая хранить знания о настройке оборудования в понятной форме, а не в виде сакральных знаний админов или в виде истории bash‑команд на production-сервере.
  • Высокая доступность сервисов и системы оркестрации — если используете контейнеризованные приложения, то задумайтесь о внедрении системы оркестрации типа Kubernetes, если же нет, то всё равно автоматизируйте процессы отработки отказов и реакции на повышение нагрузки.
  • Мониторинг — очень важный процесс. Построение системы мониторинга — это тема для отдельной стать, если тезисно, то отслеживать стоит нагрузку / другие метрики приложения и обязательно настраивать оповещения об отклонениях, необходим контроль целостности программного кода, бывает полузным использование HoneyPot, а также в действительно крупных проектах стоит использовать комплексные системы обнаружения и предотвращения вторжений.
  • Резервное копирование — бэкапы также очень важны. Лучше использовать несколько различных и изолированных методов снятия резервных копий. Бэкапы должны отправляться на удаленное хранение — резервная копия на сервере с боевыми данными может быть потеряна вместе с оригиналами. Проверка целостности — бэкапы надо проверять, как автоматикой, так и периодически вручную: резервная копия из которой нельзя ничего восстановить — это фикция, а не бэкап. Автоматический мониторинг — задачи резервного копирования должны быть под системой мониторинга с оповещениями. Хранилище резервных копий должно быть защищено не хуже production-окружения — в бэкапах очень много чувствительной информации.
  • Следите за всем периметром безопасности — это не только production, но и системы управления версиями, тестирования, развертывания, мониторинга, сервера для резервного копирования, корпоративные базы знаний, баг‑трекер, рабочие станции разработчиков и администраторов... и это далеко не полный список мест, где может быть ценная информация, а значит всё это может быть возможной целью атаки.

Тематические статьи

Информационная безопасность: основные подходы, оценка рисков и затрат

Информационная безопасность — обеспечение конфиденциальности, целостности и доступности информации.

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

информационная безопасность
веб-разработка
системное администрирование
Статья опубликована в 2020 и обновлена в 2023 году

Информационная безопасность — основные угрозы

В статье мы рассмотрим мотивацию атакующих и проведем их классификацию. Также классифицируем основные методы атак, оценим их риски и возможные последствия.

К сожалению, от атак не застрахован ни один веб‑проект. Даже если ваш сайт ничем не интересен профессиональным хакерам (реальных денег нет, данных мало и они не ценные), если проект не вызывает яркие негативные эмоции у кого‑либо, а монетизация возможной атаки ничтожна по прибыльности, то всё это это лишь снижает риски и всё равно проекту не избежать автоматизированных атак с целью захвата вычислительных ресурсов или для перенаправления трафика.

информационная безопасность
веб-разработка
системное администрирование
Статья опубликована в 2020 и обновлена в 2022 году

Системы обнаружения вторжений (IDS)

В эпоху цифровизации и высокого уровня угроз в сфере информационной безопасности крайне важно иметь надежные инструменты для защиты корпоративных информационных систем. Одним из таких механизмов, которому на протяжении многих лет уделяется значительное внимание, являются системы обнаружения вторжений (Intrusion Detection Systems, IDS).

информационная безопасность
корпоративные информационные системы
Статья опубликована в 2023 году

Системы предотвращения вторжений (IPS)

В современном цифровом мире кибербезопасность стала неотъемлемой частью каждой организации. В этой статье мы разберём типы и принцип работы систем предотвращения вторжений (Intrusion Prevention Systems, IPS).

информационная безопасность
корпоративные информационные системы
Статья опубликована в 2023 году

Вирусы на сайтах

Откуда берутся вирусы на сайтах? Как с ними бороться?

Три наиболее распространённые причины появления вирусов на сайтах — это кража паролей для доступа к файловой системе сервера, эксплуатация XSS‑уязвимостей веб‑сайтов, уязвимостей в серверном ПО (часто — в результате отсутствия своевременного обновления) и уязвимостей в используемых CMS (обычно тоже по причине отсутствия обновлений или из‑за установки плагинов / расширений из недоверненных источников).

информационная безопасность
системное администрирование
веб-разработка
Статья опубликована в 2019 году

DDoS — распределенные атаки типа «отказ в обслуживании»

DoS‑атака — это атака типа «отказ в обслуживании» — Denial of Service. DDоS — это атака того же типа, но распределённая (distributed), то есть производящаяся с более чем одного атакующего компьютера.

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

информационная безопасность
бэкенд
веб-разработка
системное администрирование
Статья опубликована в 2019 году

Безопасность сайтов и веб‑приложений

Под безопасностью веб‑приложений понимается обеспечение сохранности данных, их недоступность для посторонних лиц, а также способность сервиса сохранять работоспособность при кибератаках.

Безопасность веб‑приложений зависит от качества программного кода (это ответственность веб‑разработчиков), от квалификации системного администратора и регулярности обсуживания серверов, а также от компетенций всех пользователей, имеющих доступ к чувствительной информации.

информационная безопасность
веб-разработка
системное администрирование
Статья опубликована в 2019 году

XSS — атаки на веб‑системы типа «межсайтовый скриптинг»

XSS‑атаки — это внедрение в страницу вредоносного кода, который будет выполнен на компьютере пользователя при открытии им этой страницы.

информационная безопасность
фронтенд
веб-разработка
Статья опубликована в 2014 году

SQL-инъекции — распространённый метод взлома веб‑приложений и сайтов

SQL‑инъекции — это один из распространённых способов взлома сайтов и веб‑приложений, работающих с реляционными базами данных.

SQL‑инъекции основаны на внедрении в выполняемый приложением запрос к базе данных произвольного SQL‑кода, переданного злоумышленником. Последствиями SQL‑инъекций может быть как кража, модификация или удаление данных, так и полный взлом атакуемой системы — получение привилегированного доступа, например.

информационная безопасность
SQL
бэкенд
веб-разработка
СУБД
хранение данных
серверное ПО
Статья опубликована в 2019 году

Отказоустойчивость сайтов и веб‑приложений

Причин для сбоев в работе веб‑приложений немало — это и выход из строя серверного оборудования, и сбои программного обеспечения, и аварии на уровне дата‑центров.

При этом, действительно серьёзные проекты должны работать без перебоев даже в случае отказа отдельных подсистем. Практически всех рисков можно избежать или минимизировать их последствия при помощи грамотного проектирования как серверной инфраструктуры, так и архитектуры приложения.

отказоустойчивость
бэкенд
веб-разработка
серверы
системное администрирование
Статья опубликована в 2019 году

HTTPS — защищенный протокол передачи гипертекста

HTTPS — расширение протокола HTTP, поддерживающее шифрование. Передаваемые по протоколу HTTPS данные зашифрованы, что обеспечивает защиту от прослушивания. HTTPS широко используется в мире и поддерживается всеми популярными браузерами.

системное администрирование
протоколы
информационная безопасность
Статья опубликована в 2014 году

Наши услуги