Все лабораторные работы по сетям и системам передачи данных
Переходим на уровень L4 - Транспортный уровень ⬆️
-
Физический уровень (Physical Layer): определяет метод передачи данных, какая среда используется (передача электрических сигналов, световых импульсов или радиоэфир), уровень напряжения, метод кодирования двоичных сигналов.
-
Канальный уровень (Data Link Layer): он берет на себя задачу адресации в пределах локальной сети, обнаруживает ошибки, проверяет целостность данных. Если слышали про MAC-адреса и протокол «Ethernet», то они располагаются на этом уровне.
-
Сетевой уровень (Network Layer): этот уровень берет на себя объединения участков сети и выбор оптимального пути (т.е. маршрутизация). Каждое сетевое устройство должно иметь уникальный сетевой адрес в сети. Думаю, многие слышали про протоколы IPv4 и IPv6. Эти протоколы работают на данном уровне.
-
Транспортный уровень (Transport Layer): Этот уровень берет на себя функцию транспорта. К примеру, когда вы скачиваете файл с Интернета, файл в виде сегментов отправляется на Ваш компьютер. Также здесь вводятся понятия портов, которые нужны для указания назначения к конкретной службе. На этом уровне работают протоколы TCP (с установлением соединения) и UDP (без установления соединения).
-
Сеансовый уровень (Session Layer): Роль этого уровня в установлении, управлении и разрыве соединения между двумя хостами. К примеру, когда открываете страницу на веб-сервере, то Вы не единственный посетитель на нем. И вот для того, чтобы поддерживать сеансы со всеми пользователями, нужен сеансовый уровень.
-
Уровень представления (Presentation Layer): Он структурирует информацию в читабельный вид для прикладного уровня. Например, многие компьютеры используют таблицу кодировки ASCII для вывода текстовой информации или формат jpeg для вывода графического изображения.
-
Прикладной уровень (Application Layer): Наверное, это самый понятный для всех уровень. Как раз на этом уроне работают привычные для нас приложения — e-mail, браузеры по протоколу HTTP, FTP и остальное.
Межсетево́й экра́н, сетево́й экра́н (firewall, ,брандмауэр) — программный или программно-аппаратный элемент компьютерной сети, осуществляющий контроль и фильтрацию проходящего через него сетевого трафика в соответствии с заданными правилами (напр. в Интернет попасть можно, а вот входящее подключение блокируется).
Access List - функционал роутера, позволяющий определить какой трафик разрешён.
С помощью межсетевого экрана можно перенаправлять трафик на конкретный порт.
Прикольный мем на эту тему 😀:
Файрволл запрещает всё, что не разрешено.
Настройка Linux-файрвола iptables: Руководство для начинающих
Существует три типа правил iptables — input, forward и output.
Input — Такие цепочки используются для контроля поведения входящих соединений. К примеру, если пользователь попробует подключиться к серверу по SSH, то iptables сравнит его IP-адрес со своим списком, чтобы разрешить или запретить доступ.
Forward — Правила этого типа используются для обработки входящих сообщений, конечный пункт назначения которых не является текущим сервером. К примеру, в случае маршрутизатора, к нему подключаются многие пользователи и приложения, но данные не посылаются на сам маршрутизатор, они лишь передаются ему, чтобы он мог перенаправить их адресату. Если вы не занимаетесь настройкой маршрутизации или NAT, то правила этого типа использовать в работе не будете.
Output — Такие цепочки используются для исходящих соединений. К прмиеру, если пользователь пытается отправинг запрос ping к сайту 1cloud.ru, iptables изучит цепочку правил, чтобы понять, что нужно делать в случае ping и этого сайт, и только потом разрешит или запретит соединение.
Важный момент Даже в случае пинга внешних хостов, нужно не только отправить пакеты к ним, но и получить ответ. При работе с iptables важно помнить, что многие протоколы передачи данных требуют двусторонней коммуникации. Поэтому нужно настраивать правила соответствующим образом — случаи, когда новички забывают разрешить работу с сервером по SSH случаются очень часто.
Удалённая настройка файрволла - к дальней дороге.
Создаём клиентский компьютер
Создаём ещё 2 Linux машинки (там уже должно быть 2 Eathernet порта)
По итогу получилась следующая схема:
Для Ubuntu Server:
Логин: root
Пароль: eve@123
Для Kali (PC):
Логин: root
Пароль: toor
cd /usr/share/consolefonts
setfont Uni3-TerminusBold22x11.psf.gz
В двух файлах:
nano /etc/hostname
nano /etc/hosts
заменили ubuntu
на Web-server
ip a
- для просмотра ip-адресов
Для настройки вводим:
nano /etc/network/interfaces
auto eth0
- автоматическое поднятие интерфейса при начале работы
allow-hotplug eth0
- разрешение на переподключение при отсоединении
iface eth0 inet dhcp
- параметры настройки интерфейсов
reboot
- перезагрузка машины
После перезагрузки файрволл должен успешно пинговать 8.8.8.8, и имя должно быть изменено.
Зайти в файл
nano /etc/ssh/sshd_config
и поставить PermitRootLogin yes
Теперь можно присоединяться к системе с другой консоли.
ip route add 10.10.100.0/24 via 192.168.175.137
apt-get update
apt install nginx
ss -tunlp
Настраиваем интерфейсы, как и на сервере, только ещё добавить интерфейс для связи с PC.
systemctl restart networking
После перезагрузки:
apt update
apt install tcpdump
Применение:
tcpdump -i eth0
В файле
nano /etc/sysctl.conf
раскоменчиваем строку
net.ipv4.ip_forward=1
и активируем
sysctl -
Текущая iptables:
Разрешим подключаться к firewall по ssh:
iptables -A INPUT -p tcp --dport 22 -d 192.168.175.137 -j ACCEPT
В iptables приоритетнее правило то, которое выше.
Разрешаем трафик на веб-сервер к 80 порту а всё остальное запрещаем:
iptables -A FORWARD -d 192.168.175.136 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -d 192.168.175.136 -j DROP
Пример удаления ошибочно добавленного правила в iptables:
iptables -t filter -D FORWARD -d 192.168.175.136 -j ACCEPT
В итоге должно получится так (можно обойтись без INPUT правила):
После этого необходимо внести небольшие правки в iptables и всё заработает!