МИПиАТ

Лабораторная 1. Веб-сервер, TFTP

Цель:

Получить базовые навыки работы для работы с файловым сервером, и веб-сервером

Задачи:

  1. Подключится к виртуальной машине на облачной платформе СПбГУТ
  2. Установить и настроить tftp сервер
  3. Проверить tftp сервер
  4. Настроить веб-сервер
  5. Проверить веб-сервер путем подключения Схема виртуального стенда:

Задание 1. TFTP.

Подключиться к labnode1, логин - labuser, пароль - labpass1! Для начала необходимо установить пакеты tftp сервера, клиента, и xinetd

sudo yum install tftp tftp-server xinetd

После того как мы установили tftp сервер, нам необходимо настроить в первую очередь демона tftp для работы с подсистемой запуска xinetd, для этого нам необходимо отредактировать конфигурационный файл xineted

sudo vi /etc/xinetd.d/tftp

В нем необходимо модифицировать два параметра server_args и disable. Аргумент server_args отвечает за те аргументы, которые будут передаваться серверу при его старте, а параметр disable позволяет изменять состояние заранее прописанных сервисов, без комментирования\удаления их из конфигурационных файлов

server_args = -c -p -u tftpd -U 111 -s /var/lib/tftpboot
disable = no

После того как мы отредактировали конфигурационный файл, нам необходимо создать отдельного пользователя tftp:

sudo useradd --no-create-home -s /sbin/nologin tftpd 

Параметр –no-create-home, означает, что при создании пользователя нет необходимости нет необходимости создавать домашнюю директорию, этот параметр часто применяется если необходимо создать сервисного пользователя. После этого нам необходимо изменить владельца папки tftpboot

sudo chown tftpd:tftpd /var/lib/tftpboot 

Далее выставляем разрешения на папку

sudo chmod 777 /var/lib/tftpboot

После того как мы применили прошлые настройки нам необходимо перезапустить xinetd

sudo systemctl restart xinetd

Так же необходимо добавить демоны в автозагрузку, для этого нужно выполнить команду:

sudo systemctl enable xinetd
sudo systemctl enable tftp

Задание 2. Веб сервер

Веб-сервер – это программа, работающая в режиме ожидания запросов от пользовательских программ. Взаимодействие сервера с клиентом происходит чаще всего по протоколу HTTP. В качестве веб сервера мы будем использовать Apache. В CentOS пакет Apache называется httpd в первую очередь нам будет необходимо установить его.

sudo yum install httpd

После установки нам необходимо сразу запустить и добавить веб-сервер в автозагрузку.

sudo systemctl start httpd
sudo systemctl enable httpd

Для проверки работы Apache можно использовать команду

sudo systemctl status httpd

При правильной работе вы получите аналогичное состояние работы сервиса Рисунок1.png

Задание 3. Тестовая HTML страница

После этого создадим папку, которую будем использовать в дальнейших своих работах

sudo mkdir /var/www/deploy

В этой папке создаем проверочную страницу

sudo vi /var/www/deploy/test

Заполняем его простым текстом

Бригада №
Фамилия 1 человека в бригаде
Фамилия 2 человека в бригаде

Создаем новый конфигурационный файл

sudo vi /etc/httpd/conf.d/default.conf

И заполняем его по примеру

<VirtualHost *:80>
    DocumentRoot /var/www/deploy
    <Directory /var/www/deploy>
        AllowOverride None
	    Require all granted
    </Directory>
</VirtualHost>

После этого необходимо изменять владельца всех файлов в папке /var/deploy на Apache

sudo chown -R apache:apache /var/www/deploy

Перезапускаем веб-сервер

sudo systemctl restart httpd

После этого с помощью консольной программы curl проверяем работу веб сервера

curl http://192.168.0.10/test

После этого нам в выводе будет показан текст который мы записали ранее в /var/www/deploy/test

Лабораторная 2. Консольные мультиплексоры и управление процессами

Цель:

Приобрести навыки работы для работы с терминальными мультиплексорами

Задачи:

  1. Подключится к виртуальной машине на облачной платформе СПбГУТ
  2. Установить Tmux
  3. Научиться работать с Tmux.
  4. Установить Screen
  5. Научиться работать с Screen.

Установка Tmux

Подключиться к виртуальной машине и установить пакет Tmux

sudo yum install tmux -y

Работа с tmux

