SSH 연결을 설정할 때 이 메시지를 재현하는 방법:
마지막 로그인 실패: 2월 19일 일요일 03:52:25 마지막 로그인 성공 이후 41번의 로그인 시도가 실패했습니다.
호스트 집합에 대해 이 검사를 수행하는 플레이북을 Ansible에서 구성하고 싶습니다. 그게 가능합니까? 이 메시지 생성을 담당하는 서비스는 무엇입니까?
그렇지 않다면 누구든지 이것을 달성할 수 있는 좋은 방법을 알려줄 수 있습니까? 보안 로그에서 실패한 시도를 얻을 수 있다는 것을 알고 있지만 마지막으로 성공한 액세스 이후 횟수를 계산하는 방법을 정확히 모릅니다.
답변1
참고: 다음 답변에서는 SSH를 통해 서버에 연결하지 않고 Ansible을 통해서만 서버에 액세스할 수 있다고 가정합니다.
아마도 가장 우아한 해결책은 아니지만 충분히 좋을 것입니다.
- name: Failed logins since last playbook execution
shell: 'echo $((`lastb | wc -l` - 2)) ; > /var/log/btmp'
설명(여기서 너무 뻔했다면 죄송합니다...):
lastb
실패한 로그인을 나열하는 명령이며 해당 출력은 다음을 기반으로 합니다./var/log/btmp
``는 명령 대체를 수행하는 방법으로, 그 목적은 명령을 해당 출력으로 대체하여 다른 명령에 대한 인수가 될 수 있도록 하는 것입니다. 이 경우 산술 연산을 위한 이중 괄호입니다.
$(()))
lastb | wc -l
그러나 반환된 행 수는/var/log/btmp
원하는 결과를 얻으려면 여기서 2를 빼야 합니다. 두 번째에서 마지막 행/var/log/btmp
은 빈 행이고 마지막 행에는 타임스탬프가 포함되어 있기 때문입니다.btmp begins Sat Feb 19 18:50:43 2022
마지막으로 실패한 로그인 횟수를 재설정하기 위해 다음을 자릅니다.
/var/log/btmp