openssh에서 모든 로그인 시도에 대해 실행될 명령을 지정할 수 있습니까?

openssh에서 모든 로그인 시도에 대해 실행될 명령을 지정할 수 있습니까?

SSH 로그인 공격이 많이 발생하는데 이를 줄이고 싶습니다. openssh에 대한 명령을 지정하여 반환 값을 실행하고 확인하고 이 명령이 0을 반환하는 경우에만 로그인 시도를 허용할 수 있는 방법이 있습니까?

그 이유는 단순한 파일월/IP 기반 규칙보다는 스크립트로 표현할 수 있는 더 복잡한 로그인 규칙을 갖고 싶기 때문입니다.

답변1

예, 충분히 현대적인 openssh에는 트릭이 있습니다. AuthorizedKeysCommand를 사용하세요. 이 구성 옵션을 사용하면 SSH 키를 검색하는 외부 명령을 지정할 수 있습니다. 여기에는 LDAP에서 SSH 키를 검색하는 것과 같은 논리뿐만 아니라 원하는 다른 논리도 넣을 수 있습니다. 키 기반 인증만 허용하는 한 키를 반환하지 않으면 인증이 실패하게 됩니다.

이전 버전의 openssh에서는 ForceCommand를 사용할 수 있지만 이는 강제 명령입니다.~ 후에실행되는 명령이 아닌 인증~ 전에입증. 그러나 비밀번호와 키 기반 인증 모두에서 작동합니다.

비밀번호 기반 인증을 지원하고 인증 단계에 연결하려면 자체 PAM 모듈을 작성하고 SSH 인증에 필수로 만들어야 합니다. 이는 가장 간단한 방법이 아니며 키 기반 인증을 위해 호출되지 않습니다.

인증 실패가 너무 많은 IP 주소를 차단하려는 경우 SSH 설정을 변경할 필요 없이 fall2ban이 도움이 될 수도 있습니다.

관련 정보