#67_PkS_PPPO_TP
SOLID — это аббревиатура пяти основных принципов проектирования в ООП:
- ПРИНЦИП ЕДИНСТВЕННОЙ ОТВЕТСТВЕННОСТИ (SINGLE RESPONSIBILITY). Каждый класс или модуль в программе должен иметь только одну причину для изменения. Это означает, что класс должен выполнять только одну работу;
- ПРИНЦИП ОТКРЫТОСТИ/ЗАКРЫТОСТИ (OPEN - CLOSED). Программные сущности (классы, модули, функции и т. п.) должны быть открыты для расширения, но закрыты для изменения. Это означает, что к существующим классам или модулям можно добавлять новые функции или поведение без изменения их исходного кода;
- ПРИНЦИП ПОДСТАНОВКИ БАРБАРЫ ЛИСКОВ (LISKOV SUBSTITUTION). Объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения корректности программы;
- ПРИНЦИП РАЗДЕЛЕНИЯ ИНТЕРФЕЙСА (INTERFACE SEGREGATION). Слишком «толстые» интерфейсы необходимо разделять на более маленькие и специфические, чтобы клиенты маленьких интерфейсов знали только о методах, которые необходимы им в работе;
- ПРИНЦИП ИНВЕРСИИ ЗАВИСИМОСТЕЙ (DEPENDENCY INVERSION). Зависимости внутри системы должны строиться на основе абстракций, а не деталей. Это означает, что высокоуровневые модули не должны зависеть от низкоуровневых модулей, и они все должны зависеть от абстракций.
Цель использования принципов SOLID — упростить разработку, сделать её более гибкой и устойчивой к ошибкам.
SOLID — это аббревиатура пяти основных принципов проектирования в ООП:
- ПРИНЦИП ЕДИНСТВЕННОЙ ОТВЕТСТВЕННОСТИ (SINGLE RESPONSIBILITY). Каждый класс или модуль в программе должен иметь только одну причину для изменения. Это означает, что класс должен выполнять только одну работу;
- ПРИНЦИП ОТКРЫТОСТИ/ЗАКРЫТОСТИ (OPEN - CLOSED). Программные сущности (классы, модули, функции и т. п.) должны быть открыты для расширения, но закрыты для изменения. Это означает, что к существующим классам или модулям можно добавлять новые функции или поведение без изменения их исходного кода;
- ПРИНЦИП ПОДСТАНОВКИ БАРБАРЫ ЛИСКОВ (LISKOV SUBSTITUTION). Объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения корректности программы;
- ПРИНЦИП РАЗДЕЛЕНИЯ ИНТЕРФЕЙСА (INTERFACE SEGREGATION). Слишком «толстые» интерфейсы необходимо разделять на более маленькие и специфические, чтобы клиенты маленьких интерфейсов знали только о методах, которые необходимы им в работе;
- ПРИНЦИП ИНВЕРСИИ ЗАВИСИМОСТЕЙ (DEPENDENCY INVERSION). Зависимости внутри системы должны строиться на основе абстракций, а не деталей. Это означает, что высокоуровневые модули не должны зависеть от низкоуровневых модулей, и они все должны зависеть от абстракций.
Цель использования принципов SOLID — упростить разработку, сделать её более гибкой и устойчивой к ошибкам.
#68_ADM_BASH
IP A - эта команда в Linux используется для просмотра всех IP-адресов, связанных с сетевыми интерфейсами.
Общий синтаксис команды $ ip:
$ ip [OPTION] OBJECT {COMMAND | help}
Объекты (OBJECT) можно использовать в полной или сокращённой форме.
Другие примеры использования команды ip a просмотр только адреса IPv4:
$ ip -4a
или IPv6:
$ ip -6a.
Просмотр информации конкретного интерфейса:
$ ip a show eth0
или
$ ip a list eth0
или
$ ip a show dev eth0.
Добавление IP-адреса интерфейсу:
$ ip a add {ip_addr/mask} dev {interface}.
Удаление IP-адреса из интерфейса:
$ ip a del {ipv6_addr_OR_ipv4_addr} dev {interface}.
IP A - эта команда в Linux используется для просмотра всех IP-адресов, связанных с сетевыми интерфейсами.
Общий синтаксис команды $ ip:
$ ip [OPTION] OBJECT {COMMAND | help}
Объекты (OBJECT) можно использовать в полной или сокращённой форме.
Другие примеры использования команды ip a просмотр только адреса IPv4:
$ ip -4a
или IPv6:
$ ip -6a.
Просмотр информации конкретного интерфейса:
$ ip a show eth0
или
$ ip a list eth0
или
$ ip a show dev eth0.
Добавление IP-адреса интерфейсу:
$ ip a add {ip_addr/mask} dev {interface}.
Удаление IP-адреса из интерфейса:
$ ip a del {ipv6_addr_OR_ipv4_addr} dev {interface}.
#69_BASH_ADM
$ sudo netplan apply
применяет настройки, внесённые в конфигурационный файл утилиты Netplan.
Эта команда прочитает файлы YAML в каталоге
/etc/netplan/,
сгенерирует необходимые конфигурации для указанного средства визуализации и применит настройки, перезапуская их при необходимости.
$ sudo netplan apply
применяет настройки, внесённые в конфигурационный файл утилиты Netplan.
Эта команда прочитает файлы YAML в каталоге
/etc/netplan/,
сгенерирует необходимые конфигурации для указанного средства визуализации и применит настройки, перезапуская их при необходимости.
#70_ADM_NTWK
IP-КЛАССИФИКАЦИЯ
Существуют классификации IP-адресов как «частные» и «публичные».
ПУБЛИЧНЫМ IP адресом - называется IP адрес, который используется для выхода в Интернет. ЧАСТНЫЕ IP адреса - адреса, используемые в локальных сетях (не могут быть напрямую подключены к Интернету).
Следующие диапазоны адресов зарезервированы для частных (также известных как LAN) сетей:
* 10.0.0.0 — 10.255.255.255 (10.0.0.0/8);
* 172.16.0.0 — 172.31.255.255 (172.16.0.0/12);
* 192.168.0.0 — 192.168.255.255 (192.168.0.0/16);
* 127.0.0.0 — 127.255.255.255 (зарезервировано для петлевых интерфейсов (не используется для связи между узлами сети), так называемый localhost).
ПОРТЫ.
Стандарт определяет для каждого из протоколов TCP и UDP возможность одновременного выделения до 65536 уникальных портов на хосте, которые обозначаются номерами от 0 до 65535. Весь ассортимент портов разбит на 3 группы:
- от 0 до 1023 называются привилегированными или зарезервированными (используются для системы и некоторых популярных программ);
- порты с 1024 по 49151 называются зарегистрированными портами;
- порты с 49151 по 65535 называются динамическими портами.
IP-КЛАССИФИКАЦИЯ
Существуют классификации IP-адресов как «частные» и «публичные».
ПУБЛИЧНЫМ IP адресом - называется IP адрес, который используется для выхода в Интернет. ЧАСТНЫЕ IP адреса - адреса, используемые в локальных сетях (не могут быть напрямую подключены к Интернету).
Следующие диапазоны адресов зарезервированы для частных (также известных как LAN) сетей:
* 10.0.0.0 — 10.255.255.255 (10.0.0.0/8);
* 172.16.0.0 — 172.31.255.255 (172.16.0.0/12);
* 192.168.0.0 — 192.168.255.255 (192.168.0.0/16);
* 127.0.0.0 — 127.255.255.255 (зарезервировано для петлевых интерфейсов (не используется для связи между узлами сети), так называемый localhost).
ПОРТЫ.
Стандарт определяет для каждого из протоколов TCP и UDP возможность одновременного выделения до 65536 уникальных портов на хосте, которые обозначаются номерами от 0 до 65535. Весь ассортимент портов разбит на 3 группы:
- от 0 до 1023 называются привилегированными или зарезервированными (используются для системы и некоторых популярных программ);
- порты с 1024 по 49151 называются зарегистрированными портами;
- порты с 49151 по 65535 называются динамическими портами.
#71_ADM_BASH_NTWK
IP ROUTE — в ОС Linux это мощный инструмент для управления сетевыми маршрутами.
Он позволяет администраторам сети определять, настраивать и отслеживать маршруты передачи данных в сети.
IP ROUTE — в ОС Linux это мощный инструмент для управления сетевыми маршрутами.
Он позволяет администраторам сети определять, настраивать и отслеживать маршруты передачи данных в сети.
#72_ADM_BASH_NTWK
NETSTAT (network statistics) — инструмент командной строки, который выводит на дисплей состояние TCP-соединений (как входящих, так и исходящих), таблицы маршрутизации, число сетевых интерфейсов и сетевую статистику по протоколам.
Чтобы ознакомится с возможностями команды в системе Linux можно вызвать в терминале команду:
$ netstat --help
Основное назначение утилиты — поиск сетевых проблем и определение производительности сети.
Команда netstat доступна в ОС семейства UNIX и Windows.
NETSTAT (network statistics) — инструмент командной строки, который выводит на дисплей состояние TCP-соединений (как входящих, так и исходящих), таблицы маршрутизации, число сетевых интерфейсов и сетевую статистику по протоколам.
Чтобы ознакомится с возможностями команды в системе Linux можно вызвать в терминале команду:
$ netstat --help
Основное назначение утилиты — поиск сетевых проблем и определение производительности сети.
Команда netstat доступна в ОС семейства UNIX и Windows.
#73_ADM_BASH_NTWK
Чтобы добавить новый маршрут к определённой IP-подсети в таблицу маршрутизации Linux, нужно выполнить команду:
$ ip route add 192.168.0.0/24 via 192.168.1.1
Эта команда добавит маршрут для IP-сети 192.168.0.0/24 через шлюз 192.168.1.1.
Такие маршруты будут временными и будут работать до перезагрузки сетевой службы или сервера.
Чтобы добавить постоянный маршрут, нужно узнать имя сетевого интерфейса, который будет использоваться для маршрутизации. Узнать его можно командой:
$ ip a
Далее необходимо открыть файл
/etc/sysconfig/network-scripts/route-enp0s3
с помощью редактора (vim или nano) и добавить туда строку с маршрутом. Например:
192.168.0.0/24 via 192.168.1.1
После добавления маршрута в файл нужно перезапустить сервис network это можно сделать с помощь команды:
$ sudo netplan apply
Также можно добавить команду добавления нового маршрута в файл
/etc/rc.local,
чтобы он автоматически добавлялся при загрузке сервера. Для этого нужно открыть файл c помощью редактора, например
$ sudo vim /etc/rc.local
и указать команду добавления маршрута.
После перезагрузки сервера маршрут пропишется автоматически при загрузке системы.
Чтобы добавить новый маршрут к определённой IP-подсети в таблицу маршрутизации Linux, нужно выполнить команду:
$ ip route add 192.168.0.0/24 via 192.168.1.1
Эта команда добавит маршрут для IP-сети 192.168.0.0/24 через шлюз 192.168.1.1.
Такие маршруты будут временными и будут работать до перезагрузки сетевой службы или сервера.
Чтобы добавить постоянный маршрут, нужно узнать имя сетевого интерфейса, который будет использоваться для маршрутизации. Узнать его можно командой:
$ ip a
Далее необходимо открыть файл
/etc/sysconfig/network-scripts/route-enp0s3
с помощью редактора (vim или nano) и добавить туда строку с маршрутом. Например:
192.168.0.0/24 via 192.168.1.1
После добавления маршрута в файл нужно перезапустить сервис network это можно сделать с помощь команды:
$ sudo netplan apply
Также можно добавить команду добавления нового маршрута в файл
/etc/rc.local,
чтобы он автоматически добавлялся при загрузке сервера. Для этого нужно открыть файл c помощью редактора, например
$ sudo vim /etc/rc.local
и указать команду добавления маршрута.
После перезагрузки сервера маршрут пропишется автоматически при загрузке системы.
#73_BASH_ADM_NTWK
IPERF3 — утилита для измерения пропускной способности сети между двумя компьютерами (или другими устройствами).
Используется для тестирования производительности сетевых соединений, таких как скорость передачи данных, задержка (latency), потери пакетов и другие параметры.
Назначение:
— измерение скорости передачи данных: Iperf3 позволяет измерять максимальную скорость передачи данных по сети (в обе стороны);
— тестирование качества связи — утилита помогает выявить проблемы с потерей пакетов, высокой задержкой или нестабильностью соединения;
— отладка сетей: Инструмент полезен при настройке сетевого оборудования, маршрутизаторов, серверов и других компонентов сети;
Основные возможности:
— режим клиента и сервера — один компьютер работает в режиме сервера, другой — в режиме клиента. Клиент отправляет данные на сервер, а сервер принимает их и анализирует результаты;
— поддержка различных протоколов. Поддерживает TCP и UDP протоколы;
— настройка параметров — можно задавать различные параметры теста, такие как размер буфера, количество потоков, время выполнения теста и т.д.;
— генерация отчетов — после завершения теста программа выводит статистику о передаче данных, включая среднюю скорость, минимальную/максимальную задержку, процент потерь пакетов и др.
Использование:
Установка:
Для установки Iperf3 можно использовать пакетные менеджеры, например, apt для Ubuntu/Debian:
$ sudo apt install iperf3
Или yum для CentOS/RHEL:
$ sudo yum install iperf3
Запуск сервера.
На одном компьютере нужно запустить Iperf3 в режиме сервера:
$ iperf3 -s
Запуск клиента.
На другом компьютере запускаем Iperf3 в режиме клиента, указывая IP-адрес или доменное имя сервера:
$ iperf3 -c <IP_адрес_сервера>
Дополнительные опции:
-p <порт> – указать порт для подключения (по умолчанию 5201);
-t <секунды> – задать продолжительность теста;
-P <количество потоков> – установить количество параллельных потоков;
-u – использовать UDP вместо TCP;
-b <битрейт> – ограничить битрейт для UDP-теста;
-R – тестировать обратную связь (от сервера к клиенту)
Заключение:
Iperf3 является мощным инструментом для диагностики и настройки сетевой инфраструктуры. Он широко применяется системными администраторами, сетевыми инженерами и разработчиками для анализа производительности сети и выявления узких мест.
IPERF3 — утилита для измерения пропускной способности сети между двумя компьютерами (или другими устройствами).
Используется для тестирования производительности сетевых соединений, таких как скорость передачи данных, задержка (latency), потери пакетов и другие параметры.
Назначение:
— измерение скорости передачи данных: Iperf3 позволяет измерять максимальную скорость передачи данных по сети (в обе стороны);
— тестирование качества связи — утилита помогает выявить проблемы с потерей пакетов, высокой задержкой или нестабильностью соединения;
— отладка сетей: Инструмент полезен при настройке сетевого оборудования, маршрутизаторов, серверов и других компонентов сети;
Основные возможности:
— режим клиента и сервера — один компьютер работает в режиме сервера, другой — в режиме клиента. Клиент отправляет данные на сервер, а сервер принимает их и анализирует результаты;
— поддержка различных протоколов. Поддерживает TCP и UDP протоколы;
— настройка параметров — можно задавать различные параметры теста, такие как размер буфера, количество потоков, время выполнения теста и т.д.;
— генерация отчетов — после завершения теста программа выводит статистику о передаче данных, включая среднюю скорость, минимальную/максимальную задержку, процент потерь пакетов и др.
Использование:
Установка:
Для установки Iperf3 можно использовать пакетные менеджеры, например, apt для Ubuntu/Debian:
$ sudo apt install iperf3
Или yum для CentOS/RHEL:
$ sudo yum install iperf3
Запуск сервера.
На одном компьютере нужно запустить Iperf3 в режиме сервера:
$ iperf3 -s
Запуск клиента.
На другом компьютере запускаем Iperf3 в режиме клиента, указывая IP-адрес или доменное имя сервера:
$ iperf3 -c <IP_адрес_сервера>
Дополнительные опции:
-p <порт> – указать порт для подключения (по умолчанию 5201);
-t <секунды> – задать продолжительность теста;
-P <количество потоков> – установить количество параллельных потоков;
-u – использовать UDP вместо TCP;
-b <битрейт> – ограничить битрейт для UDP-теста;
-R – тестировать обратную связь (от сервера к клиенту)
Заключение:
Iperf3 является мощным инструментом для диагностики и настройки сетевой инфраструктуры. Он широко применяется системными администраторами, сетевыми инженерами и разработчиками для анализа производительности сети и выявления узких мест.
#73_NTWK_CS
СЕТЕВОЙ ЭКРАН (или БРАНДМАУЭР, от англ. FIREWALL) — это система защиты сети, которая контролирует входящий и исходящий трафик на основе заранее установленных правил безопасности.
Основная цель сетевого экрана —предотвращение несанкционированного доступа к компьютерам или другим устройствам внутри защищаемой сети.
Основные функции сетевых экранов:
— ФИЛЬТРАЦИЯ ТРАФИКА — брандмауэры анализируют пакеты данных по различным критериям (например, IP-адрес источника/получателя, порты, протоколы) и принимают решение о пропуске или блокировке этих пакетов.
— МОНИТОРИНГ АКТИВНОСТИ — многие современные сетевые экраны ведут логи событий, что позволяет администраторам отслеживать подозрительные действия и реагировать на потенциальные угрозы.
— ЗАЩИТА ОТ АТАК — брандмауэры могут защищать сеть от различных видов кибератак, таких как DDoS-атаки, атаки типа "человек посередине" (Man-in-the-Middle), SQL-инъекции и другие.
- РАЗДЕЛЕНИЕ СЕТЕЙ — с помощью брандмауэров можно создавать различные зоны безопасности, например, разделять корпоративную сеть на сегменты для разных уровней доступа.
Типы сетевых экранов:
— АППАРАТНЫЙ БРАНДМАУЭР — отдельное устройство, которое устанавливается между интернетом и локальной сетью. Обычно используется в крупных организациях и дата-центрах;
— ПРОГРАММНЫЦ БРАНДМАУЭР — программное обеспечение, устанавливаемое на компьютер или сервер. Может быть встроен в ОС (например, Windows Firewall) или установлен отдельно.
— ОБЛАЧНЫЦ БРАНДМАУЭР — сервис, предоставляемый через облачные платформы, который защищает данные и приложения, размещенные в облаке.
Использование сетевых экранов является важной частью обеспечения ИБ любой организации или частного пользователя.
СЕТЕВОЙ ЭКРАН (или БРАНДМАУЭР, от англ. FIREWALL) — это система защиты сети, которая контролирует входящий и исходящий трафик на основе заранее установленных правил безопасности.
Основная цель сетевого экрана —предотвращение несанкционированного доступа к компьютерам или другим устройствам внутри защищаемой сети.
Основные функции сетевых экранов:
— ФИЛЬТРАЦИЯ ТРАФИКА — брандмауэры анализируют пакеты данных по различным критериям (например, IP-адрес источника/получателя, порты, протоколы) и принимают решение о пропуске или блокировке этих пакетов.
— МОНИТОРИНГ АКТИВНОСТИ — многие современные сетевые экраны ведут логи событий, что позволяет администраторам отслеживать подозрительные действия и реагировать на потенциальные угрозы.
— ЗАЩИТА ОТ АТАК — брандмауэры могут защищать сеть от различных видов кибератак, таких как DDoS-атаки, атаки типа "человек посередине" (Man-in-the-Middle), SQL-инъекции и другие.
- РАЗДЕЛЕНИЕ СЕТЕЙ — с помощью брандмауэров можно создавать различные зоны безопасности, например, разделять корпоративную сеть на сегменты для разных уровней доступа.
Типы сетевых экранов:
— АППАРАТНЫЙ БРАНДМАУЭР — отдельное устройство, которое устанавливается между интернетом и локальной сетью. Обычно используется в крупных организациях и дата-центрах;
— ПРОГРАММНЫЦ БРАНДМАУЭР — программное обеспечение, устанавливаемое на компьютер или сервер. Может быть встроен в ОС (например, Windows Firewall) или установлен отдельно.
— ОБЛАЧНЫЦ БРАНДМАУЭР — сервис, предоставляемый через облачные платформы, который защищает данные и приложения, размещенные в облаке.
Использование сетевых экранов является важной частью обеспечения ИБ любой организации или частного пользователя.
#74_TOS_IF
КАКОЙ БЫВАЕТ LINUX?
Arch Linux, Gentoo Linux и Linux From Scratch (LFS) представляют собой три разных подхода к созданию и управлению ОС на базе Linux. Каждый из них имеет свои уникальные характеристики, целевую аудиторию и философию. Давайте рассмотрим основные различия между ними.
ARCH LINUX
Философия:
KISS ("Keep It Simple, Stupid") – стремление к простоте и прозрачности.
Архитектура:
Rolling release модель обновлений, где обновления выходят постоянно, и нет четких версий дистрибутива.
Установка:
Минималистичная базовая система устанавливается с помощью скриптов, после чего пользователь сам добавляет необходимые пакеты.
Управление пакетами:
Используются бинарные пакеты, которые устанавливаются через менеджер пакетов pacman. Также поддерживается AUR (Arch User Repository) для установки сторонних приложений.
Производительность и оптимизация:
Хорошая производительность благодаря использованию бинарных пакетов и отсутствию лишних функций.
GENTOO LINUX
Философия:
Максимальная гибкость и контроль над системой через компиляцию всех компонентов из исходников.
Архитектура:
Роллинг-релиз модель обновлений, но с акцентом на компиляцию всего ПО из исходников.
Установка:
Полностью ручная установка, включающая компиляцию всех необходимых пакетов из исходников.
Управление пакетами:
Все пакеты компилируются из исходников с помощью менеджера пакетов Portage.
Производительность и оптимизация:
Высокая производительность за счет компиляции ПО под конкретную архитектуру и возможности оптимизации.
LINUX FROM SCRATCH (LFS).
Философия:
Обучающая платформа для глубокого понимания работы ОС.
Архитектура:
Не является полноценным дистрибутивом; это набор инструкций для самостоятельной сборки системы с нуля.
Установка:
Нет стандартной процедуры установки, так как пользователь собирает систему самостоятельно, следуя руководству.
Управление пакетами:
Нет стандартного менеджера пакетов; все управление осуществляется вручную.
Производительность и оптимизация:
Производительность зависит исключительно от пользователя, так как он контролирует каждый аспект системы.
УРОВЕНЬ СЛОЖНОСТИ и ЦЕЛЕВАЯ АУДИТОРИЯ:
ARCH Linux — cредней сложности.
Требуется знание командной строки и основ администрирования Linux-систем.
Целевая аудитория:
Пользователи, которым нужна простая и мощная система с возможностью тонкой настройки.
GENTOO Linux — cложный.
Требуется глубокое понимание процессов компиляции и настройки системы.
Целевая аудитория:
Опытные пользователи, желающие максимально контролировать каждую деталь своей системы.
Linux From Scratch (LFS) — очень сложный.
Подходит только для опытных пользователей, стремящихся глубоко изучить работу операционной системы.
Целевая аудитория:
Энтузиасты и разработчики, заинтересованные в изучении внутренней архитектуры операционной системы.
ЗАКЛЮЧЕНИЕ.
Каждый из этих дистрибутивов или проектов нацелен на разные аудитории и задачи.
Arch Linux подходит для пользователей, которые ценят баланс между простотой и мощностью.
Gentoo Linux идеален для тех, кто хочет полный контроль над своей системой и готов тратить время на компиляцию и настройку.
Linux From Scratch предназначен для энтузиастов, стремящихся узнать больше о том, как работают операционные системы на самом низком уровне.
КАКОЙ БЫВАЕТ LINUX?
Arch Linux, Gentoo Linux и Linux From Scratch (LFS) представляют собой три разных подхода к созданию и управлению ОС на базе Linux. Каждый из них имеет свои уникальные характеристики, целевую аудиторию и философию. Давайте рассмотрим основные различия между ними.
ARCH LINUX
Философия:
KISS ("Keep It Simple, Stupid") – стремление к простоте и прозрачности.
Архитектура:
Rolling release модель обновлений, где обновления выходят постоянно, и нет четких версий дистрибутива.
Установка:
Минималистичная базовая система устанавливается с помощью скриптов, после чего пользователь сам добавляет необходимые пакеты.
Управление пакетами:
Используются бинарные пакеты, которые устанавливаются через менеджер пакетов pacman. Также поддерживается AUR (Arch User Repository) для установки сторонних приложений.
Производительность и оптимизация:
Хорошая производительность благодаря использованию бинарных пакетов и отсутствию лишних функций.
GENTOO LINUX
Философия:
Максимальная гибкость и контроль над системой через компиляцию всех компонентов из исходников.
Архитектура:
Роллинг-релиз модель обновлений, но с акцентом на компиляцию всего ПО из исходников.
Установка:
Полностью ручная установка, включающая компиляцию всех необходимых пакетов из исходников.
Управление пакетами:
Все пакеты компилируются из исходников с помощью менеджера пакетов Portage.
Производительность и оптимизация:
Высокая производительность за счет компиляции ПО под конкретную архитектуру и возможности оптимизации.
LINUX FROM SCRATCH (LFS).
Философия:
Обучающая платформа для глубокого понимания работы ОС.
Архитектура:
Не является полноценным дистрибутивом; это набор инструкций для самостоятельной сборки системы с нуля.
Установка:
Нет стандартной процедуры установки, так как пользователь собирает систему самостоятельно, следуя руководству.
Управление пакетами:
Нет стандартного менеджера пакетов; все управление осуществляется вручную.
Производительность и оптимизация:
Производительность зависит исключительно от пользователя, так как он контролирует каждый аспект системы.
УРОВЕНЬ СЛОЖНОСТИ и ЦЕЛЕВАЯ АУДИТОРИЯ:
ARCH Linux — cредней сложности.
Требуется знание командной строки и основ администрирования Linux-систем.
Целевая аудитория:
Пользователи, которым нужна простая и мощная система с возможностью тонкой настройки.
GENTOO Linux — cложный.
Требуется глубокое понимание процессов компиляции и настройки системы.
Целевая аудитория:
Опытные пользователи, желающие максимально контролировать каждую деталь своей системы.
Linux From Scratch (LFS) — очень сложный.
Подходит только для опытных пользователей, стремящихся глубоко изучить работу операционной системы.
Целевая аудитория:
Энтузиасты и разработчики, заинтересованные в изучении внутренней архитектуры операционной системы.
ЗАКЛЮЧЕНИЕ.
Каждый из этих дистрибутивов или проектов нацелен на разные аудитории и задачи.
Arch Linux подходит для пользователей, которые ценят баланс между простотой и мощностью.
Gentoo Linux идеален для тех, кто хочет полный контроль над своей системой и готов тратить время на компиляцию и настройку.
Linux From Scratch предназначен для энтузиастов, стремящихся узнать больше о том, как работают операционные системы на самом низком уровне.
#75_NTWK_BASH_ADM
iptables — утилита командной строки для настройки межсетевого экрана (брандмауэра) в Linux-системах. Управляет таблицами и цепочками правил, определяющими политику фильтрации сетевого трафика. iptables работает на уровне ядра OC и взаимодействует с подсистемой netfilter, отвечающей за фильтрацию пакетов.
Основная задача iptables заключается в управлении правилами обработки сетевого трафика, проходящего через сетевую карту компьютера. Эти правила позволяют разрешать, отклонять или перенаправлять пакеты данных в зависимости от их характеристик, таких как источник, получатель, порт, протокол и т.д.
Базовый синтаксис команды iptables выглядит следующим образом:
iptables [-t table] command [match] [target/jump]
Основные параметры:
-t table - определяет таблицу, с которой будет работать команда. По умолчанию используется таблица filter.
Возможные таблицы:
- filter - используется для фильтрации пакетов;
- nat - применяется для изменения адресов (Network Address Translation);
- mangle - для модификации заголовков пакетов;
- raw - для исключения пакетов из механизма отслеживания соединений;
- security - для применения политик безопасности (SELinux).
command - команда, которую нужно выполнить. Например, добавление (-A), удаление (-D) или замена (-R) правила;
match - критерии, по которым выбираются пакеты для применения правила. Например, --source, --destination, --protocol, --dport и т.д.;
target/jump - действие, которое должно быть выполнено над пакетом, если он соответствует условиям. Например, ACCEPT, DROP, REJECT, LOG и т.д.
В фильтре iptables все пакеты делятся на три основные цепочки:
input - обрабатывает входящие пакеты и подключения
forward - применяется для проходящих соединений
output - используется для исходящих пакетов и соединений а также существуют две вспомогательные:
prerouting - в эту цепочку пакет попадает перед обработкой iptables, система еще не знает куда он будет отправлен, в input, output или forward;
postrouting - сюда попадают все проходящие пакеты, которые уже прошли цепочку forward.
Для каждого типа пакетов можно установить набор правил, которые по очереди будут проверяться на соответствие с пакетом и если пакет соответствует, то применять к нему указанное в правиле действие. Правила образуют цепочку, поэтому input, output и forward называют цепочками правил.
Возможные действия:
ACCEPT - разрешить прохождение пакета дальше по цепочке правил;
DROP - удалить пакет;
REJECT - отклонить пакет, отправителю будет отправлено сообщение, что пакет отклонен;
LOG - сделать запись о пакете в лог файл;
QUEUE - отправить пакет пользовательскому приложению.
Примеры использования:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT - добавить правило для разрешения HTTP-трафика.Это правило добавляет новое правило в цепочку INPUT таблицы filter, разрешающее входящие TCP-пакеты на порт 80 (HTTP).
iptables -A INPUT -p icmp -j DROP - блокировать весь ICMP-трафик. Здесь мы добавляем правило, которое блокирует все входящие ICMP-пакеты.
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j REDIRECT --to-port 80 - перенаправление порта. Это правило перенаправляет все входящие TCP-пакеты на порт 8080 интерфейса eth0 на порт 80 того же интерфейса.
iptables -L -v - просмотр текущих правил. Эта команда выводит список всех активных правил с подробностями.
iptables -F - очистка всех правил. Удаляет все существующие правила во всех цепочках.
service iptables save - сохранение настроек. Эта команда позволяет сохранить текущие настройки iptables после перезагрузки системы.
iptables предоставляет мощный инструмент для управления сетевым трафиком в Linux-системах. Правильное использование этой утилиты помогает обеспечить безопасность и стабильность работы сети, а также гибко настраивать правила фильтрации и маршрутизации пакетов.
iptables — утилита командной строки для настройки межсетевого экрана (брандмауэра) в Linux-системах. Управляет таблицами и цепочками правил, определяющими политику фильтрации сетевого трафика. iptables работает на уровне ядра OC и взаимодействует с подсистемой netfilter, отвечающей за фильтрацию пакетов.
Основная задача iptables заключается в управлении правилами обработки сетевого трафика, проходящего через сетевую карту компьютера. Эти правила позволяют разрешать, отклонять или перенаправлять пакеты данных в зависимости от их характеристик, таких как источник, получатель, порт, протокол и т.д.
Базовый синтаксис команды iptables выглядит следующим образом:
iptables [-t table] command [match] [target/jump]
Основные параметры:
-t table - определяет таблицу, с которой будет работать команда. По умолчанию используется таблица filter.
Возможные таблицы:
- filter - используется для фильтрации пакетов;
- nat - применяется для изменения адресов (Network Address Translation);
- mangle - для модификации заголовков пакетов;
- raw - для исключения пакетов из механизма отслеживания соединений;
- security - для применения политик безопасности (SELinux).
command - команда, которую нужно выполнить. Например, добавление (-A), удаление (-D) или замена (-R) правила;
match - критерии, по которым выбираются пакеты для применения правила. Например, --source, --destination, --protocol, --dport и т.д.;
target/jump - действие, которое должно быть выполнено над пакетом, если он соответствует условиям. Например, ACCEPT, DROP, REJECT, LOG и т.д.
В фильтре iptables все пакеты делятся на три основные цепочки:
input - обрабатывает входящие пакеты и подключения
forward - применяется для проходящих соединений
output - используется для исходящих пакетов и соединений а также существуют две вспомогательные:
prerouting - в эту цепочку пакет попадает перед обработкой iptables, система еще не знает куда он будет отправлен, в input, output или forward;
postrouting - сюда попадают все проходящие пакеты, которые уже прошли цепочку forward.
Для каждого типа пакетов можно установить набор правил, которые по очереди будут проверяться на соответствие с пакетом и если пакет соответствует, то применять к нему указанное в правиле действие. Правила образуют цепочку, поэтому input, output и forward называют цепочками правил.
Возможные действия:
ACCEPT - разрешить прохождение пакета дальше по цепочке правил;
DROP - удалить пакет;
REJECT - отклонить пакет, отправителю будет отправлено сообщение, что пакет отклонен;
LOG - сделать запись о пакете в лог файл;
QUEUE - отправить пакет пользовательскому приложению.
Примеры использования:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT - добавить правило для разрешения HTTP-трафика.Это правило добавляет новое правило в цепочку INPUT таблицы filter, разрешающее входящие TCP-пакеты на порт 80 (HTTP).
iptables -A INPUT -p icmp -j DROP - блокировать весь ICMP-трафик. Здесь мы добавляем правило, которое блокирует все входящие ICMP-пакеты.
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j REDIRECT --to-port 80 - перенаправление порта. Это правило перенаправляет все входящие TCP-пакеты на порт 8080 интерфейса eth0 на порт 80 того же интерфейса.
iptables -L -v - просмотр текущих правил. Эта команда выводит список всех активных правил с подробностями.
iptables -F - очистка всех правил. Удаляет все существующие правила во всех цепочках.
service iptables save - сохранение настроек. Эта команда позволяет сохранить текущие настройки iptables после перезагрузки системы.
iptables предоставляет мощный инструмент для управления сетевым трафиком в Linux-системах. Правильное использование этой утилиты помогает обеспечить безопасность и стабильность работы сети, а также гибко настраивать правила фильтрации и маршрутизации пакетов.
#76_ADM_BASH_NTWK
Nmap (Network Mapper) – инструмент для сканирования сетей и портов и аудита безопасности. Он имеет открытый исходный код и может использоваться в различных ОС (Linux, Windows). Nmap используется для анализа состояния сети, обнаружения хостов и сервисов, а также сбора информации о безопасности системы и предоставляет множество функций, таких как определение открытых портов, идентификация операционных систем и ПО, проверка версий служб, какие типы фильтров применяются и многое другое.
Основные функции Nmap:
сканирование портов - определение открытых/закрытых портов на удаленных системах;
определение OC - идентификация ОС на основе ответов сетевых пакетов;
обнаружение сервисов - определение версии службы, работающей на открытом порте;
проверка безопасности - поиск уязвимостей с помощью скриптов NSE (Nmap Scripting Engine);
генерация отчетов - возможность сохранения результатов сканирования в различных форматах;
получение информация о сети в режиме реального времени;
получение подробной информации обо всех IP-адресах, активированных в сканируемой сети;
получение списока живых хостов;
получение информации о типах применямых фильтров. Например, с помощью скриптов можно автоматически обнаруживать новые уязвимости безопасности в сети.
Чаще всего nmap используется для сканирования системы по имени хоста или IP-адресу. Одной из особенностей nmap является то, что эта утилита может определить, включен ли хост, даже если его нельзя пропинговать.
Базовый синтаксис команды nmap выглядит следующим образом:
nmap [опции] <цель>
где <цель> может быть IP-адресом, диапазоном адресов или именем хоста.
Примеры использования:
простое сканирование порта, для проверки одного конкретного порта на целевом хосте можно использовать следующую команду: nmap -p 80 example.com - эта команда проверит только порт 80 на сервере example.com.
сканирование нескольких портов: nmap -p 22,80,443 example.com
cканирование всех портов, используя опцию -p-: nmap -p- example.com
сканирование подсети c указанием диапазона IP-адресов: nmap 192.168.0.0/24
определение операционной системы по ответам сетевого трафика с использованием опции -O: nmap -O example.com
использование скриптов NSE. Скрипты NSE позволяют выполнять более сложные задачи, такие как поиск уязвимостей или сбор дополнительной информации: nmap --script vuln example.com - этот пример выполнит скрипт поиска уязвимостей на указанном хосте.
Полезные опции:
-sS - TCP SYN сканирование (полулегкий метод);
-sT - TCP Connect сканирование (более медленный, но надежный метод);
-A - автоматическое определение ОС, выполнение скриптов NSE и обнаружение версий сервисов;
-oN <файл> - сохранить результаты сканирования в текстовом формате;
-oX <файл> - сохранить результаты в XML формате.
Пример полного сканирования:
nmap -A -p- -oN results.txt example.com - полное сканирование определит OC, версию сервиса, откроет все порты и сохранит результат в файл results.txt.
Nmap является мощным инструментом для администраторов сетей и специалистов по информационной безопасности. Он позволяет быстро получать информацию о состоянии сети, выявлять потенциальные уязвимости и планировать меры по защите инфраструктуры.
Nmap (Network Mapper) – инструмент для сканирования сетей и портов и аудита безопасности. Он имеет открытый исходный код и может использоваться в различных ОС (Linux, Windows). Nmap используется для анализа состояния сети, обнаружения хостов и сервисов, а также сбора информации о безопасности системы и предоставляет множество функций, таких как определение открытых портов, идентификация операционных систем и ПО, проверка версий служб, какие типы фильтров применяются и многое другое.
Основные функции Nmap:
сканирование портов - определение открытых/закрытых портов на удаленных системах;
определение OC - идентификация ОС на основе ответов сетевых пакетов;
обнаружение сервисов - определение версии службы, работающей на открытом порте;
проверка безопасности - поиск уязвимостей с помощью скриптов NSE (Nmap Scripting Engine);
генерация отчетов - возможность сохранения результатов сканирования в различных форматах;
получение информация о сети в режиме реального времени;
получение подробной информации обо всех IP-адресах, активированных в сканируемой сети;
получение списока живых хостов;
получение информации о типах применямых фильтров. Например, с помощью скриптов можно автоматически обнаруживать новые уязвимости безопасности в сети.
Чаще всего nmap используется для сканирования системы по имени хоста или IP-адресу. Одной из особенностей nmap является то, что эта утилита может определить, включен ли хост, даже если его нельзя пропинговать.
Базовый синтаксис команды nmap выглядит следующим образом:
nmap [опции] <цель>
где <цель> может быть IP-адресом, диапазоном адресов или именем хоста.
Примеры использования:
простое сканирование порта, для проверки одного конкретного порта на целевом хосте можно использовать следующую команду: nmap -p 80 example.com - эта команда проверит только порт 80 на сервере example.com.
сканирование нескольких портов: nmap -p 22,80,443 example.com
cканирование всех портов, используя опцию -p-: nmap -p- example.com
сканирование подсети c указанием диапазона IP-адресов: nmap 192.168.0.0/24
определение операционной системы по ответам сетевого трафика с использованием опции -O: nmap -O example.com
использование скриптов NSE. Скрипты NSE позволяют выполнять более сложные задачи, такие как поиск уязвимостей или сбор дополнительной информации: nmap --script vuln example.com - этот пример выполнит скрипт поиска уязвимостей на указанном хосте.
Полезные опции:
-sS - TCP SYN сканирование (полулегкий метод);
-sT - TCP Connect сканирование (более медленный, но надежный метод);
-A - автоматическое определение ОС, выполнение скриптов NSE и обнаружение версий сервисов;
-oN <файл> - сохранить результаты сканирования в текстовом формате;
-oX <файл> - сохранить результаты в XML формате.
Пример полного сканирования:
nmap -A -p- -oN results.txt example.com - полное сканирование определит OC, версию сервиса, откроет все порты и сохранит результат в файл results.txt.
Nmap является мощным инструментом для администраторов сетей и специалистов по информационной безопасности. Он позволяет быстро получать информацию о состоянии сети, выявлять потенциальные уязвимости и планировать меры по защите инфраструктуры.
#77_ADM_DvOp_NTWK
NGINX (произносится как "энжин-экс") – это высокопроизводительный веб-сервер с открытым исходным кодом, который был создан Игорем Сысоевым в 2004 году.
Изначально он разрабатывался для решения проблемы обработки большого количества одновременных соединений, что особенно актуально для высоконагруженных сайтов.
Основные функции Nginx:
— ВЕБ - СЕРВЕР.
Основная функция Nginx заключается в обслуживании статического контента (HTML-файлы, изображения, CSS-стили, JavaScript). Он отлично справляется с обработкой множества параллельных запросов благодаря своей архитектуре событийного ввода-вывода.
— ОБРАТНЫЙ ПРОКСИ (reverse proxy).
Nginx может работать как промежуточный сервер между клиентом и основным сервером приложения.
Это позволяет распределять нагрузку между несколькими серверами, кэшировать ответы, балансировать трафик и защищать основной сервер от перегрузок.
— БАЛАНСИРОВЩИК НАГРУЗКИ:
Nginx способен равномерно распределять запросы между несколькими серверами, обеспечивая высокую доступность системы даже при больших нагрузках.
— КЭШИРОВНИЕ.
Nginx поддерживает различные виды кэширования, такие как кэширование HTTP-ответов, файлов и медиаконтента. Это помогает снизить нагрузку на основные сервера и ускорить время отклика.
— HTTPS и SSL/TLS.
Nginx поддерживает шифрование трафика через протоколы HTTPS и TLS, что обеспечивает безопасность передачи данных между пользователем и сервером.
— ФАЙЛОВЫЦ СЕРВЕР.
Nginx можно использовать для обслуживания файлов напрямую, например, для загрузки видео или других крупных файлов.
— API GATEWAY.
В некоторых случаях Nginx также применяется как шлюз для API, чтобы управлять маршрутизацией запросов к различным сервисам и приложениям.
— ПОЧТОВЫЦ ПРОКСИ.
Хотя эта функциональность менее популярна, Nginx может использоваться как почтовый прокси для работы с такими протоколами, как IMAP, POP3 и SMTP.
Преимущества использования Nginx:
— Высокая производительность и способность обрабатывать большое количество одновременных соединений.
— Низкое потребление ресурсов (CPU и памяти).
— Гибкость настройки и поддержка различных модулей.
— Простота развертывания и управления конфигурацией.
— Поддержка множества протоколов и технологий.
Примеры использования:
- Высоконагруженные сайты, такие как социальные сети, новостные порталы, интернет-магазины.
- Микросервисная архитектура, где Nginx выступает в роли обратного прокси и балансировщика нагрузки.
- Обеспечение безопасности приложений через поддержку HTTPS и SSL/TLS.
- Кэширование статических файлов и динамического контента для ускорения работы сайта.
Таким образом, Nginx является мощным инструментом для создания высокопроизводительных и надежных веб-приложений, которые могут справляться с большими объемами трафика и обеспечивать высокий уровень доступности.
NGINX (произносится как "энжин-экс") – это высокопроизводительный веб-сервер с открытым исходным кодом, который был создан Игорем Сысоевым в 2004 году.
Изначально он разрабатывался для решения проблемы обработки большого количества одновременных соединений, что особенно актуально для высоконагруженных сайтов.
Основные функции Nginx:
— ВЕБ - СЕРВЕР.
Основная функция Nginx заключается в обслуживании статического контента (HTML-файлы, изображения, CSS-стили, JavaScript). Он отлично справляется с обработкой множества параллельных запросов благодаря своей архитектуре событийного ввода-вывода.
— ОБРАТНЫЙ ПРОКСИ (reverse proxy).
Nginx может работать как промежуточный сервер между клиентом и основным сервером приложения.
Это позволяет распределять нагрузку между несколькими серверами, кэшировать ответы, балансировать трафик и защищать основной сервер от перегрузок.
— БАЛАНСИРОВЩИК НАГРУЗКИ:
Nginx способен равномерно распределять запросы между несколькими серверами, обеспечивая высокую доступность системы даже при больших нагрузках.
— КЭШИРОВНИЕ.
Nginx поддерживает различные виды кэширования, такие как кэширование HTTP-ответов, файлов и медиаконтента. Это помогает снизить нагрузку на основные сервера и ускорить время отклика.
— HTTPS и SSL/TLS.
Nginx поддерживает шифрование трафика через протоколы HTTPS и TLS, что обеспечивает безопасность передачи данных между пользователем и сервером.
— ФАЙЛОВЫЦ СЕРВЕР.
Nginx можно использовать для обслуживания файлов напрямую, например, для загрузки видео или других крупных файлов.
— API GATEWAY.
В некоторых случаях Nginx также применяется как шлюз для API, чтобы управлять маршрутизацией запросов к различным сервисам и приложениям.
— ПОЧТОВЫЦ ПРОКСИ.
Хотя эта функциональность менее популярна, Nginx может использоваться как почтовый прокси для работы с такими протоколами, как IMAP, POP3 и SMTP.
Преимущества использования Nginx:
— Высокая производительность и способность обрабатывать большое количество одновременных соединений.
— Низкое потребление ресурсов (CPU и памяти).
— Гибкость настройки и поддержка различных модулей.
— Простота развертывания и управления конфигурацией.
— Поддержка множества протоколов и технологий.
Примеры использования:
- Высоконагруженные сайты, такие как социальные сети, новостные порталы, интернет-магазины.
- Микросервисная архитектура, где Nginx выступает в роли обратного прокси и балансировщика нагрузки.
- Обеспечение безопасности приложений через поддержку HTTPS и SSL/TLS.
- Кэширование статических файлов и динамического контента для ускорения работы сайта.
Таким образом, Nginx является мощным инструментом для создания высокопроизводительных и надежных веб-приложений, которые могут справляться с большими объемами трафика и обеспечивать высокий уровень доступности.
#78_ADM_DvOp_NTWK
Технические особенности Nginx:
— У nginx есть один главный и несколько рабочих процессов.
Основная задача главного процесса — чтение и проверка конфигурации и управление рабочими процессами.
Рабочие процессы выполняют фактическую обработку запросов.
— Как работают nginx и его модули, определяется в конфигурационном файле.
По умолчанию конфигурационный файл называется nginx.conf.
О настройке конфигурационных файлов Nginx.
— Для настройки конфигурационных файлов Nginx используется специальный синтаксис, разработанный специально для этого веб-сервера.
Этот синтаксис не является полноценным языком программирования, но имеет свои особенности и правила, которые позволяют гибко настраивать работу Nginx.
— Основные элементы конфигурации включают директивы, блоки и комментарии.
Вот краткий обзор ключевых аспектов синтаксиса:
ДИРЕКТИВЫ.
Директива представляет собой команду, которая указывает Nginx, как выполнять определенные действия.
Например:
- LISTEN — задает порт, на котором будет слушать сервер;
- SERVER_NAME — определяет имя домена, которое будет обслуживаться этим блоком.
БЛОКИ.
Блоки представляют собой группы директив, объединённых общей задачей. Они начинаются с ключевых слов, таких как:
http, server, location и т.д.,
и заключаются фигурными скобками { }. Внутри блока могут быть другие директивы и вложенные блоки.
КОММЕНТАРИИ.
Комментарии в файле конфигурации обозначаются символом #. Всё, что идёт после этого символа до конца строки, игнорируется интерпретатором.
Пример простого конфигурационного файла nginx.conf:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Этот пример демонстрирует использование основных элементов синтаксиса:
- директив (worker_processes, listen);
- блоков (events, http, server, location);
- комментариев (#).
Таким образом, хотя этот синтаксис и не является отдельным языком программирования, его знание необходимо для эффективной настройки и управления работой Nginx.
Технические особенности Nginx:
— У nginx есть один главный и несколько рабочих процессов.
Основная задача главного процесса — чтение и проверка конфигурации и управление рабочими процессами.
Рабочие процессы выполняют фактическую обработку запросов.
— Как работают nginx и его модули, определяется в конфигурационном файле.
По умолчанию конфигурационный файл называется nginx.conf.
О настройке конфигурационных файлов Nginx.
— Для настройки конфигурационных файлов Nginx используется специальный синтаксис, разработанный специально для этого веб-сервера.
Этот синтаксис не является полноценным языком программирования, но имеет свои особенности и правила, которые позволяют гибко настраивать работу Nginx.
— Основные элементы конфигурации включают директивы, блоки и комментарии.
Вот краткий обзор ключевых аспектов синтаксиса:
ДИРЕКТИВЫ.
Директива представляет собой команду, которая указывает Nginx, как выполнять определенные действия.
Например:
- LISTEN — задает порт, на котором будет слушать сервер;
- SERVER_NAME — определяет имя домена, которое будет обслуживаться этим блоком.
БЛОКИ.
Блоки представляют собой группы директив, объединённых общей задачей. Они начинаются с ключевых слов, таких как:
http, server, location и т.д.,
и заключаются фигурными скобками { }. Внутри блока могут быть другие директивы и вложенные блоки.
КОММЕНТАРИИ.
Комментарии в файле конфигурации обозначаются символом #. Всё, что идёт после этого символа до конца строки, игнорируется интерпретатором.
Пример простого конфигурационного файла nginx.conf:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Этот пример демонстрирует использование основных элементов синтаксиса:
- директив (worker_processes, listen);
- блоков (events, http, server, location);
- комментариев (#).
Таким образом, хотя этот синтаксис и не является отдельным языком программирования, его знание необходимо для эффективной настройки и управления работой Nginx.
#79_ADM_DvOp
DOCKER — это платформа для разработки, доставки и запуска приложений в контейнерах.
Основные понятия:
— Докер-образ – «упаковка» для приложения и зависимостей (в том числе системных);
— Контейнер – экземпляр образа, то есть «оживший» образ.
Контейнер это новый «исполняемый файл», включающий в себя все необходимые продукту зависимости.
Главное преимущество контейнеризации – изоляция зависимостей и единая простая точка запуска ПО.
Docker – «де-факто» стандарт инструмента контейнеризации в индустрии, но он не является первым или последним среди технологий контейнеризации.
Предшественниками контейнеров Docker были виртуальные машины.
Виртуальная машина, как и контейнер, изолирует приложение и его зависимости от внешней среды.
Однако контейнеры Docker обладают преимуществами перед виртуальными машинами — они потребляют меньше ресурсов, их очень легко переносить, они быстрее запускаются и приходят в работоспособное состояние.
Докер-образ состоит из слоев. Каждый слой описывает какое-то изменение, которое должно быть выполнено с данными на запущенном контейнере.
Структура связей между слоями — иерархическая. Имеется базовый слой, на который «накладываются» остальные слои.
Для создания образа используется Dockerfile — каждая инструкция в нем создает новый слой.
Контейнеры Docker предоставляют лёгкую виртуализацию, позволяя упаковывать приложение со всеми необходимыми зависимостями в изолированную среду, которую затем можно легко переносить и запускать на разных системах без необходимости изменять код или настройки.
Для чего нужен Docker?
— Упрощение разработки и тестирования:
Разработчики могут создавать и тестировать приложения в одинаковых условиях независимо от окружения. Это снижает вероятность возникновения проблем совместимости и упрощает процесс разработки.
— Изоляция приложений:
Каждый контейнер работает в своём собственном пространстве, что предотвращает конфликты между разными приложениями, запущенными на одной машине.
— Переносимость:
Приложение, упакованное в контейнер, можно легко перенести на другую машину или облачную платформу без необходимости заново устанавливать зависимости и конфигурировать окружение.
— Масштабируемость:
Docker облегчает масштабирование приложений путём быстрого развёртывания новых экземпляров контейнеров по мере увеличения нагрузки.
— Оптимизация ресурсов:
Контейнеры используют меньше ресурсов по сравнению с традиционными виртуальными машинами, так как они делят ядро операционной системы хоста.
Как устроен Docker?
Архитектура Docker состоит из нескольких компонентов:
- Docker Engine — ядро платформы, отвечающее за создание и управление контейнерами. Включает в себя демона Docker (dockerd) и клиентскую часть (docker CLI).
- Клиентская часть (CLI) — инструмент командной строки, позволяющий пользователям взаимодействовать с Docker Engine для выполнения таких операций, как создание, запуск и остановка контейнеров.
- Контейнер — изолированная среда, содержащая всё необходимое для запуска приложения: код, библиотеки, зависимости и настройки.
Контейнеры работают поверх ядра ОС хоста, используя общие ресурсы, но остаются независимыми друг от друга.
- Образы — шаблоны, на основе которых создаются контейнеры.
Образы содержат инструкции о том, какие файлы и команды должны быть включены в контейнер.
- Регистры образов — репозитории, где хранятся образы Docker.
Самый известный регистр — Docker Hub, но можно использовать и частные регистры.
Docker предоставляет мощный инструмент для упаковки, доставки и запуска приложений в любых средах, будь то локальная машина разработчика, сервер в дата-центре или облачная инфраструктура. Его простота и универсальность делают Docker популярным выбором среди разработчиков и системных администраторов во всём мире.
DOCKER — это платформа для разработки, доставки и запуска приложений в контейнерах.
Основные понятия:
— Докер-образ – «упаковка» для приложения и зависимостей (в том числе системных);
— Контейнер – экземпляр образа, то есть «оживший» образ.
Контейнер это новый «исполняемый файл», включающий в себя все необходимые продукту зависимости.
Главное преимущество контейнеризации – изоляция зависимостей и единая простая точка запуска ПО.
Docker – «де-факто» стандарт инструмента контейнеризации в индустрии, но он не является первым или последним среди технологий контейнеризации.
Предшественниками контейнеров Docker были виртуальные машины.
Виртуальная машина, как и контейнер, изолирует приложение и его зависимости от внешней среды.
Однако контейнеры Docker обладают преимуществами перед виртуальными машинами — они потребляют меньше ресурсов, их очень легко переносить, они быстрее запускаются и приходят в работоспособное состояние.
Докер-образ состоит из слоев. Каждый слой описывает какое-то изменение, которое должно быть выполнено с данными на запущенном контейнере.
Структура связей между слоями — иерархическая. Имеется базовый слой, на который «накладываются» остальные слои.
Для создания образа используется Dockerfile — каждая инструкция в нем создает новый слой.
Контейнеры Docker предоставляют лёгкую виртуализацию, позволяя упаковывать приложение со всеми необходимыми зависимостями в изолированную среду, которую затем можно легко переносить и запускать на разных системах без необходимости изменять код или настройки.
Для чего нужен Docker?
— Упрощение разработки и тестирования:
Разработчики могут создавать и тестировать приложения в одинаковых условиях независимо от окружения. Это снижает вероятность возникновения проблем совместимости и упрощает процесс разработки.
— Изоляция приложений:
Каждый контейнер работает в своём собственном пространстве, что предотвращает конфликты между разными приложениями, запущенными на одной машине.
— Переносимость:
Приложение, упакованное в контейнер, можно легко перенести на другую машину или облачную платформу без необходимости заново устанавливать зависимости и конфигурировать окружение.
— Масштабируемость:
Docker облегчает масштабирование приложений путём быстрого развёртывания новых экземпляров контейнеров по мере увеличения нагрузки.
— Оптимизация ресурсов:
Контейнеры используют меньше ресурсов по сравнению с традиционными виртуальными машинами, так как они делят ядро операционной системы хоста.
Как устроен Docker?
Архитектура Docker состоит из нескольких компонентов:
- Docker Engine — ядро платформы, отвечающее за создание и управление контейнерами. Включает в себя демона Docker (dockerd) и клиентскую часть (docker CLI).
- Клиентская часть (CLI) — инструмент командной строки, позволяющий пользователям взаимодействовать с Docker Engine для выполнения таких операций, как создание, запуск и остановка контейнеров.
- Контейнер — изолированная среда, содержащая всё необходимое для запуска приложения: код, библиотеки, зависимости и настройки.
Контейнеры работают поверх ядра ОС хоста, используя общие ресурсы, но остаются независимыми друг от друга.
- Образы — шаблоны, на основе которых создаются контейнеры.
Образы содержат инструкции о том, какие файлы и команды должны быть включены в контейнер.
- Регистры образов — репозитории, где хранятся образы Docker.
Самый известный регистр — Docker Hub, но можно использовать и частные регистры.
Docker предоставляет мощный инструмент для упаковки, доставки и запуска приложений в любых средах, будь то локальная машина разработчика, сервер в дата-центре или облачная инфраструктура. Его простота и универсальность делают Docker популярным выбором среди разработчиков и системных администраторов во всём мире.
#80_ADM_DvOp
Процесс работы с Docker.
— Создание образа.
Разработчик создаёт файл Dockerfile, описывающий шаги сборки образа. Затем команда docker build собирает образ на основе этого файла.
— Запуск контейнера.
После того как образ собран, его можно запустить командой docker run, создав новый контейнер.
— Управление контейнерами.
Пользователь может останавливать, перезапускать, удалять и инспектировать контейнеры с помощью команд:
- docker stop;
- docker start;
- docker rm;
- docker inspect.
— Шеринг образов.
Готовые образы можно загружать в реестр образов (например, Docker Hub), откуда их могут скачивать и использовать другие пользователи.
Пример использования Docker.
Допустим, у вас есть веб-приложение на Python, использующее Flask. Чтобы создать контейнер для этого приложения, вы можете следовать следующим шагам:
— Создайте файл Dockerfile:
FROM python:3.9
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["python", "./app.py"]
— Соберите образ:
docker build -t my-app .
— Запустите контейнер:
docker run -p 8080:5000 my-app
Теперь ваше приложение доступно по адресу localhost:8080.
Процесс работы с Docker.
— Создание образа.
Разработчик создаёт файл Dockerfile, описывающий шаги сборки образа. Затем команда docker build собирает образ на основе этого файла.
— Запуск контейнера.
После того как образ собран, его можно запустить командой docker run, создав новый контейнер.
— Управление контейнерами.
Пользователь может останавливать, перезапускать, удалять и инспектировать контейнеры с помощью команд:
- docker stop;
- docker start;
- docker rm;
- docker inspect.
— Шеринг образов.
Готовые образы можно загружать в реестр образов (например, Docker Hub), откуда их могут скачивать и использовать другие пользователи.
Пример использования Docker.
Допустим, у вас есть веб-приложение на Python, использующее Flask. Чтобы создать контейнер для этого приложения, вы можете следовать следующим шагам:
— Создайте файл Dockerfile:
FROM python:3.9
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["python", "./app.py"]
— Соберите образ:
docker build -t my-app .
— Запустите контейнер:
docker run -p 8080:5000 my-app
Теперь ваше приложение доступно по адресу localhost:8080.
#81_ADM_DvOp
Инструменты для работы с Docker:
DOCKLE.
Dockle — это инструмент для проверки безопасности образов контейнеров, который можно использовать для поиска уязвимостей.
Основные функции и преимущества Dockle:
- поиск уязвимостей в образах;
- помощь в создании правильного Dockerfile;
- простота в использовании, нужно указать только имя образа;
- поддержка CIS Benchmarks.
DOCKER COMPOSE.
Docker Compose — это инструментальное средство, которое предназначено для решения задач, связанных с развёртыванием проектов.
Docker Compose может пригодиться, если для обеспечения функционирования проекта используется несколько сервисов.
Docker Compose используется для одновременного управления несколькими контейнерами, входящими в состав приложения.
Этот инструмент предлагает те же возможности, что и Docker, но позволяет работать с более сложными распределенными приложениями, например микросервисными.
Инструменты для работы с Docker:
DOCKLE.
Dockle — это инструмент для проверки безопасности образов контейнеров, который можно использовать для поиска уязвимостей.
Основные функции и преимущества Dockle:
- поиск уязвимостей в образах;
- помощь в создании правильного Dockerfile;
- простота в использовании, нужно указать только имя образа;
- поддержка CIS Benchmarks.
DOCKER COMPOSE.
Docker Compose — это инструментальное средство, которое предназначено для решения задач, связанных с развёртыванием проектов.
Docker Compose может пригодиться, если для обеспечения функционирования проекта используется несколько сервисов.
Docker Compose используется для одновременного управления несколькими контейнерами, входящими в состав приложения.
Этот инструмент предлагает те же возможности, что и Docker, но позволяет работать с более сложными распределенными приложениями, например микросервисными.
#83_ADM_BASH_DvOp
Для проверки какой процесс занимает в настоещее время определенный порт мы можем воспользоваться следующей командой:
$ sudo lsof -i :[port_number]
Например:
$ sudo lsof -i :80
Если вам нужно освободить проверяемый порт, и вам удалось определить процесс которым он был занят, то мы можем сделать это посредством команды:
$ sudo systemctl stop [process_name]
Например если порт был занят процессом nginx, то введем в терминале:
$ sudo systemctl stop nginx
это остановит процесс nginx и освободит порт.
Для проверки какой процесс занимает в настоещее время определенный порт мы можем воспользоваться следующей командой:
$ sudo lsof -i :[port_number]
Например:
$ sudo lsof -i :80
Если вам нужно освободить проверяемый порт, и вам удалось определить процесс которым он был занят, то мы можем сделать это посредством команды:
$ sudo systemctl stop [process_name]
Например если порт был занят процессом nginx, то введем в терминале:
$ sudo systemctl stop nginx
это остановит процесс nginx и освободит порт.
#84_ADM_BASH
EXEC
Команда exec в Bash используется для выполнения команд и управления файловыми дескрипторами. Она имеет несколько ключевых возможностей, которые делают её полезной в различных сценариях работы с оболочкой.
Базовый синтаксис:
$ exec [опции] [команды]
Основные функции и флаги:
- замена текущего процесса другим процессом
Если указать команду после exec, то текущий процесс заменяется новым процессом без создания нового дочернего процесса. Это полезно, если нужно запустить новую программу вместо текущей оболочки.
Пример:
$ exec ls -l
Этот код заменит текущую оболочку командой ls -l, которая выведет список файлов в текущем каталоге. После завершения команды оболочка завершится, потому что она была заменена.
- управление файловыми дескрипторами
Файловые дескрипторы позволяют управлять стандартными потоками ввода-вывода (stdin, stdout, stderr), а также создавать новые потоки.
Основные операции:
<file — перенаправление ввода;
>file — перенаправление вывода;
>>file — добавление вывода к файлу;
<&fd — копирование входного потока из другого дескриптора;
>&fd — копирование выходного потока в другой дескриптор;
<>file — открытие файла для чтения и записи.
Примеры:
$ exec 4> log.txt
открывает файл "log.txt" для записи и привязывает его к дескриптору 4;
$ echo "Запись в лог-файл" >&4
запишем строку в файл через дескриптор 4;
$ exec 4>&-
закроем файловый дескриптор 4.
В этом примере команда exec сначала открывает файл log.txt для записи и привязывает его к дескриптору 4. Затем строка записывается в этот файл, используя перенаправление вывода через дескриптор 4. Наконец, файл закрывается.
- переопределение стандартных потоков ввода-вывода
Можно переопределить стандартные потоки ввода-вывода (stdin, stdout, stderr), например, перенаправив их в файлы или другие процессы.
Пример:
$ exec > output.log
перенаправляем stdout в файл output.log
$ exec 2> error.log
перенаправляем stderr в файл error.log
Теперь все сообщения, которые обычно выводятся на экран, будут записаны в файл output.log, а ошибки — в error.log.
- использование в скриптах
Часто exec используют в конце скриптов, чтобы заменить выполнение самого скрипта на выполнение другой программы. Например, это может быть полезно при написании оберток над другими программами.
Пример:
#!/bin/bash
# Предположим, что скрипт выполняет некоторую подготовку перед запуском приложения
prepare_something
# Теперь запускаем приложение
exec my_application "$@"
Здесь my_application будет запущено вместо продолжения выполнения скрипта. Все аргументы, переданные скрипту, будут переданы приложению.
Когда удобно использовать exec:
- Замена текущей оболочки:
Если вам нужно завершить работу оболочки и передать управление другому процессу.
- Перенаправление ввода-вывода:
Для более гибкого управления стандартными потоками ввода-вывода в скриптах.
- Создание временных файловых дескрипторов:
Для открытия файлов и управления ими внутри скрипта.
- Обёртки для других приложений:
Для запуска программ с определёнными параметрами и аргументами, передавая им контроль над выполнением.
Примеры использования:
Пример 1: Перенаправление ошибок в файл
#!/bin/bash
exec 2> errors.log
some_command_that_might_fail
another_command
Все ошибки, возникающие во время выполнения этих команд, будут записываться в файл errors.log.
Пример 2: Обёрточный скрипт
#!/bin/bash
source some_environment_setup.sh
exec application --with-flags "$@"
Скрипт сначала загружает некоторые настройки окружения, затем запускает приложение application с флагами и переданными аргументами.
Пример 3: Временные файловые дескрипторы
#!/bin/bash
exec 5< input_file.txt
while read -u 5 line; do
echo "Read from file: $line"
done
exec 5>&-
Этот пример открывает файл input_file.txt для чтения и читает строки по одной до конца файла, после чего закрывает файл.
EXEC
Команда exec в Bash используется для выполнения команд и управления файловыми дескрипторами. Она имеет несколько ключевых возможностей, которые делают её полезной в различных сценариях работы с оболочкой.
Базовый синтаксис:
$ exec [опции] [команды]
Основные функции и флаги:
- замена текущего процесса другим процессом
Если указать команду после exec, то текущий процесс заменяется новым процессом без создания нового дочернего процесса. Это полезно, если нужно запустить новую программу вместо текущей оболочки.
Пример:
$ exec ls -l
Этот код заменит текущую оболочку командой ls -l, которая выведет список файлов в текущем каталоге. После завершения команды оболочка завершится, потому что она была заменена.
- управление файловыми дескрипторами
Файловые дескрипторы позволяют управлять стандартными потоками ввода-вывода (stdin, stdout, stderr), а также создавать новые потоки.
Основные операции:
<file — перенаправление ввода;
>file — перенаправление вывода;
>>file — добавление вывода к файлу;
<&fd — копирование входного потока из другого дескриптора;
>&fd — копирование выходного потока в другой дескриптор;
<>file — открытие файла для чтения и записи.
Примеры:
$ exec 4> log.txt
открывает файл "log.txt" для записи и привязывает его к дескриптору 4;
$ echo "Запись в лог-файл" >&4
запишем строку в файл через дескриптор 4;
$ exec 4>&-
закроем файловый дескриптор 4.
В этом примере команда exec сначала открывает файл log.txt для записи и привязывает его к дескриптору 4. Затем строка записывается в этот файл, используя перенаправление вывода через дескриптор 4. Наконец, файл закрывается.
- переопределение стандартных потоков ввода-вывода
Можно переопределить стандартные потоки ввода-вывода (stdin, stdout, stderr), например, перенаправив их в файлы или другие процессы.
Пример:
$ exec > output.log
перенаправляем stdout в файл output.log
$ exec 2> error.log
перенаправляем stderr в файл error.log
Теперь все сообщения, которые обычно выводятся на экран, будут записаны в файл output.log, а ошибки — в error.log.
- использование в скриптах
Часто exec используют в конце скриптов, чтобы заменить выполнение самого скрипта на выполнение другой программы. Например, это может быть полезно при написании оберток над другими программами.
Пример:
#!/bin/bash
# Предположим, что скрипт выполняет некоторую подготовку перед запуском приложения
prepare_something
# Теперь запускаем приложение
exec my_application "$@"
Здесь my_application будет запущено вместо продолжения выполнения скрипта. Все аргументы, переданные скрипту, будут переданы приложению.
Когда удобно использовать exec:
- Замена текущей оболочки:
Если вам нужно завершить работу оболочки и передать управление другому процессу.
- Перенаправление ввода-вывода:
Для более гибкого управления стандартными потоками ввода-вывода в скриптах.
- Создание временных файловых дескрипторов:
Для открытия файлов и управления ими внутри скрипта.
- Обёртки для других приложений:
Для запуска программ с определёнными параметрами и аргументами, передавая им контроль над выполнением.
Примеры использования:
Пример 1: Перенаправление ошибок в файл
#!/bin/bash
exec 2> errors.log
some_command_that_might_fail
another_command
Все ошибки, возникающие во время выполнения этих команд, будут записываться в файл errors.log.
Пример 2: Обёрточный скрипт
#!/bin/bash
source some_environment_setup.sh
exec application --with-flags "$@"
Скрипт сначала загружает некоторые настройки окружения, затем запускает приложение application с флагами и переданными аргументами.
Пример 3: Временные файловые дескрипторы
#!/bin/bash
exec 5< input_file.txt
while read -u 5 line; do
echo "Read from file: $line"
done
exec 5>&-
Этот пример открывает файл input_file.txt для чтения и читает строки по одной до конца файла, после чего закрывает файл.