Создание сессии в tmux
tmux
Создание сессии с названием Test
tmux new -s Test
Управление внутри сессии:

Префикс(клавиши с которых начинаются команды) по умолчанию CTRL + B В дальнейшем будет сокращено до CB Сначала нажимается префикс в дальнейшем команда

Подключится к сессии
tmux a

подключение в таком случае произойдет к первой созданной сессии

Подключение к сессии с названием Test
tmux a -t Test
Посмотреть список открытых сессий в tmux
tmux ls
Закрыть сессию в Test в Tmux
tmux kill-session -t Test
Закрыть все сессии в tmux
tmux kill-server
Задание Tmux

Cоздать 2 сессии

Проверьте все ли правильно создано, сравнив со скриншотом image-1667237046855.png

Работа с Screen

Установка Screen
sudo yum install -y screen
Создание сессии в screen

Создать сессию в screen можно с помощью команды

screen
Проверить, что вы зашли в screen можно выполним команду
echo $TERM

В ответе на эту команду у вас появится строка с названием вашего окружения с приставкой screen.

Создать новую сессию screen с названием newscreen
screen -S newscreen
Посмотреть список запущенных сессий
screen -ls
Подключится к работающей сессии screen c id 23771
screen -r 23771
Управление внутри сессии:

Префикс(клавиши с которых начинаются команды) по умолчанию CTRL + A В дальнейшем будет сокращено до CB Сначала нажимается префикс в дальнейшем команда

Управления процессами в Linux

Команды для работы с задачами
Команда Описание
jobs Список всех задач
bg n Помещает текущее или указанное задание в фоновый режим, где n - ID задачи
fg n Выводит на передний план текущее или указанное задание, где n - ID задачи
CTRL + Z Останавливает задание на переднем плане и помещает его в фоновый режим
CTRL + C Отправить сигнал о прерывание(завершение) процесса в на переднем плане
{command} & запуск процесса в фоновом режиме
Задание управление процессами
  1. Установить htop
sudo yum install -y htop
  1. Запустите в фоне 5 задач:

    1. htop
    2. watch ss -tulpan
    3. ping 8.8.8.8
    4. ping 192.168.0.1
    5. ping yandex.ru
  2. Посмотрите список всех задач

    jobs
    
  3. По очереди переместите все задачи на передний план и верните их обратно в фон и снова проверьте список всех задач

  4. Убейте все запущенные ранее процессы

  5. Выйдите все сеансы в screen и tmux

Лабораторная 3. Пакетные анализаторы трафика

Цель:

Приобрести навыки работы с пакетными анализаторами трафика

Задачи:

  1. Подключится к виртуальной машине на облачной платформе СПбГУТ
  2. Установить tcpdump
  3. Получить навыки работы c tcpdump
  4. Получить навыки работы c SCP
  5. Получить навыки работы с Wireshark
Работа с анализатором пакетов tcpdump

tcpdump это компьютерная программа анализатор пакетов работающая через интерфейс командной строки. Она позволяет пользователю отображать пакеты, передаваемые или получаемые по сети

Синтаксис tcpdump
tcpdump {опции} -i {название интерфейса} {Фильтры}
опции tcpdump
Ключ опции Что делает
-A Вывод пакетов в кодировке ASCI
-c n перехватить n пакетов
-C n создание дампа трафика определенного при размере, при генерации больше заданного создать новый файл для дампа, где n размер пакета по умолчанию указывается 1000000 байт

Добавив к значению суффикс k/K, m/M или g/G, единицу измерения можно изменить на 1,024 (КиБ), 1,048,576 (МиБ) или 1,073,741,824 (ГиБ) соответственно.
-D вывести список сетевых интерфейсов
-e выводить информацию уровня соединения для каждого пакета, это может быть полезно, например, для отображения MAC адреса
-n не отображать домены
-K не проверять контрольные суммы пакетов
-w {название дампа}.pcap запись вывода в файл
-r {название дампа}.pcap чтение дампа созданного с помощью ключа -w
-v -vv -vvv Более подробный вывод, желательно устанавливать -vvv, для дальнейшей работы
-q выводить минимум информации
Примеры работы с tcpdump

Просмотр всех интерфейсов

sudo tcpdump -D 

Просмотр всего трафика на интерфейсе eno0 с адресом назначения 8.8.8.8

