Служба захисту користувачів

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Зміст

Введення

  1. Відділення звичайних користувачів від системних

  2. Визначення кодів UID і GID

  3. Створення облікового запису користувача командою USERADD

  4. Створення облікового запису користувача командою ADDUSER

  5. Зміна облікового запису користувача

  6. Видалення користувача

  7. Блокування облікових записів

  8. Управління паролями

  9. Створення груп командою GROUPADD

  10. Видалення груп командою GROUPDEL

  11. Створення системного користувача

  12. Створення системних груп командою ADDGROUP

  13. Зміна приналежності до груп

  14. Перевірка цілісності файлів паролів

  15. Серійне додавання нових користувачів

  16. Серійна заміна паролів

  17. Серійне включення користувачів у групи

  18. Тимчасове використання привілеїв ROOT

  19. Тимчасове надання привілеїв ROOT командою SUDO

  20. Паролі. Служба тіньового зберігання паролів

  21. Додаткові модулі аутентифікації

Список використаної літератури

Висновки

Введення

У системі Linux як "живим" користувачам, так і системним процесам призначаються облікові записи (accounts), необхідні для управління привілеями та правилами доступу.

Два найважливіших принципи безпеки Linux:

1. Завжди використовуйте мінімальний рівень привілеїв, необхідний для виконання роботи.

2. Використовуйте сильні паролі.

У Linux входить набір утиліт для виконання операцій з користувачами і групами: useradd, groupadd, userdel, groupdel, usermod, groupmod, passwd, chfn і chsh.

Вони входять в сімейство "Shadow Suite", розроблене Джуліаном Френсісом Хо (Julianne Frances Haugh) для поліпшення захисту паролів і спрощення операцій управління обліковими записами. Колись всі файли доводилося редагувати окремо, а шифровані паролі зберігалися у файлі / etc / passwd.

Але оскільки файл / etc / passwd повинен залишатися доступним для читання, зберігання паролів в ньому, нехай навіть у зашифрованому вигляді, загрожує потенційними неприємностями. Скопіювавши цей файл, будь-хто теоретично зможе обчислити паролі. Переміщення зашифрованих паролів в файл / etc / shadow, доступний тільки для привілейованого користувача root, створює корисний додатковий рівень захисту.

Команда useradd по-різному працює в різних системах. Традиційно вона включала всіх нових користувачів в одну групу users (lOO). Усі домашні каталоги ставали загальнодоступними, тому що всі користувачі належали до однієї групи. У Red Hat ця схема була замінена схемою "User Privacy Group".

Команда useradd в Red Hat створює для кожного нового користувача приватну групу, ідентифікатор якої (GID) збігається з ідентифікатором користувача (UID). Зрозуміло, різні користувачі мають різними потребами, деякі з них можуть віддати перевагу, щоб їх каталоги були відкритими. Фундаментальний принцип безпеки записано: "спочатку все заборонити, потім вирішувати в міру необхідності".

Adduser і addgroup, сценарні Perl-обгортки для команд useradd і groupadd, з'явилися відносно недавно. Ці сценарії повністю керують вашими діями при створенні нового користувача. Вони дуже зручні для створення окремих облікових записів, але не для серійних (batch) операцій (хіба що якщо ви самостійно внесете зміни в сценарії adduser і addgroup). У розділі 15 наведено сценарій для серійного створення нових користувачів та паролів.

1. Відділення звичайних користувачів від системних

У будь-якій системі Linux, поряд з обліковими записами звичайних користувачів, існують системні облікові записи (root, uucp, daemon і т. д.). У файлі / etc / passwd ці дві категорії не відокремлюються один від одного. Як відокремити облікові записи "живих" користувачів від системних облікових записів?

Скориставшись схемою нумерації ідентифікаторів користувачів в Linux (UID) і можливістю сортування по полях або стовпцях в awk.

Приклад для системи на базі Debian або Slackware:

$ Awk-F: '$ 3> 999 {print $ 0}' / etc / passwd

nobody: x: 65534:65534: nobody: / nonexi stent: / bi n / sh

carl a: x: 1000:1000:: / home / carl a: / bin / bash

foober: x: 1001:1001:: / home / test: / bi n / false

bitchkat: x: 1002:1002:: / home/test2 /: bin / bash

Colby: x: 1003:1003:: / home/test3: / bin / bash

Відображення підмножини записів:

$ Awk-F: '($ 3> - 1000) & & ($ 3 <= 1005) {print $ 0}' / etc / passwd

Для систем Red Hat і SuSE:

* Awk-F: '$ 3> 499 {print $ 0}' / etc / passwd

Алфавітна сортування результату:

$ Awk-F: '$ 3> 499 {print $ 0}' / etc / passwd | sort

Описаний прийом особливо зручний тоді, коли схему нумерації UID в групах вдається спроектувати заздалегідь.

Наприклад:

  • Trainers 1000-1100;

  • Coaches 1101-1200;

  • Players 1200-2000.

Якщо дотримуватися такої схеми, в нашому розпорядженні з'явиться простий інструмент для сортування користувачів і їх подальшого розбиття на групи.

2. Визначення кодів UID і GID

Якщо необхідно дізнатися код UID користувача та з'ясувати, до яких груп він належить, скористайтеся командою id:

$ Id carl a

uid-lOOO (carla) gid = 1000 (carla)

groups = 1000 (carla) .20 (dialout), 24 (cdrom), 25 (floppy), 29 (audio), 30 (dip), 44 (video),

105 (windows), 432 (usb). LOOl (cdrecording)

Ключі команди id:

-U - висновок тільки кодів UID;

-G - висновок тільки кодів GID;

-Gn - висновок імені первинної групи користувача замість GID.

3. Створення облікового запису користувача командою USERADD

Для створення облікового запису можна скористатися командою useradd-m для створення імені користувача, його домашнього каталогу та інших змінних оточення, потім призначте пароль командою passwd-e. До створення пароля профіль залишається неактивною. Далі наводиться найпростіший варіант виклику. З прапором-m команда створює домашній каталог і копіює в нього файли з / etc / skel:

# Useradd-m ім'я користувача

Як правило, в команду також включається повне ім'я користувача з прапором - з (Comment, тобто коментар). Поставте чотири коми після імені користувача, щоб інші поля коментаря (робочий телефон і т. д.) залишилися порожніми.

# Useradd-m-з Grace Hopper ghopper

Ім'я користувача повинно бути унікальним.

Можна виконати команду passwd-e. Прапор-е означає, що пароль стає недійсним після першого входу, що змушує користувача змінити його:

# Passwd-e ghopper

Enter new UNIX password:

Retype new UNIX password:

passwd: password updated successfully

Оточення користувача формується на підставі стандартного вмісту / etc / default / useradd і / etc / skel. Конфігурація useradd за замовчуванням відображається командою

# Useradd-D

Будь-які значення за умовчанням можуть перевизначатися в командному рядку -

наприклад, UID і командний процесор:

# Useradd-u 1500-s tcsh ghopper

Також існує можливість розширення стандартної конфігурації -

наприклад, включити користувача в додаткові групи:

# Useradd-G users, cdrecord.dialout ghopper

Useradd, на відміну від свого родича adduser, прекрасно працює в сценаріях (наприклад, в сценарії mass_useradd з розділу 15).

