Linux по-російськи
Минулого разу ми почали розглядати питання, як встановити та налаштувати безпечний файловий сервер на Samba для локального (НЕ-інтернет) використання. Був зроблений огляд цілей побудови такого сервера, було пояснено, чому Samba найкращим чином підходить для налаштування "мережевих дисків" для клієнтів в локальній мережі, визначені поняття і концепції Samba, і розказано, як встановити демони сервера Samba, клієнтські утиліти і веб-інтерфейс для конфігурації Samba - SWAT.
Цього разу огляд буде розширено, і буде конкретно показано, що потрібно записувати в файл smb.conf, щоб ресурси були захищені належним чином. Будуть розглянуті завдання в загальному сенсі, але окрему увагу буде приділено безпеці.
сценарій використання
Іншими словами, наш сервер буде працювати в режимі доступу користувача, причому буде використовуватися комбінація локальних користувачів Linux / UNIX і Samba-хеш паролів цих користувачів. Саме так і буде визначатися доступ до загальних ресурсів робочої групи. В робочій групі, як ви пам'ятаєте, може бути кілька загальних ресурсів, що надаються різними Samba-серверами, причому кожен сервер зберігає свою базу даних користувачів, незалежну від інших серверів. Ось чому домени і Active Directory є найкращим рішенням у великих мережах. В нашій пробної робочій групі буде всього лише один сервер.
Припустимо, що я здаю квартиру трьом секретним агентам ФСБ: Скиппи, Кнуту і Пепе. Вони люблять, як я готую, і постійно стежать за моїм тижневим меню, яке я вивішую на своєму Samba-сервері в ніч з неділі на понеділок. Можу посперечатися, ніхто не буде працювати вечорами, коли на вечерю подаються картопляні деруни. Тижневе розклад є публічним документом.
Але все ж ці хлопці - секретні агенти, і тому їм не хотілося б, щоб вороги знали, що вони розкопували компостну яму. Тому список справ може проглядатися лише нашими секретними агентами, але щоб змінювати його вони не могли.
Отже, мені потрібно створити робочу групу (назву її FED-CENTRAL) з чотирма користувачами (skippy, knute, pepe і mick) і трьома загальними ресурсами (SUPPER, CHORES і BUZZ-OFF).
Конфігурація Samba: Глобальні налаштування
Тепер ми готові. Передбачається, що ви правильно встановили пакети Samba-сервера і клієнтських програм. Першим кроком буде установка деяких глобальних змінних.
Проте, останнім часом я звик до другого способу: графічний інтерфейс SWAT (Samba Web Administration Tool). Якщо вам не подобається моє позитивне ставлення до утиліти, яка вимагає встановлювати пароль користувача root (який за замовчуванням в Ubuntu відключений), тоді прочитайте мою попередню статтю. Наш сервер не дивиться в інтернет, і освітні цілі в даному випадку для нас важливіше, ніж проблеми безпеки.
На даному етапі передбачається, що у вас не виникло проблем з установкою Samba і Swat (це було описано в попередній статті). Ви в тому числі сконфигурировали і провели перезапуск inetd, а також встановили пароль користувачу root за допомогою команди sudo passwd root. Якщо ж не хочете піддавати ризику безпеку свого сервера, або просто не хочете користуватися Swat - все одно подальші міркування будуть корисні. Адже те, що відображено на скріншотах Swat і всередині файлу smb.conf - по суті одне і те ж.
Однак перейдемо до глобальних налаштувань Samba. Вони відкриваються після натискання кнопки Globals, ви побачите щось, схоже на малюнок 1.

Малюнок 1. Глобальні налаштування
Очевидно, нам відразу потрібно змінити ім'я робочої групи з WORKGROUP на FED-CENTRAL. NetBIOS-ім'я за замовчуванням береться з файлу / etc / hostname. найчастіше його просто потрібно залишити як є. Це те ім'я комп'ютера, яке людина побачить, відкривши мережеве оточення.
Значення поля security за замовчуванням - user. саме це нам і треба. Те ж саме відноситься до змінної encrypt password - залишаємо значення yes.
Наступні дві змінні - client schannel і server schannel. потрібно змінити. Schannel означає безпечний метод передачі (secure channel). Цей параметр дозволяє клієнтам Samba заходити на Samba-сервера під своїм ім'ям, і ми не хочемо, щоб це було на вибір. Потрібно зробити цю процедуру обов'язкової. Тому обидві змінні повинні бути встановлені в значення yes.
Прокрутивши сторінку загальних параметрів далі, ви побачите подобу малюнка 2.

