Skip to content

Latest commit

 

History

History
217 lines (161 loc) · 14.5 KB

lab.md

File metadata and controls

217 lines (161 loc) · 14.5 KB

Лаба №5. Настройка сетевых экранов и технологии отображения портов

Файлы к лабе

  • Порядок выполнения (.pdf)

Нам понадобится

  • ВМ 1 (Спамер или еще кто-то из плохих людей)
  • ВМ 2 (Фаервол; Он же - щит, который будет отбивать атаки ВМ 1)
  • ВМ 3 (потенциальный сервер)

Описание

изображение

Нам требуется построить такую систему, при которой...

Что такое iptables?

iptables является утилитой, выполняющей функции межсетевого экрана. Настройка iptables производится в командной строке, с помощью правил iptables можно разрешать или блокировать прохождение трафика. Когда происходит попытка установления соединения с текущей машиной, iptables просматривает список правил в списке, чтобы понять, как нужно поступить в этом случае. Если правила нет, то выполняется действие по умолчанию.

Как правило, itpables предустанавливается на всех Linux-дистрибутивах.

Общий вид управляющей команды:

iptables таблица команда цепочка критерии действие

Типы правил(цепочек)

Существует пять типов правил(цепочек) iptables:

  • PREROUTING — предназначена для первичной обработки входящих пакетов, адресованных как непосредственно серверу, так и другим узлам сети. Сюда попадает абсолютно весь входящий трафик для дальнейшего анализа.
  • INPUT — для входящих пакетов, отправленных непосредственно этому серверу.
  • FORWARD — для проходящих пакетов, не адресованных этому компьютеру, предназначены для передачи следующему узлу, в случае, если сервер выполняет роль маршрутизатора.
  • OUTPUT — для пакетов, отправленных с этого сервера.
  • POSTROUTING — здесь оказываются пакеты, предназначенные для передачи на другие узлы сети.

Таблицы

В netfilter существуют 5 типов таблиц, каждая из них имеет свое назначение. Мы рассмотрим таблицу nat, так как собираемся её использовать.

Таблица nat

Используется для трансляции сетевых адресов, т.е. подмены адреса получателя/отправителя, применяется, если сервер используется в качестве маршрутизатора. Содержит цепочки PREROUTING, OUTPUT, POSTROUTING.

Действия с соединениями

Рассмотрим три основных вида действий с соединениями:

  • Accept — разрешить соединение;
  • Drop — игнорировать соединение, вести себя так, будто его никогда не было. Действие подходит для случаев, когда нужно сделать так, чтобы источник запроса не узнал о его блокировке.
  • Reject — заблокировать соединение и отправить в ответ сообщение об ошибке. Действие подходит для тех случаев, когда владелец сервера хочет дать понять, что соединение заблокировано файрволом.
  • DNAT — подменяет адрес получателя в заголовке IP-пакета, основное применение — предоставление доступа к сервисам снаружи, находящимся внутри сети.

Команды

Для iptables команда — это инструкция к действию, при помощи них можно добавлять, удалять и сбрасывать все правила, задавать действия по умолчанию и многое другое. Мы рассмотрим только те команды, которые собираемся использовать:

Сокращенная команда Описание
1 -A добавить правило в конец указанной цепочки
2 -D удалить правило с указанным номером в заданной цепочке
3 -I вставить правило с заданным номером, без указания номера — правило будет по умолчанию добавлено первым

Критерии

Чтобы к пакету применить какое-либо действие, необходимо, чтобы он попал под определенные критерии.

Полный вид Сокращенная команда Описание
1 —destination -d адрес получателя
2 —protocol -p указывает протокол, такие как tcp, udp, udplite и другие
3 —destination-port —dport порт получателя пакета
4 —jump -j когда правило подошло — выполнить указанное действие
5 —source -s указывает адрес источника пакета

Начало

Установка ВМ

Надеюсь, что за 4 лабы вы научились устанавливать ВМ (виртуальные машины) и не нуждаетесь в Божьей помощи, если это не так, то рекомендую посмотреть начало 3й лабы

Из особенностей установки стоит отметить:

  • Установка аналогично лабе 2 (маршрутизатор)
  • На всех 3х машинах советую установить сразу net-tools: apt install net-tools

Т.е. нам нужны 3 машины, 2 из которых с разлиными сетевыми адаптерами, а 3тья должна иметь 2 адаптера, пример:

  • ВМ1 Имеет только сетевой адаптер: "Сетевой мост"
  • ВМ2 Имеет 2 сетевых адаптера: "Сетевой мост" и "Виртуальный хост адаптера"
  • ВМ3 Имеет только сетевой адаптер: "Виртуальный хост адаптера"

