Files
homework30/README.md
2026-03-17 23:53:59 +03:00

7.1 KiB
Raw Blame History

Домашнее задание 30

Фильтрация трафика - iptables

Для выполнение задания используется стенд из домашнего задания 28 https://git.limbox.ru/alex/homework28

Создание Vagrantfile

В дополнении к 7 существующим VM будет добавлена еще одна inetRouter2

Создана сеть router2-net с адресацией 192.168.255.12/30

Добавлены подключения

inetRouter2 ip 192.168.255.13/30 link to centralRouter ip 192.168.255.14/30

Текущая карта сети 30_1

Готовый Vagrantfile

Корректировка ansible.yml

В сценарий для Ansible добавлены следующие действия:

  1. На centralServer установлен nginx
  2. С хотовой машины прокинут порт 8080 на inetRouter2 порт 80
  3. На inetRouter2 с помощью iptables DNAT, порт 80 пробрасывается на centralServer. Проброс порта осуществляется без дополнительного маскарадинга!
  4. На centralRouter настроет iptables так, что бы маркировать пакеты пришедшие со стороны inetRouter2 и идущие на centralServer 80 порт. Это требуется для того, что бы при ответе на запрос пакет с centralServer ушел на inetRouter2 а не в маршрут по умолчанию. Для этих же целей добавлены отдельные таблицы маршрутизации в netplan
  5. На centralServer так же через iptables и отдельные таблицы маршрутизации настраивается маркировка пакетов пришедших со стороны centralRouter , что бы ответные пакеты всегда ушли в тот же интерфейс откуда пришли.
  6. На inetRouter настроены правила iptables в цепочке INPUT и port knocking следующим образом:
  • Разрешены established и related соединения
  • Разрешено все с loopback интерфейса
  • Разрешено все с интернфейса enp0s3 (оставил для vgrant)
  • Разрешен ICMP
  • Первое подключение от 192.168.255.2 на порт TCP 2222 записывается в таблицу CONNECT_1 (не важно как подключаться, можно http или ssh )
  • Если в течении 30 секунд после первого подключения произошло подключение на порт TCP 222, записываем в таблицу CONNECT_2
  • Теперь в течении 30 секунд мы можем подключиться по ssh с centralRouter на inetRouter
  • В цепочке INPUT включена политик DROP

Готовый ansible.yml

Проверка

Запускаем vagrant

alex@ubuntu-pc:~/Документы/30$ vagrant destroy --force
==> office1Router: You assigned a static IP ending in ".1" or ":1" to this machine.
==> office1Router: This is very often used by the router and can cause the
==> office1Router: network to not work properly. If the network doesn't work
==> office1Router: properly, try changing this IP.
==> office1Router: Forcing shutdown of VM...
==> office1Router: Destroying VM and associated drives...
==> centralServer: Forcing shutdown of VM...
==> centralServer: Destroying VM and associated drives...
==> centralRouter: You assigned a static IP ending in ".1" or ":1" to this machine.
==> centralRouter: This is very often used by the router and can cause the
==> centralRouter: network to not work properly. If the network doesn't work
==> centralRouter: properly, try changing this IP.
==> centralRouter: Forcing shutdown of VM...
==> centralRouter: Destroying VM and associated drives...
==> inetRouter2: Forcing shutdown of VM...
==> inetRouter2: Destroying VM and associated drives...
==> inetRouter: You assigned a static IP ending in ".1" or ":1" to this machi
...


...
RUNNING HANDLER [apply netplan] ************************************************
changed: [office2Server]
changed: [office1Server]
changed: [office2Router]
changed: [centralRouter]
changed: [office1Router]
changed: [centralServer]

PLAY RECAP *********************************************************************
centralRouter              : ok=15   changed=13   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
centralServer              : ok=12   changed=10   unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
inetRouter                 : ok=16   changed=14   unreachable=0    failed=0    skipped=1    rescued=0    ignored=0   
inetRouter2                : ok=12   changed=10   unreachable=0    failed=0    skipped=1    rescued=0    ignored=0   
office1Router              : ok=7    changed=5    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
office1Server              : ok=6    changed=4    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
office2Router              : ok=7    changed=5    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
office2Server              : ok=6    changed=4    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

 


После запуска всех машин, на хостовой машине попробуем открыть http://127.0.0.1:8080/, видим стандартную страницу nginx, значит dnat на inetRouter2 и макрировки пакетов на centralRouter и centralServer отработали верно.

30_2

Проверка port knocking. Поключимся к centralServer и с помощтю утилиты nc проверим работу. Вначале проверим досмтупность 22 порта, а потом по очереди 2222-222-22.

nc -zvw 2 192.168.255.1 22

vagrant@centralRouter:~$ nc -zvw 2 192.168.255.1 22
nc: connect to 192.168.255.1 port 22 (tcp) timed out: Operation now in progress
vagrant@centralRouter:~$ 
vagrant@centralRouter:~$ 
vagrant@centralRouter:~$ nc -zvw 2 192.168.255.1 2222
nc: connect to 192.168.255.1 port 2222 (tcp) timed out: Operation now in progress
vagrant@centralRouter:~$ nc -zvw 2 192.168.255.1 222
nc: connect to 192.168.255.1 port 222 (tcp) timed out: Operation now in progress
vagrant@centralRouter:~$ nc -zvw 2 192.168.255.1 22
Connection to 192.168.255.1 22 port [tcp/ssh] succeeded!

Видим, в начале порт 22 был закрыт, но после того как мы поочередно постучались на порты 2222 и 222, порт 22 стал доступен, port knocking работает!

Все готово!