Если вы не развертываете защищенные контейнеры в защищенных кластерах, вы сражаетесь в проигрышной битве с самого начала.
К счастью, речь идет о Linux, поэтому вы можете многое сделать для обеспечения безопасности ваших развертываний.
Одна очень важная задача, которую вы можете выполнить, – предотвратить загрузку нежелательных модулей ядра в ваши контейнеры.
Как развернуть и получить доступ к контейнеру Ubuntu
Давайте сначала развернем новый контейнер с Multipass.
Мы развернем Ubuntu Daily 20.04 с помощью команды:
multipass launch daily:20.04
multipass list
Теперь, когда контейнер развернут, получите доступ к его оболочке с помощью команды:
multipass shell NAME
Как отключить и занести в черный список модули
Чтобы вывести список всех загруженных в данный момент модулей, введите команду:
lsmod
Поскольку контейнеры, как правило, имеют очень конкретное назначение, вероятно, мы можем занести модули в черный список.
Прежде чем мы действительно создадим черный список модулей, которые мы не хотим загружать при загрузке, мы должны отключить их.
Вот почему нам нужно вручную оффнуть модули.
Чтобы вручную выгрузить работающий модуль, введите команду:
sudo modprobe -r MODULENAME
Если вы выполните команду lsmod, вы должны увидеть, что модуль больше не загружается в ядро.
Как только вы скомпилировали свой список, откройте файл черного списка на редактирование с помощью команды:
sudo nano /etc/modprobe.d/blacklist.conf
blacklist MODULENAME
blacklist floppy
Примечание. Вы должны быть осторожны, дабы не занести в черный список модули, которые имеют решающее значение для работы ОС или того, от чего будет зависеть ваш контейнер. Поэтому, прежде чем занести модуль в черный список, обязательно немного изучите то, что делает этот модуль.
Мы должны остановить и запустить контейнер и увидеть, что эти модули списки больше не загружаются.
Однако, если вы обнаружите, что модули все еще загружаются, это означает, что образ все еще использует старую копию initramfs, которая не содержит ваших изменений.
sudo update-initramfs -u
Заключение
Это не универсальная мера безопасности для ваших контейнеров Kubernetes.
Это то, что вы должны учитывать при разработке приложений и сервисов, которые зависят от контейнера Linux.
Вам не нужны посторонние, а иногда и небезопасные модули, работающие в контейнере, которые могут обойтись с минимальным минимумом.
Подумайте об этом процессе как об одной из многих ступеней, которые вы должны пройти, чтобы развернуть действительно безопасные контейнеры.