Поля коментаря також відомі під назвою даних GECOS. Дані GECOS складаються з п'яти полів, розділених комами. Якщо ви збираєтеся використовувати поле коментаря, увімкніть всі чотири коми, навіть якщо значення відповідних атрибутів не вказуються. У довгостроковій перспективі це окупиться, особливо при виконанні серійних операцій і при пошуку. Традиційно в дані GECOS входить повне ім'я, номер кімнати, робочий телефон, домашній телефон та інше (довільна інформація). Повне ім'я використовується багатьма зовнішніми програмами - зокрема, поштовими серверами, проте інші поля можна використовувати так, як ви вважаєте за потрібне. Наприклад, вони дозволяють організувати довільне розподіл користувачів на групи і їх сортування (див. розділ 17).

4. Створення облікового запису користувача командою ADDUSER

Використання adduser замість useradd допомагає ввести всі дані конфігурації нового користувача - пароль, дані GECOS і т. д.

Введіть команду adduser ім'я_користувача і введіть запитувані дані:

# Adduser anitab

Adding user anitab ...

Adding new group anitab (1008).

Adding new user anitab (1008) with group anitab.

Creating new home directory / home / anitab.

Copying files from / etc / skel

Enter new UNIX password:

Retype new UNIX password:

passwd: password updated successfully

Changing the user information for anitab

Enter the new value, or press ENTER for the default

Full name []:

Room Number []:

Work Phone []:

Home Phone []:

Other []:

Is the information correct [y / n] у

У командному рядку adduser можна вказати код UID, перевизначений значення за замовчуванням:

# Adduser - uid 1500 anitab

Стандартна конфігурація adduser задається у файлі / etc / adduser.conf.

5. Зміна облікового запису користувача

Іноді потрібно внести зміни в існуючу обліковий запис - наприклад, змінити ім'я користувача або UID, оновити дані GECOS або домашній каталог.

Скористайтеся командами usermod і chfn.

Змінювати можна будь-які атрибути, включаючи ім'я користувача та код UID. Щоб змінити ім'я, спочатку вкажіть нове ім'я, а потім старе:

# Usermod-I aborg anitab

Наступна команда змінює UID (у наступному прикладі початкове значення 1050 змінюється на 1200) без зміни імені користувача. Спочатку вказується новий код UID, потім ім'я:

# Usermod-u 1200 anitab

Належність користувача до груп не змінюється. Всі файли в домашньому каталозі користувача автоматично оновлюються новим кодом U1D. Тим не менш вам доведеться вручну знайти і змінити всі файли за межами домашнього каталогу (crontab, поштові каталоги, тимчасові файли / tmp та файли в загальних каталогах).

Для пошуку файлів можна скористатися командою find із зазначенням вихідного коду UID, якщо ви хочете переглянути список файлів перед внесенням змін:

# Find /-uid 1050

/ Usr / src / include / lber.h

/ Usr/src/include/1 dap.h

/ Usr / src / include / ldbm.h

Зміна власника файлів здійснюється командою chown:

# Chown 1200 / usr / scr / include / lber.h

Послідовна зміна власника для кожного файлу - заняття досить обтяжлива. Команди chown і find можуть виконати цю роботу за вас:

# Find /-uid 1050-exec chown-v 1200 {} ​​\;

changed owner of '/ usr / src / include / lber.h' to 1200

changed owner of '/ usr / src / include / ldap.h' to 1200

changed owner of '/ usr / src / include / ldbm.h' to 1200

Наступна команда переміщує домашній каталог користувача з усім вмістом. Якщо новий каталог не існує, він автоматично створюється. Спочатку вказується новий каталог, а потім ім'я користувача. Обов'язково використовуйте прапори-d і - m:

# Usermod-d / serverl / home / aborg /-m aborg

Зміна даних GECOS:

# Chfn aborg

Користувач може передати при виклику chfn дані GECOS на свій розсуд. Виняток становлять два поля: повне ім'я та "інше". Вміст цих полів може редагуватись лише суперкористувачем.

6. Видалення користувача

Іноді потрібно видалити з системи обліковий запис користувача і знайти всі файли, що належать цьому користувачеві.

Обліковий запис видаляється командою userdeL. Пошук файлів, що належать користувачеві, здійснюється командою find.

Видалення облікового запису:

# Userdel aborg

Щоб команда userdel спрацювала, користувач не може перебувати в системі, і під його ім'ям не повинні бути запущені процеси.

Команда userdel видаляє дані користувача з усіх системних файлів (/ etc / passwd, / etc / shadow, / etc / group), але не чіпає файли, що належать цьому користувачеві. Щоб видалити домашній каталог користувача і поштову скриньку, додайте прапор - r:

# Userdel - r aborg

Інші файли доводиться шукати окремо:

# Find /-uid 1200

7. Блокування облікових записів

Блокування облікової запис і тимчасова заборона користувачеві на вхід у систему, але без видалення облікового запису, здійснюється за допомогою ключа-l (lock):

# Passwd-I aborg.

Password changed.

Наступна команда знімає блокування з облікового запису:

# Passwd-u aborg

Ще один спосіб заблокувати обліковий запис - вставити знак оклику в початок поля пароля у файлі / etc / shadow:

foobar:! $ l $ wiD1Qr34 $ mitGZA76MSYCY04AHIYl: 12466:0:99999:7:::

Також можна замінити х у поле пароля у файлі / etc / passwd зірочкою (*):

foober: *: 1025:1025: Foober Smith ..,:/ home / foober: / bin / bash

Нарешті, можна позбавити користувача доступу до командного процесора:

# Usermod-s / bin / false foober

8. Керування паролями

Операції призначення і налаштування паролів здійснюються командою passwd.

Скидання або зміна паролю:

# Passwd aborg

Користувач також може змінити свій пароль:

aborg @ server04: ~ $ passwd

Наступна команда обмежує термін дії пароля aborg шістьма місяцями, з видачею попередження за п'ять днів:

# Passwd - х 180-w 5-il aborg

Щоб переглянути паролі користувача, скористайтеся командою

# Passwd-S option

aborg P 02/18/2004 0 10 5 1

Пароль може містити цифри, букви і розділові знаки, при цьому вони чутливі до регістру символів. Прогалини і функціональні клавіші не допускаються. Рекомендується використовувати сильні паролі, тобто не вибирати в якості пароля імена, слова зі словника, дні народження або адреси. Паролі рекомендується записувати і зберігати в надійному місці. Паролі Linux не відновлюються. При втраті пароля слід звернутися до надкористувачу для отримання нового пароля.

9. Створення груп командою GROUPADD

Скористайтеся командою groupadd. Команда створює нову групу з системним значенням, налаштованим в / etc / default / useradd і / etc / skeL /:

# Groupadd newgroup

Системна група створюється з ключем - r:

# Groupadd-r newgroup

Ключ - r є специфічним для Red Hat. Якщо у вашій версії groupadd він не підтримується, вкажіть наступний доступний номер системної групи:

# Groupadd-g 127 newgroup

Наступний доступний номер групи можна дізнатися з файлу / etc / group.

Рекомендується використовувати логічно послідовну схему нумерації груп. З точки зору Linux це несуттєво, але зате така схема позбавить вас від багатьох турбот. У Red Hat номери системних груп лежать в діапазоні 0-499, а в Debian - в діапазоні 100-999.

10. Видалення груп командою GROUPDEL

Спочатку, якщо буде потрібно, переназначьте номери груп редагуванням файлу

/ Etc / grou p. Просто скопіюйте дані користувачів і вставте їх в іншу групу. Потім видаліть групу командою groupdel, після чого скористайтеся командами find і chgrp для пошуку і передачі права володіння файлами іншій групі.

