실패한 로그인 시도에 대해 Linux가 알리도록하려면 어떻게해야합니까?


3

나는 당신이 리눅스 박스에 잘못 로그인 할 때, 당신이 성공적으로 로그온 할 때, 당신이 누군가 당신으로 로그온을 시도했지만 성공하지 않았다는 것을 알았습니다. 여기 내 박스에서 이런 일이 일어나려면 어떻게해야합니까?


비슷한 질문-[ askubuntu.com/q/179889/723997] . 내 대답-[ askubuntu.com/a/1114631/723997]살펴볼 가치가있는 많은 유익한 답변 중 하나 일뿐 입니다.
Craig Hicks

답변:


3

특히 SSH의 경우에서 로깅이 활성화되어 있는지 확인해야합니다 /etc/ssh/sshd_config.

그렇지 않으면 경고 방법과 시스템 세부 정보 및 구성, 심지어 로그인 방법에 따라 모호한 질문이됩니다. 로그 파일에 꼬리를 댈 수 있습니다 : tail -f /var/log/messages일반적이거나 journalctl -f일부 Linux 시스템에서. 전자 메일 경고를위한 솔루션 스레드는 ServerFault에 있습니다.

대부분의 최신 GNU / Linux 시스템에서는 지난 1 시간 동안 SSH 또는 TTY로 실패한 모든 시도를 요약해야합니다.

journalctl --since="$(date -d -1hours +\%F\ \%H):00:00" --until="$(date +\%F\ \%H):00:00" | grep -iE "Failed (pass|log)"

실제로 마지막 시간부터 현재 시간까지입니다. 매시간마다 프로세스를 검색하여 이메일로 보낼 수 있습니다.

출품작은 다음과 같습니다.

Mar 21 06:16:23 yourhostname sshd[29477]: Failed password for root from 103.41.125.20 port 35243 ssh2
Mar 21 06:16:33 yourhostname login[317]: FAILED LOGIN 1 FROM tty4 FOR bolwerk, Authentication failure
Mar 21 06:22:29 yourhostname sshd[29695]: Failed password for invalid user poo from ::1 port 60139 ssh2

이를 수집하기 위해 crontab에 넣을 수있는 스크립트는 다음과 같습니다.

#!/bin/sh

# gather journal information in time frame
export CRUFT=$(journalctl --since="$(date -d -1hours +\%F\ \%H):00:00" --until="$(date +\%F\ \%H):00:00" | grep -iE "Failed (pass|log)")

#email settings
export EMAILFROM="From: Security Alert <yourmail@email.domain>"
export EMAILSUBJECT="Subject: Failed login Summaries from $(date -d -1hours +\%H):00 to $(date +\%H):00"
export EMAILALERTTO="your@email.domain"

if [ "x$CRUFT" != "x" ]; then
        echo -e "$EMAILFROM\n$EMAILSUBJECT\n\nFailed logins:\n$CRUFT" | ssmtp "$EMAILALERTTO"
fi

매시간 마지막 한 시간 동안 실패한 시도를 보내려는 것으로 가정합니다. 또한 당신이 journalctl을 가지고 있다고 가정합니다, 아마도 GNU userland가 필요할 것입니다 (대부분의 distrobs가 그것을 가지고 있습니다).

작동 시키려면 SSMTP를 올바르게 구성해야합니다. 다음 은 Gmail을 사용하여 수행하는 방법에 대한 링크입니다. SSMTP의 보안 에 대해서도 읽어보십시오 . 공유 시스템이있는 경우 비밀번호를 잘못 구성하면 비밀번호가 노출됩니다. 이 줄을 ssmtp.conf구성 에 포함시킬 수 있습니다 .

FromLineOverride=yes

지난 1 시간 동안 실패한 로그인 이벤트를 요약하여 이메일로 보냅니다. 표준 포트가있는 공용 네트워크에서 사람 / 봇은 지속적으로 안전하지 않은 상자를 무력화하려고합니다. 암호 등을 올바르게 설정하면 큰 위협이되지 않습니다.

일반적인 제안을한다면 성공적인 로그인이 더 흥미로울 것입니다. 표준 포트가있는 공용 네트워크에서 사람 / 봇은 지속적으로 안전하지 않은 상자를 무력화하려고합니다. 비밀번호 등을 올바르게 설정하면 큰 위협이되지는 않습니다.하지만 성공적인 로그인을 잡기 위해 일종의 경고 스크립트를 / etc / profile에 넣는 것은 어려운 일입니다.

참고 : 다음 은 journalctl에 대한 CentOS 문서입니다. 다른 많은 GNU / Linux OS에서도 비슷해야합니다. 보고서 시간 지정 방법에 따라 date 명령에서 빼기의 다른 예.


정보에 대해 대단히 감사합니다. 궁극적 인 목표는 노드에 로그인하는 것이며 아래는 마지막 로그인이라고 말합니다 : xxxx 사용자 이름 0이 로그인 시도에 실패했습니다. RHEL 6.5
Syseng

까다 롭지 만 가능할 것입니다. CentOS7에서 이것이 변경되지 않은 경우 (RHEL과 같은 경험이있을 경우) echo "$ LPATHDIR / lastnotification"을 실행하면 해당 정보를 저장하는 파일이 표시됩니다. 마지막 로그인 시간을 가진 유닉스 시대 날짜 스탬프입니다. /etc/profile.d/abrt-console-notification.sh 파일이이를 제어합니다. 원하는 것을 수행하는 효율적인 방법은 실패한 로그인을 저장하고 profile.d의 스크립트를 읽을 수있는 일종의 DB 백엔드를 작성하는 것입니다. 많은 문제처럼 들립니다.
Bolwerk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.