Домашнее задание 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
Готовый Vagrantfile
Корректировка ansible.yml
В сценарий для Ansible добавлены следующие действия:
- На centralServer установлен nginx
- С хотовой машины прокинут порт 8080 на inetRouter2 порт 80
- На inetRouter2 с помощью iptables DNAT, порт 80 пробрасывается на centralServer. Проброс порта осуществляется без дополнительного маскарадинга!
- На centralRouter настроет iptables так, что бы маркировать пакеты пришедшие со стороны inetRouter2 и идущие на centralServer 80 порт. Это требуется для того, что бы при ответе на запрос пакет с centralServer ушел на inetRouter2 а не в маршрут по умолчанию. Для этих же целей добавлены отдельные таблицы маршрутизации в netplan
- На centralServer так же через iptables и отдельные таблицы маршрутизации настраивается маркировка пакетов пришедших со стороны centralRouter , что бы ответные пакеты всегда ушли в тот же интерфейс откуда пришли.
- На 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 отработали верно.
Проверка 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 работает!
Все готово!

