МИПиАТ
- Лабораторная 1. Веб-сервер, TFTP
- Лабораторная 2. Консольные мультиплексоры и управление процессами
- Лабораторная 3. Пакетные анализаторы трафика
- Лабораторная 4. Сетевая загрузка
- Лабораторная 5. Облачное хранилище
- Лабораторная 6. Развертывание Asterisk
- Лабораторная 7. Linphone, анализ трафика
- Лабораторная 8. Развертывание nDPI
Лабораторная 1. Веб-сервер, TFTP
Цель:
Получить базовые навыки работы для работы с файловым сервером, и веб-сервером
Задачи:
- Подключится к виртуальной машине на облачной платформе СПбГУТ
- Установить и настроить tftp сервер
- Проверить tftp сервер
- Настроить веб-сервер
- Проверить веб-сервер путем подключения Схема виртуального стенда:
Задание 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
При правильной работе вы получите аналогичное состояние работы сервиса
Задание 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. Консольные мультиплексоры и управление процессами
Цель:
Приобрести навыки работы для работы с терминальными мультиплексорами
Задачи:
- Подключится к виртуальной машине на облачной платформе СПбГУТ
- Установить Tmux
- Научиться работать с Tmux.
- Установить Screen
- Научиться работать с Screen.
Установка Tmux
Подключиться к виртуальной машине и установить пакет Tmux
sudo yum install tmux -y
Работа с tmux
Создание сессии в tmux
tmux
Создание сессии с названием Test
tmux new -s Test
Управление внутри сессии:
Префикс(клавиши с которых начинаются команды) по умолчанию CTRL + B В дальнейшем будет сокращено до CB Сначала нажимается префикс в дальнейшем команда
- CB + С (сначала прожать префикс, затем c) - Создание нового окна
- CB + , - Переименовать текущее окно
- CB + Shift + % - разделение экрана по вертикали
- CB + Shift + " - разделение экрана по горизонтали
- CB + t - Показать в панели текущее время
- CB + Стрелки - переместиться на панель в которую указывает стрелка
- CB + Зажатая Ctrl + стрелка - Изменить размер панели в зависимости от направлении стрелки
- CB + D - Отключится от сессии Tmux, окна запущенные внутри останутся рабочими(свернутыми)
- CB + X - закрыть панель
- CB + w - посмотреть список открытых окон
- CB + l - Подключится к прошлому(открытое до этого) окну
- CB + n - Переключится к следующему окну
- CB + p - переключится к прошлому окну
- CB + {номер окна} - переключится к окну с необходимым окном
- CB + Page Up - проскролить по терминалу выше
- CB + Page Down - проскролить по терминалу ниже
- CB + s - посмотреть список всех открытых сессий и открытых в ней окон
- CB + f - поиск панели по названию
Подключится к сессии
tmux a
подключение в таком случае произойдет к первой созданной сессии
Подключение к сессии с названием Test
tmux a -t Test
Посмотреть список открытых сессий в tmux
tmux ls
Закрыть сессию в Test в Tmux
tmux kill-session -t Test
Закрыть все сессии в tmux
tmux kill-server
Задание Tmux
Cоздать 2 сессии
-
1 сессия - название lab
-
2 сессия - название lab_2
- session
Проверьте все ли правильно создано, сравнив со скриншотом
Работа с 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 Сначала нажимается префикс в дальнейшем команда
- CB + С (сначала прожать префикс, затем c) - Создание нового окна
- CB + A - Переименовать текущее окно
- CB + | - разделение экрана по вертикали
- CB + S - разделение экрана по горизонтали
- CB + Tab - переместиться в следующую область
- CB + Зажатая стрелка - Изменить размер панели в зависимости от направлении стрелки
- CB + D - Отключится от сессии
- CB + X - Удалить область
- CB + Q - Закрыть все кроме текущей области
- CB + x - заблокировать до введения пароля
- CB + n - Переключится к следующему окну
- CB + p - переключится к прошлому окну
- CB + {номер окна} - переключится к окну с необходимым номером
- CB + ? - шпаргалка по командам
Управления процессами в Linux
Команды для работы с задачами
Команда | Описание |
---|---|
jobs | Список всех задач |
bg n | Помещает текущее или указанное задание в фоновый режим, где n - ID задачи |
fg n | Выводит на передний план текущее или указанное задание, где n - ID задачи |
CTRL + Z | Останавливает задание на переднем плане и помещает его в фоновый режим |
CTRL + C | Отправить сигнал о прерывание(завершение) процесса в на переднем плане |
{command} & | запуск процесса в фоновом режиме |
Задание управление процессами
- Установить
htop
sudo yum install -y htop
-
Запустите в фоне 5 задач:
- htop
- watch ss -tulpan
- ping 8.8.8.8
- ping 192.168.0.1
- ping yandex.ru
-
Посмотрите список всех задач
jobs
-
По очереди переместите все задачи на передний план и верните их обратно в фон и снова проверьте список всех задач
-
Убейте все запущенные ранее процессы
-
Выйдите все сеансы в screen и tmux
Лабораторная 3. Пакетные анализаторы трафика
Цель:
Приобрести навыки работы с пакетными анализаторами трафика
Задачи:
- Подключится к виртуальной машине на облачной платформе СПбГУТ
- Установить tcpdump
- Получить навыки работы c tcpdump
- Получить навыки работы c SCP
- Получить навыки работы с 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
- windows-ad-pc - ip адрес вашего PC
- ad\tarabanov.if - учетная запись на вашем ПК
- c:/users/tarabanov.if - путь к директории, куда перемещается файл
Заданием scp
- Создайте текстовый файл с вашими ФИО и группой и переместите его на локальный пк(аудиторный)
Группа ИКТК-XY Иванов Иван Иванович Петров Петр Петрович
- создайте нового пользователя
test_scp
с паролемpassword
- смените пользователя на test_scp
- Создайте текстовый файл с названием лабораторной работы
- Вернуться на основную учетную запись
- передать с пользователя test_scp на локальный пк(аудиторный)
Задание
- Открыть консольный мультиплексор
- Запустить снятие трафика, с записью трафика в файл
http.pcap
- Разделить экран вертикально на половину
- Загрузить страницу, сделанную в первой лаб. работе
- Закончить снятие трафика
- Запустить снятие трафика, с записью трафика в файл
- Передать файл на локальный(аудиторный пк)
- Открыть файл в
wireshark
, отфильтровать для отображения только задействованных пакетов в передачи html страницы
Лабораторная 4. Сетевая загрузка
Цель:
Получение навыков по работе с сетевой загрузкой операционной системы
Задачи:
- Подключится к виртуальной машине на облачной платформе СПбГУТ
- Подготовить образ операционной системы Ubuntu
- Скомпилировать загрузчик IPXE
- Настроить dnsmasq
- Снять дамп трафика во время установки ОС по сети
- Установить операционную систему, с помощью сетевой загрузки
Задание 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
- Перед вами после перехода в консоль появится UEFI shell в нем необходимо вписать команду
exit
- После этого в меню вам необходимо выбрать Boot Manager, после этого выбрать вариант загрузки в виде
UEFI PXEv4
, дальше будет происходить получения ранее созданного ipxe - В меню загрузчика необходимо выбрать образ ubuntu, после нажатия
Enter
, будет загружен live образ Ubuntu с помощью которого в дальнейшем мы будем производить установку системы. На самом деле перед вами установочное меню операционной системы ubuntu 20 в серверном исполнении, и возможностью установки различных сервисов. В данной работе установка подразумевает под собой установку параметров в режиме по умолчанию. Для навигации по установочному меню используются кнопки клавиатуры:вверх-вниз
– для перемещения фокуса выделения по пунктам меню,enter
– для нажатия на необходимый пункт,пробел
– для выбора пунктов в меню со списком выбора,Tab
– для переключения между группами пунктов выбора. - В первом пункте по умолчанию выбран язык English – лучше его изменить на русский, для
избегания проблем с локализацией. Для этого переместить фокус выделения на русский язык и
нажать –
enter
. - В следующем пункте выберете вариант продолжения установки без обновления загрузчика
- В следующем меню оставить английскую раскладку клавиатуры и нажать готово
- В следующем меню – сетевые соединения – оставить все параметры по умолчанию и нажать
готово
- Меню ввода адреса прокси сервера оставить пустым и нажать – готово
- В меню выбора зеркала для скачивания архивов ничего не менять и нажать готово
- В меню настройки дисковых устройств выбрать пункт автоматической разметки диска, и если он и выбран – нажать готово
Когда вы убедитесь, что все сделали правильно нажмите «Готово»
В следующем меню заполнить все поля имени пользователя и пароля, в качестве имени пользователя и пароля можно использовать:
labuser
labpass1!
В новом меню включите установку сервера OpenSSH
и нажмите готово
В следующем меню, сразу нажмите готов Дождитесь установки операционной системы и с помощью нажатия Cancel update and reboot, произойдет перезагрузка системы, введите свой логин и пароль установленный в прошлых пунктах и попробуйте проверить работу сети с помощью команды
ping 192.168.0.10
Задание 6. Анализ трафика
- закончите снятие трафика
- перенесите дамп на аудиторный пк
- Ответьте на вопросы:
- Какие протоколы использовались во время установки ОС?
- Как выглядит сценарий взаимодействия при сетевой загрузки?
- За что отвечает dnsmasq?
- Что такое IPXE?
- Показать сценарий взаимодействия загрузки
Лабораторная 5. Облачное хранилище
Цель:
Приобрести навыки работы с пакетными анализаторами трафика
Задачи:
- Подключится к виртуальной машине на облачной платформе СПбГУТ
- Создать порт
- Подключить порт к работающей VM
- Установить NextCloud
- Загрузить тестовый файл в nextcloud
- проанализировать трафик, во время загрузки файла в облачное хранилище
1. Подключение к облачной платформе
-
Перейдите в браузере по адресу cloud.resds.ru
-
Авторизуйтесь на платформе
-
В верхнем левом углу выберите свой проект
$GROUP-team$N:pxe-lab
, где $GROUP-название вашей группы, $N - номер бригады
2. Подключение порта к работающей VM
-
В меню в левой части экрана выбрать
Проект
->Вычислительные ресурсы
->Инстансы
-
Нажать у labnode-2 на стрелочку вниз
-
В выпавшем меню нажать
Подключить интерфейс
-
Нажать
Подключить интерфейс
3. Установка NextCloud
-
Скачиваем и устанавливаем пакеты
Nextcloud
sudo snap install nextcloud
-
Запускаем облачное хранилище
Nextcloud
sudo snap start nextcloud
-
Настроим группы безопасности, чтобы у нас появилась возможность подключение по этому адресу с других портов
- Переходим в
Проект
->Сеть
->Группа безопасности
- Выберите группу безопасности default
- Нажмите в ней
Управление правилами
- И добавьте правило разрешающее http
- Переходим в
-
Включаем интерфейс и получаем ip адрес
sudo dhclient enp8s0
-
Для подключения – в браузере набрать адрес виртуального сервиса
-
После подключения в браузере - задать логин и пароль администратора системы (можно использовать labuser и labpass1!), снять опцию – установить рекомендуемые приложения и нажать – завершить установку
-
После завершения настройки облачного сервиса вы сможете начать им пользоваться, он будет полностью под вашим контролем. Все файлы будут в меню файлы, вы сможете как загрузить их через браузер с вашего локального компьютера просто перетащив, так и скачать их с облака.
P.S.
Nextcloud так же имеет приложения для различных платформ:
Для компьютера
Для android
Для iOS
При установке этого приложения вам нужно будет ввести адрес вашего сервиса, ваш логин, и ваш пароль который вы задали на пункте 4
4. Загрузка тестового файла
- Запустите на сервере снятие трафика с помощью tcpdump
- С помощью одного из приложений, загрузите любой файл на сервер
- Закончите сбор трафика
- Перенесите дамп файл себе на ПК
5. Ответьте на вопросы
- Проанализируете и назовите используемые для передачи протоколы.
- Какой пакет отвечает за началу загрузки файла с облачного хранилища?
- Какой HTTP метод использовался для скачивания, и какие поля пакета использовались для этого?
Лабораторная 6. Развертывание Asterisk
Цель:
Получение базовых навыков работы в настройке программной АТС Asterisk.
Задачи:
- Подключится к облачной платформе СПбГУТ
- Скачать исходные файлы Asterisk
- Скомпилировать Asterisk
- Настроить Asterisk
- Запустить Asterisk
- Зарегистрировать пользователя в программном телефоне 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
- Добавим правило позволяющее пакетам, исходящим из сети 192.168.0.0/24 на интерфейсе eth0, проходить через фаервол без дополнительной проверки.
sudo iptables -A INPUT -i eth0 -s 192.168.0.0/24 -j ACCEPT
- Добавим правило, которое разрешает проходить через фаервол пакетам, относящимся к уже установленным и работающим сетевым соединениям, таким как соединения по протоколам TCP или UDP.
sudo iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
- Добавим правило, которое разрешает прохождение всех пакетов, относящихся к уже установленному соединению или новому соединению, через интерфейс eth0 к eth1
sudo iptables -A FORWARD -i eth0 -o eth1 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
- Добавим правило, которое разрешает прохождение всех пакетов, относящихся к уже установленному соединению или новому соединению, через интерфейс eth1 к eth0
sudo iptables -A FORWARD -i eth1 -o eth0 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
- Добавляем правило для включения маскардинге для проходящих через интерфейс
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.
Задачи:
- Подключится к облачной платформе СПбГУТ
- Скачать исходные файлы Asterisk
- Скомпилировать Asterisk
- Настроить Asterisk
- Запустить Asterisk
- Зарегистрировать пользователя в программном телефоне 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сылки для скачивания на пользовательские устройства
После подключение устройств на инстансе можно проверить, прошло ли подключение зайдя в консоль Asterisk
sudo asterisk -rvvvvv
Перед вами появится консоль Asterisk
В этой консоли вам необходимо ввести
pjsip show endpoints
У вас должен получится, аналогичный ответ, только с вашими IP адресами
После того как убедились, что стенд работает, вам необходимо выключить программный телефон Linphone, после того как вы отключили программные телефона, снова проверьте отключиться ли они от станции с помощью команды в консоли Asterisk
pjsip show endpoints
В этот раз у вас, должна получиться такая конфигурация
Задание
- Включите снятие трафика с помощью tcpdump
- На Аудиторном пк, с которого Вы выполняете звонок
- На инстансе Labnode-1
- На инстансе Labnode-2
- Залогиньтесь в программных телефонах
- Закончите снятие трафика с помощью tcpdump
- На Аудиторном пк, с которого Вы выполняете звонок
- На инстансе Labnode-1
- На инстансе Labnode-2
- Включите снятие трафика с помощью tcpdump
- На Аудиторном пк, с которого Вы выполняете звонок
- На инстансе Labnode-1
- На инстансе Labnode-2
- Выполните звонок с одного Linphone на другой
- Закончите вызов
- Закончите снятие трафика с помощью tcpdump
- На Аудиторном пк, с которого Вы выполняете звонок
- На инстансе Labnode-1
- На инстансе Labnode-2
- Сравните различия снятого трафика с разных устройств с помощью Wireshark
- В дампах каких устройств можно прослушать разговор?
- Как можно прослушать в wireshark разговор между абонентами?
- Нарисуйте MSC-сценарий звонка
Лабораторная 8. Развертывание nDPI
Цель:
Получение базовых навыков работы в настройке программной АТС Asterisk.
Задачи:
- Подключится к облачной платформе СПбГУТ
- Добавить репозитории ntop
- Установить пакеты nDPI
- Отловить трафик пользователей по приложению
Схема виртуального стенда:
Ход работы:
Переходим на Labnode1
- Настройка репозитория
cp /var/lib/cloud/s3cfg .s3cfg s3cmd get s3://dpi/ntop.deb sudo apt install ./ntop.deb -y
- Обновляем локальные индексы пакетов
sudo apt update
- Устанавливаем пакеты nDPI
sudo apt install pfring-dkms nprobe ntopng n2disk cento -y
- Запускаем ntopng и добавляем в автозапуск
sudo systemctl enable ntopng --now
- Переходим в вeб-интерфейс dpi
- Перейти в браузер по адресу [ip адрес из сети 172.17.32.0/19]:3000
- Авторизуйтесь
Логин | Пароль |
---|---|
admin | admin |
- После авторизации потребуется сменить пароль, приведите к виду
Логин | Пароль |
---|---|
admin | labpass1! |
- Авторизуйтесь в Linphone
- Найдете в веб интерфейсе SIP трафик
- Снимите трафик за 1 минуту
Вопросы:
- Какие функциональные возможности есть у nDPI?
- Что необходимо сделать, чтобы увидеть проходящий через nDPI сетевой трафик?
- Как возможно изменять политику обслуживания пользователей?
- Какие есть способы добавить свою сигнатуру в nDPI