Я хочу запустить сервер оболочки старой школы для пары человек, т.е. тот, где пользователи получают доступ по SSH, чтобы они могли запускать программное обеспечение (свое или предоставленное). Меня беспокоит правильное разделение между пользователями.
Я не хочу, чтобы они просматривали процессы друг друга, обращались к файлам друг друга (если это явно не разрешено) и т. Д. Было бы неплохо не быть укушенным при каждой ошибке повышения привилегий или перезапускать сервер при каждом незначительном обновлении ядра. Было бы идеально поддерживать возможность запуска общих служб (таких как веб-хостинг и почтовый хостинг) с этими мерами безопасности.
Раньше я использовал grsec, но для этого нужно было остановиться на более старом ядре и заняться созданием его самостоятельно. Существует ли более современный и более Ubuntu способ обеспечить разделение пользователей на общем сервере?
Возможно, вы можете сделать что-то с AppArmor на этот счет? Или, может быть, есть хранилище ядер, предварительно сконфигурированных для общих сред? Или решение на основе контейнеров? Они были в моде в последнее время.
Ответы:
hidepid
procfs
в Linux теперь поддерживаетсяhidepid
опция. Отman 5 proc
:Таким образом, монтирования
/proc
с помощьюhidepid=2
достаточно, чтобы скрыть детали процессов других пользователей в Linux> 3.3. Ubuntu 12.04 поставляется с 3.2 по умолчанию, но вы можете установить более новые ядра. Ubuntu 14.04 и выше легко соответствуют этому требованию.списки управления доступом
В качестве первого шага удалите
rwx
разрешения для других из каждого домашнего каталога (а также для группы, если вам это нужно). Разумеется, я предполагаю, что папка (и), содержащая домашние каталоги, не имеет прав записи ни для кого, кроме root.Затем предоставьте таким службам, как веб-сервер и почтовый сервер, доступ к соответствующим каталогам с использованием списков ACL. Например, чтобы предоставить процессу веб-сервера доступ к домашним страницам пользователя, предположим, что
www-data
это пользователь и~/public_html
где хранится домашняя страница:Аналогичным образом добавьте ACL для почтовых процессов и каталогов почтовых ящиков.
ACL по умолчанию включены в ext4, по крайней мере, в Ubuntu 14.04 и выше.
/tmp
а такжеumask
Еще одна проблема
/tmp
. Установитеumask
так, чтобы файлы не были доступны для чтения в группах или мире, чтобы временные файлы пользователей не были доступны другим пользователям.С этими тремя настройками пользователи не должны иметь доступ к файлам других пользователей или проверять их процессы.
источник
/tmp
этом пакете, является пакетlibpam-tmpdir
: он создает принадлежащий пользователю корневой каталог, не предназначенный для чтения в мире,/tmp/user
и пользовательские, не предназначенные для чтения и не предназначенные для чтения в мире каталоги,/tmp/user/$UID
для каждого пользователя (при его первом войти в систему) и задает переменную среды,TMP_DIR
указывающую на последнюю. Большинство программ играют хорошо и размещают свои временные файлы внутри,$TMP_DIR
если установлено.