
Практические работы / Практическая работа 4
.pdfЗадание на практическое занятие №4.
1.На основе понимания состава и содержания ранее прочитанной лекции по основным положениям нагрузочного тестирования, осуществить разработку и проверку выполнения сценариев нагрузочного тестирования с использованием web-сервера nginx, средств ab, wget, wireshark (tcpdump).
2.Подготовительные действия:
В виртуальной машине Debian 10 от пользователя root привести файл /etc/apt/sources.list к виду
# deb cdrom:[Debian GNU/Linux 10.2.0 _Buster_ - Official amd64 DVD Binary-1 20191116-09:57]/ buster contrib main
#deb cdrom:[Debian GNU/Linux 10.2.0 _Buster_ - Official amd64 DVD Binary-1 20191116-09:57]/ buster contrib main
deb http://security.debian.org/debian-security buster/updates main contrib non-free deb-src http://security.debian.org/debian-security buster/updates main contrib non-free
#buster-updates, previously known as 'volatile'
#A network mirror was not selected during install. The following entries
#are provided as examples, but you should amend them as appropriate
#for your mirror of choice.
#
deb http://deb.debian.org/debian/ buster-updates main contrib non-free deb-src http://deb.debian.org/debian/ buster-updates main contrib non-free
deb http://deb.debian.org/debian/ buster main contrib non-free deb-src http://deb.debian.org/debian/ buster main contrib non-free
#deb http://deb.debian.org/debian/ unstable main contrib non-free
т. е. в нем, скорее всего, отсутствуют две строки
deb http://deb.debian.org/debian/ buster main contrib non-free deb-src http://deb.debian.org/debian/ buster main contrib non-free
и их нужно в файл /etc/apt/sources.list добавить.
Далее следует файл /etc/apt/apt.conf.d/02proxy привести к виду
Acquire::http::Proxy "http://apt.dcti.sut.ru:3142/";
т. е. взять в кавычки подстоку "http://apt.dcti.sut.ru:3142/"
Далее следует выполнить
apt clean cache
apt update
после чего в список репозиториев будут добавлены необходимые репозитории.
В случае, если при выполнении apt update возникает ошибка, нужно выполнить подключение к Интернет в "родительской" ОС Debian.
3. Установка web-сервера nginx, средств ab, wget, wireshark (tcpdump)
apt install nginx apache2-utils wget wireshark tcpdump
При установке wireshark на вопрос о возможности запуска сбора сетевого трафика не только от пользователя root ответить Yes После установки ПО выполнить добавление пользователя sysadmin в группу wireshark
usermod -a -G wireshark sysadmin
и выполнить перезагрузку ОС Debian 10
shutdown -r now
4. Настройка web-сервера nginx
Убедиться в том, что web-сервер nginx осуществляет прослушивание сокета 80
netstat -tanp | grep nginx systemctl status nginx
Если демон nginx отсутствует, то следует его запустить и добавить его запуск в список автоматически запускаемых демонов
systemctl start nginx
systemctl enable nginx
systemctl status nginx
Убедиться в том, что web-сервер nginx функционирует
wget http://localhost
cat ./index.html
Сохранить исходные конфигурационные файлы nginx.conf
cp /etс/nginx/nginx.conf /etс/nginx/nginx.conf.orig
cp /etс/nginx/sites-availabe/default /etс/nginx/sites-availabe/default.orig
Убедиться в том, что соответствующие конфигурационные файлы и их копии не пусты
ls -la /etc/nginx/nginx.conf*
ls -la /etс/nginx/sites-availabe/default*
Отредактировать конфигурационный файл /etс/nginx/sites-availabe/default добавлением в секцию server сразу после секции location / {
...
}
дополнительной секции location /data/ {
root /var/www/; autoindex on;
}
Выполнить проверку корректности содержимого конфигурационного файла nginx.conf
/etc/init.d/nginx configtest
При выявлении ошибок выполнить их устранение.
Далее, в случае успешного выполнения проверки корректности содержимого конфигурационного файла nginx.conf осуществить перезапуск webсервера nginx
systemctl restart nginx
Выполнить создание папки и генерацию тестового файла случайным содержимым, задание необходимых привилегий доступа
mkdir /var/www/data/
cd /var/www/data/
dd if=/dev/urandom of=/var/www/data/file bs=64M count=16 iflag=fullblock
chown www-data:www-data /var/www/ -R
5. Нагрузочное тестирование web-сервера nginx
Выполнить запуск утилиты ab с суммарным количеством запросов страницы 100 и количеством конкурентных запросов 10
ab -c 10 -n 100 http://localhost/data/
Записать полученные значения :
среднее значение обработанных запросов в секунду _____________________
среднее время обработки запроса _____________________________________
скорость передачи данных___________________________________________
Выполнить скачивание файла /var/www/data/file
wget http://localhost/data/file
Записать полученную среднюю установившуюся скорость скачивания файла
_______________________________________________________________________________________________
В соответствии с инструкцией в приложении запустить сбор сетевой статистики средством wireshark или tcpdump
_______________________________________________________________________________________________
Повторить выполнение скачивания файла /var/www/data/file
wget http://localhost/data/file
Записать полученную среднюю установившуюся скорость скачивания файла с пользованием wget
_______________________________________________________________________________________________
Одинаковые или различные скорости в первом и втором скачивании средством wget? Почему?
_______________________________________________________________________________________________
Остановить сбор сетевой статистики средствами wireshark или tcpdump.
В соответствии с инструкцией в приложении средствами wireshark выполнить построение графика зависимости скорости передачи от времени.
Сравнить значение средней скорости передачи, полученной из графика, построенного средствами wireshark, со значением средней установившейся скорости скачивания с использованием средства wget (второе скачивание).
Одинаковые или различные скорости? Почему?
_______________________________________________________________________________________________
Сообщить о выполнении практического задания преподавателю. Подготовиться и быть в готовности ответить на вопросы преподавателя.
Приложение. Работа с tcpdump и wireshark
Для пассивного сканирования сетевой активности узла и/или сети используются программные средства сбора сетевого трафика и анализа сетевых протоколов tcpdump и wireshark, которые также целесообразно использовать для разбора и анализа собранного дампа трафика, определения активности узлов сети и поиска в нем возможных аномалий.
Установка
apt install tcpdump wireshark
Справочная информация
man tcpdump man wireshark
Запуск утилиты сканирования следует выполнять в зависимости от решаемой задачи. Например, команда
tcpdump -i enp0s8 -s 1500 -w /tmp/20200420.pcap
для всех пакетов, пришедших на интерфейс enp0s8 размером не более 1 500 байт выполнит запись в файл /tmp/20210320.pcap, который возможно обработать программным средством wireshark, рассматриваемым далее,
команда
tcpdump -i enp0s8 -s 0 -AX -vvv -nn ether host 00:00:01:AA:BB:CC
для всех пакетов , пришедших на интерфейс enp0s8 любого размера от сетевой платы с mac-адресом 00:00:01:AA:BB:CC выполнит их
раскодирование и вывод бинарной и человеко-читаемой информации на экран, что может быть использовано для анализа сетевого взаимодействия, например, по протоколу dhcp,
а команда
tcpdump -i enp0s8 -s 0 -AX -vvv -nn host 192.168.50.111
для всех пакетов , пришедших на интерфейс enp0s8 любого размера от сетевой платы с IPv4-адресом 192.168.50.111 выполнит их
раскодирование и вывод бинарной и человеко-читаемой информации на экран, что может быть использовано для анализа сетевого взаимодействия, например, по протоколу http.
Анализатор сетевых протоколов Wireshark
Wireshark (https://www.wireshark.org) – анализатор сетевых протоколов (сниффер), с помощью которого осуществлять анализ процессов передачи данных и обеспечения функционирования, а также выявлять различные аномалии. В ходе своей работы Wireshark не оказывает практически никакого влияния на передачу пакетов в сети за исключением функции добавления незначительного количества пакетов для выполнения разрешений доменных имен и других элементов пакетов из двоичных значений в человеко-читаемые значения, которую можно отключить в настройках Wireshark.
Запуск
$ wireshark & |
|
При необходимости, для отключения разрешений доменных имен и других элементов пакетов следует перейти в |
Edit – Preferences – |
Name Resolution |
|
– сбросить все имеющиеся соответствующие отметки [√] |
|
– нажать на кнопку Ok |
|
Для запуска процесса перехвата пакетов следует в Capture – Options – Input
–выбрать сетевой интерфейс выделением слева от него соответствующей отметки [√]
–нажать на кнопку Start
Для останова процесса перехвата пакетов следует в Capture
– выбрать пункт меню Stop
Для сохранения результатов процесса перехвата пакетов следует в File – Save As...
–в поле Имя файла задать произвольное имя файла, разделитель точку и фиксированное расширение pcap, например, ping-20210320.pcap, где ping – наименование исследуемого протокола, 20210320 – дата в формате ГГГГММДД (ISO date)
–выбрать в выпадающем списке Тип файла значение RedHat 6.1 tcpdump – pcap
–нажать на кнопку Save
Для загрузки и анализа сохраненных результатов процесса перехвата пакетов следует в File – Open...
–выбрать соответствующее имя файла
–нажать на кнопку Open
Для выполнения фильтрации пакетов в окне со списком перехваченных пакетов следует:
–по каким-либо признакам (значение ip-адреса, значение mac-адреса, др.) найти какой-либо (необязательно первый) требуемый пакет, соответствующий требуемому потоку,
–подвести на него графическое изображение манипулятора графической информации,
–нажать на правую клавишу манипулятора графической информации,
–в выпадающем списке выбрать какой-либо доступный Follow TCP/UDP/SSL stream,
–в открывшемся окне осуществить анализ отфильтрованной последовательности,
–в поле Filter после этого будет автоматически сформировано правило фильтрации для данного потока, например tcp.stream eq 0, которое можно редактировать вручную, например, для следующего потока значение Filter может быть задано как tcp.stream eq 1 или tcp.stream eq 2.
Для выполнения анализа средствами wireshark априорно известного протокола, который, например, функционирует на не стандартном
сокете, следует в Analyze – Decode As...
–нажатием на [+] и выбрать соответствующий известный протокол, который, возможно, будет предложен автоматически, например, http filter xml
–нажать на кнопку Ok
Для построения графиков зависимости переданной/принятой информации от времени следует в Statistics – IO Graph
–выбрать для Graph 1 значение ip.src== <значение ip-адреса сервера>
–отжать кнопку Graph 1 и снова нажать кнопку Graph 1, в результате чего перерисуется график соответствующего цвета для пакетов, источником которого является ip-адрес сервера
–выбрать для Graph 2 значение ip.src== <значение ip-адреса клиента>
–отжать кнопку Graph 2 и снова нажать кнопку Graph 2, в результате чего перерисуется график соответствующего цвета для пакетов, источником которого является ip-адрес клиента
–выбрать для Graph 3 значение ip
–отжать кнопку Graph 3 и снова нажать кнопку Graph 3, в результате чего перерисуется график соответствующего цвета для всех собранных пакетов
–для наглядности отображения различий входящих и исходящих пакетов следует попробовать изменить значения в полях Interval {0.1 sec, 0.01 sec}, Pixels per tick {2, 5, 10}, Y Axis = Bytes/Tick, Scale {2000, 5000}, Smooth = No filter или другими, позволяющими наглядно отобразить количественные различия входящих и исходящих пакетов.