May 30, 2024

Урок: Безопасность и защита

Безопасность и защита

Безопасность и защита в операционных системах играют важную роль в обеспечении конфиденциальности, целостности и доступности данных. В этом уроке мы рассмотрим механизмы защиты информации, контроль доступа и модели безопасности, а также методы аутентификации и авторизации.

Механизмы защиты информации в ОС

  1. Защита файловой системы:
    • Контроль доступа к файлам и каталогам.
    • Разделение прав на чтение, запись и выполнение.
  2. Шифрование данных:
    • Шифрование данных для защиты от несанкционированного доступа.
    • Примеры: симметричное и асимметричное шифрование.
  3. Защита памяти:
    • Изоляция памяти процессов для предотвращения несанкционированного доступа.
    • Механизмы: виртуальная память и защита страниц.
  4. Контроль целостности:
    • Проверка целостности файлов и системных компонентов.
    • Использование хэш-функций для проверки целостности данных.

Контроль доступа и модели безопасности

  1. Дискреционный контроль доступа (DAC):
    • Пользователь или владелец ресурса контролирует доступ к нему.
    • Примеры: Unix-права доступа, списки контроля доступа (ACL).
Пример управления доступом на уровне файловой системы в Unix
import os

# Установка прав доступа
os.chmod('example.txt', 0o644)  # rw-r--r--

# Проверка прав доступа
print(oct(os.stat('example.txt').st_mode)[-3:])  # Выводит: 644
  1. Мандатный контроль доступа (MAC):
    • Доступ определяется централизованной политикой безопасности.
    • Примеры: SELinux, системы с уровнем секретности.
Пример настроек MAC (SELinux)
# Команда для отображения текущего контекста SELinux
$ ls -Z example.txt

# Команда для изменения контекста SELinux
$ chcon -t httpd_sys_content_t example.txt
  1. Ролевой контроль доступа (RBAC):
    • Доступ определяется ролями, назначенными пользователям.
    • Примеры: системы управления доступом на основе ролей в корпоративных системах.
Пример реализации RBAC в Python
roles = {
    'admin': {'read', 'write', 'execute'},
    'user': {'read'},
}

def check_access(role, permission):
    return permission in roles.get(role, set())

# Проверка доступа
print(check_access('admin', 'write'))  # True
print(check_access('user', 'write'))  # False

Методы аутентификации и авторизации

  1. Аутентификация:
    • Процесс проверки подлинности пользователя.
    • Примеры: пароли, биометрические данные, токены.
Пример хэширования паролей с использованием hashlib
import hashlib

def hash_password(password):
    return hashlib.sha256(password.encode()).hexdigest()

# Хэширование пароля
hashed_password = hash_password('mypassword')
print(hashed_password)
  1. Авторизация:
    • Процесс определения прав доступа пользователя к ресурсам.
    • Примеры: проверка прав доступа на основе ролей, списки контроля доступа.
Пример авторизации на основе ролей
users = {
    'alice': 'admin',
    'bob': 'user',
}

def authorize(username, permission):
    role = users.get(username)
    if role:
        return check_access(role, permission)
    return False

# Проверка авторизации
print(authorize('alice', 'write'))  # True
print(authorize('bob', 'write'))  # False

Практическое задание

  1. Опишите основные механизмы защиты информации в операционных системах.
  2. Приведите примеры использования моделей безопасности DAC, MAC и RBAC.
  3. Напишите пример кода на Python для хэширования паролей.
  4. Реализуйте простой пример авторизации на основе ролей в Python.
Пример выполнения практического задания

## Задание 1: Основные механизмы защиты информации в ОС

### Защита файловой системы
- Контроль доступа к файлам и каталогам.
- Разделение прав на чтение, запись и выполнение.

### Шифрование данных
- Шифрование данных для защиты от несанкционированного доступа.
- Примеры: симметричное и асимметричное шифрование.

### Защита памяти
- Изоляция памяти процессов для предотвращения несанкционированного доступа.
- Механизмы: виртуальная память и защита страниц.

### Контроль целостности
- Проверка целостности файлов и системных компонентов.
- Использование хэш-функций для проверки целостности данных.

## Задание 2: Примеры использования моделей безопасности

### DAC (Дискреционный контроль доступа)
```python
import os

# Установка прав доступа
os.chmod('example.txt', 0o644)  # rw-r--r--

# Проверка прав доступа
print(oct(os.stat('example.txt').st_mode)[-3:])  # Выводит: 644

MAC (Мандатный контроль доступа)

Пример настроек MAC (SELinux)
# Команда для отображения текущего контекста SELinux
$ ls -Z example.txt

# Команда для изменения контекста SELinux
$ chcon -t httpd_sys_content_t example.txt

RBAC (Ролевой контроль доступа)

roles = {
    'admin': {'read', 'write', 'execute'},
    'user': {'read'},
}

def check_access(role, permission):
    return permission in roles.get(role, set())

# Проверка доступа
print(check_access('admin', 'write'))  # True
print(check_access('user', 'write'))  # False

Задание 3: Хэширование паролей в Python

import hashlib

def hash_password(password):
    return hashlib.sha256(password.encode()).hexdigest()

# Хэширование пароля
hashed_password = hash_password('mypassword')
print(hashed_password)

Задание 4: Пример авторизации на основе ролей в Python

roles = {
    'admin': {'read', 'write', 'execute'},
    'user': {'read'},
}

users = {
    'alice': 'admin',
    'bob': 'user',
}

def check_access(role, permission):
    return permission in roles.get(role, set())

def authorize(username, permission):
    role = users.get(username)
    if role:
        return check_access(role, permission)
    return False

# Проверка авторизации
print(authorize('alice', 'write'))  # True
print(authorize('bob', 'write'))  # False


Этот урок охватывает основные аспекты безопасности и защиты в операционных системах, включая механизмы защиты информации, контроль доступа и модели безопасности (DAC, MAC, RBAC), а также методы аутентификации и авторизации. Практикуйтесь для лучшего понимания и освоения материала.