# Сетевая безопасность. Лабораторная работа №2 (HW) ## Ход работы 1. Установим пакет `knockd` на обе виртуальные машины ![alt text](img/01.png) 2. На машине `ubuntu` предварительно настроим `iptables`, разрешив только установленные соединения и SSH. ![alt text](img/02.png) 3. Проверим подключение c машины `ubuntu2` ![alt text](img/03.png) Видим, что подключение отсутствует, при этом SSH сессия до машины не оборвалась, делаем вывод, что правила `iptables` настроены верно. 4. После настройки пакетного фильтра необходимо инициализировать службу knockd. Для этого в файле /etc/default/knockd изменим следующую опцию и присвоить ей значение “1”: ![alt text](img/04.png) 5. Создадим файл, заполненный `one-time sequence`, то есть набором одноразовых последовательностей, которые будут использовать для открытия порта. ![alt text](img/05.png) 6. Настроим демон `knockd` так, чтобы он использовал созданный файл для открытия доступа к порту. `nano /etc/knockd.conf` ![alt text](img/06.png) 7. Сделаем автостарт службы и запустим её ``` systemctl enable knockd.service systemctl start knockd.service ``` 8. С помощью `nmap` проверим доступность порта `1194/tcp` на машине `ubuntu` ![alt text](img/10.png) Видим, что `nmap` определяет порт как фильтрующийся. 9. На машине `ubuntu2` выполним команду `knock` и укажем адрес подключения и последовательность. ![alt text](img/07.png) 10. На машине `ubuntu` проверим наполнение `iptables` и содержимое файла `/etc/knockd/openvpn_ots` ![alt text](img/08.png) Видим, что в `iptables` появилось разрешающее правило, а в `/etc/knockd/openvpn_ots` закомментировалась строка с использованной последовательностью. 11. Проверим подключение `openvpn` с `ubuntu2` к `ubuntu` ![alt text](img/09.png) Видим, что подключение выполнилось успешно. 12. С помощью `nmap` ещё раз проверим доступность порта `1194/tcp` на машине `ubuntu` ![alt text](img/11.png) Видим, что теперь порт доступен. 13. Воспользуемся второй последовательностью, и проанализируем лог `tcpdump` ![alt text](img/12.png) Видим, что при использовании `knock` на адрес посылаются пакеты в указанной последовательности, на который целевой адрес не отвечает, но как мы видели ранее, в этот момент сервер делает запись в `iptables`, разрешающее подключение. ![alt text](img/13.png) ## Выводы Port Knocking — это метод усиления защиты путем скрытия открытых портов от несанкционированного доступа с помощью сочетания «стуков» на определенные порты. Метод может обеспечиваться с помощью демона `knockd`, который имеет большое количество параметров, одним из которых является `one-time sequence`, то есть одноразовые последовательсти -- набор "стуков", который может быть использован для открытия портов только один раз. **Выполнил:** Харитонов Марат Русланович, студенческий билет М235314.