Убезпечення сервера спільного використання файлів та принтерів Samba

Режими захисту Samba

Існує два рівні захисту мережевого протоколу Common Internet Filesystem (CIFS): на рівні користувача і на рівні ресурсу. Реалізація режиму захисту Samba є більш гнучкою: передбачено чотири способи реалізації захисту на рівні користувача і один спосіб реалізувати захист на рівні ресурсу:

  • security = user: визначає, що клієнтським комп’ютерам слід надати ім’я користувача і пароль для встановлення з’єднання зі спільними ресурсами. Облікові записи користувачів Samba є окремими обліковими записами, що не збігаються з обліковими записами користувачів системи, але пакунок libpam-smbpass синхронізує списки користувачів системи і паролі з базою даних користувачів Samba.

  • security = domain: за допомогою цього режиму можна зробити сервер Samba для клієнтських комп’ютерів Windows основним контролером домену (Primary Domain Controller або PDC), резервним контролером домену (Backup Domain Controller і BDC) або сервером учасників домену (Domain Member Server або DMS). Докладніше про це у розділі the section called “Samba як контролер домену”.

  • security = ADS: дозволяє серверу Samba долучатися до домену Active Directory як звичайному учаснику. Докладніше про це у розділі the section called “Інтеграція Samba зі службами Active Directory”.

  • security = server: цей режим залишився від часів, коли Samba не могла ставати учасником сервера, через проблеми з безпекою цим режимом не слід користуватися. Докладніше про це у розділі Захист сервера підручника з Samba.

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

Кращий режим захисту залежить від середовища та завдань, які має виконувати сервер Samba.

Security = User

За допомогою цього розділу можна повторно налаштувати сервер роботи з файлами та принтерами Samba з the section called “Файловий сервер Samba” і сервера друку на використання режиму розпізнавання.

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

sudo apt-get install libpam-smbpass

Note

Якщо під час встановлення було вибрано завдання Сервер Samba, пакунок libpam-smbpass вже встановлено.

Внесіть зміни до розділу [share] файла /etc/samba/smb.conf:

guest ok = no

Нарешті, перезапустіть Samba, щоб нові параметри набули чинності:

sudo /etc/init.d/samba restart

Тепер під час встановлення з’єднання з каталогами або принтерами спільного використання буде показано запит щодо імені користувача і пароля.

Note

Щоб відобразити вміст мережевого диска на спільний ресурс, слід позначити пункт «Повторно встановлювати з’єднання при вході». У разі позначення пункту система надсилатиме запит щодо імені користувача і пароля лише раз, принаймні до зміни пароля.

Захист спільних ресурсів

Передбачено декілька варіантів покращення захисту окремих каталогів спільного використання. За допомогою прикладу [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 адміністративних прав доступу до спільного ресурсу, слід внести зміни до файла /etc/samba/smb.conf, а саме, додати такий рядок у розділ [share]:

admin users = melissa

Після внесення змін до /etc/samba/smb.conf перезапустіть Samba, щоб зміни набули чинності:

sudo /etc/init.d/samba restart

Note

Щоб мати змогу працювати з read list і write list, режим захисту Samba не слід встановлювати у значення security = share

Тепер, коли Samba налаштовано на обмеження переліку груп користувачів, які мають доступ до спільного каталогу, слід оновити права доступу до файлової системи.

Традиційні права доступу до файлів Linux не дуже то і збігаються з списками керування доступом (ACL) Windows NT. На щастя на серверах з Kubuntu можна скористатися ACL POSIX. За допомогою цих списків керування доступом можна здійснювати дуже точне керування. Для прикладу, щоб увімкнути 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

Note

У наведеному вище прикладі припускалося, що каталог /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/

Note

Наведена вище команда setfacl надає права на виконання всіх файлів у каталозі /srv/samba/share, що може бути бажаним або небажаним результатом.

За допомогою клієнтського комп’ютера Windows можна буде переконатися, що до файлів застосовано нові права доступу. Докладніше про ACL у POSIX можна дізнатися зі сторінок довідника (man) acl та setfacl.

Профіль AppArmor Samba

Частиною Kubuntu є модуль безпеки AppArmor, який забезпечує роботу обов’язкового керування доступом. У типовий профіль AppArmor для Samba слід внести зміни, що відповідають іншим налаштуванням. Докладніше з AppArmor можна ознайомитися за допомогою відповідноїсторінки вікі

У типовому комплекті AppArmor передбачено профілі для /usr/sbin/smbd і /usr/sbin/nmbd, виконуваних файлів фонових служб Samba. Ці профілі є частиною пакунка apparmor-profiles. Щоб встановити цей пакунок, віддайте таку команду у вікні термінала:

sudo apt-get install apparmor-profiles

Note

У цьому пакунку містяться профілі для декількох інших виконуваних файлів.

За типових налаштувань профілі для smbd і nmbd працюють у режимі complain. У такому режимі Samba може працювати без внесення змін до профілю, всі помилки лише записуватимуться до журналу. Щоб перевести профіль smbd у режим enforce так, щоб це не вплинуло на працездатність Samba, слід зазначити у профілі всіх каталоги, які надаються у спільне використання.

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

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

Тепер скопіюйте профіль до enforce і перезавантажте його:

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

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

Ресурси