Видалення групи:

# Groupdel імя_группи

Видалення групи вважається клопіткою операцією, тому що не існує утиліт для автоматичного перенесення / видалення файлів або користувачів, що входять в групу. Вам доведеться самостійно знайти їх і змінити коди GID вручну:

# Find /-gid 750

/ Usr / src / i nclude/1ber.h

/ Usr / src / include / ldap.h

/ Usr / src / include / ldbm.h

Зміни можна вносити послідовно:

# Chgrp 800 / usr / src / include / lber.h

А можна виконати заміну одночасно за допомогою спільного використання find і chgrp:

# Find /-gid 750-exec chgrp-v 800 {} ​​\;

11. Створення системного користувача

Якщо є необхідність створити системного користувача для таких програм, як Postfix, Apache або Squid рекомендується призначити власні облікові записи користувачів замість того, щоб на швидку руку "звалити" їх на універсального користувача nobody.

Завдання може бути вирішена як командою adduser, так і useradd. З adduser це робиться приблизно так:

# Adduser - system - no-create-home - group squid

Adding system user squid ...

Adding new group squid (109).

Adding new user squid (109) with group squid

Not creating home directory

Перевірте результат:

# Cat / etc / passwd | grep squid

squid: x: 109:109:: / home / squid: / bin / false

Хоча підрядок / home / squid присутній, домашній каталог не створюється.

А ось як те ж саме робиться в useradd:

# Useradd-d / dev / nuil-g squid-s / bin / false squid

Багато демони і процеси, яким необхідна системна обліковий запис, за замовчуванням використовують nobody, але все більше додатків вимагає створення власної унікальної облікового запису. Намагайтеся використовувати унікальну обліковий запис там, де це можливо, тому що це підвищує рівень безпеки системи. Обліковий запис nobody найчастіше стає об'єктом хакерських атак, тому збирати різноманітні процеси і демонів в єдину ціль для атаки не варто.

12. Створення системних груп командою ADDGROUP

Створення системних груп сценарієм addgroup відбувається наступним чином:

# Addgroup - - system група

У командному рядку можна передати код GID, перевизначений значення за замовчуванням.

Не забудьте дотримуватися схеми нумерації груп, прийнятої в вашому дистрибутиві Linux:

# Addgroup - system - gid 300 групі

13. Зміна приналежності до груп

Буває, що потрібно включити користувачів в деяку групу або виключити їх з цієї групи, для цього відредагуйте файл / etc / groups вручну. Просто скопіюйте та вставте запису, це найшвидший спосіб.

Для вирішення завдання також можна скористатися командами add user і usermod, але будьте обережні: adduser дозволяє за один виклик включити користувача тільки в одну групу, а команда usermod, що дозволяє перерахувати кілька груп, стирає попередні дані про приналежності користувача до груп.

14. Перевірка цілісності файлів паролів

Файли паролів (/ etc / group, / etc / passwd, / etc / shadow і / etc / gshadow) інтенсивно використовуються в процесі адміністрування, і вам потрібно якийсь спосіб для перевірки правильності їх синтаксису.

Файли / etc / passwd і / etc / shadow перевіряються командою pwck, а файли / etc / group та / etc / gshadow - командою grpek:

# Pwck

# Grpek

Якщо команда завершується без видачі повідомлень, значить, помилки не виявлені. В іншому випадку команда виводить перелік помилок. Помилки треба буде виправити, інакше робота програми завершиться. Щоб обмежитися переглядом всіх помилок, запустіть програму в режимі "тільки читання":

# Pwck-r

# Grpek - r

Програма pwck перевіряє логічну цілісність файлів / etc / passwd і / etc / shadow.

Вона послідовно аналізує записи і перевіряє, що кожен запис містить:

  • правильне кількість полів;

  • унікальний код;

  • дійсні ідентифікатори користувача та групи;

  • дійсну первинну групу;

  • дійсний домашній каталог;

  • дійсний командний процесор.

