#64_PkS_PPPO_TP
YAGNI (аббревиатура от фразы "You aren’t gonna need it" — «тебе это не понадобится») — принцип проектирования программного обеспечения, предполагающий отказ от избыточной функциональности.
Другими словами, не нужно писать код, который может пригодиться в будущем, но сейчас в нём нет потребности. Вскоре он станет неактуальным и его придётся переписать под конкретную задачу.
Логика принципа YAGNI заключается в том, что время, которое тратится на написание функций на будущее, можно использовать для доработки и улучшения того, что уже есть. Кроме того, непонятно, как такие функции будут развиваться дальше — может оказаться так, что понадобится совсем другое и модули, созданные про запас, придётся переписывать.
YAGNI (аббревиатура от фразы "You aren’t gonna need it" — «тебе это не понадобится») — принцип проектирования программного обеспечения, предполагающий отказ от избыточной функциональности.
Другими словами, не нужно писать код, который может пригодиться в будущем, но сейчас в нём нет потребности. Вскоре он станет неактуальным и его придётся переписать под конкретную задачу.
Логика принципа YAGNI заключается в том, что время, которое тратится на написание функций на будущее, можно использовать для доработки и улучшения того, что уже есть. Кроме того, непонятно, как такие функции будут развиваться дальше — может оказаться так, что понадобится совсем другое и модули, созданные про запас, придётся переписывать.
👌1
#65_PkS_PPPO_TP
DRY (Don’t Repeat Yourself) переводится с английского языка как «НЕ ПОВТОРЯЙСЯ».
Смысл принципа DRY заключается в отсутствии дублирования кода.
Он помогает избежать избыточности и облегчить поддержку кода, минимизируя количество мест, где нужно вносить изменения.
Некоторые паттерны использования принципа DRY:
- НЕ ДОПУСКАТЬ КОПИРОВАНИЯ — создавать функции и классы, которые можно переиспользовать вместо дублирования кода в разных местах;
- СОБЛЮДАТЬ ЕДИНУЮ ЛОГИЧЕСКУЮ ЦЕПОЧКУ — поддерживать общую структуру и организацию кода, чтобы избежать повторного изобретения колеса;
- Перед добавлением новой функции, проверить, возможно её аналог уже присутствует в проекте;
- Преимущественно улучшать и рефакторить существующий код, а не создавать новый, чтобы избежать дублирования функциональности;
- ИСПОЛЬЗОВАТЬ БИБЛИОТЕКИ И ФРЕЙМВОРКИ, которые обеспечивают общие решения для часто встречающихся задач;
- РЕГУЛЯРНО ПРОВОДИТЬ РЕВЬЮ КОДА, чтобы обнаруживать и устранять дублирование на ранних стадиях.
DRY (Don’t Repeat Yourself) переводится с английского языка как «НЕ ПОВТОРЯЙСЯ».
Смысл принципа DRY заключается в отсутствии дублирования кода.
Он помогает избежать избыточности и облегчить поддержку кода, минимизируя количество мест, где нужно вносить изменения.
Некоторые паттерны использования принципа DRY:
- НЕ ДОПУСКАТЬ КОПИРОВАНИЯ — создавать функции и классы, которые можно переиспользовать вместо дублирования кода в разных местах;
- СОБЛЮДАТЬ ЕДИНУЮ ЛОГИЧЕСКУЮ ЦЕПОЧКУ — поддерживать общую структуру и организацию кода, чтобы избежать повторного изобретения колеса;
- Перед добавлением новой функции, проверить, возможно её аналог уже присутствует в проекте;
- Преимущественно улучшать и рефакторить существующий код, а не создавать новый, чтобы избежать дублирования функциональности;
- ИСПОЛЬЗОВАТЬ БИБЛИОТЕКИ И ФРЕЙМВОРКИ, которые обеспечивают общие решения для часто встречающихся задач;
- РЕГУЛЯРНО ПРОВОДИТЬ РЕВЬЮ КОДА, чтобы обнаруживать и устранять дублирование на ранних стадиях.
#66_PkS_PPPO_TP
KISS (Keep It Simple, Stupid) — это принцип проектирования и разработки, суть которого заключается в том, чтобы создавать простые и понятные решения, избегая избыточной сложности.
Основная идея заключается в том, что простота способствует лучшему пониманию, использованию и поддержке системы или продукта.
Принцип KISS предписывает избегать излишней сложности, лишних функций и элементов там, где в этом нет прямой необходимости, потому что они могут запутать пользователя и усложнить процесс разработки и поддержки.
Автором принципа KISS является американский авиаконструктор Кларенс Леонард «Келли» Джонсон (1910–1990). Он предложил этот принцип в рамках работы над проектированием военных самолётов в компании Lockheed и впервые озвучил его предположительно в 1938 году.
Принцип KISS применим в различных областях, где важна практичность и понятность. Например, в программировании, дизайне интерфейсов, управлении проектами, рекламе, маркетинге и многих других сферах.
KISS (Keep It Simple, Stupid) — это принцип проектирования и разработки, суть которого заключается в том, чтобы создавать простые и понятные решения, избегая избыточной сложности.
Основная идея заключается в том, что простота способствует лучшему пониманию, использованию и поддержке системы или продукта.
Принцип KISS предписывает избегать излишней сложности, лишних функций и элементов там, где в этом нет прямой необходимости, потому что они могут запутать пользователя и усложнить процесс разработки и поддержки.
Автором принципа KISS является американский авиаконструктор Кларенс Леонард «Келли» Джонсон (1910–1990). Он предложил этот принцип в рамках работы над проектированием военных самолётов в компании Lockheed и впервые озвучил его предположительно в 1938 году.
Принцип KISS применим в различных областях, где важна практичность и понятность. Например, в программировании, дизайне интерфейсов, управлении проектами, рекламе, маркетинге и многих других сферах.
#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, но позволяет работать с более сложными распределенными приложениями, например микросервисными.