노크 데몬을 설정하려고 하는데 노크 명령을 실행하지 않는 것 같습니다. 문제를 디버깅하기 위해 문서의 예제를 약간 편집한 다음과 같은 간단한 구성을 사용했습니다.
[options]
logfile = /var/log/knockd.log
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 10
tcpflags = syn
command = /usr/bin/touch /tmp/knock
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 10
tcpflags = syn
command = /usr/bin/rm /tmp/knock
knock -v 192.168.0.2 7000 8000 9000
나는 아래와 같이 데몬이 아닌 모드에서 kockd를 실행하고 출력을 기록함으로써 knock이 전송되는 패킷을 감지하고 있음을 증명할 수도 있었습니다 sudo knockd -c /etc/knockd.conf -ienp2s0 -Dv > log
. 파일의 내용은 log
다음과 같습니다.
config: new section: 'options'
config: log file: /var/log/knockd.log
config: new section: 'openSSH'
config: openSSH: sequence: 7000:tcp,8000:tcp,9000:tcp
config: openSSH: seq_timeout: 10
config: tcp flag: SYN
config: openSSH: start_command: /usr/bin/touch /tmp/knock
config: new section: 'closeSSH'
config: closeSSH: sequence: 9000:tcp,8000:tcp,7000:tcp
config: closeSSH: seq_timeout: 10
config: tcp flag: SYN
config: closeSSH: start_command: /usr/bin/rm /tmp/knock
ethernet interface detected
listening on enp2s0...
-------- snip -------
2024-00-11 13:08:17: tcp: 192.168.0.182:34892 -> 192.168.0.2:7000 74 bytes
2024-00-11 13:08:17: tcp: 192.168.0.182:49042 -> 192.168.0.2:8000 74 bytes
2024-00-11 13:08:17: tcp: 192.168.0.182:47252 -> 192.168.0.2:9000 74 bytes
waiting for child processes...
closing...
에서는 파일이 생성되지 않습니다 /tmp/knock
. 내가 무엇을 놓치고 있나요?
답변1
추가 로깅을 위해 명령 출력을 리디렉션합니다. 출력 및 오류를 파일로 리디렉션하도록 명령을 수정합니다.
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 10
tcpflags = syn
command = /bin/touch /tmp/knock 2>/tmp/knock_error
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 10
tcpflags = syn
command = /bin/rm /tmp/knock 2>/tmp/knock_error
이렇게 하면 내용을 확인할 수 있습니다 /tmp/knock_error
.
SELinux
또는 를 사용하면 AppArmor
명령이 실행되지 않을 수 있습니다. 로그를 확인하거나 일시적으로 비활성화하세요.
게다가 dmesg
& lsof
.
dmesg
노크 시퀀스를 트리거한 후 실행합니다. knockd
실행된 명령과 관련될 수 있는 커널 메시지, 네트워크 오류 또는 경고를 찾으십시오 .
프로세스가 파일에 대한 잠금을 lsof
보유하고 있는지 확인하고 확인하십시오 . /tmp/knock
이는 파일이 생성 중이지만 삭제되지 않았는지 또는 파일을 열어 두는 프로세스가 있는지 확인하는 데 도움이 될 수 있습니다.
sudo lsof /tmp/knock
문제를 일으킬 수 있는 최신 변경 사항은 시스템 업데이트 로그를 확인하세요.
cat /var/log/pacman.log
iptables -L -n -v
방화벽이 지정된 노크 시퀀스를 허용하는지 확인하고 사용하세요 .
또한 다음을 통해 프로세스 상태를 확인할 수 있습니다 knockd
.ps aux | grep knockd
당신은 설치할 수 있습니다심사, 또는 설치한 경우 감사 이벤트에 대한 로그를 확인할 수 있습니다.
sudo ausearch -m avc -ts recent
Journalctl을 사용하여 최신 로그/세부 정보를 표시할 수 있습니다.journalctl -xe
아치 리눅스(Arch Linux)도 사용될 수 있습니다 rsyslog
.
cat /var/log/syslog
지금은 그게 제가 생각할 수 있는 전부입니다!