<div><img src="https://top-fwz1.mail.ru/counter?id=3548135;js=na" style="position:absolute;left:-9999px;" alt="Top.Mail.Ru" /></div>
Публичное облако на базе VMware с управлением через vCloud Director
Вход / Регистрация

Hardening: укрепление защиты на сервере

Вадим Белоус
Вадим Белоус
Системный инженер
05 марта 2025 г.
134
21 минута чтения
Средний рейтинг статьи: 5

Укрепление защиты на сервере, или Hardening, что в переводе с английского означает «закалка», представляет собой процесс повышения безопасности. Hardening может быть аппаратным, программным или физическим. Этот процесс включает в себя ряд мер, направленных на минимизацию уязвимостей и защиту от потенциальных угроз.

Направления закалки:

  • Физическая — метод защиты, основанный на применении физических средств, таких как системы контроля и управления доступом (СКУД), видеонаблюдение, сейфы, датчики движения и защитные корпуса.

  • Аппаратная — защита, которая реализуется на уровне аппаратного обеспечения. Это может быть модуль доверенной загрузки (TPM — Trusted Platform Module), устройства аппаратной аутентификации (HSM — Hardware Security Module, например, Yubikey), а также биометрические сканеры (Apple Touch ID, Face ID). К аппаратным мерам защиты также относятся механизмы контроля целостности системной прошивки и аппаратные межсетевые экраны.

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

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

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

  • Ценность: персональные и общедоступные данные, логи, оборудование, инфраструктура.
  • Возможные угрозы: компрометация инфраструктуры, шантаж, вывод из строя ИС.
  • Потенциальные злоумышленники: хактивисты, внутренние угрозы — инсайдеры, конкуренты, хакеры.
  • Методы атак: физический доступ, вредоносные устройства, взлом ПО, фишинг/вишинг, атака на цепочку поставок.
  • Меры защиты: периодическое обновление программных компонентов, шифрование, контроль доступа, мониторинг, «закалка» — то, чем мы и займемся в данной статье.

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

В ходе составления модели угроз вам помогут STRIDE — методика для категоризации угроз (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege) и DREAD — модель оценки рисков (Damage, Reproducibility, Exploitability, Affected Users, Discoverability). Для более формализованного подхода вы также можете обратиться к стандарту ISO/IEC 27005 или NIST 800-30.

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

  • DoS/DDoS — отказ сервиса или инфраструктуры в работе. Влечет за собой финансовые и/или репутационные потери.
  • Атака на цепочку поставок — например, заражение хранилища артефактов. Container Registry: JFrog Artifactory, Sonatype Nexus.
  • Полная компрометация системы и всех сопутствующих ресурсов. Включает в себя закрепление и горизонтальное перемещение по инфраструктуре.
  • Использование вашего сервера в качестве плацдарма для сложной технологической атаки на другие ресурсы. Если это приведет к серьезным последствиям, вам, вероятно, придется провести много часов в суде, неся при этом значительные финансовые издержки.
  • Получение преимуществ путем модификации системных ресурсов, обход аутентификации или мутация логики работы всего приложения. Грозит репутационной и/или финансовой потерей.

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

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

Основной целью данной статьи является снабжение читателей техниками харденинга или «закалки» сервера.

«Харденить» можно практически всё что угодно, даже iPhone. Но в контексте статьи будет освещен более релевантный и наглядный пример — защита сервера.

После заказа сервера в любом случае выполняется первичная настройка. Обычно этим занимаются системные администраторы или специалисты DevOps. Если штат и инфраструктура больше, то могут подключаться и другие технические специалисты (SecOps, NetOps или просто Ops), если меньше, то этим обычно занимается тот же человек, что и пишет код — тогда-то и возникают самые интересные мисконфигурации. Кто-то производит настройку вручную: создает пользователей, группы, задает параметры сетевой конфигурации, устанавливает набор необходимого для эксплуатации ПО; кто-то пишет и потом переиспользует плейбуки — автоматизированные сценарии.

В этой статье мы рассмотрим следующие семь пунктов ручной настройки: 

  1. Противодействие сканированию портов
  2. Настройка веб-сервера Nginx
  3. Защита удаленного подключения посредством SSH
  4. Настройка Port Knocking
  5. Настройка уведомления о входе на сервер в Telegram
  6. Конфигурация параметров ядра Linux
  7. «Закалка» контейнерных сред

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

vds

Противодействие сканированию портов

Разного рода злоумышленники, от ботнет-сетей до APT-группировок  — Advanced Persistent Threat, используют сканеры портов и прочие поисковые системы устройств (shodan.io, search.censys.io, zoomeye.ai и т.д.), которые доступны из интернета, для поиска интересных хостов с целью дальнейшей эксплуатации и вымогательства денежных средств.

