Настройка сервера 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 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 3. Укажите fwknopd, где прослушивать пакеты
fwknopd перехватывает пакеты на сетевом интерфейсе; открытый порт ему не нужен. Укажите интерфейс, который использует ваш сервер.
# /etc/fwknop/fwknopd.conf
PCAP_INTF eth0;
PCAP_FILTER udp port 62201;
MAX_SPA_PACKET_AGE 120; 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 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] - 1В Secret Knock: Новая дверь › Начать с шаблона › fwknop, введите хост и вставьте вывод fwknop --key-gen с помощью «Вставить ключи из fwknop --key-gen».
- 2Постучите; дверь покажет «Дверь приоткрыта», когда отвечает порт 22.
- 3Если этого не происходит, запустите на сервере fwknopd -f -v — в руководстве по устранению неполадок перечислены обычные причины.
Все примеры на GitHub → Все конфигурации с этой страницы, готовые к копированию: github.com/mobilcomm/secretknock-examples (общественное достояние).
Вопросы
Нужен ли fwknopd открытый порт?
Нет. Он считывает пакеты с сетевого интерфейса, поэтому SPA-порт может оставаться закрытым в брандмауэре; пакету достаточно достичь сервера.