Pwck повідомляє про всі записи, що не мають пароля. Коли pwck виявляє помилки, ви можете або видалити обліковий запис, або проігнорувати її. У другому випадку pwck припиняє роботу і не перевіряє нові рядки (за одним винятком: виявивши повторюється ім'я, програма продовжить перевірку навіть в тому випадку, якщо ви не видалите обліковий запис).

Програма grpck аналізує файли / etc / group та / etc / gshadow і перевіряє, що кожен запис містить:

  • правильне кількість полів;

  • унікальне ім'я групи;

  • дійсний список членів та адміністраторів.

15. Серійне додавання нових користувачів

Для серійного додавання нових користувачів системний адміністратор може скористатися сценарієм mass_useradd (лістинг 1). Це сценарій командного процесора, тому він повинен працювати практично скрізь. Також знадобиться сценарій mass_passwd (лістинг 2). Необхідно зберегти ці два сценарії в одному каталозі. Також слід встановити утиліту pwgen, що генерує паролі.

Створюємо список імен і паролів у форматі:

ім'я_користувача: ім'я прізвище

Також можна додати додаткові дані GECOS:

dawns: Dawn Marie Schroder, ,123-4567, trainers

Потім запустіть сценарій mass_useradd. Сценарій створює записи в / etc / passwd, / etc / group та / etc / shadow, домашні каталоги, персональні групи і паролі, які стають недійсними після першого використання.

Наступна команда наказує mass_useradd використовувати список нових користувачів з файлу newusers із заміною / створенням вихідного файлу newLogins.txt:

sh mass_useradd <newusers> newlogins.txt

Приєднання нових імен і паролів до файлу newlogins.txt:

sh mass_useradd <newusers>> newlogins.txt

Крім вихідного файлу, який представляє собою звичайний список, mass_passwd створює для кожного користувача окремий файл з інструкціями. Інструкції роздруковуються і лунають користувачам. Ці файли, а також файл журналу зберігаються в домашньому каталозі

користувача, що запустив сценарій (зазвичай root):

# Ls / root / mass_passwds

dawns.passwd.txt nikitah.passwd.txt mass_passwd.log rubst.passwd.txt

У сценаріях використовуються стандартні засоби Shadow Suite, тому вони легко налаштовуються за допомогою регулювання параметрів утиліт, задіяних в їх роботі.

Файл вихідних даних виглядає так:

dawns shabaefi 1002

nikitah gohbinga 1003

rubst ahtoohaa 1004

У файл / etc / passwd додаються запису виду

dawns: x: 1002:1002: Dawn Mari Schroder, .123-4567, trainers: / home / dawns: / bin / bash

nikitah: x: 1003:1003: Nikita Horse .. 123-4567, equine: / home / nikitah: / bin / bash

rubst: x: 1004:1004: Rubs The Cat.101, ,234-5678., test: / home / rubst: / bin / bash

Лістинг 1. Програма mass_useradd

#! / Bin / sh

# #

# # Використання:

# # Sh mass_useradd <inputfile>> new-passwords.txt

# #

PATH = / usr / local / sbin: / usr / sbin: / sbin: / usr / local / bin: / usr / bin: / bin: $ PATH

# Читання рядка вхідних даних.

# Формат вхідного файлу:

# Ім'я_користувача: ім'я прізвище

# Щоб як роздільник використовувалася кома, замініть

# IFS = ": $ IFS" на IFS = ", $ IFS"

while IFS = ": $ IFS" read username realname: do

# Спочатку видаляємо порожні рядки і коментарі

case "Susername" in

''| \ # *) Continue;

esac

# Читання / etc / passwd і / etc / group та обчислення

# Наступних вільних значень UID and GID.

# Програма починає з {id = 1000}, змініть для своєї системи

id = $ ({getent passwd; getent group:} | cut-f3-d: | sort-un

awk 'BEGIN {id = 1000}

$ 1 == id {id + +}

$ 1> id {print id: exit} ')

# Додавання нових користувачів в / etc / group та / etc / passwd.

# Створення домашніх каталогів командою chmod 700

# Всі параметри groupadd, useradd і chmod

# Можна змінити відповідно до специфіки системи.

groupadd-g $ id $ username

useradd-m-c "$ realname"-g $ username-u $ id $ username

chmod 700 / home / $ username

# Призначення пароля. Для цієї мети викликається інший сценарій

# Mass_passwd, який може використовуватися незалежно.

# Сценарій mass_passwd виводить ім'я користувача, пароль

# І ідентифікатор користувача.

$ (Dirname $ 0) / lmass_passwd-M $ username

done

Лістинг 2. Програма mass_passwd

#! / Bin / sh

# # Каталог для збереження файлів "username.passwd.txt"

# # Якщо каталог не існує, він буде створений.

text_file_dir = $ HOME / mass_passwds

log_file = mass_passwd.log

# # Мінімальний ідентифікатор для "звичайних" користувачів

min_uid = 1000

# # Довжина генеруються паролів

pass_len = 8

# # Термін дії паролів (у днях)

pass_expire = 90

# # Отримання імені програми (швидше за все, "mass_passwd")

prog = $ {0 ##*/}

usage () {

echo "usage: $ prog [-v] [-n] username ..."

echo "$ prog [-v] [-n] [-g] groupname ..."

echo "$ prog [-v] [-n] [-a]"

echo "-g change passwords of everyone in a group"

echo "-a change everyone's password"

echo "-v verbose"

echo "-n don't do it. just simulate (implies-v)"

exit 0

}

short_usage () {

echo> & 2 "usage: $ prog [-v] [-g] [-a] name ..."

echo> & 2 "$ prog-h for help"

exit 1

# Echo something, but only if in verbose mode

vecho () {

test-n "$ verbose" & & echo "$ @"

}

# Побудова випадкового пароля.

# Якщо програма pwgen доступна, використовуємо

# Якщо програма недоступна, читаємо / dev / urandom і відфільтровує все

# Символи, які не є алфавітно-цифровими, поки кількість символів

# Не виявиться достатнім для пароля. Символи в "tr-d" визначають

# ASCII-коди (у вісімковій запису) діапазонів видаляються символів.

randompass () {

pwgen $ pass_len 1 2> & - | |

tr-d '[\ 000 - \ 057] [\ 072 - \ 100] [\ 133 - \ 140] [\ 173 - \ 377]' </ dev / urandom |

dd bs = $ pass_len count = l 2> & -

}

# Функція інтерпретує режим (користувачі / групи / серійна заміна)

# І повертає список імен користувачів

get_users () {

if [-n "$ all_mode"]: then

getent passwd | awk-F: '{if ($ 3> =' $ min_uid ') (print $ 1}}'

return

fi

if [-z "$ group_mode"]: then

echo "$ @"

return

while [-n "$ 1"]: do

g_ent = $ (getent group "$ 1" 2> & -)

if [-z "$ g_ent"]: then

echo> & 2 "warning: $ 1: group not found"

continue

fi

members = $ {g_ent ##*:}

gid = $ {g_ent%: *}

gid = $ {gid ##*:}

echo "$ members" | tr '.' ''

getent passwd | awk-F: '{if ($ 4 ==' $ gid ') {print $ 1}}'

shift

done

}

# # Основний код

group_mode =: verbose =: all_mode =: simulate =: eol =:

while [-z "$ eol"]: do

case "$ 1" in

-G) group_mode = l: shift::

-V) verbose = l: shift;:

-A) all_mode = l: shift::

-N) simulate = true: verbose = l: shift::

-M) mass_out = l: shift:: # we're called from mass_useradd

-H | -? | - Help) usage::

-) Eol-1; shift::

-*) Short_usage::

*) Eol = l::

esac

done

# Налаштування безпечного оточення і каталогу для текстових файлів.

# Призначених для виводу на друк.

PATH = / usr / sbin: / usr / bin: $ PATH

umask 077

mkdi r-р $ text_file_dir

cd $ text_file_dir

processed = 0

for u in $ (get_users "$@"): do

vecho-n "generating password for $ u. .."

pass = $ (randompass)

echo "$ u: $ pass" | eval $ simulate chpasswd

vecho-n "."

eval $ simulate change-M $ pass_expire-d 2003-01-01 $ u

vecho-n "."

rm-f $ u.passwd.txt

echo> $ u.passwd.txt "\

-------------------------------------------------- -------------------------------------------------- --------------------

Login name: $ u

Password: $ pass

Please log in and change your password: the system should prompt you to do this when you log in. You can change your password at any time with the 'passwd' command. Choose a strong password - everyday words, birthdays, names of people or animals, all these are too easy to guess.

Also, DO NOT give your password to anyone, ever. The IT staff will never ask you for your password, and neither should anyone else. You will be held responsible for all activity done via your account.

-------------------------------------------------- -------------------------------------------------- ----------------------

printf>> $ log_file "$ (date)%-12s% s \ \ n" $ u $ pass

vecho "$ pass"

if [-n "$ mass_out"]: then

uid = $ (getent passwd $ u | cut-f3-d:)

echo-e "$ u \ \ t $ pass \ \ t $ uid"

processed = $ (expr $ p rocessed + 1)

done

if [$ processed-gt 0]: then

test-z "$ mass_out" & &

echo> & 2 "$ processed password (s) reset - see $ text_file_dir / $ log_file"

else

echo> & 2 "no users specified - see '$ prog-h' for help"

fi

16. Серійна заміна паролів

Для серійної зміни паролів можна скористатися сценарієм mass_passwd з розділу 15. Сценарій дозволяє задати склад користувачів трьома різними способами:

# Mass_passwd пользователь1 пользователь2 ...

# Masspasswd-g група група ...

# Mass_passwd-a

У першому випадку передається список імен користувачів, розділених пробілами.

У другому випадку змінюються паролі користувачів, що входять у вказані групи.

У третьому випадку змінюються всі паролі з / etc / passwd.

Сценарій mass_passwd генерує для кожного користувача окремий файл із зазначенням нових паролів і інструкціями, які ви вважаєте за потрібне включити. Це дозволяє легко роздрукувати окрему інструкцію для кожного користувача.

Ключ - n тестує команду без її фактичного виконання:

#. / Mass_passwd-v-g-n usergroup

generating password for dawns ... teivuphu

generating password for nikitah ... kohfahsh

2 password (s) reset - see / root / mass_passwd / mass_passwd.log

Паролі залишаються колишніми, виконання команди в цьому режимі всього лише перевіряє параметри перед внесенням змін.

17. Серійне включення користувачів у групи

Для того щоб додати велику кількість користувачів у групу потрібно вставити список імен прямо у файл / etc / group. Далі описаний швидкий спосіб побудови списку користувачів для вставки в / etc / group. Він заснований на схемі нумерації UID, що дозволяє легко відсортувати потрібну групу користувачів. Для прикладу скористаємося схемою "Trainers / Coaches / Players ", описаної в розділі 1. Додамо до групи Trainers кілька нових членів:

