누군가 SSH Linux Centos7 워크스테이션을 통해 알림 이메일을 보낼 때(명령 출력 who)

누군가 SSH Linux Centos7 워크스테이션을 통해 알림 이메일을 보낼 때(명령 출력 who)

내 Linux 워크스테이션은 공유 네트워크의 일부입니다. 누군가가 SSH를 통해 내 워크스테이션에 연결할 때마다 알림 이메일을 받고 싶습니다. 이를 위해 파일을 열고 ~/.bash_profile( gedit내 파일은 ~/.bash_profile완전히 비어 있음) 다음 줄을 썼습니다.

IP="$(echo $SSH_CONNECTION | awk '{print $1}')"
HOST=$(hostname)
TIME_DATE_STAMP=$(date +"%e %b %Y, %a %r")

echo 'The '$IP' logged into '$HOST' on '$ TIME_DATE_STAMP'.' | mail -s 'SSH 
Login Notification' MY_EMAIL_ADDRESS

아직 알림 이메일을 받지 못했습니다! 내가 뭘 잘못하고 있는지 알려주세요.

"who -H"이 문제를 해결하려면 int 터미널 명령을 사용할 때 . 내 워크스테이션에 들어오는 모든 SSH 작업 목록을 제공합니다. 내 질문은: "누가" 명령이 이 정보를 어떻게 생성합니까? 해당 데이터 소스는 무엇이며, 이를 사용하여 ssh원하는 데이터를 얻을 수 있나요?

답변1

몇 가지:

  • 당신의 ~/.bash_profile다음 경우에만 시작하세요.로그인. 이러한 다른 사용자는 귀하로 로그인되어 있지 않을 수 있습니다.

  • 누가 CentOS 시스템에 SSH로 접속하는지 관찰하려면 /var/log/secure.

다음과 같습니다.

tail -f /var/log/secure | while read LOGLINE
do
   [[ "${LOGLINE}" == *"logged in"* ]] && mail -s 'SSH Notification' $MY_EMAIL_ADDRESS
done

who편집: 명령이 어떻게 작동하는지 묻기 위해 질문을 편집했습니다 . 저는 C 개발자는 아니지만,이것이 소스코드이고 who명령어이다그것이 어떻게 작동하는지 정말로 보고 싶다면. 그러나 나는 이것이 당신이 찾고 있는 것이라고 생각하지 않습니다. 그리고 나는 당신을 도울 수 있는 다른 방법도 모릅니다. 누군가가 악용 cron및 로그인 하는지 확인하는 스크립트를 만들 수 있더라도 who실행 사이에 누군가가 로그인하고 로그아웃할 가능성은 항상 있습니다. 저널링이 갈 길입니다.

답변2

"who" 명령에서 필요한 정보를 추출하여 명령 메일로 파이프할 수 있습니다. 명령 예:

 who | awk '{print $1" "$3" "$4" " $5}' | tail -1 | mail -s 'WARNING: SSH Notification' EMAIL_ADDRESS

이전 명령을 다른 이름으로 저장 하고 특정 분마다(예: 30분마다) 실행되도록 bash예약합니다 .crontab

답변3

명령의 출력을 파이프할 수 있습니다 last.

last | head -1 | mail -s 'WARNING:' EMAIL_ADRESS

관련 정보