질문
SSH 공개 키 인증 및 nftables 설정을 사용하여 SSH 시도를 기록하는 가장 좋은 방법은 무엇입니까? 또한 이것을 테스트하는 가장 좋은 방법은 무엇입니까?
이것은 나에게 학습 연습이기 때문에 "그냥 처리" 패키지를 설치하지 않고 이 작업을 수행하고 싶습니다.
설명하다
네트워킹 개념을 테스트하고 배우기 위해 상당히 빈 새 시스템을 설정했습니다. 시스템은 Arch Linux를 실행합니다. nftables가 실행 중이며 SSH 공개 키 인증을 사용하여 시스템에 로그인할 수 있습니다. 테스트 시스템에서도 sshd.socket이 유용하기 때문에 이를 사용합니다.
그러나 nftable 규칙 중 하나가 예상대로 로그아웃되지 않는 것 같습니다.
log prefix "REJECTED" reject with icmpx type port-unreachable
이 규칙은 nftables.conf의 입력 체인 맨 아래에 있으므로 거부된 모든 입력 트래픽은 이 규칙을 따라야 합니다(제 생각에는).
내 테스트가 잘못되었을 수도 있지만 실행해 보면 journalctl -k | grep "REJECTED"
다른 컴퓨터를 통해 로그인을 시도한 후 아무 항목도 표시되지 않습니다. 그러나 올바른 키를 가진 다른 컴퓨터가 1분 내에 두 번 이상 로그인을 시도하면 항목이 표시됩니다.
또한 이 nftable 규칙(위의 거부 규칙 위에 있음)을 사용하여 성공적인 SSH 로그인을 볼 수 있다는 점에 유의하겠습니다.
tcp dport ssh limit rate 2/minute log prefix "SSH connection" accept
실행하면 journalctl -k | grep "SSH"
예상대로 이러한 연결이 표시됩니다.
답변1
어떤 TCP 연결이 로그인에 실패했는지, 어떤 방법으로 로그인에 실패했는지 네트워크 계층(또는 로그)에서는 확인할 수 없습니다. SSH 데몬은 로그인이 실패하는 시기를 결정하고 이를 기록한 후 재시도를 허용하거나 연결을 닫습니다(보통 특정 횟수의 시도 실패 후).
실패한 로그인 시도는 인증 로그인에 저장됩니다 /var/log/auth.log
. 여기에서 실패한 로그인과 성공한 로그인에 대한 로그 항목을 찾을 수 있습니다.
네트워크 계층에서는 SSH 데몬에 대한 새 연결을 기록할 수 있습니다. 다음 예는 nftables에서 직접 가져온 것입니다.위키 문서:
tcp dport 22 ct state new log prefix \"New SSH connection: \" accept