Это старая версия документа.


Защита серверов Samba

Режимы безопасности Samba

Доступны два уровня безопасности для сетевого протокола CIFS (разделяемая файловая система интернета): уровень пользователя (user-level) и уровень ресурса (share-level). Реализация режима безопасности Samba обеспечивает большую гибкость, предоставляя четыре способа реализации уровня пользователя и один вариант реализации уровня разделяемого ресурса:

  1. security = user: требует от клиента предоставить имя пользователя и пароль для подключения к ресурсу. Учетные записи пользователей Samba отделены от системных учетных записей, но пакет libpam-smbpass синхронизирует системных пользователей и пароли с пользовательской базой Samba.

  2. security = domain: этот режим позволяет серверу Samba представляться клиентам Windows первичным доменным контроллером (PDC), резервным доменным контроллером (BDC) или сервером-членом домена (DMS). Смотрите раздел Samba как контроллер домена для дополнительной информации.

  3. security = ADS: позволяет серверу Samba присоединиться к домену Active Directory как родному. Смотрите раздел Интеграция Samba с Active Directory для уточнения деталей.

  4. security = server: этот режим оставлен с тех времен, когда Samba не мог становиться членом домена и по ряду причин, связанных с безопасностью, не может использоваться. Смотрите раздел Server Security руководства по Samba для уточнения деталей.

  5. security = share: позволяет клиентам подключаться к разделяемому ресурсу без предоставления имени пользователя и пароля.

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

Security = User

В этой секции рассматривается как перенастроить сервера файлов и печати Samba, настроенные в разделах Файловый сервер Samba и Сервер печати Samba, чтобы они требовали аутентификацию.

Сначала установим пакет libpam-smbpass, который будет синхронизировать системных пользователей с базой пользователей Samba:

sudo apt-get install libpam-smbpass
Если вы выбирали задачу Samba сервер в процессе установки сервера, то libpam-smbpass уже установлен.

Отредактируйте /etc/samba/smb.conf, и измените в секции [share]:

guest ok = no

Наконец перезагрузите Samba, чтобы воспринялась новая конфигурация:

sudo restart smbd
sudo restart nmbd

Теперь при подсоединении к разделяемым каталогам или принтерам у вас будет запрашиваться имя пользователя и пароль.

Если вы выбираете подсоединение к разделяемому сетевому носителю, то можете установить флажок "Переподключение при входе" ("Reconnect at Logon"), который позволит вам вводить имя и пароль один раз, по крайней мере до смены пароля.

Безопасность разделяемого ресурса

Существует несколько опций для усиления безопасности по каждому конкретному разделяемому каталогу. На примере [share], эта секция рассматривает наиболее распространенные опции.

Группы

Группы определяют коллекции компьютеров или пользователей, которые имеют общий уровень доступа к определенным сетевым ресурсам, и обеспечивают уровень модульности при управлении доступом к этим ресурсам. Например, если определены группа qa, которая содержит пользователей freda, danika и rob, и другая группа support, которая содержит пользователей danika, jeremy и vincent, то некоторый сетевой ресурс, настроенный на доступ группы qa, будет соответственно предоставлять доступ для freda, danika и rob, но не jeremy или vincent. Поскольку пользователь danika относится к обеим группам qa и support, она будет иметь доступ к ресурсам, настроенным на доступ для любой из этих групп, в то время как все остальные - только к ресурсам, настроенным на определенные группы, которым они принадлежат.

По умолчанию Samba ищет локальные системные группы, объявленные в /etc/group, для определения какие пользователи им принадлежат. Для дополнительной информации по добавлению и удалению пользователей в группах смотрите раздел Добавление и удаление пользователей.

При определении групп в файле настроек Samba /etc/samba/smb.conf используется синтаксис распознавания с предшествующим символом "@". Например, если вы собираетесь определить группу с именем sysadmin в определенной секции файла /etc/samba/smb.conf, вы сможете сделать это, указав имя группы как @sysadmin.

Права доступа к файлам

Права доступа определяют явные права компьютера или пользователя на определенный каталог, файл или набор файлов. Такой доступ может быть определен редактированием файла /etc/samba/smb.conf и заданием явных разрешений определенному разделяемому файловому ресурсу.