Один из популярных сетевых сканеров — Nmap. Он позволяет определить «живые» хосты в сети и сервисы поднятые на них с помощью множества методов сканирований. Также Nmap оборудован скриптовым движком Nmap Script Engine, что позволяет получить и широкий функционал из коробки, и возможность привнести что-то свое.

Для сканирования ресурсов посредством nmap злоумышленник будет запускать команду вида:

nmap -sC -sV -p- -vv --min-rate 10000 $IP

Где:

  • $IP — это IP-адрес или диапазон IP-адресов, которые необходимо просканировать.

  • -sC — включение скриптового движка.

  • -sV — распознавание версий сервисов.

  • -vv — (от англ. double verbose) включение подробного вывода.

  • --min-rate 10000 — параметр, который определяет, сколько запросов будет отправляться за одних подход. В данном случае выбран агрессивный режим (10000 единиц). Также режимы можно регулировать отдельно через флаг -T (Aggressive, Insane, Normal, Paranoid, Polite, Sneaky).

Пример результата сканирования — на скриншоте ниже. Из этой информации видно, что запущено три сервиса:

  1. SSH на 22 порту
  2. Веб на 80 порту
  3. Веб на 8080 порту

Image2

Также инструмент предоставил версии ПО и более детальную информацию: статус-коды HTTP, состояние порта, в данном случае open, и значение TTL, по которому можно понять, находится ли сервис в контейнере или происходит ли дополнительная маршрутизация, которая меняет TTL.

Таким образом, злоумышленнику достаточно вооружиться каким-либо сканером информационной безопасности или воспользоваться результатами поисковиков, выйти на ваш ресурс и попытаться атаковать вас на основе собранной таким способом информации.

Чтобы это предотвратить, нам нужно нарушить паттерн злоумышленника, то есть сбить его с толку. А именно, сделать так, чтобы он не смог идентифицировать, какой порт открыт и что на нем находится. Сделать это можно путем открытия сразу всех портов: 2^16-1 = 65535. Под открытием я имею в виду особую настройку для входящих соединений: все попытки соединений по всем TCP-портам будут перенаправляться на 4444 порт, на котором утилита portspoof динамически отвечает рандомными сигнатурами различных сервисов из базы отпечатков nmap.

Для этого установите утилиту portspoof. Склонируйте соответствующий репозиторий с исходным кодом и произведите сборку:

git clone https://github.com/drk1wi/portspoof.git
cd portspoof
./configure && make && sudo make install

Обратите внимание, что для сборки утилиты может потребоваться установка зависимостей:

sudo apt install gcc g++ make

Дайте права на исполнение и запустите скрипт автоматической конфигурации с указанием сетевого интерфейса. Этот скрипт автоматически сконфигурирует межсетевой экран должным образом и настроит portspoof на работу с сигнатурами для маскировки портов под другие сервисы. 

sudo chmod +x $HOME/portspoof/system_files/init.d/portspoof.sh
sudo $HOME/portspoof/system_files/init.d/portspoof.sh start $NETWORK_INTERFACE

Где $NETWORK_INTERFACE — это ваш сетевой интерфейс, в моем случае eth0.

Если вы захотите приостановить работу утилиты, то выполните команду:

sudo $HOME/portspoof/system_files/init.d/portspoof.sh stop eth0

Повторное сканирование с помощью nmap или любой другой похожей программы, которая работает на основе проверки баннеров запущенных сервисов, уже будет выглядеть следующим образом:

Image3

Изображение: drk1wi.github.io

Также есть трюк, который менее эффективен, так как не создает правдоподобные баннеры сервисов, зато позволяет обойтись без дополнительной утилиты в виде portspoof, чем и заслуживает внимания.

Не забудьте сконфигурировать сетевой экран, чтобы после настройки вы могли попасть на сервер посредством SSH (22 порт) и не нарушить работу уже существующих легитимных сервисов.

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 22 -j RETURN

Также запустите процесс перенаправления всего TCP трафика на 5555 порт:

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp -m conntrack --ctstate NEW -j REDIRECT --to-ports 5555

После чего создайте процесс генерации псевдо-рандомного мусора на 5555 порт с помощью NetCat.

nc -lp 5555 < /dev/urandom

Данные техники достаточно сильно замедлят сканирование, потому что сканеру потребуется много времени, чтобы проанализировать каждый из 65535 «сервисов». Теперь можно считать, что c первоочередной задачей в контексте защиты покончено!

