إعلامات تسجيل الدخول إلى الخادم (SSH / TERMINAL) رخيصة ومبهجة

تحية الى المجتمع. هذا هو المنشور الأول ، بعيدًا عن أن أكون مسؤولًا محترفًا ، ولكني أردت فقط مشاركة تجربة قصيرة وبسيطة قد تكون مفيدة لمبتدئ مثلي.

لقد حدث أنه كان من الضروري التحكم في حوالي 30 VDS-oks على دبيان ، والتي "نقلتها" بأمان إلى الإشراف (وأشبه بمبرمج أكثر من مسؤول * nix). وكانت الفكرة الأولى التي تتبادر إلى ذهني بعد العمليات الأساسية لتغيير الوصول والتحقق منه "إذا فاتني شيء ما ، فأنا أريد أن أعرف بسرعة عن الاتصالات". هناك وصفات (بما في ذلك على Habré) لأحداث ترخيص SSH الملزمة وإشعارات البريد الإلكتروني ، والتي استخدمتها كقاعدة ، لكنني ما زلت أرغب في أن أكون سريع الاستجابة وبعض المعلومات. بشكل عام ، حصلت في نهاية المطاف على هذا النوع من "النظام" ، والذي يعمل لمدة شهر كامل بنجاح كبير ويبلغني بأي حقيقة إذن.

  1. باستخدام أدلة على برقية واجهة برمجة التطبيقات ، تم استلام رمز مميز ومعرف دردشة لبوت الإخطار (لن أوزع هنا ، كل ذلك موجود بسهولة وبساطة في السطر 1-2 من محرك البحث).
  2. تم إنشاء نصين ، سيتم نشر الرمز أدناه. من حيث المبدأ ، يمكنك وضع كل شيء في ملف واحد ، ولكن بسبب كنت أرغب في تحقيق الوحدة ، ثم وضعت في نص منفصل وظيفة إرسال الإشعارات إلى بوت التلغراف.
  3. في ملفين للإعدادات ، أضاف مكالمة إلى البرنامج النصي لتسجيل حدث تسجيل الدخول إلى الخادم وأعد تشغيل خدمة SSH.

كل شيء عن كل شيء يستغرق حوالي 5-10 دقائق ، لا أكثر. حسنا ، الآن في الواقع الفني.

PS. كل شيء كان يعمل على نظام التشغيل Debian9 x64 (إذا كان هذا مهمًا).

/ 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 / telegram

 #!/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 

ربما يكون هذا كل شيء عاديًا وبسيطًا ، ولكن شخصًا ما سيكون مهتمًا أو مجرد أساس لإنشاء شيء خاص به.

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


All Articles