Bagaimana caranya agar Linux memberi tahu saya tentang upaya login yang gagal?


3

Saya telah melihatnya sebelumnya ketika Anda masuk ke kotak Linux salah, ketika Anda berhasil masuk, itu memberi tahu Anda bahwa seseorang berusaha untuk masuk karena Anda dan tidak berhasil. Apa yang harus saya lakukan untuk mewujudkan hal ini pada kotak saya di sini?


Pertanyaan serupa - [ askubuntu.com/q/179889/723997] . Jawaban saya - [ askubuntu.com/a/1114631/723997] hanya satu di antara banyak jawaban informatif yang patut dilihat.
Craig Hicks

Jawaban:


3

Khususnya untuk SSH, Anda mungkin perlu memastikan bahwa logging diaktifkan /etc/ssh/sshd_config.

Jika tidak, ini adalah pertanyaan samar yang tergantung pada bagaimana Anda ingin diberitahu dan rincian sistem Anda dan konfigurasinya, bahkan bagaimana mereka masuk. Anda hanya bisa mengekstrak file log: tail -f /var/log/messagesumum atau journalctl -fpada beberapa sistem Linux. Salah satu utas solusi untuk peringatan email ada di ServerFault.

Pada kebanyakan sistem GNU / Linux modern, ini akan memberi Anda intisari dari setiap upaya gagal dengan SSH atau TTY selama satu jam terakhir:

journalctl --since="$(date -d -1hours +\%F\ \%H):00:00" --until="$(date +\%F\ \%H):00:00" | grep -iE "Failed (pass|log)"

Sebenarnya, itu mencakup jam terakhir hingga jam saat ini. Anda dapat crontab proses untuk mengambil itu setiap jam dan mengirimkannya kepada Anda melalui email.

Entri akan terlihat seperti:

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

Berikut skrip yang dapat Anda masukkan ke crontab untuk mengumpulkannya:

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

Itu mengasumsikan Anda ingin mengirimkan upaya gagal jam terakhir setiap jam. Juga berasumsi Anda memiliki journalctl, mungkin memerlukan GNU userland (kebanyakan distrob memilikinya).

Untuk membuatnya berfungsi, Anda harus mengkonfigurasi SSMTP dengan benar. Berikut ini tautan yang berbicara tentang melakukan hal itu dengan gmail. Baca tentang keamanan untuk SSMTP juga; mengonfigurasi yang salah, ungkapkan kata sandi Anda, jika Anda memiliki sistem bersama. Anda mungkin ingin memasukkan baris ini dalam ssmtp.confkonfigurasi:

FromLineOverride=yes

Ini akan membuat intisari dari peristiwa login gagal selama satu jam terakhir dan mengirimkannya kepada Anda melalui email. Pada jaringan publik dengan port standar, orang / bot terus-menerus berusaha merusak kotak yang tidak aman. Tidak banyak ancaman jika Anda mengatur kata sandi Anda dengan benar, dll ...

Jika saya dapat membuat saran umum, login yang berhasil mungkin lebih menarik. Pada jaringan publik dengan port standar, orang / bot terus-menerus berusaha merusak kotak yang tidak aman. Ini bukan ancaman jika Anda mengatur kata sandi Anda dengan benar, dll ... Tetapi menempatkan skrip peringatan semacam di / etc / profile untuk menangkap setiap login yang berhasil mungkin akan mudah.

Catatan: Ini adalah dokumentasi CentOS di journalctl; harus serupa pada banyak OS GNU / Linux lainnya. Contoh lain dari pengurangan dari perintah tanggal, tergantung bagaimana Anda ingin menghitung waktu laporan.


Terima kasih banyak atas informasinya, tujuan utama saya adalah untuk login ke node dan di bawahnya dikatakan login terakhir: xxxx Itu yang mengatakan nama pengguna 0 upaya login gagal atau semacamnya. Saya menggunakan RHEL 6.5
Syseng

Mungkin rumit tapi bisa dilakukan. Jika ini tidak berubah dalam CentOS7 (pengalaman saya hanya seperti RHEL), jalankan echo "$ LPATHDIR / lastnotification" dan ini menunjukkan kepada Anda file yang menyimpan informasi itu. Itu hanya cap tanggal UNIX dengan waktu login terakhir. File /etc/profile.d/abrt-console-notification.sh adalah yang mengendalikan ini. Cara efisien untuk melakukan apa yang Anda inginkan adalah dengan menulis backend DB yang menyimpan login yang gagal dan membuat skrip di profil.d membacanya. Kedengarannya seperti banyak masalah.
Bolwerk
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.