Настройка веб-сервера Nginx

Одного Nmap недостаточно для полноценного анализа веб-приложения. Помимо таких альтернатив, как naabu от Project Discovery и rustscan, существуют продвинутые инструменты активной разведки. Они не только выполняют стандартное сканирование портов, но и специализируются на переборе поддоменов, директорий, HTTP-параметров (dirbuster, gobuster, ffuf), а также на выявлении и эксплуатации уязвимостей в популярных CMS (wpscan, joomscan) и специфических атак (sqlmap для SQL-инъекций, tplmap для SSTI).

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

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

Image1

Так как в большинстве конфигураций веб-сервер Nginx используется как обратный прокси (reverse proxy) или балансировщик нагрузки (load balancer), то он проксирует и выставляет наружу приложение, которое поднято на сервере или в кластере. Это дает возможность богатой конфигурации.

Для усиления защиты можно добавить заголовки безопасности HTTP Security Headers и легковесный и мощный протокол шифрования ChaCha20 для устройств, у которых отсутствует поддержка аппаратного шифрования (мобильные телефоны). Также в качестве мер защиты может понадобиться ограничение на количество запросов в секунду, в целях предотвращения DoS- и DDoS-атак.

HTTP-заголовки Server и X-Powered-By раскрывают информацию о веб-сервере и используемых технологиях, что может помочь злоумышленнику определить потенциальные векторы атаки. Их следует удалить.

Для этого установите коллекцию модулей Nginx:

sudo apt install nginx-extras

И пропишите следующие параметры для конфигурации Nginx (/etc/nginx/nginx.conf):

server_tokens off;
more_clear_headers Server;
more_clear_headers 'X-Powered-By';

Также добавьте заголовки для уменьшения площади атаки типа межсайтового скриптинга (XSS):

add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;

add_header X-XSS-Protection "1; mode=block";

И защиту от Clickjacking’a. Подробнее про него можно прочитать тут.

add_header X-Frame-Options "SAMEORIGIN";

Замедлите автоматизированные атаки путем установки лимитов на скорость запросов в секунду с одного IP-адреса. Делайте это только в том случае, если уверены, что это никак не повлияет на доступность и работоспособность сервиса.

Пример конфигурации выглядит так:

http {
    limit_req_zone $binary_remote_addr zone=req_zone:10m rate=10r/s;

    server {
        location /api/ {
            limit_req zone=req_zone burst=20 nodelay;
        }
    }
}

Эта настройка ограничивает количество запросов с одного IP до 10 в секунду с буфером в 20 запросов.

Для защиты трафика от MITM-атак и обеспечения высокой производительности рекомендуется включить поддержку TLS 1.3 и настроить шифры:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256";
ssl_prefer_server_ciphers on;

Также вы можете внедрить дополнительную защиту веб-приложения в виде WAF (Web Application Firewall). Среди бесплатных решений можно выделить следующие:

  • BunkerWeb — легковесный, популярный и эффективный WAF.

  • ModSecurity — мощный модуль для Nginx с гибкими правилами.

Произвести базовую настройку ModSecurity можно так:

sudo apt install libnginx-mod-security2

Затем включите ModSecurity в конфигурации Nginx:

server {
    modsecurity on;
    modsecurity_rules_file /etc/nginx/modsecurity.conf;
}

Для проверки заголовков безопасности рекомендуется использовать Security Headers. Этот сервис анализирует HTTP-заголовки и помогает выявить возможные ошибки конфигурации.

При настройке любых инфраструктурных компонентов важно следовать лучшим практикам. В частности, для создания безопасных конфигураций Nginx можно воспользоваться онлайн-генератором, который позволяет в удобном веб-интерфейсе сформировать оптимальные базовые настройки для Nginx: шифры, OCSP Stapling, логирование и другие параметры.

Image5

Защита удаленного подключения посредством SSH

Если ваш сервер до сих пор защищен всего лишь паролем, то это достаточно небезопасная конфигурация. Даже сложные пароли со временем могут быть скомпрометированы, особенно если используются устаревшие или уязвимые версии SSH, позволяющие проводить перебор без ограничений, например, CVE-2020-1616. В таблице ниже показано, сколько времени может потребоваться для взлома пароля в зависимости от его сложности. 

Image4

Изображение: security.org

Поэтому я предлагаю отключить парольную аутентификацию и настроить аутентификацию посредством приватного и публичного ключей.

Сгенерируйте на своей рабочей станции пару: публичный и приватный ключи.

ssh-keygen -t ed25519 -C $EMAIL

