실패한 로그인 시도에 대해 Linux가 알리도록하려면 어떻게해야합니까? 할 때, 당신이 누군가 당신으로

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



답변

특히 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 명령에서 빼기의 다른 예.


답변