fwknop 서버 설정하기
fwknop 단일 패킷 인증은 암호화되고 인증된 UDP 패킷 하나가 도착할 때까지 SSH를 닫아 둡니다. 다음 단계에서는 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. SPA 패킷에 SSH 허용
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] - 1Secret Knock에서 새 문 › 템플릿으로 시작 › fwknop을 선택하고, 호스트를 입력한 다음 키 붙여넣기로 fwknop --key-gen의 출력을 붙여넣으세요.
- 2노크하면 22번 포트가 응답할 때 문에 문이 살짝 열림이 표시됩니다.
- 3그렇지 않으면 서버에서 fwknopd -f -v를 실행하세요. 문제 해결 가이드에 일반적인 원인이 나와 있습니다.
GitHub의 모든 예제 → 이 페이지의 모든 설정을 복사하여 바로 사용할 수 있습니다: github.com/mobilcomm/secretknock-examples (퍼블릭 도메인).
질문
fwknopd에 열린 포트가 필요한가요?
아니요. fwknopd는 네트워크 인터페이스에서 패킷을 읽으므로 SPA 포트는 방화벽에서 닫힌 상태로 유지할 수 있습니다. 패킷이 서버에 도달하기만 하면 됩니다.