Где $EMAIL — это ваш адрес электронной почты, а -t ed25519 — это указание типа ключа на основе криптографии с эллиптическими кривыми, использующей кривую Curve25519, которая обеспечивает высокую производительность, компактный размер ключа (256 бит) по сравнению с SHA и стойкость к атакам по сторонним каналам.

Прочитайте ваш публичный ключ на рабочей станции и запишите его любым удобным способом в файл authorized_keys на сервере, который располагается по пути $HOME/.ssh/authorized_keys, где $HOME — это домашняя директория вашего пользователя на сервера, к которому вы осуществляете удаленное подключение.

Добавить публичный ключ на сервер можно как вручную, так и в одну команду с помощью утилиты ssh-copy-id. Для этого потребуется ввести пароль.

ssh-copy-id user@$IP

Также вы можете добавить ключ в разделе «SSH-ключи» вашей панели Timeweb Cloud.

Image7

Чтобы внести публичный ключ в список SSH-ключей нужно нажать «Добавить», заполнить поле «Ключ» содержимым ключа и придумать удобное имя.

Image6

После добавления ключа в Timeweb Cloud его можно будет загрузить для конкретной виртуальной машины.

Image9

Или добавить на сервер прямо в момент его создания в разделе «6. Авторизация».

Image8

Чтобы обеспечить дополнительную безопасность при подключении по SSH, настройте следующие параметры конфигурации SSH-сервера (конфигурационный файл /etc/ssh/sshd_config):

  • PermitRootLogin no — запрет на логин под суперпользователем.

  • PermitEmptyPasswords no — запрет на использование пустых паролей. 

  • X11Forwarding no — запрет на проброс графических приложений.

  • AllowUsers $USERS, где $USERS — это список пользователей, которым разрешено подключение по SSH. Имена разделяются пробелами.

  • PasswordAuthentication no — отключение парольной аутентификации.

  • PubkeyAuthentication yes — включение аутентификации на основе публичного и приватного ключей.

  • HostbasedAuthentication no — отключение аутентификации на основе доверенного хоста (trusted-host).

  • PermitUserEnvironment no — запрет на изменение переменных среды с целью ограничения возможности эксплуатации атак с помощью переменных типа LD_PRELOAD. Подробнее тут.

Внесите необходимые настройки в конфигурационный файл и перезапустите службу демона сервера OpenSSH:

systemctl restart sshd

После изменения настроек вы можете провести аудит на предмет безопасности с помощью этого сайта или отдельной утилиты ssh-audit.

Настройка Port Knocking

SSH является довольно защищенным протоколом, так как разработан командой OpenBSD, которая позиционирует себя как современная ОС с уклоном в безопасность и целостность данных. Но случается и такое, что даже в таком популярном и серьезном ПО находят программные недостатки.

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

Возьмем, например, прикрытие порта SSH от лишних глаз. Конечно, нет никакого смысла переназначать этот порт. Первое же сканирование со стороны злоумышленника раскроет такую махинацию, и он узнает новый порт. Поэтому потребуется что-то вроде специального «ключа» для двери, который бы открывал дверь только владельцу. Благо, такое уже придумали, и этот метод программной защиты называется Port Knocking: самое главное — это правильно «постучаться» в закрытую дверь. То есть предполагается, что сначала вы постучитесь по определенным портам, после чего на короткое время порт откроется во внешний мир, и вы сможете пройти процедуру аутентификации стандартным способом.

Произвести настройку Port Knocking можно следующим способом.

Установите пакет knockd с помощью вашего пакетного менеджера:

sudo apt install knockd -y

Задайте необходимую конфигурацию для файла /etc/knockd.conf.

[options]
    UseSyslog

[openSSH]
    sequence = 7000,8000,9000
    seq_timeout = 5
    command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    tcpflags = syn

[closeSSH]
    sequence = 9000,8000,7000
    seq_timeout = 5
    command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    tcpflags = syn

Где:

  • sequence — последовательность портов, в которые нужно «постучаться».

  • seq_timeout — максимально допустимое время на отправку последовательности в секундах.

  • command — команда, которая выполнится при успешном «стуке».

  • %IP% — IP-адрес клиента, который отправил последовательность, то есть «постучал».

  • tcpflags — проверка флага SYN, чтобы отсекать другие типы пакетов.

Запустите демон knockd и добавьте его в автозагрузку:

sudo systemctl enable --now knockd

Теперь используйте утилиты knock или nmap, для того чтобы «стучаться»:

Пример команды с Nmap:

nmap -Pn --max-retries 0 -p 7000,8000,9000 $IP

Пример команды с Knock:

knock $IP 7000 8000 9000

Где $IP — это IP-адрес сервера, к которому необходимо подключиться.

