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


Защита серверов 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,

Теперь переведем профиль в режим ограничений и перезагрузим его:

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

Теперь вы можете читать, записывать и выполнять файлы в разделяемом каталоге как обычно, а программа smbd будет предоставлять доступ только к настроенным файлам и каталогам. Убедитесь, что добавили каждый каталог, настроенный как ресурс Samba. Кроме того, все ошибки будут сохраняться в журнале /var/log/syslog.

Ссылки

  1. Для более глубокого погружения в настройки Samba смотрите Коллекцию ЧаВо по Samba.

  2. Данное руководство доступно также в печатном виде.

  3. Также хорошее руководство - Using Samba от O'Reilly.

  4. 18 глава из коллекции ЧаВо по Samba посвящена безопасности.

  5. Для дополнительной информации по Samba и ACL смотрите страницу Samba ACLs.

  6. Страница Ubuntu Wiki Samba.