Что такое преимущества и оборотные стороны непривилегированных контейнеров?

необходимо использовать:

fn=/full/path/to/db.backup.$(date +%m-%d-%y).sql

или

cd /full/path/to/

перед экспортом базы данных

если Ваш cronjob не похож:

* * * * * cd /full/path/to && backup.sh
16
16.08.2016, 12:46
3 ответа

Запуск безвискивых контейнеров является самым безопасным способом управления контейнерами в производственной среде. Контейнеры получают плохую рекламу, когда речь идет о безопасности, и одна из причин, потому что некоторые пользователи обнаружили, что если пользователь получает root в контейнере, то есть возможность набираться и на хосте. В основном то, что невибализируемая контейнер делает маску пользователя с хоста. С безвискивыми контейнерами, не пользователи root могут создавать контейнеры и будут иметь и появляться в контейнере в качестве root, но появится как userId 10000, например, на хосте (что бы вы ни сопоставили пользователя). Недавно я написал сообщение в блоге по этому поводу на основе в блоге Стефане Грабер серии LXC (один из блестящих умов / ведущих разработчиков LXC и кого-то, чтобы определенно следовать). Я снова говорю, чрезвычайно блестяще.

Из моего блога:

из контейнера:

lxc-attach -n ubuntu-unprived
root@ubuntu-unprived:/# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 04:48 ?        00:00:00 /sbin/init
root       157     1  0 04:48 ?        00:00:00 upstart-udev-bridge --daemon
root       189     1  0 04:48 ?        00:00:00 /lib/systemd/systemd-udevd --daemon
root       244     1  0 04:48 ?        00:00:00 dhclient -1 -v -pf /run/dhclient.eth0.pid
syslog     290     1  0 04:48 ?        00:00:00 rsyslogd
root       343     1  0 04:48 tty4     00:00:00 /sbin/getty -8 38400 tty4
root       345     1  0 04:48 tty2     00:00:00 /sbin/getty -8 38400 tty2
root       346     1  0 04:48 tty3     00:00:00 /sbin/getty -8 38400 tty3
root       359     1  0 04:48 ?        00:00:00 cron
root       386     1  0 04:48 console  00:00:00 /sbin/getty -8 38400 console
root       389     1  0 04:48 tty1     00:00:00 /sbin/getty -8 38400 tty1
root       408     1  0 04:48 ?        00:00:00 upstart-socket-bridge --daemon
root       409     1  0 04:48 ?        00:00:00 upstart-file-bridge --daemon
root       431     0  0 05:06 ?        00:00:00 /bin/bash
root       434   431  0 05:06 ?        00:00:00 ps -ef

от хоста:

lxc-info -Ssip --name ubuntu-unprived
State:          RUNNING
PID:            3104
IP:             10.1.0.107
CPU use:        2.27 seconds
BlkIO use:      680.00 KiB
Memory use:     7.24 MiB
Link:           vethJ1Y7TG
TX bytes:      7.30 KiB
RX bytes:      46.21 KiB
Total bytes:   53.51 KiB

ps -ef | grep 3104
100000    3104  3067  0 Nov11 ?        00:00:00 /sbin/init
100000    3330  3104  0 Nov11 ?        00:00:00 upstart-udev-bridge --daemon
100000    3362  3104  0 Nov11 ?        00:00:00 /lib/systemd/systemd-udevd --daemon
100000    3417  3104  0 Nov11 ?        00:00:00 dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0
100102    3463  3104  0 Nov11 ?        00:00:00 rsyslogd
100000    3516  3104  0 Nov11 pts/8    00:00:00 /sbin/getty -8 38400 tty4
100000    3518  3104  0 Nov11 pts/6    00:00:00 /sbin/getty -8 38400 tty2
100000    3519  3104  0 Nov11 pts/7    00:00:00 /sbin/getty -8 38400 tty3
100000    3532  3104  0 Nov11 ?        00:00:00 cron
100000    3559  3104  0 Nov11 pts/9    00:00:00 /sbin/getty -8 38400 console
100000    3562  3104  0 Nov11 pts/5    00:00:00 /sbin/getty -8 38400 tty1
100000    3581  3104  0 Nov11 ?        00:00:00 upstart-socket-bridge --daemon
100000    3582  3104  0 Nov11 ?        00:00:00 upstart-file-bridge --daemon
lxc       3780  1518  0 00:10 pts/4    00:00:00 grep --color=auto 3104

, так как вы можете видеть, работают внутри контейнера, как root, но не отображаются как root, а на 100000 от хоста.

Так что для суммирования: преимущества - добавленная безопасность и добавлена ​​изоляция для безопасности. Недостатком - немного запутанно обернуть голову сначала и не для новичка пользователя.

14
27.01.2020, 19:48

Я подозреваю, что это регрессия относительно этой ошибки https://rhn.redhat.com/errata/rhba-2011-1096.html

из Errata:

Это обновление исправлению следующую ошибку:

  • до этого обновления, возникла проблема при входе в пароль, используя утилита прокорки-проклятия; Вместо пароля отображалось сообщение об ошибке Диалог въезда, если проклятые проклятия были запущены по пользователю, отличному от пользователя, который владел текущим TTY. Эта ошибка была исправлена ​​в этом обновлении, так что никакой ошибки Сообщение теперь отображается, а просьба проходит проклятия просьба, как ожидалось. (BZ # 677665)

Проблема, по-видимому, когда вы или sudo, TTY все еще принадлежит первоначальному владельцу TTY, который дует вверх.

Обратите внимание, что мы не сможем создать ключи GPG как любого пользователя, отличного от root на системе Cent 6 вчера. Чтобы генерировать ключи, нам пришлось войти в систему как root, создайте клавиши, скопируйте .gpg dir в домашний каталог пользователя и изменить право собственности.

-121--87862-

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

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

1
27.01.2020, 19:48

Я боюсь, что нет переносимого решения, особенно если вы хотите рассмотреть переменные без части значения или повторяющихся переменных. В недавней системе GNU:

env -0 | grep -z '^T' | tr '\0' '\n'
-121--254576-

Было бы лучше использовать аутентификацию с открытым/закрытым ключом, но если вы по-прежнему хотите использовать пароль в простом текстовом сценарии, я бы использовал lftp . Это отличный клиент, который позволяет ftp, sftp, ftps соединения, вам нужно будет только использовать «здесь документ» для полной транзакции:

lftp sftp://your.destination.sftp -u yourUser,YourPassword << fin
    get yourfile
    bye
fin
-121--167780-

Они очень ценные инструменты для тестирования, песочницы и инкапсуляции. Хотите, чтобы веб-сервер был надежно заблокирован в своей рабочей среде, не имея доступа к конфиденциальным личным файлам? Используйте контейнер. У вас есть приложение, которое требует старых версий библиотек и определенных файлов конфигурации, несовместимых с другими приложениями? Также контейнер. Это в основном chroot сделано правильно. Это позволяет поддерживать сервисы достаточно раздельно, поэтому поддерживать каждую из них гораздо проще, и их можно перемещать или копировать на другую машину без необходимости беспокоить существующую систему.

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

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

4
27.01.2020, 19:48

Теги

Похожие вопросы