Перейти к содержимому
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, введите хост и вставьте вывод fwknop --key-gen с помощью «Вставить ключи из fwknop --key-gen».
  2. 2Постучите; дверь покажет «Дверь приоткрыта», когда отвечает порт 22.
  3. 3Если этого не происходит, запустите на сервере fwknopd -f -v — в руководстве по устранению неполадок перечислены обычные причины.

Все примеры на GitHub → Все конфигурации с этой страницы, готовые к копированию: github.com/mobilcomm/secretknock-examples (общественное достояние).

Вопросы

Нужен ли fwknopd открытый порт?

Нет. Он считывает пакеты с сетевого интерфейса, поэтому SPA-порт может оставаться закрытым в брандмауэре; пакету достаточно достичь сервера.

Руководства по настройке