Малюнок 2. Ще більше загальних параметрів
Продовжуємо знайомство з цими глобальними настройками. Параметр obey pam restrictions означає, що Samba дотримуватиметься правил, встановлених системою PAM (Pluggable Authentication Modules). Однак на практиці, коли параметр encrypt passwords встановлений в yes. Samba все одно буде ігнорувати PAM.
Параметр passdb backend визначає, якого в базі даних якого типу Samba буде зберігати зашифровані паролі. Значення за замовчуванням (tbdsam) - це кращий вибір.
guest account - це локальний користувач Linux, який буде використовуватися для клієнтів, які не пройшли аутентифікацію - я писав про це трохи вище. passwd program. passwd chat і unix password sync визначають яким чином Samba обробляє запити користувачів змінити їх пароль через Samba-сесію. Якщо не хочете, щоб користувачі могли змінювати паролі, залиште все як є.
Тут ви можете запитати, яка ж різниця між базою даних паролів Samba і списком хеш в файлі / etc / shadow, якщо вони все одно співвідносяться з одним і тим же набором локальних користувачів? Коротка відповідь: Samba (SMB / CIFS) використовує протокол аутентифікації, який не сумісний з хешамі паролів UNIX.
Погано тут те, що з цієї причини в Linux база даних паролів Samba виявляється надлишкової, що призводить до того, що користувачам доводиться пам'ятати два різних пароля. Однак якщо параметри passwd program і passwd chat налаштовані належним чином (якщо ви користуєтеся офіційними пакетами для вашого дистрибутива, то напевно все вже в порядку), а unix password sync встановлено значення yes, тоді Samba буде автоматично оновлювати Linux-пароль користувача кожного разу, коли він змінює свій Samba-пароль. Поговоримо про це в наступному розділі.
Далі, valid users містить список користувачів UNIX, який можуть отримати доступ до Samba-ресурсів. За замовчуванням стоїть значення "" (порожній) - ніхто не може отримувати доступ до ресурсів. Для нашого сценарію необхідно, щоб valid users містив користувачів mick, knute, pepe, skippy, nobody.
admin users дозволяє вам дати права суперкористувача на всі ресурси одному або декільком локальним користувачам, незалежно від того, які Samba- або Linux-права встановлені на цей ресурс. Будьте обережні з цієї налаштуванням! За ефективністю ця настройка близька до виконання локальних команд від імені root. Як ви бачите на малюнку 2, я вказав mick як суперкористувача, тому що я користуюся цим логіном для системного адмінстрірованія.
У списку read list вказуються ті користувачі, які за умовчанням мають права тільки для читання. Як видно на малюнку 2, в цьому списку знаходяться користувачі knute, pepe, skippy.
Аналогічно, write list визначає перелік користувачів, що володіють правами як на читання, так і на запис. У мене це mick.
Отже, ми розібралися з глобальними змінними. Щоб застосувати зроблені зміни, тобто зберегти їх в файл /etc/samba/samba.conf. натисніть на кнопці Commit Changes.
Деякі змінні, значення яких ви поміняли на свої значення (наприклад valid users), можуть не відобразитися при відновленні екрана. Щоб побачити їх, просто натисніть на кнопці Advanced View (слід за написом Change View To: у верхній частині сторінки).
Параметри облікових записів
Перший крок виконується в різних системах по-різному - через графічний інтерфейс (наприклад через GNOME-аплет Користувачі і групи) або за допомогою консольних команд useradd, userdel і т.д.
Другим кроком встановлюємо пароль новоствореного користувача, наприклад так:
Очевидно, після введення початкового пароля (наприклад, 12345) ви повинні таємно передати його Пепе, після чого той зможе змінити цей пароль на власний варіант (але це станеться тільки на четвертому кроці).
Третім кроком ми скористаємося командою smbpasswd. таким чином створимо для Linux-користувача запис в базі даних паролів Samba. Приблизно так:
Нарешті, зайдіть в систему від імені Пепе (тільки якщо ви не встановили параметр його оболонки в / bin / false на першому кроці) і командуйте:
У Пепе запитають його старий пароль, бажаний новий і його підтвердження для уникнення помилки. Якщо все в порядку, Samba змінить обидва паролі Пепе - Samba-пароль і Linux-пароль. Зверніть увагу, що ця синхронізація не відбувається, коли ви створюєте початкову запис pepe в Samba-базі (на третьому кроці).
Відновлення файлу smb.conf в Debian / Ubuntu
Вельми вірогідна ситуація, коли длубаючись з настройками Samba, ви повністю втратите і доведеться просто почати спочатку, повернутися до первісного файлу /etc/samba/smb.conf. Що якщо ви забули зробити резервну копію?
Swat вам допоможе. Поруч з кожним параметром конфігурації є кнопка Set Default. Натиснувши її, ви повернете значення, яке було в момент установки Samba. Однак зі свого досвіду скажу, що ці кнопки поводяться непередбачувано. Іноді некоректно повертаються нульові значення, а саме по собі натискання кнопки довго обробляється.
Якщо у вас Debian або його похідні (наприклад, Ubuntu), тоді краще скористатися таким способом. Щоб отримати свіжий файл smb.conf, потрібно повністю видалити пакет samba-common. а потім знову встановити його. При цьому будуть видалені залежні від нього пакети, так що відзначте для себе, що ви видаляєте, щоб потім відновити.
Після того, як ви видалили samba-common. але ще не встановили його знову, перевірте, щоб файл smb.conf точно був видалений (якщо що - видаліть вручну).
висновок
Отже, сценарій описаний, завдяки Swat встановлені базові параметри, і ми почали додавати користувачів. У наступній статті ми будемо створювати спільні ресурси. Наступні джерела інформації допоможуть вам.