$ Awk-F: '($ 3> = 1050) & & ($ 3 <= 1060) {print $ 1}' / etc / passwd | tr '\ n' ','

bcool.bkind.fmow.kthxbye.oknodo

Далі копіюємо і вставляємо список в / etc / group.

А якщо у вашій системі немає акуратною, чіткої схеми нумерації UID, то можна скористатися даними GECOS. Слід вибрати одне з полів для зберігання мітки.

Поле "інше" найкраще підходить для цієї мети, оскільки користувачі не можуть змінювати його на свій розсуд. Воно знаходиться в даних GECOS -

п'яти полів, розділених комами. Дані GECOS виглядають приблизно так:

bcool: х: 1300:1300: Bob Cool .... trainer: / home / bkind: / bin / bash

bkind: x: 1055:1055: Bev Kind .... trainer: / home / bkind: / bin / bash

Після додавання міток вибірка користувачів легко проводиться за допомогою grep і awk:

$ Cat / etc / passwd | grep trainer awk-F: '{print $ 1}' | tr '\ n' ','

bkind.bcool.

18. Тимчасове використання привілеїв ROOT

Коли буде потрібно виконати якусь адміністративну операцію, скористайтеся командою su (Switch User):

carla @ windbag: ~ $ su

Password:

root @ windbag: / home / carla #

Потім поверніться до своєї "основний особистості":

root @ windbag: / home / carla # exit

exit

carla @ windbag: ~ $

Переключення на root з відновленням конфігурації оточення і командного процесора r oot:

carla @ windbag: ~ $ su -

Password:

root @ windbag: / home / carla ~ #

Перехід на інший командний інтерпретатор:

$ Su - - shell = tcsh

Password:

Доступні командні процесори перераховані в / etc / shells.

Команда su дозволяє переключитися на будь-який обліковий запис, пароль якої вам відомий. Дефіс після su істотно впливає на результат виконання команди. Без дефіса команда зберігає стару системну конфігурацію і змінні оточення - командний процесор, редактор за замовчуванням, шляхи та umask.

19. Тимчасовий надання привілеїв ROOT командою SUDO

Потрібно доручити деякі операції адміністрування системи іншим користувачам або створити додатковий рівень безпеки для ваших адміністративних потреб, але це потрібно зробити так, щоб міць привілеїв root використовувалася в обмеженому обсязі, не розкриваючи пароль root.

Скористайтеся sudo - командою, яка надає обмежені права root

конкретним користувачам для вирішення конкретних завдань і реєструє їх дії без повідомлення пароля root.

Припустимо, є користувач jhaugh, якому ви хочете надати повні права root. Оскільки користувачі sudo мають власні паролі, пароль root залишається захищеним. Відредагуйте файл / etc / sudoers командою visudo - файл відкривається в редакторі за замовчуванням.

# Visudo

# Файл sudoers

#

# Цей файл ПОВИНЕН редагуватися командою 'visudo'

# З правами root.

# За додатковою інформацією про запис в файл

# Sudoers звертайтеся до man-сторінці.

#

# Спеціфікаціяпсевдонімов хостів

# Специфікація псевдонімів користувачів

# Специфікація псевдонімів команд

# Специфікація привілеїв користувачів

root ALL = (ALL) ALL

Для початку створіть псевдонім хоста:

Host_Alias ​​LOCALHOST = local host

У секції "Специфікація привілеїв користувачів" ("User privilege specification") додаються окремі учасники:

jhaugh ALL = (ALL) ALL

Цей рядок надає jhaugh привілеї root для виконання будь-яких операцій в системі і на підключених комп'ютерах. Припустимо, ви хочете надати іншому користувачеві tgwynne привілеї root тільки на локальному комп'ютері.

Увімкніть наступний запис:

tgwynne LOCALHOST = ALL

А користувачу msmith дозволяється тільки вимкнення локального комп'ютера:

msmith LOCALHOST = / sbin / shutdown, / sbin / halt

Надання групам звичайних користувачів права виключення своїх комп'ютерів:

# Специфікація псевдонімів хостів

Host_Alias ​​LOCALHOST = local host

# Специфікація псевдонімів користувачів

User_Alias ​​USERS = tgwynne. msmith. jhaugh, \

abyron. jwinters

# Специфікація псевдонімів команд

Cmnd_Alias ​​SHUTDOWN - / usr / sbin / shutdown, / usr / sbin / halt. \

/ Usг / sbin / reboot, / usr / sbin / poweroff

# Специфікація привілеїв користувачів

USERS LOCALHOST = SHUTDOWN

Виклик команди sudo виглядає так:

$ Sudo / usr / sbin / halt

Команда запитує у користувачів їх паролі, після чого завершується. Щоб дізнатися, виконання яких команд їм дозволено, користувачі можуть виконати таку команду:

$ Sudo -1

User jhaugh may run the following commands on this host:

(ALL) ALL

Команда sudo фіксує помилки в системному журналі і передає повідомлення root:

$ Sudo / usr / sbin / halt

carla is not in the sudoers file. This incident will be reported.

Ви можете визначати групи серверів і надавати користувачам привілеї для групи:

# Специфікація псевдонімів хостів

Host Alias ​​FILESERVERS - hostl. host2. host3

# Специфікація псевдонімів користувачів

User_Alias ​​FILESERVERADMINS = jhaugh. abyron. jwinters

# Специфікація псевдонімів команд

Cmnd_Alias ​​FILEUTILS = / bin / chgrp, / bin / chmod, \

/ Bin / chown, / bin / cp, / bin / dd, / bin / df, \

/ Bin / dir, / bin / dircolors, / bin / du, / bin / install, \

/ Bin / In, / bin / Is. / Bin / mkdir, / bin / mkinfo, \

/ Bin / mknod, / bin / mv, / bin / rm, / bin / rmdir, \

/ Bin / shred, / bin / touch, / bin / vdir sync

# Специфікація привілеїв користувачів

FILESERVADMIN FILESERVERS = FILEUTILS

Команда sudo також може застосовуватися для запуску користувачами сценаріїв (наприклад, сценаріїв архівації). Слід бути дуже обережними зі сценаріями, а також з командами, що надають доступ до командного процесора або запускають текстові редактори, так як з їх допомогою користувачі можуть вийти за межі своїх привілеїв.

20. Паролі. Служба тіньового зберігання паролів

У Linux кожен користувач має свій унікальний числовий ідентифікатор, за яким він ідентифікується в системі. Цьому ідентифікатору для більш зручної роботи відповідає ім'я користувача. Наприклад, для привілейованого користувача root зарезервований нульової ідентифікатор. Всі імена користувачів Linux і відповідні їм ідентифікатори зберігаються в спеціальному файлі passwd. Цей файл розташовується в каталозі etc, який, у свою чергу, знаходиться в кореневому каталозі системи /. Файл має звичайну текстову форму.

Приклад файлу для користувача імен passwd.

root: x: 0:0: root: / root: / bin / bash

bin: x: 1:1: bin: / bin: / sbin / nologin

daemon: x: 2:2: daemon: / sbin: / sbin / nologin

sync: x: 5:0: sync: / sbin: / bin / sync

mail: x: 8:12: mail: / var / spool / mail: / sbin / nologin

uucp: x: 10:14: uucp: / var / spool / uucp: / sbin / nologin

ftp:x:14:50:FTP User: / var / ftp: / sbin / nologin

Кожен запис в цьому файлі розділена двокрапками на 7 частин:

1. Ім'я користувача. Це поле містить ім'я користувача. Для операційної системи не важливо, яке ім'я має користувач, система орієнтується на ідентифікатор, а ім'я грає, мабуть, тільки інформаційне значення для людини, що працює в системі.

2. Поле пароля. Це поле в ранніх версіях Linux містило зашифрований пароль, а тепер, коли була введена технологія тіньових паролів, в цьому полі просто ставиться x. Практичного застосування це поле не має.

3. Ідентифікатор користувача (UID). У системі Linux кожен користувач має унікальний ідентифікаційний номер, який однозначно визначає його в системі. Цей номер використовується в різних цілях, наприклад, при установці прав доступу на файли. Права доступу будуть розглянуті в наступному розділі.

4. Ідентифікатор групи, до якої належить цей користувач (GID). Концепція груп буде розглянута в наступних розділах.

5. Поле коментаря. У цьому полі може зберігатися будь-яка додаткова інформація про користувача, наприклад, його повне ім'я.

6. Повний шлях до домашнього каталогу користувача. В ОС Linux для кожного користувача створюється його домашній каталог, в якому він може зберігати свої документи. Зазвичай ці каталоги розташовуються в директорії / home кореневого каталогу і за замовчуванням мають імена власників.

7. Шлях до командної оболонці. Останнє поле містить повний шлях до робочої оболонці користувача (за умовчанням такою оболонкою є bash). Ця оболонка запускається, коли користувач проходить процедуру аутентифікації. З метою безпеки для системних користувачів в цьому полі дуже часто ставиться / sbin / nologin. У наведеному прикладі користувач bin має саме таке значення в полі командного інтерпретатора. Сама по собі програма nologin не є оболонкою, єдине її призначення - не допустити вхід в систему. Тому при спробі входу під ім'ям користувача, у якого в якості робочої оболонки встановлена ​​/ sbin / nologin, нічого не відбувається. Зазвичай такий підхід використовується при створенні користувачів, які є системними, тобто від імені яких виконуються якісь дії всередині системи. А оскільки таким користувачам не потрібна робоча оболонка, гарним рішенням, з точки зору безпеки, буде установка поля оболонки в / sbin / nologin. Ще одним поширеним рішенням у таких ситуаціях є установка цього поля в значення / bin / false. Як відомо, в Linux, та й у більшості інших операційних систем, успішне завершення програми визначається типом, що повертається. Якщо повертається нульове значення, виконання програми пройшло успішно, якщо ненульове - в процесі виконання програми виникли помилки. На основі значення, що повертається система аутентифікації робить висновок про те, чи пройдена аутентифікація успішно або вона "провалилася". false - програма, яка незалежно від зовнішніх факторів завжди повертає значення, відмінне від нуля, що в даному випадку означає виникнення помилок при запуску оболонки, і управління знову повертається системі аутентифікації. При вході в систему програма, що надає доступ, виробляє читання інформації про користувачів якраз з файлу passwd. Право на запис в цьому файлі мають тільки привілейований користувач root, читати ж його можуть всі користувачі системи. Цей файл ніколи не редагується вручну, хоча, в принципі, це цілком припустимо. Зазвичай для редагування файлу користувачів використовують спеціальні програми: useradd, usermod і userdel.

Програма додавання useradd дозволяє додати нового користувача до системи. Для управління процесом створення користувача ця програма може приймати різні параметри в командному рядку. Наприклад, параметр-s задає використовуваний користувачем shell, а параметр-g - групу, до якої належить створюваний користувач.

Крім додавання запису про користувача в файл / etc / passwd, програма useradd створює домашній каталог користувача, який за замовчуванням має розміщуватись у директорії / home. Шлях до призначеного для користувача каталогу може бути визначений за допомогою параметра-d, за яким слідує повний шлях від кореневого каталогу до каталогу користувача.

Програма usermod дозволяє змінювати такі параметри, як робоча оболонка користувача, домашній каталог, група, ідентифікатор користувача і так далі. Неважко здогадатися, що виконує програма userdel. Вона видаляє користувача з системи. Докладна інформація про ці програми міститься у відповідних man-посібниках.

Ім'я користувача не є секретною інформацією, і його можуть без проблем дізнатися інші користувачі системи. Але в такому випадку повинна існувати небезпека входу одного користувача під ім'ям іншого. Однак цього не відбувається. Використовується таке поняття, як аутентифікація.

Аутентифікація - це встановлення автентичності користувача, тобто встановлення факту того, що користувач з таким ім'ям є саме тим, за кого себе видає.

Для аутентифікації в ОС Linux використовується вже давно перевірене і довело свою надійність засіб - пароль.

Пароль - це набір символів (секретне слово), відомий тільки його власнику і використовуваний для посвідчення його автентичності. Кожен користувач в системі має свій власний пароль. Наявність пароля - необхідна складова політики безпеки користувачів Linux. Пароль є як би пропуском користувача в систему. Без пароля, знаючи тільки ім'я користувача, проникнути в систему неможливо.

Паролі зберігаються в окремому файлі / etc / shadow. У ранніх версіях Linux імена і паролі користувачів зберігалися в одному файлі / etc / passwd. Але практика показала, що для забезпечення більш надійного захисту паролів необхідне створення окремого файлу для їх зберігання. Таким чином, технологія виділення окремого файлу shadow для зберігання паролів отримала назву технології "тіньових паролів".

Приклад файлу і його структура наведені нижче.

root: $ 1 $ pOy8fNrf $ uOh/dQlI03BMIdEAhWrE.0: 12369:0:99999:7:::

bin: *: 12245:0:99999:7:::

daemon: *: 12245:0:99999:7:::

sync: *: 12245:0:99999:7:::

Файл shadow, як і файл passwd, розділений на кілька частин двокрапками:

1. Ім'я користувача. Це поле просто дублюється з файлу passwd.

2. Хеш пароля. Пароль в Linux ніколи не зберігається у відкритому вигляді, на відміну від імені користувача. При установці пароля до збереження його у файлі він шифрується за спеціальним алгоритмом. За замовчуванням таким алгоритмом є алгоритм одностороннього шифрування DES (Data Encryption Standard).

Використання одностороннього алгоритму шифрування виключає можливість розшифровки пароля. Інші поля містять різну службову інформацію. Файл паролів має права лише на читання і тільки для суперкористувача. Його вміст є недоступним для пересічних користувачів, таким чином, виключається можливість розкриття зашифрованого пароля.

Для зміни пароля в Linux спочатку включена спеціальна програма passwd.

Як параметр у командному рядку вона отримує ім'я користувача і при запуску вимагає введення пароля для цього користувача. При введенні в цілях безпеки пароль не відображається на екрані монітора, існує дуже висока вірогідність допустити помилку, особливо коли пароль складається з цифр і символів різного регістру. Тому введення пароля здійснюється 2 рази для перевірки правильності введення. Після підтвердження пароль шифрується і зберігається у файлі / etc / shadow.

При вході в систему процедурою отримання імені та пароля користувача управляє програма mingetty. mingetty - це програма, що видає запрошення для введення імені користувача і пароля на віртуальну консоль.