sudo tcpdump -i eno0 ip dst 8.8.8.8

Название интерфейса брать из своей конфигурации

Просмотр всего трафика на интерфейсе eno0 с адресом отправки 8.8.8.8

sudo tcpdump -i eno0 ip src 8.8.8.8

Название интерфейса брать из своей конфигурации

Просмотр всего трафика на интерфейсе eno0 с доменным именем назначения resds.ru

sudo tcpdump -i eno0 dst host  resds.ru

Название интерфейса брать из своей конфигурации

Просмотр всего трафика на интерфейсе eth0 с доменном отправки resds.ru

sudo tcpdump -i eno0 dst host resds.ru

Название интерфейса брать из своей конфигурации

Просмотр трафика на интерфейсу eno0 с использованием 80 порта

sudo tcpdump -i eno0 port 80

Название интерфейса брать из своей конфигурации

Просмотр трафика на интерфейсе eth0 использующих диапазон портов 80-443

sudo tcpdump -i eth0 portrange 80-443

Также для некоторых протоколов существуют готовые фильтры к примеру можно отфильтровать все arp пакеты интерфейса eth0

sudo tcpdump -i eth0 arp

Возможно фильтрация по размеру пакета, так мы можем отфильтровать все пакеты меньше 64 байт

sudo tcpdump -i eth0 less 64

Фильтрация пакетов больше 64

sudo tcpdump -i eth0 greater 64

Сохранить весь udp трафик проходящий интерфейс eth0 в файл dump.pcap

sudo tcpdump -i eth0 udp -w dump.pcap

прочитать дамп dump.pcap

tcpdump -r dump.pcap

Использование SCP

SCP (secure copy) — это утилита командной строки, которая позволяет безопасно копировать файлы и каталоги между двумя локациями. Базовая технология для работы scp - это SSH(Secure Shell)

С помощью scp можно скопировать файл или каталог:

Синтаксис SCP
scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2
Опции SCP
ключ Что делает
-p порт ssh на удаленной системе
-r рекурсивное копирование
Сжатие при передаче на удаленное устройство
-i n использование ключа авторизации, где n путь к файлу ключа
-1 использовать SSH 1
-2 использовать SSH 2
-4 использовать IPv4
-6 использовать IPv6
-o ssh_option Возможность использовать дополнительные опции реализованные в протоколе SSH, на месте ssh_option используется ключи используемые ssh клиентом
-q Тихий режим
ничего не выводится во время передачи
Примеры использования

Перемещение файла foobar.txt с узла resds.ru под пользователем test в локальную домашнюю директорию

scp test@resds.ru:foobar.txt ~/

является примером, не выполнять

Перемещение файла dump.pcap из текущей директории на компьютер с именем windows-ad-pc для пользователя tarabanov.if находящимся в домене ad, в домашнюю директорию пользователя

scp dump.pcap ad\\tarabanov.if@windows-ad-pc:c:/users/tarabanov.if

Заданием scp
  1. Создайте текстовый файл с вашими ФИО и группой и переместите его на локальный пк(аудиторный)
    Группа ИКТК-XY
    Иванов Иван Иванович
    Петров Петр Петрович
    
  2. создайте нового пользователя test_scp с паролем password
    1. смените пользователя на test_scp
    2. Создайте текстовый файл с названием лабораторной работы
    3. Вернуться на основную учетную запись
    4. передать с пользователя test_scp на локальный пк(аудиторный)

Задание

  1. Открыть консольный мультиплексор
    1. Запустить снятие трафика, с записью трафика в файл http.pcap
    2. Разделить экран вертикально на половину
    3. Загрузить страницу, сделанную в первой лаб. работе
    4. Закончить снятие трафика
  2. Передать файл на локальный(аудиторный пк)
  3. Открыть файл в wireshark, отфильтровать для отображения только задействованных пакетов в передачи html страницы

Лабораторная 4. Сетевая загрузка

Цель:

Получение навыков по работе с сетевой загрузкой операционной системы

Задачи:

  1. Подключится к виртуальной машине на облачной платформе СПбГУТ
  2. Подготовить образ операционной системы Ubuntu
  3. Скомпилировать загрузчик IPXE
  4. Настроить dnsmasq
  5. Снять дамп трафика во время установки ОС по сети
  6. Установить операционную систему, с помощью сетевой загрузки

Задание 1. Подготовка образа

