Настройка системы #
Васильев Андрей Михайлович, 2022
Версии презентации
Настройка сетевых интерфейсов #
- Знание стека TCP/IP
- Понимание назначения каждого из уровней стека TCP/IP
- Знание основ маршрутизации пакетов в сетях TCP/IP
- Знание деталей функционирования транспортных протоколов TCP и UDP
- Понимание основ функционирования протоколов приложений
- Настройка сетевых интерфейсов, низкоуровневые инструменты
- Настройка, высокоуровневые инструменты
- Решения дистрибутивов
Ограничение сетевого взаимодействия #
- Понятие файерволла, его назначение, принцип работы
- Детали обработки сетевых пакетов в ядре GNU/Linux
- Низкоуровневый интерфейс для настройки правил файерволла
- Современный, nftables на ArchWiki
- Классический, iptables на ArchWiki
- Высокоуровневые инструменты
Задачи, ориентированные на управление сетью и сетевыми подключениями #
- Настройка работы сети внутри организации
- Настройка доступа к внешним сетям, в частности сети Интернет, из сети организации
- Настройка доступа к сетевым службам внутри организации
- Настройка доступа к сетевым службам из внешних сетей
Задачи, требующие настройки дополнительных служб
- Настройка защищённого доступа к внутренним ресурсам сети или связи между сетями (VPN)
- Мониторинг текущей сетевой активности
- Мониторинг нагрузки на сетевые интерфейсы во времени
Ограничение доступа для процессов #
Процессы должны выполнять чётко определённые действия. Однако в них могут находиться ошибки, которые могут позволить злоумышленнику выполнять другие действия, поэтому желательно ограничить его доступ только к чётко определённым ресурсам
- Детали изоляции процессов в ядре ОС
- Системы дополнительной изоляции процессов
- Основа системы контейнеризации процессов
Удалённый доступ к серверу #
- Установление защищённого соединения между клиентом и сервером
- Выполнение удалённых команд на сервере
- Передача файлов между клиентом и сервером
- Интерактивная работа на удалённом сервере
- Проброс портов между сервером и клиентом
- Выполнение Socks-проксирования запросов от клиента к серверу
Объединение вычислительных ресурсов #
Для решения ряда задач необходимо объединить компьютеры, чтобы при выполнении задач можно было использовать их объединённые ресурсы
- Объединение для выполнения распределённых вычислений
- Объединение для увеличения объёма хранения данных
Управление виртуальными машинами #
- Понятие виртуализации
- проблемы, которые решает виртуализация
- ограничения, которые накладывает создание виртуальных окружений
- Системы виртуализации
- Средства управления виртуальными машинами
- Virtual Machine Manager, virt-manager
- libvirt virtualization API
- Proxmox VE
- …
Управление контейнерными окружениями #
- Понятие контейнеризации и её отличия от виртуализации
- Системы запуска одиночных контейнеров
- Linux containers, LXC, LXD
- Docker
- podman
- …
- Системы запуска и управления контейнерами
Мониторинг за использование ресурсами #
Любые вычислительные мощности стоят денег. Организации, как и отдельные люди, не заинтересованы в излишних тратах на инфраструктуру, то есть необходимо загрузить доступные ресурсы на максимальную мощность
Необходимо обеспечить бесперебойную работу серверов, т.е. необходимо иметь мощности в резерве
Управление учётными записями пользователей #
Для слаженной работы сетевых служб и удобства их использования конечными пользователями внутри организации необходимо обеспечить единую точку по хранению информации о пользователях, их авторизации и аутентификации
- Понимание задач аутентификации, авторизации
- Знание основ протоколов для обеспечения аутентификации пользователей: OAuth, Open ID Connect, LDAP, AD, …
- Системы управления пользователями
- Системы авторизации пользователей на Linux-компьютерах
Предоставление файлового хранилища #
- Системы для локальных файловых систем
- Системы для доступа к файлам через веб-браузер
- Объектные хранилища S3-подобные
Управление СУБД #
- Обеспечение надёжности работы
- Резервирование данных
- Распределение нагрузки между серверами
- Обновление версий СУБД
- Оперирование СУБД
- Создание БД
- Управление пользователями
- Управление встроенными процедурами / модулями
Предоставление терминального сервера #
Для некоторых ситуаций компаниям удобно консолидировать ресурсы на выделенной системе, чтобы работники подключались к ней для выполнения собственных задач
Альтернативный сценарий: доступ к защищённому окружению
Обеспечение надёжности сохранения данных #
Настройка аппаратного обеспечения для надёжного хранения данных #
- RAID
- LLVM
Настрйока систем резервного копирования #
- Bakula
- Kopia
- Conserve
- …
Поддержание работоспособности, установка обновлений #
- Поддержание локального репозитория для обновлений
- Установка обновлений программ для решения проблем безопасности
- Решение проблем в текущей конфигурации системы
- …
Решение конкретных задач предприятия #
Каждая конкретная организация будет использовать различные приложения, которые нужны для выполнения как внешних заказов, так и функционирования внутренних операций
Рассмотрим типичные задачи, которые могут возникнуть у компании, занимающейся разработкой ПО
- Учёт задач, стоящих перед сотрудниками
- Учёт рабочего времени, потраченного сотрудниками
- Вопросы бухгалтерского обслуживания организации
- Вопросы управления затраченными контрактами
- Управление репозиториями программного обеспечения
- Управление и настройка системами непрерывной интеграции
- Настройка репозиториев для хранения артефакторв системы
- Настройка сред исполнения приложений
Настройка отдельной службы #
- Обеспечение платформы для исполнения приложения
- Работа приложения прямо в рамках операционной системы
- Работа приложения в рамках виртуального или контейнерного окружения
- Работа в рамках распределённой системы
- Обеспечение работы систем хранения данных
- СУБД
- Хранилища бинарных артефактов
- Обеспечение запуска и перезапуска необходимых служб
- Реализация резервного копирования данных
- Реализация восстановление данных из системы резервирования
Установка приложений из исходных кодов #
- Компиляция приложений
- C
- C++
- Rust
- Go
- …
- Создание пакетов
- Настройка локального сборочного окружения
- Написание спецификации по сборке пакета
- Публикация наработок в автоматизированную систему сборки
- Создание пакетов для интерпретируемых языков
Настройка графического окружения #
- Устройство графической подсистемы GNU/Linux
- Драйвера в ядре ОС
- Библиотеки для выполнения трёхмерного ускорения (OpenGL, Vulcan)
- Графические сервера Xorg, Wayland
- Менеджеры дисплеев
- GDM
- SDDM
- LightDM
- …
- Графические окружения
- GNOME
- KDE
- XFCE
- Cinnamon
- ….
- Менеджеры окон
- AwesomeWM
- Sway
- …
Настройка аудио #
- Устройство подсистемы
- ALSA
- JACK
- PulseAudio
- PipeWire
Установка приложений для конечного пользователями #
- Использование репозиториев дистрибутивов
- Steam
- Flatpak
- Snap
- AppImage