Adakah yang memiliki skrip bash yang akan mengirim email atau memberi tahu seseorang jika berhasil masuk ke server ssh? Saya ingin diberi tahu jika ada yang masuk ke kotak pribadi saya.
Saya menggunakan Ubuntu 12.04 menjalankan xfce
Peringatan: menurut komentar, ini tidak berfungsi jika pengguna membuat file bernama
~/.ssh/rc
. *
Ubah atau buat /etc/ssh/sshrc
dengan konten berikut:
ip=`echo $SSH_CONNECTION | cut -d " " -f 1`
logger -t ssh-wrapper $USER login from $ip
echo "User $USER just logged in from $ip" | sendemail -q -u "SSH Login" -f "Originator <[email protected]>" -t "Your Name <[email protected]>" -s smtp.server.com &
Ini akan memberi tahu Anda secara efektif melalui email kapan saja seseorang masuk melalui SSH, dan login akan dicatat di syslog.
Catatan: Anda memerlukan sendemail
paket ( sudo apt-get install sendemail
) agar pemberitahuan email berfungsi.
Catatan: berfungsi dengan penerusan porta, tetapi dengan opsi -N tidak.
ssh -N
dengan hanya penerusan porta.~/.ssh/rc
sehingga tidak berguna sebagai tindakan pengamanan. @adosaiguas menjawab tentangpam_exec
yang benar.~/.ssh/rc
file mereka . Menggunakan metode berbasis sistempam
hanya lebih dapat diandalkan dan lebih aman, karena hanyaroot
dapat mengacaukannya. Jadi jawabannya adalah:sshrd
Metode ini berfungsi baik untuk sistem pengguna tunggal, tetapipam
metode ini bekerja dengan andal untuk semua sistem.Karena
sshrc
metode ini tidak berfungsi jika pengguna memiliki~/.ssh/rc
file sendiri , saya akan menjelaskan bagaimana melakukan ini dengan yangpam_exec
disarankan oleh @adosaiguas. Hal yang baik adalah bahwa ini juga dapat dengan mudah disesuaikan dengan tipe login selainssh
(seperti login lokal atau bahkan semua login) dengan menghubungkan ke file yang berbeda/etc/pam.d/
.Pertama, Anda harus dapat mengirim email dari baris perintah. Ada pertanyaan lain tentang ini. Di server email, mungkin paling mudah untuk menginstal
mailx
(yang mungkin sudah terpasang).Maka Anda memerlukan file skrip yang dapat dieksekusi
login-notify.sh
(saya taruh/etc/ssh/
misalnya) dengan konten berikut. Anda dapat mengubah variabel untuk mengubah subjek dan konten pemberitahuan email. Jangan lupa untuk mengeksekusinyachmod +x login-notify.sh
agar bisa dieksekusi.Setelah memilikinya, Anda dapat menambahkan baris berikut ke
/etc/pam.d/sshd
:Untuk tujuan pengujian, modul ini disertakan sebagai
optional
, sehingga Anda masih bisa masuk jika eksekusi gagal. Setelah Anda memastikan itu berfungsi, Anda dapat mengubahnyaoptional
menjadirequired
. Maka login tidak akan mungkin kecuali eksekusi skrip hook Anda berhasil (jika itu yang Anda inginkan).Bagi Anda yang membutuhkan penjelasan tentang apa itu PAM dan bagaimana cara kerjanya, inilah yang sangat bagus .
sumber
/etc/ssh/login-notify.sh failed: exit code 13
tepat setelah login :(UsePAM
mengaturyes
di sshd_config Anda.unconfined_u:object_r:bin_t:s0
. Lalu akuchmod +x /bin/login-notify.sh
dan itu berhasil.Kami telah menggunakan monit untuk memantau proses pada kotak linux kami. monit juga dapat memberi peringatan melalui email tentang login yang berhasil melalui ssh. Konfigurasi monit kami terlihat seperti ini
Catatan: Konfigurasi server surat, format email dll. Harus diatur dalam
monitrc
filePembaruan: Menulis posting blog yang lebih rinci tentang ini
sumber
Masukkan yang berikut ini
/etc/profile
:Cara kerja skrip
/etc/profile
dieksekusi di setiap login (untuk pengguna bash shell). Pernyataan if hanya akan mengembalikan true jika pengguna telah login melalui ssh, yang pada gilirannya akan menyebabkan blok kode indentasi dijalankan.Selanjutnya, kami kemudian membangun teks pesan:
$(date)
akan diganti oleh output daridate
perintah${USER}
akan diganti dengan nama login pengguna$(hostname -f)
akan diganti dengan nama host lengkap dari sistem yang sedang loginBaris kedua
TEXT
menambah baris pertama, memberikan alamat IP sistem tempat pengguna ini masuk. Akhirnya, teks yang dihasilkan dikirim dalam email ke alamat Anda.Ringkasan Linux, secara default, akan merekam setiap login sistem, apakah dengan ssh atau tidak, dalam file log sistem, tetapi kadang-kadang - terutama untuk sistem yang jarang diakses melalui ssh - pemberitahuan cepat dan kotor dapat berguna.
sumber
Dalam pertanyaan lain ini Anda mungkin memiliki apa yang Anda cari. Pada dasarnya Anda dapat menambahkan panggilan ke perintah surat dalam skrip yang dijalankan saat pengguna masuk melalui ssh: /etc/pam.d/sshd
sumber
Saya telah mengambil beberapa jawaban luar biasa dari utas ini dan membuat sesuatu yang lebih atau kurang copy-dan-paste. Menggunakan Mailgun untuk mengirim email sehingga Anda terhindar dari masalah dengan mengatur STMP. Anda hanya perlu kunci API Mailgun dan domain pengirim.
Setelah login SSH, skrip akan mengirimkan detail login (pengguna, nama host, alamat IP, dan semua variabel lingkungan saat ini) ke alamat email. Sangat mudah untuk menambahkan parameter lain yang ingin Anda kirim dengan menyesuaikan
message
variabel.sumber
Adaptasi Mailgun dari jawaban @Fritz
Setelah posting saya perhatikan @pacharanero juga menulis tentang mailgun, tapi saya tidak mengerti apa yang mereka lakukan dengan menggali, jadi saya akan memposting solusi saya juga.
Jika Anda menggunakan VM yang tidak memiliki SMTP, Anda mungkin perlu menggunakan sesuatu seperti mailgun, sendgrid, atau sejenisnya. Ini bekerja untuk saya di Google Cloud.
Salah satu risiko dari pendekatan ini adalah penyerang dapat membuat email keluar Anda mengirimkan kredensial jika mereka dapat
sudo su
dan menemukan skrip atau Anda meninggalkan skrip agar pengiriman email dapat dibaca. mailgun memiliki daftar putih ip yang harus Anda atur, tapi itu tidak sempurna untuk kasus penggunaan khusus ini, jelas.Skrip ini harus berfungsi dengan mailgun setelah Anda mengubah
mydomain.com
ke domain Anda yang sebenarnya. Anda dapat menyimpan skrip di/root/login-alert.sh
atau beberapa lokasi yang tidak jelas.Setelah itu Anda dapat mengikuti @Fritz jawaban untuk berubah
/etc/pam.d/sshd
termasuk:Saya perhatikan ini berfungsi tanpa izin baca untuk pengguna yang datang (
chmod 700 /root/login-alert.sh
) sehingga pengguna yang datang tidak perlu membaca akses ke skrip.sumber
Skrip ini dalam
/etc/ssh/sshrc
mengirim email dan menambahkan log ke logger sistem. Perbedaan dibuat (sehingga Anda dapat menonaktifkannya jika Anda mau) antara subnet pribadi Anda dan world wide web (memerlukansudo apt-get install mailutils
).sumber
Saya menggunakan swatchdog dari paket swatch untuk memonitor setiap baris yang mengandung frasa " gagal " (case-sensitive) di /var/log/auth.log . Saya mengaturnya untuk menjalankannya sebagai layanan systemd sederhana.
Buat file configure /etc/swatch/swatch-auth-log.conf dengan root pemilik, izin 644 -
The "/ gagal / i" adalah regexp, dengan "i" menunjukkan itu adalah kasus sensitif. ( Sendmail saya adalah skrip yang mengirim semuanya ke alamat tetap melalui mailgun , jadi alamatnya tidak terlalu penting).
Buat file layanan systemd /etc/systemd/system/swatch-auth-log.service dengan root pemilik, izin 644 -
Kemudian aktifkan, mulai, dan lihat status layanan -
Contoh laporan status yang berhasil -
Layanan akan secara otomatis dimulai saat boot dan dipantau oleh systemd .
Diskusi
Awalnya saya menggunakan solusi pam mirip dengan di atas, tetapi di /etc/pam.d/common-auth tidak sshd . Itu untuk menangkap ssh, sudo, dan login. Tetapi setelah pembaruan, semua kata sandi saya berhenti berfungsi, bahkan setelah mengubah kata sandi dalam mode penyelamatan. Akhirnya saya mengubah /etc/pam.d/common-auth kembali ke aslinya dan kata sandi berfungsi lagi. Berikut adalah deskripsi pada papan UNIX & Linux Stack Exchange
Saya memutuskan akan lebih aman untuk tidak menyentuh sulit untuk memahami pengaturan keamanan. Dan semuanya ada dalam file log.
sumber
Saya sebenarnya baru saja memodifikasi jawaban @SirCharlo
Ini bekerja pada server 14,04, 16,04 dan Centos 6.5.x yang saya setup, saya cukup yakin Anda perlu memastikan mta dikonfigurasi, tetapi begitu selesai, ini berfungsi dengan baik. Langkah selanjutnya peringatan twilio
sumber