Материалы по спецкурсу "Сетевые технологии и протоколы"

Время и место

Каждую субботу, начиная с 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):

В процессе работы должна использоваться система git. Исходный код нужно выложить на любой веб-сервис хостинга проектов, например Github или Gitlab. Чтобы сдать задание, ссылку на страницу проекта необходимо прислать на почту insecon@ispras.ru с темой "СТиП Дз 1.1", не забыв указать своё ФИО. Работу стенда нужно показать на семинаре.

Максимальный балл за эту домашнюю работу - 10.

1.2 Реализовать шифрование при помощи openssl

Для написанной ранее программы (Дз 1):

В процессе работы должна использоваться система git. Исходный код нужно выложить на любой веб-сервис хостинга проектов, например Github или Gitlab. Чтобы сдать задание, ссылку на страницу проекта необходимо прислать на почту insecon@ispras.ru с темой "СТиП Дз 1.2", не забыв указать своё ФИО.

Максимальный балл за эту домашнюю работу - 10.

2. Межсетевой экран на raw sockets

Написать программу, которая создаёт 2 сырых сокета (домен AF_PACKET, тип SOCK_RAW). Можно использовать любой язык программирования, но важным условием остаётся использование сокетов. Каждый сокет должен связываться с 1 интерфейсом. Пакеты, приходящие на один сокет должны подвергаться фильтрации и направляться на другой.

Устройство, где запускается программа, должно быть прозрачным для сети, т.е. другие участники не обязаны знать, что происходит фильтрация. Обратите внимание, что ARP пакеты должны свободно проходить для нормальной работы сети.

Фильтрация должна происходить по пятёрке условий и правилу. В качестве условия может быть задано одно или несколько:

В качестве правила может быть пропуск пакета или удаление. В первом случае пакет отправляется другим сокетом, во втором случае пакет игнорируется. Рекомендуется расположить правила в файле (придумайте формат).

scheme of home work #2

Для тестирования работы программы можно собрать стенд в среде эмуляции сетей (GNS3, containerlab или подобное), где будет запущено как минимум 3 компьютера. Двое из их должны общаться через третий, на котором и будет запускаться программа.

В процессе работы (для программного кода) должна использоваться система git. Исходный код нужно выложить на любой веб-сервис хостинга проектов, например Github или Gitlab. Чтобы сдать задание, ссылку на страницу проекта необходимо прислать на почту insecon@ispras.ru с темой "СТиП Дз 2", не забыв указать своё ФИО.

5 баллов - программа корректно использует сырые сокеты, 5 баллов - реализована фильтрация, 5 баллов за стенд.

Максимальный балл за эту домашнюю работу - 15.

3. Межсетевой экран на NFQUEUE

Написать программу, которая будет взаимодействовать с NFQUEUE. Нужно выбрать любой протокол, работающий на прикладном уровне (например HTTP, DNS, DHCP, SMTP, FTP или другие) и реализовать его фильтрацию. Достаточно выбрать несколько полей (3 и более) выбранного протокола, на которые накладывать ограничения. В качестве действий реализовать только пропуск пакета или его удаление.

scheme of home work #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.

Предлагаемые темы (порядок случайный):