รับการแจ้งเตือนทางอีเมลเมื่อมีคนเข้าถึงในฐานะรูทโดย SSH

พวกเราที่ดูแลเซิร์ฟเวอร์จะต้องควบคุมทุกสิ่งที่เกิดขึ้นบนเซิร์ฟเวอร์อย่างเข้มงวดที่สุดสิ่งหนึ่งที่เรามักต้องรู้คือเมื่อผู้ใช้เชื่อมต่อผ่าน SSH (รวมรูท) สำหรับสิ่งนี้ด้วยแพ็คเกจและสาย จะเข้าถึงการแจ้งเตือนทางอีเมลของเรา

คุณนึกภาพออกไหมว่าทุกครั้งที่มีคนเชื่อมต่อผ่าน SSH ด้วยรูทจะได้รับอีเมลที่ระบุว่า?

กล่าวอีกนัยหนึ่งก็คือพวกเขาจะได้รับอีเมลที่มีข้อความดังนี้:

[miserver] การแจ้งเตือน: การเข้าถึง Root Terminal เมื่อ: 2014/01/21 (200.55.51.151)

นั่นคือ:

[$ NOMBRE_VPS] การแจ้งเตือน: การเข้าถึง Root Terminal เมื่อ: $ DATE ($ IP_DE_WHO_S_CONNECT)

เพื่อให้บรรลุสิ่งนี้ก่อนอื่นต้องติดตั้งแพ็คเกจที่เรียกว่า mailx.

สมมติว่าเซิร์ฟเวอร์ของคุณใช้ Debian หรือ distro บางตัว (ขอแนะนำเฉพาะ Debian ไม่ใช่ Ubuntu หรือเซิร์ฟเวอร์ที่คล้ายกัน) จะเป็น:

apt-get install mailx

หมายเหตุ: คำสั่งก่อนหน้านี้ดำเนินการในฐานะรูทโดยตรงบนเซิร์ฟเวอร์เนื่องจากเป็น VPS จึงไม่ควรใช้ sudo เว้นแต่จะมีความจำเป็นอย่างยิ่ง

จากนั้นเราต้องใส่บรรทัดต่อไปนี้ในรูท. bashrc:

echo 'ALERTA - Acceso a Terminal de Root en:' `hostname` 'el:' `date +'%Y/%m/%d'` `who | grep -v localhost` | mail -s "[ `hostname` ] Alerta: Acceso a Terminal de Root el: `date +'%Y/%m/%d'` `who | grep -v localhost | awk {'print $5'}`" mi@email.com

ในการแก้ไข /root/.bashrc ให้ใช้ตัวแก้ไขบางตัวในเทอร์มินัลเช่น nano:

nano /root/.bashrc

โปรดจำไว้ว่าคุณต้องระบุอีเมลของคุณที่ท้ายบรรทัดเพียงแค่เปลี่ยน my@email.com เป็นอีเมลที่คุณต้องการให้การแจ้งเตือนไปถึง

หลังจากใส่ (ที่ใดก็ได้ในไฟล์) บรรทัดที่ฉันใส่ไว้ก่อนหน้านี้เราจะบันทึกไฟล์ด้วย Ctrl + O (หรือแบก) และเราทิ้งมันไว้ด้วย Ctrl + X

พร้อมทุกครั้งที่มีคนเข้าสู่รูทเทอร์มินัลไฟล์. bashrc จะถูกโหลดซึ่งเป็นสิ่งที่ทำโดยค่าเริ่มต้นเสมอและเมื่อโหลดไฟล์เสร็จแล้วบรรทัดที่ส่งอีเมลจะถูกดำเนินการโดยปล่อยบางสิ่งไว้ในกล่องจดหมาย เช่น:

อีเมลแจ้งเตือน -ssh