Если всё настроено правильно, порт должен открыться, и при подключении по SSH вы пройдете стандартную процедуру аутентификации. 

То же самое можно настроить не только для SSH, но и для других сервисов, если необходимо.

Настройка Telegram-уведомлений о входе на сервер

Чтобы привнести дополнительную безопасность для подключения по SSH, можно настроить уведомления в Telegram о каждом успешном логине. Сделать это можно с помощью созданного вами скрипта.

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

git clone https://github.com/timeweb-cloud-tutorials/ssh-tg-notifier.git

Если настройка была произведена удачно, то при успешном SSH-подключении вы будете получать уведомление в Telegram.

Image12

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

Конфигурация параметров ядра Linux

В современном небезопасном мире существуют атаки типа Living Out of The Land. Это когда легитимные средства используются с целью эксплуатации и повышения привилегий в атакуемых системах. Одними из таких средств являются механизмы просмотра системных событий и буфера сообщений ядра Linux.

Эту технику используют и передовые APT. Так что будет разумно попытаться защититься от такого варианта эксплуатации.

Image10

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

Для включения ASLR (Address Space Layout Randomization) задайте параметры:

  • kernel.randomize_va_space = 2 — рандомизация выделенных фрагментов памяти для приложений. Нужна для того, чтобы заранее невозможно было выяснить, на каком участке памяти будет запущено приложение.

  • kernel.kptr_restrict = 2 — запрет утечки информации об адресном пространстве в пространство пользователя.

Также отключите функционал системных запросов для отладки (System Request debugging functionality) — kernel.sysrq = 0 и ограничьте доступ к dmesg (буферу сообщений ядра) — kernel.dmesg_restrict = 1.

При такой конфигурации злоумышленник не будет знать адрес памяти программы и не сможет вторгнуться в какой-либо важный процесс с целью эксплуатации. Также он не сможет просматривать буфер сообщений ядра (dmesg) и посылать запросы для отладки (sysrq), что также усложнит его взаимодействие с системой.

Закалка контейнерных сред

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

Для защиты контейнерных сред рекомендуется внедрить методологии безопасной разработки и методологию DevSecOps наравне с существующими DevOps-практиками. Также необходимо формировать стойкие паттерны и прочные нейронные связи правильного поведения с точки зрения информационной безопасности.

Используйте минимальные образы, например Google Distroless, и инструменты компонентного анализа (Software Composition Analysis) для проверки ваших образов на безопасность.

Для анализа образа на безопасность можно воспользоваться следующими методами.

  1. Инструменты Docker Scout и Docker SBOM для генерации списка артефактов, из которых состоит образ.

Установите Docker Scout и Docker SBOM в качестве плагинов для Docker. Сделать это можно с помощью следующих команд.

Создайте директорию для плагинов Docker, если таковой еще не существует:

mkdir -pv $HOME/.docker/cli-plugins

Установите плагин Docker Scout:

curl -sSfL https://raw.githubusercontent.com/docker/scout-cli/main/install.sh | sh -s --

Установите плагин Docker SBOM:

curl -sSfL https://raw.githubusercontent.com/docker/sbom-cli-plugin/main/install.sh | sh -s --

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

Docker Scout:

docker scout cves gradle

Image11

Docker SBOM — под капотом используется syft:

docker sbom $IMAGE_NAME

Где $IMAGE_NAME — название вашего образа, который вы хотите проанализировать. 

Image13

Результат генерации SBOM можно сохранить в формате JSON и в дальнейшем проанализировать версии библиотек на уязвимости с помощью автоматизированного ПО.

docker sbom alpine:latest --format syft-json --output sbom.txt

Где sbom.txt — конечный артефакт.

  1. Сканирование образов посредством Trivy

Предварительно установите в систему инструмент контейнерной безопасности trivy.

curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sudo sh -s -- -b /usr/local/bin v0.59.1

Запустите команду следующего вида:

trivy image $IMAGE_NAME

Где image — это режим анализа безопасности контейнерных образов, а $IMAGE_NAME — название вашего образа, который вы хотите проанализировать.

Image14

Также вы можете воспользоваться следующей командой, чтобы получить вывод в формате JSON:

trivy -q image --ignore-unfixed --format json --list-all-pkgs $IMAGE_NAME

Опираясь даже на такие минимальные практики, которые были перечислены в этом разделе, вы можете обеспечить достаточно достойный уровень контейнерной безопасности.

Надежные серверы для ваших проектов

Заключение

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

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server
05 марта 2025 г.
134
21 минута чтения
Средний рейтинг статьи: 5
Пока нет комментариев