Добавить README.md
This commit is contained in:
132
README.md
Normal file
132
README.md
Normal file
@@ -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**
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Текущая карта сети
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Готовый [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** отработали верно.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Проверка 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 работает!
|
||||||
|
|
||||||
|
|
||||||
|
Все готово!
|
||||||
Reference in New Issue
Block a user