คำอธิบายของบรรทัดเป็นสิ่งที่ง่ายมาก:

  1. ผ่าน mailx ฉันส่งจดหมายโดยมีพารามิเตอร์ -s « _____ »ฉันระบุหัวเรื่องและส่งต่อด้วยเสียงสะท้อน« ____ »และต่อท่อเนื้อหาของเนื้อหา
  2. "ชื่อโฮสต์" ด้วยสิ่งนี้ฉันได้รับชื่อโฮสต์หรือชื่อโฮสต์นั่นคือชื่อของ VPS
  3. `date + '% Y /% m /% d'` คำสั่ง date จะแสดงวันที่ของระบบส่วนที่เหลือของตัวอักษรจะระบุว่าฉันต้องการให้แสดงวันที่อย่างไร
  4. ใคร | grep -v localhost` หากคุณเรียกใช้ใครในคอมพิวเตอร์ของคุณมันจะแสดงผู้ใช้ที่ใช้งานอยู่ด้วย grep -v localhost ฉันแน่ใจว่ามันจะแสดงเฉพาะผู้ที่เชื่อมต่อจากตำแหน่งอื่นไปยังเซิร์ฟเวอร์เท่านั้นนั่นคือโดยพื้นฐานแล้ว สสส
  5. `ใคร | grep -v localhost | awk {'print $ 5'} `สิ่งที่ทำให้บรรทัดนี้แตกต่างจากบรรทัดก่อนหน้าคือ awk ผ่าน awk และการพิมพ์คอลัมน์ที่ 5 คือฉันได้รับ IP จากที่ที่พวกเขาเชื่อมต่อกับ SSH

อย่างไรก็ตามบรรทัดค่อนข้างยาวและอาจดูซับซ้อนในการทำความเข้าใจอย่างไรก็ตามมีอักขระแปลก ๆ มากมาย แต่ทุกอย่างค่อนข้างเรียบง่าย🙂

เช่นเคยฉันหวังว่าคุณจะสนใจ

ความนับถือ


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   มานูเอลเปเรซฟ dijo

    คำถามส่งเมลเซิร์ฟเวอร์ใด คุณต้องกำหนดค่าบัญชีการจัดส่งหรือไม่?

    1.    KZKG ^ กาอาระ dijo

      คุณต้องติดตั้งแพ็คเกจ mailx 😉
      เมื่อเสร็จแล้วระบบจะส่งโดยไม่จำเป็นต้องกำหนดค่าอื่นใดบนเซิร์ฟเวอร์

      1.    มานูเอลเปเรซฟ dijo

        ฉันจะลองดู แต่ฉันคิดว่าอีเมลของฉันจะไม่ยอมรับการรับอีเมลจากแหล่งที่ไม่ได้รับการรับรอง ...

        1.    ตัวเอง dijo

          ฉันใช้ exim4 กับบัญชี 'gmail' เพื่อส่งอีเมลและใช้งานได้ดี
          - ยกเว้นส่วนหัว FROM TO และ REPLY TO ซึ่ง gmail ใส่สิ่งที่ต้องการ แต่มาถึงได้ดี -
          ในการกำหนดค่า gmail ด้วย exim4 ให้ใช้ข้อมูลนี้:
          http://dajul.com/2009/06/08/configurar-exim4-con-gmail-o-google-apps/

          1.    KZKG ^ กาอาระ dijo

            น่าสนใจขอบคุณมาก🙂

      2.    อิสราเอล dijo

        เพื่อน @ KZKG ^ กาอาระฉันได้ติดตั้งแพ็คเกจและได้ทำคู่มือทีละขั้นตอนสิ่งเดียวที่เมื่อฉันส่งไปฉันมีไปรษณีย์ท้องถิ่นฉันไม่เคยออกไปข้างนอกคุณช่วยฉันด้วยได้ไหม ?? ……ดี ฉันต้องการชุดรูปแบบนี้จริงๆที่กำหนดค่าบนเซิร์ฟเวอร์ของฉัน salu2s

        1.    KZKG ^ กาอาระ dijo

          ตาม IP ของคุณฉันถือว่าคุณมาจากประเทศเดียวกัน😉
          "ปัญหา" กับเครือข่ายของเราแทบจะไม่มี IP จริงเลยนั่นคือเราถูกซับเน็ตภายใต้เครือข่ายพร็อกซีของกระทรวงหรืออะไรทำนองนั้น กล่าวอีกนัยหนึ่งอาจเป็นปัญหาคือเว็บเซิร์ฟเวอร์เพียงอย่างเดียวไม่สามารถรับอีเมลจากเครือข่ายหรืออะไรทำนองนั้นได้บางทีคุณอาจต้องการสิ่งนี้: https://blog.desdelinux.net/enviar-emails-por-consola-con-sendmail/

  2.   ทรูโกะ 22 dijo

    น่าสนใจและหากวางไว้ใน« / etc / profile »จะให้คำเตือนเมื่อผู้ใช้เชื่อมต่อหรือไม่

    1.    KZKG ^ กาอาระ dijo

      มันจำเป็นต้องพยายามมันไม่ได้เกิดขึ้นกับฉัน😀

  3.   เนบูคัดเนสซาร์ dijo

    เรียกฉันว่าหวาดระแวง แต่ใส่สคริปต์ที่คนแปลกหน้าแนะนำฉันในส่วนสำคัญของระบบของฉันที่ฉันเก็บรหัสผ่านบัญชีข้อมูลเช่นสูติบัตรเอกสารส่วนตัวและเอกสารการทำงาน (ซึ่งจะเปิดเผยลูกค้าของฉันด้วย) ฯลฯ ฯลฯ และสิ่งนั้น ยังหมายถึงการเปิดเผยบัญชีอีเมลของฉัน (!!!) ... ฉันคิดว่ามันเป็นสิ่งที่อันตราย

    1.    ตัวเอง dijo

      อันตรายของสคริปต์ที่นำเสนอนั้นแปรผกผันกับความเข้าใจของมัน

      และสำหรับความหวาดระแวงให้หยุดการติดตั้งที่เก็บข้อมูลแบบไม่ใช้งานฟรีเนื่องจากอาจมีคนป้อนรหัสที่เป็นอันตรายซึ่งขโมยตะกร้าสินค้าของคุณไป

    2.    KZKG ^ กาอาระ dijo

      ฉันอธิบายว่าแต่ละส่วนของบรรทัดคำสั่งทำอะไรอย่างไรก็ตามหากคุณคิดว่าฉันหลอกลวงใครบางคนสคริปต์หรือคำสั่งอยู่ที่นั่นในโพสต์มันไม่มีรหัสลับหรือรหัสลับใด ๆ คุณสามารถตรวจสอบคำสั่งได้อย่างละเอียด ตามที่คุณต้องการหากคุณพบสิ่งที่น่าสงสัยโปรดแสดงความคิดเห็นที่นี่😉

  4.   เบราว์เซอร์ dijo

    เป็นที่ชื่นชม

  5.   ชื่อนี้ dijo

    น่าสนใจมาก.

    บางทีไฟล์ ~ / .bashrc หรือ / etc / profile อาจไม่เหมาะสมที่สุดในกรณีที่เราเข้าถึงโดย SSH ด้วยผู้ใช้ปกติและรันคำสั่งเฉพาะในฐานะ root หรือถ้าเราส่งออก X11 จาก VPS ระยะไกลทุกครั้งที่เราเปิด xterm เราจะมีอีเมลใหม่

    สำหรับการแฮ็ค mailx ฉันคิดว่าเราควรใช้ไฟล์ ~ / .ssh / rc (แต่ละคนสำหรับผู้ใช้แต่ละคน) หรือ / etc / ssh / sshrc

    PostData: _NEVER_ เข้าถึงโดย SSH ในฐานะผู้ใช้รูท _NEVER_ เข้าถึงโดย SSH โดยใช้รหัสผ่าน _ALWAYS_ ใช้คีย์ส่วนตัว

    1.    ทรูโกะ 22 dijo

      น่าสนใจ→ ~ / .ssh / rc ฉันจะหาข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ขอบคุณ😀

  6.   ชิโนโลโก dijo

    สวัสดีติวเตอร์ที่ดีมาก!
    คุณช่วยป้อนผ่าน ssh จาก ip ใด ๆ นอกเครือข่ายท้องถิ่นได้ไหม
    ขอบคุณ !!

  7.   วิดานู dijo

    สคริปต์นี้ใช้งานได้หากเซิร์ฟเวอร์เมลที่เราส่งไปไม่ได้ตรวจสอบว่าเมลต้นทางมาจากเซิร์ฟเวอร์ที่แท้จริงในกรณีนี้มาจาก root @ localhost เซิร์ฟเวอร์ส่วนใหญ่จะรับมันเป็นสแปม

    สิ่งที่ฉันทำคือกำหนดค่า sendmail เป็น MTA จากนั้นใช้เมลที่อยู่ใน distros ทั้งหมดเพื่อส่งอีเมล

    http://vidagnu.blogspot.com/2009/02/configurar-sendmail-como-cliente-de.html

  8.   อัลกาเบ dijo

    ขอบคุณสำหรับเคล็ดลับที่ฉันจะนำไปทดสอบ:]

  9.   กั๊ก dijo

    มีประโยชน์มากขอบคุณ

  10.   อิสราเอล dijo

    ขอบคุณล้านสำหรับคำแนะนำเพื่อน @ KZKG ^ กาอาระฉันจะดูที่ sendmail ฉันหวังว่าจะแก้ปัญหา salu2s

  11.   joskar dijo

    เยี่ยมมาก! ขอบคุณสำหรับข้อมูล!

  12.   ฮวนค dijo

    และจะเกิดอะไรขึ้นถ้าตัวอย่างเช่นสคริปต์ส่งอีเมลมากเกินไปเช่นมีคนเข้ารูทเทอร์มินัลเวลา 8 น. และส่งอีเมลประมาณ 00 ฉบับจากนั้นมีคนเข้ามาในเวลาอื่นและมีการส่งอีเมลมากกว่า 40 ฉบับแล้วมีคนมา ในเวลาอื่นและมีการส่งอีเมลมากกว่า 23 ฉบับจะเป็นอย่างไร