Після її запуску на екрані монітора з'являється рядок-запрошення до введення імені та пароля користувача. Після введення імені та пароля програма передає управління програмі login. login - це програма-посередник, що здійснює перевірку існування, коректності та відповідності імені користувача і його пароль в системі. Пароль за допомогою механізмів аутентифікації шифрується і порівнюється з хешем з файлу. Після успішного завершення процедури аутентифікації програма login запускає системну оболонку для взаємодії користувача з операційною системою, так званий shell (від англ. shell - "оболонка"). Шлях до виконуваного файлу shell вказується в останньому сьомому полі запису файлу passwd. Зазвичай за умовчанням використовується bash (Bourne Shell). Видається запрошення до введення команд із символом # чи $ в кінці (за замовчуванням символ # використовується в запрошенні суперкористувача, а символ $ - у запрошенні звичайного користувача). З цього моменту система готова приймати від користувача команди на виконання. Для більш зручного керування доступом до ресурсів в Linux всі користувачі об'єднуються в групи. У даному випадку група - це безліч користувачів, об'єднаних за будь-яким критеріям. До якої групи належить користувач, говорить 4 полі реєстраційного запису у файлі passwd. Наявність груп дозволяє створити гнучку політику безпеки, яка грунтується на поділі доступу до ресурсів.

21. Додаткові модулі аутентифікації

PAM (Pluggable Authentication Modules) - підкачуємі модулі аутентифікації.

PAM є набором динамічно модулів, за допомогою яких привілейований користувач може вибирати, як додаток повинен здійснювати процес аутентифікації. Така технологія виявилася дуже корисна, особливо при появі різних методів аутентифікації користувача в системі. Ця технологія має дві основні переваги. Першим перевагою є модульність програм, які підтримують PAM. Це означає, що для застосування, що підтримує PAM, з'являється можливість змінити механізм аутентифікації користувачів без перекомпіляції програми, як кажуть "на ходу", достатньо змінити конфігураційний файл PAM. Друга перевага використання PAM полягає в тому, що адміністратор системи отримує повну свободу у виборі схеми аутентифікації для кожного окремого додатка, причому ця схема може бути досить складною і складеної з кількох етапів.

Єдиним невід'ємною вимогою для використання PAM є наявність спочатку вбудованих у додаток функцій роботи з бібліотекою PAM.

Зараз практично всі популярні програмні продукти мають вбудовану підтримку PAM.

Додаток взаємодіє з бібліотекою PAM, причому додатком невідомо, які алгоритми аутентифікації використовуються при перевірці автентичності користувача. Всі операції по аутентифікації, тобто шифрування пароля і його перевірку, виробляє бібліотека PAM. Бібліотека Linux-PAM виробляє читання параметрів аутентифікації програми з конфігураційного файлу і завантажує необхідні модулі в пам'ять. Потім завантажені модулі потрапляють в одну з чотирьох керуючих груп і поміщаються туди в порядку появи їх в конфігураційному файлі. Ці модулі при виклику бібліотекою Linux-PAM виконують різні завдання аутентифікації для програми. Для передачі текстової інформації, яку просять користувача, може бути використана вбудована функція обміну. Всі модулі PAM за замовчуванням розташовуються в каталозі / lib / security, а конфігураційні файли PAM - в каталозі / etc / pam.d. Ім'я кожного конфігураційного файлу, розташованого в каталозі / etc / pam.d, збігається з ім'ям програми, що використовує його. Наприклад, для програми login повний шлях до конфігураційного файлу PAM буде мати вигляд / etc / pam.d / login.

Вміст цього файлу може мати наступний вигляд:

#% PAM-1.0

auth required / lib / security / pam_securetty.so

auth required / lib / security / pam_stack.so service = system-auth

auth required / lib / security / pam_nologin.so

account required / lib / security / pam_stack.so service = system-auth

password required / lib / security / pam_stack.so service = system-auth

session required / lib / security / pam_stack.so service = system-auth

session required / lib / security / pam_limits.so

session optional / lib / security / pam_console.so

Кожен рядок файлу означає, що для вдалої аутентифікації користувач повинен пройти через вказаний модуль. Формат рядка будь-якого конфігураційного файлу PAM має вигляд:

тіп_модуля флаг_контроля путь_к_модулю параметри_модуля

Всі модулі бібліотеки PAM за функціональною ознакою поділяються на чотири типу:

auth - цей тип модулів дозволяє здійснювати два аспекти аутентифікації. По-перше, він виконує саму аутентифікацію, тобто встановлює факт того, що користувач дійсно той, за кого себе видає. Це може бути запит пароля або інші методи ідентифікації. По-друге, модуль може дозволити членство в групі (незалежно від файлу груп користувачів group) або визначити інші привілеї, грунтуючись на інформації про користувача.

account - цей тип модулів виконує функції, не пов'язані з аутентифікацією безпосередньо. Зазвичай він використовується для дозволу або заборони доступу в залежності від певних умов, таких як час дня, кількість користувачів, одночасно замовили ресурс, різні параметри системи і так далі.

sessions - в основному цей тип використовується для визначення додаткових дій, які необхідно виконати до або після надання сервісу користувачу. Сюди можна віднести протоколювання дій щодо відкриття певних файлів, монтування каталогів, видалення тимчасових файлів і так далі.

password - цей останній тип необхідний для оновлення пізнавального ознаки (наприклад, того ж самого пароля), який ідентифікує користувача.

Наявність чотирьох керуючих типів говорить про те, що сама технологія аутентифікації з використанням бібліотеки PAM здатна надати не тільки "голий" спосіб встановлення автентичності користувача, а ще й широкий спектр додаткових можливостей по захисту системи і надання доступу до сервісів.

Прапор контролю визначає, як система буде себе вести при вдалому або невдалому проходження відповідного модуля. Оскільки модулі запускаються один за іншим, то спеціальної розстановкою прапорів можна визначити значимість кожного з них.

Як прапорів можуть бути використані чотири ключові слова:

required - цей прапор визначає, що для вдалої аутентифікації в цілому необхідно успішне проходження відповідного модуля. Якщо при проходженні цього модуля система отримала відмову, процес аутентифікації продовжується до тих пір, поки всі модулі не будуть опрацьовані, і тільки потім видається повідомлення про помилку.

requisite - ефект дії цього прапора той же, що і прапора required, з однією відмінністю: при отриманні відмови управління відразу повертається додатком, проходження інших модулів не проводиться.

sufficient - весь процес аутентифікації вважається успішним, якщо робота модуля з цим прапором була успішною і перевірка на попередніх модулях з прапором required не провалилася. Якщо робота модуля з цим прапором була невдалою, це не вважається фатальною помилкою.

optional - успішність модуля з цим прапором є необов'язковою і його використання не критично для аутентифікації.

Шлях до модуля містить рядок повного шляху до модуля у файловій системі. Всі модулі зберігаються в каталозі / lib / security, тому, наприклад, шлях до модуля pam_limits буде виглядати як / lib / security / pam_limits.so.

Параметри модуля є індивідуальним для кожного модуля і описуються в документації модуля.

Крім основних конфігураційних файлів деякі модулі використовують додаткові файли конфігурації, що знаходяться в каталозі / etc / security.

Кожний файл у цьому каталозі призначений для конкретної групи установок:

time.conf - в цьому файлі можна обмежити час доступу користувачів з

різних терміналів до різних сервісів. Ці налаштування використовує модуль pam_time, тому для вступу в силу часових обмежень необхідно додати модуль pam_time в конфігураційний файл програми, на яке повинні поширюватися ці обмеження.

pam_env.conf - за допомогою цього файлу можна обмежити можливість зміни деяких змінних середовища користувачами. Цей файл використовується модулем pam_env.

limits.conf - цей файл дає можливість обмежити розмір core-файлу, максимально допустимий розмір файлу, максимальна кількість одночасно відкритих файлів, запущених процесів, кількість одночасно відкритих сесії користувачів і так далі. Використовується модулем pam_limits.

