Зміст p>
Введення 8 p>
1. Основні поняття комп'ютерної безпеки 10 p>
2. Локальна та мережева безпека Linux 15 p>
2.1. Користувачі та паролі 18 p>
2.2. Особливості файлової системи Linux 24 p>
2.2.1. Права доступу 24 p>
2.2.2. Атрибути файлів 29 p>
2.2.3. Механізм квот 33 p>
2.3. Бібліотека PAM 36 p>
2.4. Брандмауер 48 p>
2.5. Дистанційне управління 57 p>
3. Засоби посилення безпеки в Linux 63 p>
3.1. Linux ACLs 63 p>
3.2. LIDS 65 p>
3.3. AIDE 71 p>
4. Техніка безпеки 74 p>
Висновок 80 p>
Список літератури 82 p>
Додаток 83 p>
Введення p>
Постійно зростаючий інтерес до безпеки різних мережевих ОС, а вособливо до UNIX-подібних систем, як раз і спонукав мене вибрати самецю тему роботи. Проблема інформаційної безпеки, починаючи з моментупояви необхідності в ній, постійно турбує уми сотні тисяч людей,змушуючи їх удосконалювати засоби її забезпечення. З проблембезпеки інформаційних систем написано дуже багато книг і статей,кожен день виходять нариси, в яких повідомляється про нові продукти,вдосконалення існуючих систем безпеки, описуються по крокахметоди захисту від різних вторгнень, методи усунення їх наслідків. Цятема постійно розвивається, і інтерес до неї ніколи не згасне. Проблемаінформаційної безпеки буде актуальною до тих пір, поки існуєінформація, яку необхідно захистити від стороннього ока. p>
Завданням даної роботи є огляд коштів як стандартних, так і незовсім, які надає операційна система Linux для безпечногофункціонування, безпечної роботи користувачів, а також збереженняконфіденційної інформації, для зберігання якої ця ОС можевикористовуватися. У роботі зачіпаються не тільки питання, що маютьбезпосереднє відношення до безпеки ОС Linux. Оскільки Linux --мережева ОС, і основним її призначенням є робота в мережі, було бнеправильним не торкнутися питання мережевої безпеки. p>
Робота поділена на чотири частини: перша частина є теоретичнимоглядом основних термінів комп'ютерної безпеки; в другій частинірозглядаються аспекти локальної та мережевої безпеки системи; третійчастина є оглядом додаткових коштів, що надаютьсярозробниками світу UNIX для контролю, реєстрації та запобігання загрозбезпеки ОС Linux і четверта частина являє собою додатковийрозділ, в якому розглядається техніка безпечної роботи з персональнимкомп'ютером та монітором. p>
1. Основні поняття комп'ютерної безпеки p>
У різних категорій людей слово «безпека» викликає своїасоціації. Є безліч різновидів цього терміну, які пов'язаніз різними сферами діяльності людини. Наприклад, державнабезпеку або безпеку життєдіяльності, політична чибудівельна безпеку. Загалом таких різновидів велика кількість,в кожному разі до цього терміну пред'являються специфічні для конкретногороду діяльності вимоги, відмінні від усіх інших. Узагальнене жвизначення терміна «безпека» можна сформулювати так: безпека --це набір засобів та вимог, спрямованих на запобігання забороненихдій, виконання яких може призвести до небажаних наслідків. p>
Термін «інформаційна безпека» з'явився порівняно недавно, зрозвитком обчислювальної техніки та ЕОМ. Інформаційна безпекавключає в себе окрім безпеки використовуваного програмного забезпечення,також безпека апаратних засобів, безпека каналів зв'язку та багато чогоінше. p>
Під безпекою ж операційної системи розуміється крімбезпеки самого ядра операційної системи ще й безпекупрограмного забезпечення, встановленого на ній. Іншими словами,безпека операційної системи - це комплекс заходів, спрямованих назапобігання дій з боку користувача або інших програм,які можуть призвести до порушення нормального функціонуванняопераційної системи. p>
Якщо є заборона, з'явиться і людина, яка спробує його порушити!
З розвитком інформаційних технологій та впровадженням комп'ютера практичнов усі сфери діяльності з'явилися люди, так звані «кракери» (відангл. cracker - «зломщик комп'ютерних мереж і програм»), якірізними хитрощами і нестандартними методами намагаються з метоювласної вигоди дістати несанкціонований доступ до інформації,яка для них не призначена. Часом це призводить до плачевнихнаслідків для власника цієї інформації. Тоді й виникла потреба вборотьбі з «інформаційними шкідниками». Були розроблені цілі комплексипрограм для посилення інформаційної безпеки і боротьби з кракерами. Аоскільки будь-яким електронно-обчислювальним комплексом керує певна
ОС, то, відповідно, для забезпечення безпеки системи в ціломунеобхідно подбати про безпеку самої ОС. p>
Кожен виробник по-своєму глянув на безпеку своєї ОС. Упідсумку одні системи виявилися достатньо захищеними, захист інших обійтибуло не просто, а третій виявилися практично беззахисними передзломщиками. Ступінь захищеності ОС Linux - ще однієї UNIX-подібної ОСреального часу, що розглядається в цій роботі. p>
Вивчаючи безпеку ОС, не можна не торкнутися теорії комп'ютерноїбезпеки. Теорія комп'ютерної безпеки оперує трьома основнимипоняттями: погроза, вразливість і атака. p>
Загроза безпеки комп'ютерної системи - це потенційно можливепригода, що може чинити небажаний вплив на самусистему (таке, як перезавантаження, зависання), а також на інформацію,що знаходиться в ній (видалення, псування файлів і так далі). p>
Вразливість комп'ютерної системи - це така невдала або не зовсімкоректна її характеристика, яка представляє можливим виникненнязагрози. Вразливості як раз і є причиною виникнення неприємнихситуацій. p>
До вразливостям можна віднести наступні стану інформаційних систем: p>
1. Недосконалість використовуваного програмного забезпечення p>
Програмне забезпечення написано людиною, а людина схильна допускатипомилки. При створенні програмного продукту простежити всі зв'язки і можливіпомилки практично неможливо, навіть коли над проектом працює великакількість людей. Творці програмних продуктів намагаються якомога кращеоптимізувати код програми й позбавити його від помилок, але, тим не менше,передбачити всі можливі ситуації не представляється можливим. Інодітакі недоробки не несуть жодних критичних наслідків для самоїпрограми або дані, якими вона оперує, але буває, що вони дозволяютьвикористовувати програму в цілях, відмінних від тих, для яких вонастворювалася спочатку, іноді з дуже серйозними наслідками (псуванняданих, наприклад). Такі недоробки в програмі зазвичай називають «дірками». P>
Ще існує таке поняття, як «люк». Люком називають спеціальнікомбінації дій над програмою, які дозволяють обійти деякіетапи виконання. Зазвичай люки використовуються програмістами при розробці татестуванні програм з метою обходу вже перевірених блоків і в кінціповинні «закриватися», тобто програмний код, що відповідає за люк, повиненбути вилучений з готової програми. Але те, що повинно, робиться не завжди.
Програміст просто може забути про люк, в результаті люк залишається вготової програмі і може становити загрозу для правильного виконання. p>
2. Неправильна настройка програмного забезпечення p>
Безпека системи багато в чому залежить від правильної настройкипрограмного забезпечення, встановленого в ній. За правильну настройкупрограм, встановлених на комп'ютері користувача, відповідає самкористувач комп'ютера (зазвичай, його власник), за правильну настройкупрограм і сервісів, що працюють на спеціалізованому комп'ютері,обслуговує запити користувачів (сервер), відповідає адміністратор. Уобох випадках ці особи несуть повну відповідальність за збереження даних інормальне функціонування програм на обслуговуваному комп'ютері. Від того,наскільки правильно налаштований те або інше програмне забезпечення, можезалежати, отримає зловмисник доступ до комп'ютера чи ні. p>
Атака на комп'ютерну систему - це алгоритм дій, за допомогоюяких може бути здійснений пошук вразливостей і їх використання з метоюздійснення загрози. p>
Існують три основних види загроз:
. Загрози розкриття
. Загрози цілісності
. Загрози відмови в обслуговуванні p>
Загроза розкриття полягає в тому, що інформація стає відомоютому, кому не варто було б її знати. У термінах комп'ютерної безпекизагроза розкриття має місце кожного разу, коли отримано доступ до деякоїконфіденційної інформації, що зберігається в обчислювальній системі чищо передається від однієї системи до іншої. Іноді замість слова "розкриття"використовуються терміни "крадіжка" або "витік". p>
Загроза цілісності включає в себе будь-яке умисне зміна
(модифікацію або навіть видалення) даних, що зберігаються в обчислювальній системіабо передаються з однієї системи в іншу. Зазвичай вважається, що загрозурозкриття схильні більшою мірою державні структури, а загрозуцілісності - ділові або комерційні. p>
Загроза відмови в обслуговуванні виникає кожного разу, коли в результатідеяких дій блокується доступ до деякого ресурсу обчислювальноїсистеми. Реально блокування може бути постійним, щоб запитуванийресурс ніколи не було отримано, або воно може викликати тільки затримкузапитуваного ресурсу, досить довгу для того, щоб він ставмарним. У таких випадках кажуть, що ресурс вичерпаний. P>
Висновок. P>
У цьому розділі було здійснено огляд основних термінів комп'ютерноїбезпеки, розглянуто такі поняття, як загроза безпеці,вразливість системи, атака на систему, описані основні види атак. p>
2. Локальна та мережева безпека Linux p>
Linux є мережевою ОС, тому провести чітку межу міжлокальної і мережевої безпекою дуже складно. Але, оскільки комп'ютер, наякому встановлена ОС Linux, може виступати як у якостіпризначеного для користувача комп'ютера, так і в якості сервера, підключення його домережі не гарантується. При відсутності мережі недоречно говорити про мережевубезпеки, тому що мережевий загрози в принципі не існує.
Отже, поділ загальної безпеки системи на дві складовіцілком доцільним. p>
З огляду на все це, можна зробити висновок, що локальна безпекає обов'язковою практично в будь-якому випадку, окрім тих, коли докомп'ютера має доступ тільки одна людина - його власник. Мережева жбезпека є актуальною тільки в тому випадку, коли комп'ютер звстановленої на ньому Linux має вихід в мережу. Мережева безпекає доповнює ланкою локальної безпеки, які разомвизначають загальну безпеку системи в цілому. У принципі, локальнубезпеку можна вважати останнім бар'єром у загальної безпеки системи. p>
Локальна безпека - це правила, заходи і зусилля, спрямовані назахист системи зсередини, від локальних користувачів. p>
ОС Linux є повноцінною багатокористувацької системою з простоюі розподіленою архітектурою. Архітектура ОС Linux наведена на малюнку
2.1. P>
Рис. 2.1. Структура операційної системи Linux p>
Linux є багатокористувацької системою, і той факт, що всистему можуть мати одночасний доступ величезна кількість людей, якдовірених, так і немає, видається більш ніж очевидним. p>
Навіщо ж необхідно убезпечити систему від локальних користувачів? p>
Для відповіді на це питання спочатку розглянемо, що видаєтьсяможливим користувачеві, який має доступ до системи. p>
- Після входу в систему користувачеві виділяється певна частинамашинних ресурсів (дискового простору, оперативної пам'яті,процесорного часу і так далі). Добре, якщо ОС спочатку налаштована направильне розподіл ресурсів. А якщо ні? Достатньо одному користувачевізапустити пару-трійку «важких» програм, як час очікування для іншихпрограм навіть на потужній машині може вийти за межу допустимого. p>
- Існують програми, які повинен запускати тількисуперкористувач (користувач root). Звичайно за допомогою цих програмздійснюється настроювання системних параметрів операційної системи,неправильна конфігурація яких може негативно позначитися на їїпрацездатності. Випадковий запуск такої програми звичайним користувачемможе призвести до фатальних наслідків для всієї системи в цілому. p>
- «Гуляючи» по дереву каталогів на жорсткому диску, користувач можепотрапити в ту частину, в якій йому бути не належить (наприклад, у каталогде зберігаються файли інших користувачів). Особисті файли кожного користувачаповинні бути доступні йому і тільки йому, якщо, звичайно, він сам не вирішитьінакше. p>
Перераховані приклади - це лише мала частина. Іноді, навіть сам цього неусвідомлюючи, недосвідчений користувач може становити потенційну загрозу,якщо йому надати необмежені права. До того ж сама порядністькористувача - це розкіш, яку в сучасному світі може собі дозволитине кожен. p>
Тепер розглянемо, які ж кошти надає система Linux длязабезпечення локальної безпеки. p>
2.1. Користувачі та паролі p>
Користувач - це людина, що користується ресурсами і можливостями,які йому надає той чи інший сервіс. Користувач не зобов'язаний знативсі аспекти функціонування цих сервісів, все, що йому необхідно знати --це як користуватися ними. p>
У Linux кожен користувач має свій унікальний числовийідентифікатор, за яким він ідентифікується в системі. Цьомуідентифікатором для більш зручної роботи відповідає ім'я користувача.
Наприклад, для привілейованого користувача root зарезервований нульовийідентифікатор. p>
Всі імена користувачів Linux і відповідні їм ідентифікаторизберігаються в спеціальному файлі passwd. Цей файл розташовується в каталозіetc, який, у свою чергу, знаходиться в кореневому каталозі системи /. Файлмає звичайну текстову форму. p>
Приклад файлу спеціальних імен passwd.root: x: 0:0: root:/root:/bin/bashbin: x: 1:1: bin:/bin:/sbin/nologindaemon: x: 2:2: daemon:/sbin:/sbin/nologinsync: x: 5:0: sync:/sbin:/bin/syncmail: x: 8:12: mail:/var/spool/mail:/sbin/nologinuucp: x: 10:14: uucp:/var/spool/uucp:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologin p>
Кожен запис в цьому файлі розділена двокрапками на 7 частин: p>
1. Ім'я користувача. Це поле містить ім'я користувача. Дляопераційної системи не важливо, яке ім'я має користувач, системаорієнтується на ідентифікатор, а ім'я грає, мабуть, тількиінформаційне значення для людини, що працює в системі. p>
2. Поле для пароля. Це поле в ранніх версіях Linux містило зашифрованийпароль, а тепер, коли була введена технологія тіньових паролів, в цьомуполі просто ставиться x. Практичного застосування це поле не має. P>
3. Код користувача (UID). У системі Linux коженкористувач має унікальний ідентифікаційний номер, який однозначновизначає його в системі. Цей номер використовується в різних цілях,наприклад, при встановленні прав доступу на файли. Права доступу будутьрозглянуті в наступному розділі. p>
4. Ідентифікатор групи, до якої належить ця особа (GID).
Концепція груп буде розглянута в наступних розділах. P>
5. Поле коментарів. У цьому полі може зберігатися будь-яка додатковаінформація про користувача, наприклад, його повне ім'я. p>
6. Повний шлях до домашнього каталогу користувача. В ОС Linux длякожного користувача створюється його домашній каталог, в якому він можезберігати свої документи. Зазвичай ці каталоги розташовуються в директорії
/ home кореневого каталогу і за замовчуванням мають імена власників. p>
7. Шлях до командного оболонці. Останнє поле містить повний шлях доробочої оболонці користувача (за умовчанням такою оболонкою є bash).
Ця оболонка запускається, коли користувач проходить процедуруаутентифікації. З метою безпеки для системних користувачів в цьомуполе дуже часто ставиться/sbin/nologin. У наведеному прикладі користувачbin має саме таке значення в полі командного інтерпретатора. Сама пособі програма nologin не є оболонкою, єдине її призначення --не допустити вхід в систему. Тому при спробі входу під ім'ямкористувача, у якого в якості робочої оболонки встановлена
/ sbin/nologin, нічого не відбувається. Зазвичай такий підхід використовується пристворення користувачів, які є?? ться системними, тобто від іменіяких виконуються якісь дії всередині системи. А оскільки в такийкористувачам не потрібна робоча оболонка, хорошим рішенням, з точки зорубезпеки, буде установка поля оболонки в/sbin/nologin. Ще однимрозповсюдженим рішенням у таких ситуаціях є встановлення цього поля взначення/bin/false. Як відомо, в Linux, так і в більшості іншихопераційних систем, успішне завершення програми визначається типомзначення, що повертається. Якщо повертається нульове значення, виконанняпрограми пройшло успішно, якщо ненульове - в процесі виконання програмивиникли помилки. На основі значення, що повертається система аутентифікаціїробить висновок про те, чи пройдена аутентифікація успішно або вона
«Провалилася». false - програма, яка незалежно від зовнішніх факторівзавжди повертає значення, відмінне від нуля, що в даному випадку означаєвиникнення помилок при запуску оболонки, і управління знову повертаєтьсясистемі аутентифікації. p>
При вході в систему програма, що надає доступ, виробляєчитання інформації про користувачів якраз з файлу passwd. Право на записв цьому файлі мають тільки привілейований користувач root, читати ж йогоможуть всі користувачі системи (права доступу описуються в розділі
«Особливості файлової системи Linux »). p>
Цей файл ніколи не редагується вручну, хоча, в принципі, цецілком припустимо. Зазвичай для редагування файлу користувачів використовуютьспеціальні програми: useradd, usermod і userdel. p>
Програма додати useradd дозволяє додати нового користувача всистему. Для управління процесом створення користувача ця програма можеприймати різні параметри в командному рядку. Наприклад, параметр-sзадає використовуваний користувачем shell, а параметр-g - групу, до якоїналежить створюваний користувач. Крім додавання запису прокористувача в файл/etc/passwd, програма useradd створює домашній каталогкористувача, який за замовчуванням має розміщуватися в директорії/home.
Шлях до каталогу для користувача може бути визначений за допомогою параметра
-D, за яким іде повний шлях від кореневого каталогу до каталогукористувача. p>
Програма usermod дозволяє змінювати такі параметри, як робочаоболонка користувача, домашній каталог, група, код користувачаі так далі. p>
Неважко здогадатися, що виконує програма userdel. Вона видаляєкористувача з системи. Докладна інформація про ці програми міститьсяу відповідних man-керівництві. p>
Ім'я користувача не є секретною інформацією, і його можуть безпроблем дізнатися інші користувачі системи. Але в такому випадку повиннаіснувати небезпека входу одного користувача під ім'ям іншого. Однакцього не відбувається. Використовується таке поняття, як аутентифікація. P>
Аутентифікація - це встановлення автентичності користувача, тобтовстановлення факту того, що користувач з таким ім'ям є саметим, за кого себе видає. p>
Для аутентифікації в ОС Linux використовується вже давно перевірене іщо довела свою надійність засіб - пароль. p>
Пароль - це набір символів (секретне слово), відомий тільки йоговласникові і використовується для посвідчення його автентичності. p>
Кожен користувач у системі має свій власний пароль. Наявністьпароля - необхідна складова політики безпеки користувачів
Linux. Пароль є як би пропуском користувача в систему. Без пароля,знаючи тільки ім'я користувача, проникнути в систему неможливо. p>
Паролі зберігаються в окремому файлі/etc/shadow. У ранніх версіях Linuxімена і паролі користувачів зберігалися в одному файлі/etc/passwd. Алепрактика показала, що для забезпечення більш надійного захисту паролівнеобхідне створення окремого файлу для їх зберігання. Таким чином,технологія виділення окремого файлу shadow для зберігання паролів отрималаназва технології «тіньових паролів». p>
Приклад файлу і його структура наведені нижче.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 ::: p>
Файл shadow, як і файл passwd, розділений на кілька частиндвокрапками: p>
1. Ім'я користувача. Це поле просто дублюється з файлу passwd. P>
2. Хеш пароля. Пароль в Linux ніколи не зберігається у відкритому вигляді, ввідміну від імені користувача. Під час встановлення пароля до збереження його вфото він шифрується за спеціальним алгоритмом. За замовчуванням таким алгоритмомє алгоритм одностороннього шифрування DES (Data Encryption Standard).
Використання одностороннього алгоритму шифрування виключає можливістьрозшифровки пароля. p>
Інші поля містять різну службову інформацію. p>
Файл паролів має права тільки на читання і тільки длясупер-користувача (права доступу описуються в розділі «Особливостіфайлової системи Linux »). Його вміст є недоступним для пересічнихкористувачів, таким чином, виключається можливість розкриттязашифрованого пароля. p>
Для зміни пароля в Linux спочатку включена спеціальна програмаpasswd. Як параметр у командному рядку вона отримує ім'якористувача і при запуску вимагає введення пароля для цього користувача. Привведенні в цілях безпеки пароль не відображається на екрані монітора,існує дуже висока вірогідність допустити помилку, особливо колипароль складається з цифр і символів різного регістра. Тому введення пароляздійснюється 2 рази для перевірки його коректності. Після підтвердженняпароль шифрується і зберігається у файлі/etc/shadow. p>
При вході в систему процедурою отримання імені та пароля користувачауправляє програма mingetty. mingetty - це програма, що видаєзапрошення для введення імені користувача і пароля на віртуальну консоль.
Після її запуску на екрані монітора з'являється рядок-запрошення до вводуімені та пароля користувача. Після введення імені та пароля програма передаєкерування програмі login. login - це програма-посередник, яказдійснює перевірку існування, коректності та відповідності іменікористувача і його пароля в системі. Пароль за допомогою механізміваутентифікації шифрується і порівнюється з хешем з файлу. Після успішногозавершення процедури аутентифікації програма login запускає системнуоболонку для взаємодії користувача з операційною системою, такзваний shell (від англ. shell - «оболонка»). Шлях до виконуваного файлуshell вказується в останньому сьомому поле запису файла passwd. Звичайно позамовчуванням використовується bash (Bourne Shell). Видається запрошення до вводукоманд з символом # або $ в кінці (за замовчуванням символ # використовується взапрошенні root, а символ $ - у запрошенні звичайногокористувача). З цього моменту система готова приймати від користувачакоманди на виконання. p>
Для більш зручного управління доступом до ресурсів в Linux всікористувачі об'єднуються в групи. У цьому випадку група - це безлічкористувачів, об'єднаних за будь-яким критеріям. p>
До якої групи належить користувач, говорить 4 поле реєстраційноїзапису у файлі passwd. Наявність груп дозволяє створити гнучку політикубезпеки, яка грунтується на поділі доступу до ресурсів. Значення групдля розділення доступу більш детально описується в розділі «Особливостіфайлової системи Linux ». p>
Практичне застосування розглянутої інформації наводиться вдодатку в прикладі 1. p>
2.2. Особливості файлової системи Linux p>
Для організації та постійного зберігання інформації на різних їїносіях ОС використовує так звану файлову систему. p>
Файлова система - це методи та структури даних, які використовуються
ОС для зберігання файлів на диску або в його розділі. P>
У кожної ОС є своя файлова система, відмінна від усіх інших. Віднадійності, ефективності та безпеки роботи файлової системи багато в чомузалежить якість функціонування ОС в цілому. p>
В даний час у всіх дистрибутивах ОС Linux для зберіганняінформації активно використовує файлову систему ext2 (The Second Extended
File System). Ext2 є файловою системою з багатими функціональнимиможливостями, а той факт, що ext2 була розроблена спеціально для Linux,вже говорить про необхідність присутності в ній засобів контролю табезпеки. p>
Основні характеристики файлової системи ext2: максимальний обсягфайлової системи - 4 Тбайт; максимальна довжина файлу - 2 Гбайт;максимальна довжина імені файлу - 255 символів; є підтримка трьохосередків часу редагування файлу; також є можливість розширенняфайлової системи; присутні механізми захисту інформації та можливістьзмінювати розмір блоку. p>
2.2.1. Права доступу p>
Розглянемо ситуацію, коли користувач А для зберігання дуже важливихдокументів використовує свій домашній каталог. Інформація, що зберігається вдокументах, є суворо конфіденційною, а тому ніхто, крім їївласника, не повинен одержати до неї доступ. Користувач У просто зцікавості, а може і зі злісними намірами, зробив спробу отримативміст цих документів. Результатом спроби була помилка з описом
'permission denied' ( 'доступ заборонено'). Появою помилки послужиловідсутність у користувача B прав на читання документів, що належатькористувачеві А. З наведеного прикладу можна зробити висновок, що правадоступу дозволяють обмежити доступ до певної інформації, або, простішекажучи, захистити деяку інформацію від певних користувачів. p>
Концепція файлової політики безпеки Linux будується на тому, щобудь-який файл системи має 3 категорії власників: власне власника файлуабо, простіше кажучи, його творця, будь-яку групу користувачів, вяку найчастіше входить власник файлу, і всіх інших. Таким чином,привілейований користувач або власник файлу, оскільки тільки вінмають можливість змінювати права доступу, може побудувати політику файловоїбезпеки, визначаючи права окремо для власника файла, для групикористувачів і для всіх інших користувачів системи. p>
Права доступу до файлу або каталогу описуються трьома вісімковіцифрами, сама ліва з яких - права доступу власника, середня - правагрупи, права - права доступу для всіх інших. Кожна з цихвісімкових цифр являє собою бітову маску з 3-х біт. Ці бітивідповідають за право на читання, запис і виконання файлу або каталогу. Якщобіт встановлений в 1 - операція дозволена, якщо в 0 - заборонена. p>
Для різних типів файлів значення прав доступу трохи відрізняються. p>
Право на читання файлу дозволяє користувачеві читати вміст файлу.
Для каталозі установка права на читання дозволяє читати файли, що знаходятьсяв цьому каталозі. p>
Право на запис файлу дозволяє користувачеві змінювати його вміст.
Для каталогу - створювати файли всередині каталогу. P>
Право на виконання для файлу дозволяє запускати файл на виконання вЯк програма. Для каталозі установка цього права дає можливістькористувачеві входити в каталог і переглядати його вміст. p>
Які права доступу визначені для кожного файлу, можна дізнатися, набравшиу терміналі команду ls з ключем-l:
[root @ app tmpdir] # ls-llrwxrwxrwx 1 root users 86 7 лютого 19:49 linkfile -> myfiledrwxr-xr-x 1 root users 4096 7 лютого 19:49 lnk
-rwxr ----- 1 anotheruser users 97 7 лютого 19:48 myfile1
-rw-rw-r - 1 root users 84 7 лютого 19:45 myfile2 p>
У першій колонці представлені права доступу до файлу. Ця колонкамістить 10 символів. Перший з них ліворуч говорить про те, до якого типуналежить файл, тобто чи є він файлом, каталогом, посиланням і такдалі. Далі зліва направо представлені права доступу відповідно длявласника, для групи, і врешті - для всіх інших. Друга колонкавідображає кількість жорстких посилань для цього файлу. Третя вказує наім'я власника файлу, четверта - на ім'я групи-власника, п'ятий стовпчик --розмір файлу, шоста - дата створення файлу, сьома - ім'я файлу. p>
Як видно з прикладу, linkfile є символічним посиланням на файлmyfile. Про це говорить буква l в самій лівій частині колонки прав доступу.
Для символічних посилань завдання прав доступу можливо, але навряд чи маєсенс. Справа в тому, що символічне посилання вказує на файл, якиймає свої права доступу, тому при доступі за символічною посиланнямперевіряються права кінцевого файлу. Файл lnk є каталогом, про щоговорить буква d в полі прав доступу. Поле власника говорить про те, щовласником каталогу є користувач root, а група-власник - users.
Власник має право на читання файлів в каталозі, запис файлів і читаннявмісту каталогу. Буква r (від слова Read) говорить про можливості дляданого користувача виконувати операції читання файлів каталогу, буква w (відслова Write) - про можливість запису файлів в каталог, остання буква x (відслова eXecute) дає право на перегляд вмісту каталогу. Користувачі,що входять до групи users, мають право тільки на читання файлів цього каталогуі на отримання його вмісту (літери r і x), право на запис файлів у цейкаталог у них відсутній. Всі інші користувачі мають ті ж правадоступу, що і група-власник. Останні два файли myfile1 і myfile2є звичайними файлами. Файл myfile2 має права читання і запису длявласника (користувача root) та групи users, всі інші мають правотільки читати файл. Файл myfile1 має права на читання, запис і виконаннядля власника, яким в даному випадку є користувач anotheruser.
Група users має право тільки на читання цього файлу, а всі іншікористувачі взагалі не можуть виконувати будь-які дії з цим файлом. p>
Зміна прав доступу до файлу здійснюється за допомогою стандартноїсистемної команди chmod. Права доступу при виклику команди можуть задаватисяяк бітової маскою в десятковому поданні, так і за допомогою символів.
Докладно використання цієї команди описано на відповідній man -сторінці. p>
Крім прав доступу існують так звані модифікатори доступу. Домодифікаторам доступу відносяться Sticky bit, SUID та SGID. p>
Sticky bit (S). Для файлів установка цього модифікатора в сучаснихдистрибутивах втратила своє значення. Установка Sticky bit для каталогудозволяє користувачеві записувати файли в цей каталог, але видаляти з цьогокаталогу він може тільки ті файли, власником яких він є, або втому випадку, якщо йому явно задані права на запис. p>
SUID (s). Якщо файлу встановлений модифікатор доступу SUID і файлвиконуваний, то файл при запуску на виконання отримує не правакористувача, що запустив його, а права власника файлу. Такі прийомивикористовуються для того, щоб користувач міг працювати з деякимисистемними файлами, власником яких є привілейованийкористувач. Наприклад, для того, щоб користувач міг самостійнозмінити свій пароль за допомогою програми passwd, у цієї програми,власником якої є користувач root, повинен бути встановлений біт
SUID, оскільки вона працює з файлом shadow, модифікацію якого маєправо робити тільки користувач root. p>
SGID (s). Якщо файл має модифікатор доступу SGID, то це аналогічновстановлення біта SUID, тільки замість власника файлу використовується група,якої належить файл. У випадку встановлення SGID для каталогу файли,що містяться в цьому каталозі, матимуть встановлення групи такі ж, як укаталогу.
[root @ app mydir] # ls-l
-rwsr - rx 1 anotheruser users 97 7 лютого 19:48 myfile1 p>
У наведеному прикладі видно, що файл myfile1 має встановлений біт
SUID. При запуску файлу будь-який користувач системи (права на виконаннявстановлені для всіх) файл буде виконувати дії від імені його власника,в даному випадку від імені користувача anotheruser. p>
Модифікатори доступу при правильному використанні представляють дужепотужний і гнучкий засіб. З іншого боку, неправильне налаштування системиз використанням цих модифікаторів може звести всі дії позабезпечення безпеки до нуля. Особливо небезпечною є ситуація,коли той же SUID встановлений на виконуваний файл, що належитьпривілейованому користувачу. При виконанні файлу запустив йогокористувач отримує право виконувати операції, доступні тількикористувачеві root. Якщо навіть файл не виконує жодних системних операцій іне працює з системними файлами, неправильне його використання можепризвести до дуже неприємних наслідків. p>
Практичне застосування розглянутої інформації наводиться вдодатку в прикладі 2. p>
2.2.2. Атрибути файлів p>
У файловій структурі операційної системи завжди є файли, які неповинні змінюватися в процесі функціонування системи, наприклад,виконувані файли або файли, які повинні бути відкориговані тількиодного разу під час налаштування системи і не повинні змінюватися згодом, прикладомможуть служити конфігураційних?? е файли. Є й такі, які можуть бутидоповнені, але не можуть бути вилучені або перезаписані. Наявність коштів,що гарантують виконання перерахованих умов, дозволяє дуже сильнопідвищити безпеку файлової системи, зберігши первісну цілісністьданих при різних типах атак. p>
Починаючи з версії ядра 1.1, у файловій системі Linux крім прав доступує підтримка розширених атрибутів файлів. В останніх версіяхядра 2.4 є підтримка наступних атрибутів:
. Atime (A). Кожен раз, коли система звертається до файлу, відбувається зміна осередку часу останнього звернення до файлу. Встановлення атрибуту atime дозволяє уникнути поновлення часу останнього звернення і збільшити продуктивність файлової системи, особливо в тих випадках, коли звернення до файлів відбуваються дуже часто. Проте, відсутність часу останньої модифікації файлу становить загрозу зміни файлу без подальшої реєстрації цієї дії, що може загрожувати безпеці.
. Sync (S). Встановлення атрибуту sync дозволяє відразу фіксувати всі зміни, що відбуваються з файлом, на жорсткому диску синхронно з процесом, який здійснює ці зміни. Це забезпечує більш безпечну роботу, але може також знизити продуктивність через прямий постійного запису на диск.
. Append (a). Цей атрибут дозволяє відкривати файл тільки з метою його доповнення. Усічення або перезапис файлу забороняється. Для каталозі установка цього атрибуту означає, що видаляти файли, що містяться в цьому каталозі, заборонено, хоча створення нових та модифікація існуючих можливі.
. Immutable (i). Файл із встановленим атрибутом immutable не може піддаватися жодним змінам взагалі. Якщо встановити цей атрибут для каталогу, процеси зможуть модифікувати файли, що знаходяться в ньому, але не зможуть створювати або видаляти файли. Для забезпечення безпеки має велике значення.
. No Dump (d). Встановлення атрибуту no dump дає вказівку процесу, що здійснює створення дампа, ігнорувати цей файл і не включати його до створення резервної копії.
. Compress (c). Цей атрибут дозволяє здійснювати прозоре стиснення файлів перед записом їх на диск. При доступі до файлу він декомпресивні і кінцевому процесу представляється вже в нормальному вигляді.
. Secure Deletion (s). Якщо цей атрибут встановлений, то при видаленні файлу всі блоки, в яких він розташовувався, заповнюються нулями, тобто проводиться повне видалення файлу, а не тільки його дескриптора.
. Undelete (u). Під час видалення файлу з цим атрибутом система зберігає всі блоки файлу на диску, що дозволяє при бажанні відновити віддалений файл. P>
Останні версії ядер, починаючи з 2.4, ігнорують значення останніхтрьох атрибутів: compress, secure deletion і undelete. Розробникивирішили, що їх подальше використання не має сенсу. p>
Для зміни і перегляду встановлених атрибутів в стандартнийсистемний пакет Linux входять дві програми chattr і lsattr. Першадозволяє змінювати атрибути, додавати або знімати їх, другий дозволяєотримати список встановлених атрибутів. Приклад роботи програ