#Linux #github
https://github.com/antonaleks/LinuxPractice
Данная практика посвещена базовым принципам администрирования Linux. Для выполнения практики необходимо развернуть 3 виртуальные машины Linux.
Как пример, можно использовать Virtual Box + Ubuntu Server 20.04.
Для выполнения данного задания необходимо:
- Развернуть три виртуальные машины Linux, согласно схеме ниже
- Linux A
- Сконфигурировать Hostname следующим образом: <your_surname>_server (пропустить если делаете через Play with docker)
- Создать пользователя <your_surname>_1 (пропустить если делаете через Play with docker)
- Сконфигурировать виртуальный интерфейс со следующим ip адресом: 192.168.<день рождения>.10/24
- Развернуть Http сервер на виртуальной машине на порту 5000. Необходимо реализовать минимум три эндпоинта (запрос /get, /post, /put)
- Linux B
- Сконфигурировать Hostname следующим образом: <your_surname>_gateway (пропустить если делаете через Play with docker)
- Создать пользователя <your_surname>_2 (пропустить если делаете через Play with docker)
- Сконфигурировать 2 виртуальных интерфейс со следующими ip адресом: 192.168.<день рождения>.1/24, 192.168.<месяц рождения>.10/24
- С помощью утилит ip route и iptables настроить маршрут пакетов от Linux A до C. Должны быть запрещены все пакеты, кроме http пакетов через порт 5000 (маршруты обязательно, файрвол опционально)
- Запустить программу tcpdump с фильтрацией по портам 5000
- Linux C
- Сконфигурировать Hostname следующим образом: <your_surname>_client (пропустить если делаете через Play with docker)
- Создать пользователя <your_surname>_3 (пропустить если делаете через Play with docker)
- Сконфигурировать виртуальный интерфейс со следующим ip адресом: 192.168.<месяц рождения>.100/24
- С помощью команды curl на машине C послать 3 запроса на машину А в http сервер (/get, /post, /put)
- При перезагрузки системы все сервисы и сетевая архитектура должны также функционировать (сохранить свои настройки)
- Сделать скриншоты всех этапов задания
- Оформить отчет в виде Markdown файла. Приложить конфигурационные файлы в репозиторий
- Для play with docker также нужно написать bash скрипты для воспроизведения на новых вм
Репозиторий оформить следующим образом:
- application - исходный код http сервера
- configs - конфигурационные файлы сетевых настроек виртуальных машин
- report.md - Отчет markdown
P.S. Если не получилось использовать разные утилиты для настройки сети, используйте netplan Смотрите мануал - там информация для virtual box и Play with docker
Цель работы: Настройка трех виртуальных машин Linux (сервер, шлюз и клиент), конфигурация сети между ними, настройка маршрутизации с фильтрацией трафика и развертывание просто веб-сервера.
Инструменты: VirtualBox, Ubuntu Server 20.04.06 LTS.
Данные:
- Фамиля: Абышев
- День рождения: 21
- Месяц рождени: май (5)
Your name: Linux_A
Your server's name: orange_server
Pick a username: orange
Your name: Linux_B
Your server's name: orange_server_2
Pick a username: orange_2
Your name: Linux_C
Your server's name: orange_server_3
Pick a username: orange_3
2.1. Имя хоста и пользователь
- Hostname: orange_server
- Пользователь: orange
2.2. Настройка сети
Сетевые адаптеры в VirtualBox:
- Адаптер 1: Сетевой мост (для доступа)
- Адаптер 2: Внутренняя сеть
Сгенерируем ключ:
Подставим IP:
Конфигурация Netplan (/etc/netplan/00-installer-config.yaml):
Проверка IP - адресов после применения netplan:
2.3. Настройка веб-сервера (Flask): Установим flask:
Завершена:
Создадим директорию для http_server:
Проверим текущую директорию с помощью команды pwd и создадим файл orange_5000.py
Проверим путь к файлу flask с помощью команды which flask:
Создадим systemd unit файл, который будет запускать сервер автоматически при старте системы:
Включим и запустим:
Результат:
3.1. Имя хоста и пользователь
- Hostname: orange_server_2
- Пользователь: orange_2
3.2. Настройка сети:
Сетевые адаптеры в VirtualBox:
- Адаптер 1: Внутренняя сеть
- Адаптер 2: Внутренняя сеть
- Адаптер 3: Сетевой мост (для доступа)
Отредактируем файл net-plan:
Внесенные изменения с помощью команды netplan apply:
Посмотрим изменения через ip a:
3.3. Настройка маршрутизации и файрвола: Включение IP Forwaarding:
По умолчанию запрещаем весь пересылаемый через сервер трафик:
Чтобы разрешить переброс только конкретных пакетов по конкретному порту, следует настроить маршрут. Проверим внесенные правила с помощью iptables -L:
Сохраним внесенные изменения:
4.1. Имя хоста и пользователь
- Hostname: orange_server_3
- Пользователь: orange_3
4.2. Настройка сети:
Сетевые адаптеры в VirtualBox:
- Адаптер 1: Внутренняя сеть
- Адаптер 2: Сетевой мост (для доступа)
Проверим текущие интерфейсы:
Конфигурация Netplan (/etc/netplan/00-installer-config.yaml
Проверка IP- адрессов:
Установка curl:
С клиента (С) выполнены команды curl к серверу А:
- GET:
- POST:
- PUT:
Попытка выполнить ping с клиента C на сервер А была неуспешной (пакеты блокируются шлюзом B):
Все три виртуальные машины были перезагружены с помощью команды sudo reboot. После перезагрузки выполнены следующие проверки:
-
IP Forwarding на Linux B активен:
-
Правила iptables на Linux_B загружены:
-
Веб-сервер на Linux_A запущен:
-
Тестовый запрос с Linux_C на Linux_A:
В ходе выполнения практической работы №1 "Базовые принципы администрирования Linux" была успешна настроена сетевая инфраструктура из трех виртуальных машин Linux. Настроен IP - адрес для сервера (А) и клиента (С), а также два статических IP для шлюза (B). С помощью iptables на шлюзе настроена маршрутизация и фильтрация трафика, разрешающая только HTTP - запросы на порт 5000 от клиента к серверу. Веб - сервер FLask был развернут на сервере и настроен для автозапуска с помощью systemd. Все настройки сохраняются после перезагрузки системы.
- https://1cloud.ru/help/linux/change_ip_in_ubuntu_20 - # Замена IP в Ubuntu 20.04 с помощью net-tools.
- https://habr.com/ru/articles/783574/ - # Flask для начинающих
- https://flask.palletsprojects.com/en/stable/quickstart/
- https://habr.com/ru/companies/slurm/articles/255845/ - # Systemd за пять минут
- https://tokmakov.msk.ru/blog/item/494
- https://timeweb.cloud/docs/unix-guides/iptables-setup
- https://habr.com/ru/articles/747616/ - # Введение в Iptables
- https://pc.ru/articles/poluchenie-root-prav-pri-rabote-v-winscp - # Получение root прав при работе в WinSCP











