access.conf - за допомогою цього файлу можна визначити різні параметри входу користувача в систему, наприклад, з яких комп'ютерів користувач має доступ до системи. Цей конфігураційний файл використовується модулем pam_access.

group.conf - в цьому файлі можна вказати, до якої групи буде належати процес, запущений користувачем в певний час з певного терміналу.

Файл читається модулями pam_time і pam_group.

console.perms - в цьому файлі є можливість вказати права, призначувані привілейованих користувачів при вході в систему і які повертаються консолі при його виході. Файл використовується модулем pam_console.

Як вже неодноразово згадувалося, всі модулі розташовуються в каталозі / lib / security. Коротко розглянемо, які модулі входять в стандартний пакет PAM, і які функції виконує кожен з них:

1. Pam_cracklib - password - Дозволяє перевіряти пароль на стійкість, чи не є він, наприклад, словом зі словника і т. д. В основному використовується програмами, які задають паролі. До корисних параметрів належать:

retry = N - задає кількість спроб на виправлення помилки;

diffok = N - визначає мінімальне кількість символів, яке має бути змінено при зміні пароля;

minlen = N - задає мінімальний розмір пароля в символах;

dcredit = N ucredit = N lcredit = N ocredit = N - задає мінімальну кількість цифр, малих літер, прописних літер та інших | символів, які повинні бути присутніми в паролі.

pam_deny будь Основне призначення цього модуля - заборона доступу за будь-яких умовах.

2. Pam_env - auth - Контролює збереження змінних середовища. За допомогою параметра conffile = S можна вказати файл конфігурації, відмінний від стандартного.

3. Pam_ftp - auth - Призначений для організації анонімного доступу. Отримавши в якості імені користувача послідовність 'anonymous', модуль в якості пароля вимагає рядок, схожу на поштову адресу. До корисних параметрів належать:

users = XXX, XXX, ... - дозволяє анонімний вхід для користувачів з цього списку;

ignore - дозволяє не звертати уваги, чи схожий пароль на поштову адресу.

4. Pam_group - auth - Визначає групу-власника процесу, | запущеного аутентіфіцированний користувачем.

5. Pam_lastlog - auth - Повідомляє про місце і час входу в систему. Для протоколювання використовується файл wtmp, що знаходиться в каталозі / var / log. До корисних параметрами можна віднести:

nodate noterm nohost silent - дозволяють НЕ виводити в повідомленні дату, термінал, адреса машини або взагалі нічого не записувати у файл;

never - надає можливість видачі вітання користувача, вперше увійшов в систему.

6. Pam_limits | session | Дозволяє задавати обмеження для користувача на розмір файлів, число одночасно відкритих дескрипторів і т. д. Має параметр conf = S для вказівки альтернативного конфігураційного файлу.

7. Pam_listfile - auth - Призначений для організації доступу на основі конфігураційних файлів на зразок / etc / ftpaccess. Можливі паарметри:

onerr = succeed | fail - задає повертається значення у разі невдалого пошуку;

sence = allow | deny - задає значення, що повертається у разі вдалого пошуку;

file = filename - дозволяє вказати ім'я файлу зі списком;

item = user - tty - rhost - ruser - group

shell - визначає тип елементів у списку. Наприклад, значення item = user означає, що у файлі міститься список імен користувачів, що мають можливість входу в систему.

8. Pam_mail - auth - Дозволяє повідомляти користувача про знову прийшла поштою. Корисні параметри:

dir = S - вказує шлях до каталогу поштових черг;

noenv - скасовує установку змінної середовища MAIL;

close - дозволяє повідомляти про нові листи в поштових скриньках користувачів з анульованими бюджетами;

nopen - забороняє висновок будь-якої поштової інформації для знову заведеного бюджету.

9. Pam_nologin - auth - Якщо файл / etc / nologin існує, в систему може увійти тільки привілейований користувач root, іншим же при спробі входу видається вміст цього файлу.

10. Pam_permit - будь-який - Цей модуль дає доступ за будь-яких умовах. Необдумане використання цього модуля дуже небезпечно!

11. Pam_pwdb - будь-який - Заміщає модулі серії pam_unix. Цей модуль використовує інтерфейс бібліотеки libpwdb, призначений для роботи з одними базами даних, що підвищує незалежність системи аутентифікації від способу зберігання призначених для користувача даних. Корисні параметри:

nullok - дозволяє використання порожніх паролів;

md5 shadow bigcrypt - вказує використовувані алгоритми шифрування паролів.

12. Pam_radius - b session - Дозволяє здійснювати аутентифікацію через сервер RADIUS.

13. Pam_rhosts_auth - auth - Механізм роботи цього модуля грунтується на аналізі вмісту файлів hosts.equiv і. Rhosts, використовуваних для аутентифікації такими службами, як rlogin і rsh. Корисні параметри:

no_hosts_equiv - дозволяє ігнорувати вміст файлу hosts.equiv;

no_rhosts - дозволяє ігнорувати вміст файлу. rhosts;

suppress - дозволяє уникнути запис малозначних повідомлень в системний журнал, зокрема, при використанні прапора sufficient.

14. Pam_root_ok - auth - Дозволяє організувати доступ привілейованого користувача до сервісу, минаючи процедуру введення пароля. Користувач допускається до сервісу, тільки якщо його системний ідентифікатор дорівнює нулю (тобто привілейований користувач root).

15. Pam_securetty - auth - Дозволяє враховувати файл / etc / securetty. У файлі / etc / securetty вказані термінали, з яких привілейований користувач має доступ до системи.

16. Pam_time - account - Накладає тимчасові обмеження на доступ до системи.

17. Pam_warn - auth - Виробляє запису в системних журналах при password певних діях.

18. Pam_wheel - auth - Цей модуль дозволяє отримати права привілейованого користувача тільки користувачам певної групи. Корисні параметри:

group = XXX - задає групу, користувачі якої мають можливість отримати права користувача root;

deny - цей параметр інвертує дію модуля, іншими словами, він забороняє зміну прав на права користувача root для зазначеної групи;

trust - позбавляє користувачів зазначеної групи від необхідності введення пароля при зміні код на нульовий.

Можливо також створення власних PAM-модулів на основі готових шаблонів, що дозволяє швидко отримати необхідний метод аутентифікації без особливих зусиль.

Висновки

У даній розрахунково-графічної роботі була висвітлена тема управління обліковими записами користувачів в операційній системі Linux; питання створення, видалення облікових записів, блокування й адміністрування доступу користувачів до ресурсів ОС, створення та видалення груп користувачів, управління паролями і робота служби тіньового зберігання паролів; описана роботу додаткового модуля аутентифікації PAM, розглянуті питання серійного додавання користувачів, створення груп і заміни паролів, описана робота допоміжних утиліт mass_add і mass_passwd.

А також розглянуті команди управління обліковими записами, формат облікових записів, а також можливість тимчасового надання користувачам адміністраторських прав користувача Root.


Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
180кб. | скачати


Схожі роботи:
Аутентифікація користувачів
Створення облікових записів користувачів
Система обслуговування користувачів у бібліотеці
Охорона праці користувачів компютерів
Вплив мережі Інтернет на користувачів
Розробка програми генеруючої паролі користувачів
Інтереси користувачів пошукачів в регіонах Росії
Аутентифікація користувачів на основі токенів безпеки
Адміністрування користувачів з використанням локальних і глобальни
© Усі права захищені
написати до нас