Материалы по спецкурсу "Сетевые технологии и протоколы"
Время и место
Каждую субботу, начиная с 17.02.2024
Лекции - 14:35 ауд. 685
Семинар - 16:20 ауд. 685
Презентации лекций:
Лекция 1: Введение Лекция 2: Канальный уровень Лекция 3: Сетевой уровень Лекция 5: Сокеты Лекция 6 Лекция 7: Прикладные протоколы Лекция 8: Продвинутая инкапсуляцияДля семинаров:
Семинар 1 (17.02)
Семинар 2 (24.02)
Семинар 3 (02.03)
Семинар 4 (09.03)
Семинар 5 (16.03)
Семинар 8 (13.04)
Злой школьник v4 Злой школьник v6 Privet from invisible internet!Ссылки
Описание курса на сайте кафедрыЧат в telegram
Форма для регистрации на курс
Таблица оценок
Таблица докладов
Домашние задания
1. Простейшее клиент-серверное приложение
Написать программу, которая может работать в двух режимах: как клиент и как сервер. Например, в зависимости от переданных параметров при запуске. Можно использовать любой язык программирования, но важным условием будет использование сокетов. Документация на c, на python. В зависимости от переданных параметров программа должна использовать протокол UDP или TCP, реализовать нужно оба. Не так важна содержательная часть, важно наладить взаимодействие. Т.е. можно реализовать чат, а можно онлайн-игру, или придумайте своё, это по вашему желанию. Не нужно увлекаться многопоточной обработкой, достаточно того, чтобы сервер мог взаимодействовать с одним клиентом.
В процессе работы должна использоваться система git. Исходный код нужно выложить на любой веб-сервис хостинга проектов, например Github или Gitlab. Чтобы сдать задание, ссылку на страницу проекта необходимо прислать на почту insecon@ispras.ru с темой "СТиП Дз 1", не забыв указать своё ФИО.
Максимальный балл за эту домашнюю работу - 5.
1.1 Реализовать обход NAT
Для написанной ранее программы (Дз 1):
- Реализовать возможность общения 2х пользователей, каждый из которых находится за NAT. (5б)
- Можно выбрать любой подход. Можно использовать алгоритмы вроде NAT hole punching, можно реализовать сервер пересылки сообщений.
- Достаточно реализовать этот функционал для взаимодействия по протоколу UDP
- Собрать виртуальный стенд, на котором можно было бы продемонстрировать работу программы. (5б)
В процессе работы должна использоваться система git. Исходный код нужно выложить на любой веб-сервис хостинга проектов, например Github или Gitlab. Чтобы сдать задание, ссылку на страницу проекта необходимо прислать на почту insecon@ispras.ru с темой "СТиП Дз 1.1", не забыв указать своё ФИО. Работу стенда нужно показать на семинаре.
Максимальный балл за эту домашнюю работу - 10.
1.2 Реализовать шифрование при помощи openssl
Для написанной ранее программы (Дз 1):
- Подключить библиотеку openssll (1б)
- Реализовать шифрование передаваемых сообщений при помощи библиотечных функций openssl (ssl в python). (5б)
- Ключ для шифрования можно предварительно распространять вручную, а можно заморочиться с использованием алгоритма Диффи-Хеллмана или подобного (но передаваться по тому же каналу, где передаются данные он не должен). (2б)
- Записать передаваемый трафик, показав, что данные зашифрованы. (1б)
- Реализовать возможность записывать ключи шифрования для расшифрования трафика в wireshark. Приложить файл с ключами, при помощи которых трафик можно расшифровать. (1б)
В процессе работы должна использоваться система git. Исходный код нужно выложить на любой веб-сервис хостинга проектов, например Github или Gitlab. Чтобы сдать задание, ссылку на страницу проекта необходимо прислать на почту insecon@ispras.ru с темой "СТиП Дз 1.2", не забыв указать своё ФИО.
Максимальный балл за эту домашнюю работу - 10.
2. Межсетевой экран на raw sockets
Написать программу, которая создаёт 2 сырых сокета (домен AF_PACKET, тип SOCK_RAW). Можно использовать любой язык программирования, но важным условием остаётся использование сокетов. Каждый сокет должен связываться с 1 интерфейсом. Пакеты, приходящие на один сокет должны подвергаться фильтрации и направляться на другой.
Устройство, где запускается программа, должно быть прозрачным для сети, т.е. другие участники не обязаны знать, что происходит фильтрация. Обратите внимание, что ARP пакеты должны свободно проходить для нормальной работы сети.
Фильтрация должна происходить по пятёрке условий и правилу. В качестве условия может быть задано одно или несколько:
- ip адрес источника и/или назначения (достаточно реализовать только для IPv4)
- протокол транспортного уровня (TCP/UDP)
- порт источника и/или назначения
В качестве правила может быть пропуск пакета или удаление. В первом случае пакет отправляется другим сокетом, во втором случае пакет игнорируется. Рекомендуется расположить правила в файле (придумайте формат).
Для тестирования работы программы можно собрать стенд в среде эмуляции сетей (GNS3, containerlab или подобное), где будет запущено как минимум 3 компьютера. Двое из их должны общаться через третий, на котором и будет запускаться программа.
В процессе работы (для программного кода) должна использоваться система git. Исходный код нужно выложить на любой веб-сервис хостинга проектов, например Github или Gitlab. Чтобы сдать задание, ссылку на страницу проекта необходимо прислать на почту insecon@ispras.ru с темой "СТиП Дз 2", не забыв указать своё ФИО.
5 баллов - программа корректно использует сырые сокеты, 5 баллов - реализована фильтрация, 5 баллов за стенд.
Максимальный балл за эту домашнюю работу - 15.
3. Межсетевой экран на NFQUEUE
Написать программу, которая будет взаимодействовать с NFQUEUE. Нужно выбрать любой протокол, работающий на прикладном уровне (например HTTP, DNS, DHCP, SMTP, FTP или другие) и реализовать его фильтрацию. Достаточно выбрать несколько полей (3 и более) выбранного протокола, на которые накладывать ограничения. В качестве действий реализовать только пропуск пакета или его удаление.
Собрать стенд из, как минимум, двух ПК. Один будет являться источником трафика, другой будет выполнять фильтрацию. Первый должен быть подключен к интернету (или локальному серверу с выбранным протоколом) через второй. Написанная вами программа должна запускаться на втором.
На фильтрующем ПК выполнить команду:
iptables -t mangle -A FORWARD -j NFQUEUE --queue-num 5для направления пакетов в пятую очередь (номер очереди можно использовать другой). Для чтения пакетов из очереди использовать любую библиотеку работы с nfqueue (можно использовать любой язык программирования): пример для c (пакеты ищите в пакетных менеджерах, не нужно её собирать из исходников), пример на python.
В процессе работы (для программного кода) должна использоваться система git. Исходный код нужно выложить на любой веб-сервис хостинга проектов, например Github или Gitlab. Чтобы сдать задание, ссылку на страницу проекта необходимо прислать на почту insecon@ispras.ru с темой "СТиП Дз 3", не забыв указать своё ФИО.
5 баллов - программа корректно работает с nfqueue, 5 баллов - реализован разбор и фильтрация протокола, 5 баллов за стенд.
Максимальный балл за эту домашнюю работу - 15.
Доклады
Доклад представляет собой рассказ на выбранную тему на 7-13 минут и ответы на вопросы слушателей. Можно подготовить презентацию или демонстрацию (стенд) по желанию.
Тему можно предложить свою, можно выбрать из предложенных ниже.
Отдельная тема резервируется одним студентом. Работа в группе допускается по смежным темам, например, при рассказе о протоколах динамической маршрутизации, нескольким докладчикам придётся рассказывать о том, что представляет собой динамическая маршрутизация. Чтобы не повторяться, можно договориться, чтобы основные концепции рассказал кто-то один.
Чтобы зарезервировать тему, впишите свои фамилию, имя, тему доклада рядом с желаемой датой в специальной таблице.
Для докладов будет выделяться время на каждой лекции и каждом семинаре (кроме первых), если этого окажется недостаточно, то выслушаем оставшихся после окончания лекций и семинаров в то же время и в том же месте.
Максимальный балл за доклад - 15.
Предлагаемые темы (порядок случайный):
- Что такое и для чего используется NAT
- Сетевой нейтралитет
- Что такое и как реализуется QoS/QoE
- Что такое Web3
- Кэширование в компьютерных сетях на примере HTTP, DNS
- Программно-определяемая сеть (SDN)
- Протокол динамической маршрутизации RIP
- Протокол динамической маршрутизации OSPF
- Протокол динамической маршрутизации BGP
- Безопасность в компьютерных сетях - Межсетевые экраны
- Безопасность в компьютерных сетях - Honeypot
- Безопасность в компьютерных сетях - DoS/DDos атаки
- Безопасность в компьютерных сетях - Популярные уязвимости веб приложений
- Как работает и для чего используется механизм HMAC
- Почему некоторые производители/операционные системы рандомизируют (генерируют случайный) mac адрес
- Развитие оригинального протокола STP