На 2й машине (маршрутизатор) не забываем включить ip forwarding

Установка статического IP для всех 3х машин

аналогично 3й лабе: там понятно описано то, как это делать netplan выдача статического ip

Нам следует для всех 3х машин зафиксировать ip, чтобы не испытывать проблем с этим в будущем, хотя этот пункт необязательный.
В моем случае после манипуляций я имею:

Интерфейс ВМ 1 ВМ 2 ВМ 3
1 enp0s3 192.168.3.100 192.168.3.101 -
2 enp0s8 - 192.168.56.100 192.168.56.101

Я установил следующие настройки netplan ВМ1: изображение ВМ2: изображение ВМ3: изображение

Теперь пропишем маршруты (как в лаб2)

Выполним на ВМ 1 команду:

route add -net 192.168.56.0 netmask 255.255.255.0 gw 192.168.3.101
  • 192.168.56.0 это сеть сетевого адптера ВМ 3 (ip в котором поставили всесто последнего октета нолик)
  • 192.168.3.101 это доступный нам ip от ВМ 2

Но при успешной отправке пакетов, нам нужно получить ответ => пропишем обратный путь на ВМ 3:

Выполним на ВМ 3 команду:

route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.56.100
  • 192.168.3.0 это сеть сетевого адптера ВМ 1 (ip в котором поставили всесто последнего октета нолик)
  • 192.168.56.100 это доступный нам ip от ВМ 2

После чего попробуем пропинговать из ВМ3 из ВМ1

Настройка Firewall(Межсетевой экран)

Подготовку мы прошли, можем приступать к основной части

1) Разрешаем и блокируем конкретные соединения

На ВМ2 (маршрутизатор) настроем политику игнорирования прямых(если пакет с маршрутом, т.е преднозначен не для ВМ2, а для ВМ3, то это не будет блокироваться) входящих пакетов из ВМ 1 (плохой компуктер), для этого на ВМ2 пропишем следующее правило iptable:

iptables -A INPUT -s 192.168.3.100 -j DROP

Где 192.168.3.100 - ip(первой ВМ), на которое накладывается правило DROP, т.е. игнорирование соединения. а INPUT означает блокирование прямых входящих соединений (не пакетов с маршрутом)

Протестируем:

Из ВМ1(плохой клиент) попробуем послать пакеты на ВМ2(маршрутизатор):

ping 192.168.3.101

Получаем игнор от маршрутизатора.

Однако, если мы отправим пакеты из ВМ1 в ВМ3, то всё получится. Это получится только из-за того, что мы указали значение флага A равное INPUT.

Удалим правило:

Для удаления правила, нам всего лишь следует заменить флаг A на D т.е на ВМ2 пропишем:

iptables -D INPUT -s 192.168.3.100 -j DROP

Теперь попробуем пропинговать ВМ2 из ВМ1:

ping 192.168.3.101

Все работает!

Заметки: Чтобы удалить все правила из всех цепочек, достаточно прописать:

iptables -F

2) Блокировка пакетов со стороны маршрутизатора(основная настройка Firewall)

На ВМ2 введем следующую команду, чтобы перенаправлять все входящие соединения по протоколу icmp на ВМ3 (наш сервер )

iptables -t nat -A PREROUTING -p icmp -d 192.168.3.101 -j DNAT --to-destination 192.168.56.101

На ВМ2 введем следующую команду, чтобы заблокировать все входящие маршрутизир. соединения от ВМ1

iptables –A FORWARD -s 192.168.3.100 –j DROP

После ввода этой команды, все маршрут соединения с ВМ1 будут игнорироваться.
Можно еще поиграться с параметрами и настроить так, как вы хотите(порт, сеть, сетевой интерфейс и тд), параметров уйма

Протестируем:

Из ВМ1(плохой клиент) попробуем послать пакеты на ВМ2 (маршрутизатор), для которых мы прописали правило DNAT, чтобы они перенаправлялись на ВМ3 (Сервер типа):

ping 192.168.3.101

Получаем игнор, всё отработало правильно и маршрутизатор игнорирует входящие FORWARD соединения от ВМ1.

По сути лаба выполнена.

Сохранение изменений

Внесенные в цепочки правил изменения пропадут при перезапуске iptables, так что их нужно сохранить с помощью специальной команды. В зависимости от используемого Linux-дистрибутива команда может выглядеть по-разному.

  • Ubuntu:
sudo /sbin/iptables-save
  • Red Hat / CentOS:
/sbin/service iptables save
  • Или
/etc/init.d/iptables save

Если будут вопросы, пишие VK.