
Існує два рівні захисту мережевого протоколу 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.
За допомогою цього розділу можна повторно налаштувати сервер роботи з файлами та принтерами 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.
Частиною 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
.
Докладніше про налаштування Samba можна дізнатися з збірки порад з Samba
Крім того, з підручником можна ознайомитися у паперовому форматі.
Ще одним чудовим підручником є Використання Samba видавництва O'Reilly.
Главу 18 збірки настанов з Samba HOWTO присвячено питанням безпеки.
Щоб дізнатися більше про Samba і ACL, ознайомтеся зі сторінкою ACL Samba.