Server Login Benachrichtigungen (SSH / TERMINAL) billig und fröhlich

Grüße an die Community. Dies ist die erste Veröffentlichung, weit davon entfernt, ein Pro-Administrator zu sein, aber ich wollte nur eine kurze und einfache Erfahrung teilen, die für einen Neuling wie mich nützlich sein kann.

So kam es, dass es notwendig war, ungefähr 30 VDS-OKs auf Debian zu steuern, die ich sicher an die Aufsicht „übertragen“ habe (und ich bin eher ein Programmierer als ein * nix-Administrator). Und der erste Gedanke, der mir nach den grundlegenden Vorgängen zum Ändern und Überprüfen von Zugriffen in den Sinn kam, war: „Wenn ich etwas verpasst habe, möchte ich schnell über die Verbindungen Bescheid wissen.“ Es gibt Rezepte (einschließlich Habré) zum Binden von SSH-Autorisierungsereignissen und E-Mail-Benachrichtigungen, die ich als Basis verwendet habe, aber ich wollte trotzdem reaktionsschnell und informativ sein. Im Allgemeinen habe ich schließlich ein solches „System“ erhalten, das einen Monat lang recht erfolgreich funktioniert und mich über alle Tatsachen der Autorisierung informiert.

  1. Mithilfe von Handbüchern zu API-Telegrammen wurden ein Token und eine Chat-ID für den Benachrichtigungsbot empfangen (ich werde sie hier nicht verteilen, alles befindet sich einfach und einfach in der 1-2-Zeile der Suchmaschine).
  2. Es wurden zwei Skripte erstellt, deren Code unten veröffentlicht wird. Grundsätzlich kann man alles in eine Datei packen, aber weil Ich wollte Modularität, dann habe ich die Funktion zum Senden von Benachrichtigungen an den Telegramm-Bot in ein separates Skript eingefügt.
  3. In zwei Einstellungsdateien habe ich dem Skript einen Aufruf zum Registrieren des Anmeldeereignisses auf dem Server hinzugefügt und den SSH-Dienst neu gestartet.

Alles an allem dauert ungefähr 5-10 Minuten, nicht mehr. Nun, eigentlich die technischen Daten.

PS. Alles lief auf Debian9 x64 (wenn das wichtig ist).

/ sbin / onlogged

#!/bin/sh if [ "$1" = "ssh" ] && [ -z "$TERM" ] ; then MESS="USER USE SSH AUTH [not console]" elif [ "$1" = "bash" ] && [ ! -z "$TERM" ] ; then if [ ! -z "$SUDO_USER" ] && [ "$TERM" = "linux" ] ; then MESS="USER USE SUDO DISPLAY CONSOLE [terminal]" elif [ ! -z "$SUDO_USER" ] && [ ! "$TERM" = "linux" ] ; then MESS="USER USE SUDO SSH CONSOLE [ssh session]" elif [ "$TERM" = "linux" ] ; then MESS="USER USE DISPLAY CONSOLE [terminal]" elif [ ! -z "$SSH_TTY" ] ; then MESS="USER USE SSH CONSOLE [ssh session]" else MESS="USER LOGGED [unknown]" fi fi if [ ! -z "$MESS" ] ; then if [ ! -z "$SSH_TTY" ] ; then M_TTY=" TTY = $SSH_TTY |" fi if [ ! -z "$SUDO_USER" ] ; then M_SUDO=" SUDO = $SUDO_USER |" fi if [ ! -z "$TERM" ] ; then M_TERM=" TERM = $TERM |" fi SEND="$MESS | USER = $USER |$M_TTY$M_SUDO$M_TERM" /sbin/telegram "$SEND" "ALERT" > /dev/null fi 

/ sbin / telegramm

 #!/bin/sh if [ $# -gt 0 ] then text="[$2] `cat /etc/hostname` : $1" url="https://api.telegram.org/bot{TOKEN}/sendMessage" curl \ --data-urlencode "chat_id={CHAT_ID}" \ --data-urlencode "text=$text" \ --connect-timeout 10 \ --max-time 10 \ $url > /dev/null 2>&1 else echo "Text is empty" fi 

/ etc / ssh / sshrc

 /sbin/onlogged ssh 

/etc/bash.bashrc

 ...     ... /sbin/onlogged bash 

Vielleicht ist das alles banal und einfach, aber jemand wird interessiert sein oder nur die Grundlage, um etwas Eigenes zu schaffen.

Source: https://habr.com/ru/post/de441774/


All Articles