В первую очередь необходимо скачать минимальный образ Ubuntu 20.04 Server на виртуальный сервер

cp /var/lib/cloud/s3cfg .s3cfg
s3cmd get s3://lab5/ubuntu-20.04-server.iso ~/  

После этого необходимо смонтировать образ в папку /mnt/

sudo mount ubuntu-20.04-server.iso /mnt/

Создайте папку, где в дальнейшем мы разместим образ ubuntu

sudo mkdir /var/www/deploy/ubuntu

Скопируйте все файлы из папки /mnt/ в папку /var/www/deploy/ubuntu

sudo cp -Rf /mnt/* /var/www/deploy/ubuntu

Также необходимо перенести и сам образ Ubuntu в папку /var/www/deploy/ubuntu

sudo cp ubuntu-20.04-server.iso /var/www/deploy/ubuntu

Измените владельца директории и его все его содержимого на Apache

sudo chown -R apache:apache /var/www/deploy

Задание 2. Подготовка загрузчика IPXE

IPXE - это свободная реализация программного обеспечения для начальной загрузки по сети. В первую очередь устанавливаем все необходимые пакеты для скачивания и сборки пакета

sudo yum install git-core gcc binutils make perl syslinux xz-devel

Перейдите в домашнюю директорию

cd ~

Скопируете репозиторий ipxe c копии официального git репозитория

git clone https://gitlab.resds.ru/tarabanov.if/ipxe.git

Ничего изменять в комманде не нужно

Перейти в директорию репозитория и перейти на ветку версии 1.21.1

cd ipxe
git checkout v1.21.1

Перейдите в директорию с исходным кодом

cd src/

Включаем поддержку сетевого хранилища

sed -i  's/#undef\tDOWNLOAD_PROTO_NFS/#define\tDOWNLOAD_PROTO_NFS/' config/general.h

выполнять внимательно

Также нам необходим добавить поддержку команды Ping

sed -i 's/\/\/#define\ PING_CMD/#define\ PING_CMD/' config/general.h
sed -i 's/\/\/#define\ IPSTAT_CMD/#define\ IPSTAT_CMD/' config/general.h
sed -i 's/\/\/#define\ REBOOT_CMD/#define\ REBOOT_CMD/' config/general.h
sed -i 's/\/\/#define\ POWEROFF/#define\ POWEROFF/' config/general.h

выполнять внимательно

Создайте встроенный скрипт embed.ipxe

vi embed.ipxe

Заполните скрипт такой конфигураций

#!ipxe

dhcp
chain http://${next-server}/boot.ipxe || shell

Не допускается пустая строка сверху

Скомпилируйте образ загрузчика IPXE

make bin-x86_64-efi/ipxe.efi EMBED=embed.ipxe

Скопируйте, скомпилированный загрузчик в папку /var/lib/tftpboot/

sudo cp bin-x86_64-efi/ipxe.efi /var/lib/tftpboot/

Дальше необходимо подготовить скачать загрузочное меню

s3cmd get s3://lab5/boot.ipxe ~/boot.ipxe
sudo cp ~/boot.ipxe /var/www/deploy/boot.ipxe
sudo chown -R apache:apache /var/www/deploy/

Задание 3. Настройка DNSMASQ

Установите пакет dnsmasq

sudo yum install dnsmasq

Запустите демон dnsmasq

sudo systemctl start dnsmasq

Добавьте в автозагрузку

sudo systemctl enable dnsmasq

Измените конфигурацию dnsmasq /etc/dnsmasq.conf

dhcp-range=192.168.0.15,192.168.0.15,12h
dhcp-option=option:router,192.168.0.1
dhcp-boot=ipxe.efi,192.168.0.10
enable-tftp
tftp-root=/var/lib/tftpboot/
log-queries
conf-dir=/etc/dnsmasq.d

конфигурацию можно изначально полностью очистить

Перезапустите dnsmasq

sudo systemctl restart dnsmasq

Для проверки состояния можно воспользоваться командой

sudo systemctl status dnsmasq

Отключите фаервол

sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl mask firewalld

Задание 4. Снятие трафика

Во время установки операционной системы будет необходимо снять трафик, который идет при взаимодействии labnode1 и labnode2, самый простой способ записи в файл это

sudo tcpdump -i eth0 -w dump.pcap

Задание 5. Развертывания Ubuntu

Для дальнейшей работы нам необходим на виртуальной машине labnode2

  1. Перед вами после перехода в консоль появится UEFI shell в нем необходимо вписать команду exit
  2. После этого в меню вам необходимо выбрать Boot Manager, после этого выбрать вариант загрузки в виде UEFI PXEv4, дальше будет происходить получения ранее созданного ipxe
  3. В меню загрузчика необходимо выбрать образ ubuntu, после нажатия Enter, будет загружен live образ Ubuntu с помощью которого в дальнейшем мы будем производить установку системы. На самом деле перед вами установочное меню операционной системы ubuntu 20 в серверном исполнении, и возможностью установки различных сервисов. В данной работе установка подразумевает под собой установку параметров в режиме по умолчанию. Для навигации по установочному меню используются кнопки клавиатуры: вверх-вниз– для перемещения фокуса выделения по пунктам меню, enter – для нажатия на необходимый пункт, пробел – для выбора пунктов в меню со списком выбора, Tab – для переключения между группами пунктов выбора.
  4. В первом пункте по умолчанию выбран язык English – лучше его изменить на русский, для избегания проблем с локализацией. Для этого переместить фокус выделения на русский язык и нажать – enter.
  5. В следующем пункте выберете вариант продолжения установки без обновления загрузчика
  6. В следующем меню оставить английскую раскладку клавиатуры и нажать готово
  7. В следующем меню – сетевые соединения – оставить все параметры по умолчанию и нажать готово
  8. Меню ввода адреса прокси сервера оставить пустым и нажать – готово
  9. В меню выбора зеркала для скачивания архивов ничего не менять и нажать готово
  10. В меню настройки дисковых устройств выбрать пункт автоматической разметки диска, и если он и выбран – нажать готово

Когда вы убедитесь, что все сделали правильно нажмите «Готово» В следующем меню заполнить все поля имени пользователя и пароля, в качестве имени пользователя и пароля можно использовать: labuser labpass1!

Рисунок4.png

В новом меню включите установку сервера OpenSSH и нажмите готово

Рисунок5.png

В следующем меню, сразу нажмите готов Дождитесь установки операционной системы и с помощью нажатия Cancel update and reboot, произойдет перезагрузка системы, введите свой логин и пароль установленный в прошлых пунктах и попробуйте проверить работу сети с помощью команды

ping 192.168.0.10

Задание 6. Анализ трафика

  1. закончите снятие трафика
  2. перенесите дамп на аудиторный пк
  3. Ответьте на вопросы:
    1. Какие протоколы использовались во время установки ОС?
    2. Как выглядит сценарий взаимодействия при сетевой загрузки?
    3. За что отвечает dnsmasq?
    4. Что такое IPXE?
  4. Показать сценарий взаимодействия загрузки

Лабораторная 5. Облачное хранилище

Цель:

Приобрести навыки работы с пакетными анализаторами трафика

Задачи:

  1. Подключится к виртуальной машине на облачной платформе СПбГУТ
  2. Создать порт
  3. Подключить порт к работающей VM
  4. Установить NextCloud
  5. Загрузить тестовый файл в nextcloud
  6. проанализировать трафик, во время загрузки файла в облачное хранилище
1. Подключение к облачной платформе
  1. Перейдите в браузере по адресу cloud.resds.ru

  2. Авторизуйтесь на платформе

  3. В верхнем левом углу выберите свой проект $GROUP-team$N:pxe-lab, где $GROUP-название вашей группы, $N - номер бригады

2. Подключение порта к работающей VM
  1. В меню в левой части экрана выбрать Проект->Вычислительные ресурсы->Инстансы

  2. Нажать у labnode-2 на стрелочку вниз

  3. В выпавшем меню нажать Подключить интерфейс

  4. В окне выбрать аналогичные пункты

  5. Нажать Подключить интерфейс

3. Установка NextCloud
  1. Скачиваем и устанавливаем пакеты Nextcloud

    sudo snap install nextcloud
    
  2. Запускаем облачное хранилище Nextcloud

    sudo snap start nextcloud
    
  3. Настроим группы безопасности, чтобы у нас появилась возможность подключение по этому адресу с других портов

    1. Переходим в Проект->Сеть->Группа безопасности
    2. Выберите группу безопасности default
    3. Нажмите в ней Управление правилами
    4. И добавьте правило разрешающее http
  4. Включаем интерфейс и получаем ip адрес

    sudo dhclient enp8s0
    
  5. Для подключения – в браузере набрать адрес виртуального сервиса

  6. После подключения в браузере - задать логин и пароль администратора системы (можно использовать labuser и labpass1!), снять опцию – установить рекомендуемые приложения и нажать – завершить установку

  7. После завершения настройки облачного сервиса вы сможете начать им пользоваться, он будет полностью под вашим контролем. Все файлы будут в меню файлы, вы сможете как загрузить их через браузер с вашего локального компьютера просто перетащив, так и скачать их с облака.

    P.S.
    Nextcloud так же имеет приложения для различных платформ:
    Для компьютера
    Для android
    Для iOS
    При установке этого приложения вам нужно будет ввести адрес вашего сервиса, ваш логин, и ваш пароль который вы задали на пункте 4

4. Загрузка тестового файла
  1. Запустите на сервере снятие трафика с помощью tcpdump
  2. С помощью одного из приложений, загрузите любой файл на сервер
  3. Закончите сбор трафика
  4. Перенесите дамп файл себе на ПК
5. Ответьте на вопросы
  1. Проанализируете и назовите используемые для передачи протоколы.
  2. Какой пакет отвечает за началу загрузки файла с облачного хранилища?
  3. Какой HTTP метод использовался для скачивания, и какие поля пакета использовались для этого?

Лабораторная 6. Развертывание Asterisk

Цель:

Получение базовых навыков работы в настройке программной АТС Asterisk.

Задачи:

  1. Подключится к облачной платформе СПбГУТ
  2. Скачать исходные файлы Asterisk
  3. Скомпилировать Asterisk
  4. Настроить Asterisk
  5. Запустить Asterisk
  6. Зарегистрировать пользователя в программном телефоне Linphone

Схема виртуального стенда:

Ход работы:

Подготовка стенда

Для прохождения трафика с Asterisk, во внешнюю сеть нам необходимо настроить работу с внешней сетью, для этого нам нужно из узла Labnode-2, сделать маршрутизатор и маршрутизировать трафик, из сети 192.168.0.0/24 во внешнюю сеть.

Перейдите в проект [group-name]-[team number]:dpi

Действия на инстансе Labnode-1

Для начала нам необходимо проверить включен ли модуль, ядра необходимый для перенаправления трафика

sysctl net.ipv4.ip_forward

net.ipv4.ip_forward = 0 - означает, что модуль ядра выключен

Для включения этого параметра необходимо ввести команду:

sudo sysctl -w net.ipv4.ip_forward=1

Проверяем, включился ли модуль пересылки пакетов:

cat /proc/sys/net/ipv4/ip_forward

Команда аналогична первой команде для проверки работы модуля, в данном случае вам должно быть выведено просто значение 1

Введенные выше команды включают работу модуля, только на время пока работает ОС, и при перезагрузке будет сброшено для дефолтного состояния, чтобы это работало и после перезагрузке системы необходимо добавить в для включения этого параметра.

echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf

Если мы хотим, чтобы правило дописанное нами применилось, стоит ввести команду

sudo sysctl -p 

Выполняем настройку iptables

  1. Добавим правило позволяющее пакетам, исходящим из сети 192.168.0.0/24 на интерфейсе eth0, проходить через фаервол без дополнительной проверки.
    sudo iptables -A INPUT -i eth0 -s 192.168.0.0/24 -j ACCEPT
    
  2. Добавим правило, которое разрешает проходить через фаервол пакетам, относящимся к уже установленным и работающим сетевым соединениям, таким как соединения по протоколам TCP или UDP.
    sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    
  3. Добавим правило, которое разрешает прохождение всех пакетов, относящихся к уже установленному соединению или новому соединению, через интерфейс eth0 к eth1
    sudo iptables -A FORWARD -i eth0 -o eth1 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
    
  4. Добавим правило, которое разрешает прохождение всех пакетов, относящихся к уже установленному соединению или новому соединению, через интерфейс eth1 к eth0
    sudo iptables -A FORWARD -i eth1 -o eth0 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
    
  5. Добавляем правило для включения маскардинге для проходящих через интерфейс eth1
    sudo iptables -t  nat -A POSTROUTING -o eth1 -s 192.168.0.0/24 -j MASQUERADE
    

Возможна необходимость заменить название интерфейсов

Название интерфейса в примере К какой сети относится адрес
eth1 172.17.32.0/19
eth0 192.168.0.0/24
Действие на узле Asterisk
Установка Asterisk

Для прохождения трафика во внешнею сеть на labnode-2 необходимо прописать маршрут по умолчанию через labnode-1, для этого нам необходимо ввести команду:

sudo ip route add 0.0.0.0/0 via 192.168.0.1 dev eth0 

Нам необходимо подготовить виртуальную машину labnode-2, для работы с s3, для этого необходимо выполнить несколько действий, сначала необходимо установить пакет для работы с s3

sudo apt install s3cmd -y

После этого нам необходимо скопировать файл конфигурации в домашнию папку пользователя

cp /var/lib/cloud/s3cfg ~/.s3cfg

После этого у нас полноценно работает s3

Скачиваем Астерикс

s3cmd get s3://dpi/asterisk-certified-18.9-current.tar.gz

Распаковываем архив

tar xvf asterisk*

Переходим в директорию

cd asterisk-certified*/

