Перейти до вмісту
Secret Knock

Налаштування сервера fwknop

Авторизація одним пакетом fwknop тримає SSH закритим, доки не надійде один зашифрований і автентифікований пакет UDP. Ці кроки налаштовують його на сервері Debian або Ubuntu; спочатку перевірте все з комп’ютера, а потім додайте ті самі ключі до Secret Knock.

1. Установіть і згенеруйте ключі

Установіть сервер і клієнт, а потім згенеруйте пару ключів. Збережіть вивід: ті самі два ключі потрібно додати до access.conf і Secret Knock.

sudo apt install fwknop-server fwknop-client
fwknop --key-gen          # prints KEY_BASE64 and HMAC_KEY_BASE64
Debian / Ubuntu

2. Дозвольте SSH для пакетів SPA

access.conf визначає, що може відкрити дійсний пакет і на який час.

SOURCE              ANY
OPEN_PORTS          tcp/22
KEY_BASE64          <output of fwknop --key-gen>
HMAC_KEY_BASE64     <output of fwknop --key-gen>
FW_ACCESS_TIMEOUT   30
/etc/fwknop/access.conf

3. Укажіть fwknopd інтерфейс для перехоплення пакетів

fwknopd перехоплює пакети на інтерфейсі; йому не потрібен відкритий порт. Укажіть інтерфейс, який використовує ваш сервер.

# /etc/fwknop/fwknopd.conf
PCAP_INTF               eth0;
PCAP_FILTER             udp port 62201;
MAX_SPA_PACKET_AGE      120;
/etc/fwknop/fwknopd.conf

4. За замовчуванням закрийте SSH

Під час цього не закривайте сеанс SSH і перевірте все з другого підключення, перш ніж вийти. fwknopd додає власний ланцюжок на початку INPUT і додає до нього тимчасове правило ACCEPT для кожного дійсного пакета.

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
iptables

5. Перевірте, а потім додайте двері

Перезапустіть fwknop-server, надішліть пакет з іншого комп’ютера та підключіться:

# from another machine: request SSH for the address the server sees (-R)
fwknop -A tcp/22 -R -D server.example.com \
    --key-base64-rijndael "<KEY_BASE64>" --key-base64-hmac "<HMAC_KEY_BASE64>"
ssh [email protected]
З комп’ютера з fwknop-client
  1. 1У Secret Knock: Нові двері › Почати з шаблону › fwknop — Single Packet Authorization, введіть хост і вставте вивід fwknop --key-gen за допомогою кнопки «Вставте ключі з fwknop --key-gen».
  2. 2Постукайте; двері відображатимуть «Двері прочинено», коли порт 22 відповідає.
  3. 3Якщо цього не сталося, виконайте fwknopd -f -v на сервері — у посібнику з усунення несправностей наведено типові причини.

Усі приклади на GitHub → Усі конфігурації з цієї сторінки, готові до копіювання: github.com/mobilcomm/secretknock-examples (суспільне надбання).

Запитання

Чи потрібен fwknopd відкритий порт?

Ні. Він зчитує пакети з мережевого інтерфейсу, тому порт SPA може залишатися закритим у брандмауері; пакету лише потрібно дістатися сервера.

Посібники для вашого налаштування