knockd.conf 예시
knockd는 /etc/knockd.conf를 읽습니다. [options] 섹션과 각 문별 섹션으로 구성됩니다. 각 섹션에는 시퀀스, 시간 제한, 노크하는 주소인 %IP%에 대해 실행할 명령이 있습니다. 직접 선택한 포트를 사용하세요. 예시에 있는 포트를 절대 재사용하지 마세요.
몇 초 동안 SSH 열기
가장 일반적인 설정입니다. 한 번의 노크로 SSH를 열고, knockd가 cmd_timeout 후 다시 닫습니다. 방화벽이 이미 설정된 연결을 허용하면 이미 연 세션은 계속 작동합니다.
[options]
UseSyslog
[openSSH]
sequence = 7311:tcp,8822:tcp,9133:udp
seq_timeout = 10
tcpflags = syn
start_command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
cmd_timeout = 10
stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT 열기 및 닫기를 위한 별도의 시퀀스
타이머가 없으면 닫기 시퀀스를 노크할 때까지 포트가 열려 있습니다. 편리하지만 잊기 쉬우므로 시간 제한 버전을 권장합니다.
[options]
UseSyslog
[openSSH]
sequence = 7311:tcp,8822:tcp,9133:udp
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
[closeSSH]
sequence = 9133:udp,8822:tcp,7311:tcp
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT 일회용 시퀀스
하나의 고정 시퀀스 대신, knockd는 시퀀스 파일을 읽어 각 시퀀스를 한 번만 허용할 수 있으므로 기록된 노크를 다시 보내 재사용할 수 없습니다. Secret Knock는 동일한 목록을 유지하며, 문을 연 노크 후 다음 시퀀스로 이동합니다.
[openSSH]
one_time_sequences = /etc/knockd/ssh_sequences
seq_timeout = 10
tcpflags = syn
start_command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
cmd_timeout = 10
stop_command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
# /etc/knockd/ssh_sequences — one sequence per line, each used once
2222:udp,3333:tcp,4444:udp
5555:tcp,6666:udp,7777:tcp
8888:udp,9999:tcp,1111:tcp nftables 사용
nftables를 사용하는 시스템에서는 knockd가 시간 제한이 있는 세트에 주소를 추가하도록 하세요. hide-SSH 가이드에서 이에 맞는 nftables 테이블을 확인할 수 있습니다.
[openSSH]
sequence = 7311:tcp,8822:tcp,9133:udp
seq_timeout = 10
tcpflags = syn
start_command = /usr/sbin/nft add element inet filter knocked4 { %IP% timeout 30s } 편집 후
- 1Debian 및 Ubuntu에서는 /etc/default/knockd에서 knockd가 수신할 인터페이스를 설정하고(KNOCKD_OPTS="-i eth0") knockd를 재시작하세요.
- 2노크하는 동안 journalctl -u knockd -f로 작동 상황을 확인하세요.
- 3Secret Knock에서 + › 파일에서 가져오기를 선택하면 시퀀스가 있는 각 섹션을 문으로 가져옵니다. 일회용 시퀀스 목록은 직접 입력하세요.
GitHub의 모든 예제 → 이 페이지의 모든 설정을 복사하여 바로 사용할 수 있습니다: github.com/mobilcomm/secretknock-examples (퍼블릭 도메인).
질문
TCP 또는 UDP 단계를 사용해야 하나요?
둘 다 사용할 수 있습니다. 둘을 혼합하면 포트 스캔으로 시퀀스를 추측하기가 더 어려워집니다. 설정에서 이를 확인하는 경우 UDP 단계는 Secret Knock에서 페이로드를 전달할 수 있습니다.