Добавляем звуки и устанвливаем необходимые компоненты

sudo apt update
sudo apt -y install git curl wget libnewt-dev libssl-dev libncurses5-dev subversion libsqlite3-dev build-essential libjansson-dev libxml2-dev  uuid-dev
sudo contrib/scripts/get_mp3_source.sh

Устанвливаем зависимости Asterisk

sudo contrib/scripts/install_prereq install

Вам будет предложено выбрать национальный код

Собираем и устанавливаем Asterisk и заполняем конфигурациями по умолчанию для работы

sudo ./configure
sudo make menuselect
sudo make
sudo make config
sudo make install
sudo make progdocs
sudo make basic-pbx
sudo ldconfig

Добавляем новую группу asterisk

sudo groupadd asterisk

Создаем пользователя asterisk, и указываем ему домашнию директорию /var/lib/asterisk

sudo useradd -r -d /var/lib/asterisk -g asterisk asterisk

Добавляем пользователя asterisk в группы audio и dialout

sudo usermod -aG audio,dialout asterisk

Меняем права и владельцев директорий которые мы используем в процессе работы

sudo chown -R asterisk:asterisk /etc/asterisk
sudo chown -R asterisk:asterisk /var/{lib,log,spool}/asterisk
sudo chown -R asterisk:asterisk /usr/lib/asterisk
sudo chmod -R 750 /var/{lib,log,run,spool}/asterisk /usr/lib/asterisk /etc/asterisk

