From 40bcbcbfe1123f41c08693f62c1b7af283637d7a Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 17 Mar 2026 23:53:59 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..0a8880d --- /dev/null +++ b/README.md @@ -0,0 +1,132 @@ +# Домашнее задание 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](images/30_1.png) + + + +Готовый [Vagrantfile](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](ansible.yml) + + + + +### Проверка + +Запускаем vagrant +```bash +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](images/30_2.png) + + + +Проверка port knocking. Поключимся к **centralServer** и с помощтю утилиты **nc** проверим работу. +Вначале проверим досмтупность 22 порта, а потом по очереди 2222-222-22. + +nc -zvw 2 192.168.255.1 22 + +```bash +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 работает! + + +Все готово! \ No newline at end of file