Product SiteDocumentation Site

6.2. Ограничение новых пользователей Linux: useradd

Пользователи Linux сопоставлены пользователю SELinux unconfined_u, работающем в домене unconfined_t. Это можно увидеть, выполнив команду id -Z, если войти от имени пользователя сопоставленному unconfined_u:
$ id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Когда пользователь Linux работает в домене unconfined_t, применяются правила политики SELinux, но существуют правила политики SELinux, которые позволяют пользователям работать в домене unconfined_t с практически, полным доступом. Если неограниченные (unconfined) пользователи Linux выполняют приложение, для которого политика SELinux определяет переход (transition) из домена unconfined_t в свой собственный домен, то неограниченные пользователи Linux являются субъектами ограничений в этом ограниченном домене. Преимущество безопасности заключается в том, что, даже учитывая, что пользователь Linux работает неограниченно, приложение остается ограниченным, кроме того, уязвимость утечки в приложении, может быть ограничено политикой. Примечание: Это не защищает систему от пользователя. Вместо этого, пользователь и система защищаются от возможного вреда, вызванного утечками в приложении.
При создании пользователей Linux с помощью команды useradd, используйте опцию -Z для того, чтобы указать какому пользователю SELinux они сопоставляются. В следующем примере создается новый пользователь Linux, useruuser и сопоставляется пользователю SELinux user_u. Пользователь Linux, сопоставленный пользователю SELinux user_u работает в домене user_t. В этом домене, пользователи Linux не имеют возможности запускать setuid приложения до тех пор, пока политика SELinux не разрешит это (такие как passwd), и не могут выполнить su или sudo, препятствуя им повысить права до уровня root пользователя с помощью данных команд.
  1. От имени пользователя root, выполните команду /usr/sbin/useradd -Z user_u useruuser для создания нового пользователя Linux (useruser), который сопоставлен пользователю SELinux user_u.
  2. От имени пользователя root, выполните команду semanage login -l для просмотра сопоставлений между пользователем Linux useruuser и user_u:
    # /usr/sbin/semanage login -l
    
    Login Name                SELinux User              MLS/MCS Range
    
    __default__               unconfined_u              s0-s0:c0.c1023
    root                      unconfined_u              s0-s0:c0.c1023
    system_u                  system_u                  s0-s0:c0.c1023
    useruuser                 user_u                    s0
    
  3. От имени пользователя root, выполните команду passwd useruuser для назначения пароля пользователю useruser:
    # passwd useruuser
    Changing password for user useruuser.
    New UNIX password: Enter a password
    Retype new UNIX password: Enter the same password again 
    passwd: all authentication tokens updated successfully.
    
  4. Завершите текущий сеанс, и откройте новый сеанс от имени пользователя useruuser. Когда выполняется вход, pam_selinux сопоставляет пользователя Linux, пользователю SELinux (в данном случае, user_u) и устанавливает результирующий SELinux контекст. Пользовательский shell запускается с этим контекстом. Выполните команду id -Z для просмотра контекста пользователя Linux:
    [useruuser@localhost ~]$ id -Z
    user_u:user_r:user_t:s0
    
  5. Завершите сеанс пользователя useruuser и выполните вход вашей учетной записью. Если пользователь useruser больше не требуется, выполните команду /usr/sbin/userdel -r useruser от имени пользователя root для удаления учетной записи, вместе с его домашним каталогом.