Приводим /etc/default/asterisk к виду

AST_USER="asterisk"
AST_GROUP="asterisk"
COLOR=yes

Добавляем строки в /etc/asterisk/asterisk.conf

[options]
runuser = asterisk
rungroup = asterisk

Редактируем файл pjsip /etc/asterisk/pjsip.conf и приводим его к ввиду который указан ниже(удаляем существующую конфигурацию)

[transport-udp-nat]
type = transport
protocol = udp
bind = 0.0.0.0

[100]
type = endpoint
disallow = all
allow = alaw
allow = ulaw
direct_media= no
context = internal
callerid = 100
auth = 100-auth
aors = 100

[100-auth]
type = auth
auth_type = userpass
username = 100
password = 123

[100]
type = aor
max_contacts = 5


[101]
type = endpoint
disallow = all
allow = alaw
allow = ulaw
direct_media= no
context = internal
callerid = 101
auth = 101-auth
aors = 101

[101-auth]
type = auth
auth_type = userpass
username = 101
password = 123

[101]
type = aor
max_contacts = 5

Файл /etc/asterisk/extensions.conf, приводим его к виду(удаляем существующую конфигурацию):

[globals]
[general]
[default]

[internal]
exten => _1xx,1,Dial(PJSIP/${EXTEN})
exten => s,n,Hangup