Например, если вы определили Samba ресурс с названием share и собираетесь дать права только на чтение группе пользователей, известной как qa, но хотите предоставить возможность записи для группы с именем sysadmin и пользователю vincent, то вы можете отредактировать файл /etc/samba/smb.conf, добавив следующие записи в секцию [share]:

read list = @qa
write list = @sysadmin, vincent

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

Например, если вы хотите предоставить пользователю melissa административные права доступа к ресурсу share из нашего примера, вам потребуется отредактировать файл /etc/samba/smb.conf и добавить следующую строку в раздел [share]:

admin users = melissa

После изменений /etc/samba/smb.conf перезапустите Samba для применения изменений:

sudo restart smbd
sudo restart nmbd
Чтобы опции read list и write list работали, режим безопасности Samba не должен быть установлен в security = share.

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

Традиционные файловые разрешения Linux не очень хорошо соответствуют управляющим спискам доступа (ACL) Windows NT. К счастью списки ACL POSIX, доступные для Ubuntu серверов, предоставляют улучшенное более детализированное управление. Например, чтобы разрешить ACL для каталога /srv на файловой системе EXT3, отредактируйте /etc/fstab, добавив опцию acl:

UUID=66bcdd2e-8861-4fb0-b7e4-e61c569fe17d /srv  ext3    noatime,relatime,acl 0       1

Далее перемонтируйте раздел:

sudo mount -v -o remount /srv
Приведенный пример подразумевает, что /srv смонтирован на отдельный раздел диска. Если /srv (или любой другой каталог, настроенный как разделяемый ресурс) является частью корневого раздела (/), то может потребоваться перезагрузка системы.

Чтобы соответствовать приведенной выше конфигурации Samba группе sysadmin требуется предоставить права на чтение, запись и выполнение для каталога /srv/samba/share, группе qa потребуются права на чтение и запуск программ, а файлы должны принадлежать пользователю melissa. Для этого введите следующее в терминале:

sudo chown -R melissa /srv/samba/share/
sudo chgrp -R sysadmin /srv/samba/share/
sudo setfacl -R -m g:qa:rx /srv/samba/share/
Команда выше setfacl предоставляет права на выполнение программ для всех файлов в каталоге /srv/samba/share, что для вас может быть желательным или нежелательным.

Теперь из клиента Windows вы можете заметить, что применяются новые права на файлы. Смотрите руководства man по acl и setfacl для более детальной информации по POSIX ACL спискам.

Профиль AppArmor для Samba

Ubuntu поставляется с модулем безопасности AppArmor, который предоставляет контроль доступа по разрешению. Изначальный профиль AppArmor потребует изменений для приведения в соответствие с вашей конфигурацией. Более детальное описание AppArmor смотрите в разделе AppArmor.

Существуют изначальные профили AppArmor для /usr/sbin/smbd и /usr/sbin/nmbd, программ-сервисов Samba, как часть пакета apparmor-profiles. Чтобы установить пакет введите в строке терминала:

sudo apt-get install apparmor-profiles apparmor-utils
Этот пакет содержит профили различных других программ.

По умолчанию профили для smbd и nmbd находятся в режиме complain (отслеживания), позволяя Samba работать без изменения профиля, и только фиксируя ошибки. Для перевода профиля smbd в режим enforce (ограничений) и установки работы Samba как положено, профиль требуется изменить для отражения всех каталогов с разделяемым доступом.

Отредактируем /etc/apparmor.d/usr.sbin.smbd, добавив информацию для [share] из примера файлового сервера:

  /srv/samba/share/ r,
  /srv/samba/share/** rwkix,

Now place the profile into enforce and reload it:

sudo aa-enforce /usr/sbin/smbd cat /etc/apparmor.d/usr.sbin.smbd | sudo apparmor_parser -r

You should now be able to read, write, and execute files in the shared directory as normal, and the smbd binary will have access to only the configured files and directories. Be sure to add entries for each directory you configure Samba to share. Also, any errors will be logged to /var/log/syslog.

Ссылки

  For in depth Samba configurations see the Samba HOWTO Collection
  The guide is also available in printed format.
  O'Reilly's Using Samba is also a good reference.
  Chapter 18 of the Samba HOWTO Collection is devoted to security.
  For more information on Samba and ACLs see the Samba ACLs page .
  The Ubuntu Wiki Samba page.