Запускаем Asterisk и добавляем его в автозагрузку

sudo systemctl restart asterisk.service
sudo systemctl enable asterisk.service --now

Проверка

sudo asterisk -rvvvv
pjsip show endpoints

pjsip show transports

Лабораторная 7. Linphone, анализ трафика

Цель:

Получение базовых навыков работы в настройке программной АТС Asterisk.

Задачи:

  1. Подключится к облачной платформе СПбГУТ
  2. Скачать исходные файлы Asterisk
  3. Скомпилировать Asterisk
  4. Настроить Asterisk
  5. Запустить Asterisk
  6. Зарегистрировать пользователя в программном телефоне Linphone

Схема виртуального стенда:

Ход работы:

На узле Labnode-2

Создать файл rtp.conf по пути /etc/asterisk/rtp.conf

[general]

rtpstart=10000
rtpend=10005

Перезагрузить Asterisk

sudo systemctl restart asterisk.service

Добавляем на инстансе labnode-1, перенаправления трафика SIP напрямую к Asterisk

sudo iptables -t nat -A PREROUTING -p udp --dport 5060 -j DNAT --to-destination 192.168.0.10:5060

Подключаем Linphone на аудиторном пк и вашем устройстве* или втором аудиторном пк, вводим на устройствах на устройствах данные которые мы задали ранее

Логин Пароль
1 100 123
2 101 123

Cсылки для скачивания на пользовательские устройства

Android

iOS

После подключение устройств на инстансе можно проверить, прошло ли подключение зайдя в консоль Asterisk

sudo asterisk -rvvvvv

Перед вами появится консоль Asterisk

В этой консоли вам необходимо ввести

pjsip show endpoints

У вас должен получится, аналогичный ответ, только с вашими IP адресами

После того как убедились, что стенд работает, вам необходимо выключить программный телефон Linphone, после того как вы отключили программные телефона, снова проверьте отключиться ли они от станции с помощью команды в консоли Asterisk

pjsip show endpoints

В этот раз у вас, должна получиться такая конфигурация

Задание

  1. Включите снятие трафика с помощью tcpdump
    1. На Аудиторном пк, с которого Вы выполняете звонок
    2. На инстансе Labnode-1
    3. На инстансе Labnode-2
  2. Залогиньтесь в программных телефонах
  3. Закончите снятие трафика с помощью tcpdump
    1. На Аудиторном пк, с которого Вы выполняете звонок
    2. На инстансе Labnode-1
    3. На инстансе Labnode-2
  4. Включите снятие трафика с помощью tcpdump
    1. На Аудиторном пк, с которого Вы выполняете звонок
    2. На инстансе Labnode-1
    3. На инстансе Labnode-2
  5. Выполните звонок с одного Linphone на другой
  6. Закончите вызов
  7. Закончите снятие трафика с помощью tcpdump
    1. На Аудиторном пк, с которого Вы выполняете звонок
    2. На инстансе Labnode-1
    3. На инстансе Labnode-2
  8. Сравните различия снятого трафика с разных устройств с помощью Wireshark
  9. В дампах каких устройств можно прослушать разговор?
  10. Как можно прослушать в wireshark разговор между абонентами?
  11. Нарисуйте MSC-сценарий звонка

Лабораторная 8. Развертывание nDPI

Цель:

Получение базовых навыков работы в настройке программной АТС Asterisk.

Задачи:

  1. Подключится к облачной платформе СПбГУТ
  2. Добавить репозитории ntop
  3. Установить пакеты nDPI
  4. Отловить трафик пользователей по приложению

Схема виртуального стенда:

Ход работы:

Переходим на Labnode1

  1. Настройка репозитория
    cp /var/lib/cloud/s3cfg .s3cfg
    s3cmd get s3://dpi/ntop.deb
    sudo apt install ./ntop.deb -y 
    
  2. Обновляем локальные индексы пакетов
    sudo apt update
    
  3. Устанавливаем пакеты nDPI
    sudo apt install pfring-dkms nprobe ntopng n2disk cento -y
    
  4. Запускаем ntopng и добавляем в автозапуск
    sudo systemctl enable ntopng --now
    
  5. Переходим в вeб-интерфейс dpi
  6. Перейти в браузер по адресу [ip адрес из сети 172.17.32.0/19]:3000
  7. Авторизуйтесь
Логин Пароль
admin admin
  1. После авторизации потребуется сменить пароль, приведите к виду
Логин Пароль
admin labpass1!
  1. Авторизуйтесь в Linphone
  2. Найдете в веб интерфейсе SIP трафик
  3. Снимите трафик за 1 минуту

Вопросы:

  1. Какие функциональные возможности есть у nDPI?
  2. Что необходимо сделать, чтобы увидеть проходящий через nDPI сетевой трафик?
  3. Как возможно изменять политику обслуживания пользователей?
  4. Какие есть способы добавить свою сигнатуру в nDPI