Letmein adalah pengetuk port sederhana dengan mekanisme otentikasi yang sederhana dan aman. Ini dapat digunakan untuk memperkuat serangan pra-otentikasi pada layanan seperti SSH, VPN, IMAP, dan banyak lagi.
Letmein menyembunyikan layanan di server di balik penghalang otentikasi ketukan untuk mengurangi permukaan serangan suatu layanan. Layanan tidak akan dapat diakses kecuali otentikasi ketukan berhasil. Jika ketukan berhasil, server letmeind hanya akan membuka port yang mengetuk untuk alamat IP klien yang melakukan ketukan. Mesin dengan alamat IP berbeda tetap tidak memiliki akses ke layanan yang dilindungi.
Mesin yang tidak berhasil mengautentikasi urutan ketukan tidak akan dapat mengakses layanan yang dilindungi. Mereka akan menerima reject
ICMP pada port layanan yang dilindungi dengan contoh nftables.conf
yang diberikan. (Anda juga dapat memutuskan untuk drop
paket ke nftables.conf
Anda).
Letmein membutuhkan firewall berbasis nftables
. Ini tidak akan berfungsi dengan iptables
. Jika Anda menggunakan firewall berbasis iptables
, harap konversikan ke nftables
sebelum menginstal letmein. Ada penjelasan tentang cara melakukan itu di Internet. Ini tidak sesulit dan sebanyak kedengarannya. :)
Komunikasi kontrol letmein itu sendiri secara default adalah port TCP 5800, tetapi dapat dikonfigurasi ke port TCP atau UDP mana pun. Jika Anda memilih port UDP sebagai port kontrol dan mengonfigurasi control-error-policy=basic-auth, maka layanan letmein sendiri beroperasi dalam mode sembunyi-sembunyi dan tidak merespons pesan masuk yang tidak diautentikasi.
Beranda
Repositori Git
Repositori Github
Di server instal perangkat lunak server letmein (lihat bagian di bawah).
Di klien, instal perangkat lunak klien letmein (lihat bagian di bawah).
Silakan baca contoh file konfigurasi nftables.conf yang disediakan bersama proyek ini. Diperlukan penambahan rantai masukan khusus letmein ke konfigurasi nftables
Anda yang sudah ada. Ubah nftables.conf
Anda sesuai kebutuhan.
Hasilkan kunci rahasia bersama dan pengidentifikasi pengguna untuk diinstal di server dan klien dengan perintah klien berikut:
letmein gen-key -u 00000000
Perintah gen-key akan mencetak string kunci yang dihasilkan ke konsol. Secara default, ini akan menghasilkan kunci acak yang aman untuk pengidentifikasi pengguna 00000000
. Anda dapat mengedit pengidentifikasi pengguna secara manual, jika diinginkan, atau membiarkannya apa adanya.
Tambahkan string yang dihasilkan (pengidentifikasi pengguna dan rahasia bersama) ke konfigurasi server di /opt/letmein/etc/letmeind.conf
. Masukkan string kunci yang dihasilkan bersama dengan pengidentifikasi pengguna ke bagian [KEYS]
pada file konfigurasi.
Tambahkan string yang dihasilkan sama (pengidentifikasi pengguna dan rahasia bersama) ke konfigurasi klien di /opt/letmein/etc/letmein.conf
. Masukkan string kunci yang dihasilkan bersama dengan pengidentifikasi pengguna ke bagian [KEYS]
pada file konfigurasi.
Buat resource
di server yang menjelaskan port sshd
yang bisa dibuka. Di bagian [RESOURCES]
pada file konfigurasi server /opt/letmein/etc/letmeind.conf
semua port yang dapat dibuka harus ditentukan. Sumber daya terdiri dari pengidentifikasi sumber daya diikuti dengan pengidentifikasi port seperti itu:
[RESOURCES]
00000022 = port: 22
Pengidentifikasi sumber daya adalah angka heksadesimal 8 digit. Dalam contoh ini adalah 22(hex), namun dapat berupa angka apa saja. Hanya saja nomornya harus sama di server dan klien. Setelah port:
nomor port (dalam desimal) yang dapat dibuka-buka ditentukan.
Tambahkan sumber daya yang sama dengan pengidentifikasi sumber daya yang sama dan nomor port yang sama ke konfigurasi klien di /opt/letmein/etc/letmein.conf
.
Mulai ulang server izinkan saya masuk:
systemctl restart letmeind.service
Sekarang hapus port sshd
statis Anda (22) accept
dari konfigurasi firewall nftables.conf
Anda. Letmein akan menginstal aturan seperti itu secara dinamis ke dalam rantai input letmein setelah otentikasi ketukan berhasil. Kemudian mulai ulang nftables:
systemctl restart nftables.service
Selesai! Anda sekarang seharusnya dapat membuka port sshd
di server Anda:
# This must fail! No successful knock authentication, yet.
# If this does not fail, check if you have removed the sshd accept rule from nftables.conf.
ssh your-server.com
# Knock-open port 22 (sshd) on the server using user-id/key 00000000:
# (You do not have to specify -u 00000000 if that is your default user (see config).)
letmein knock -u 00000000 your-server.com 22
# Now you should be able to ssh into your server successfully:
ssh your-server.com
Untuk mengetuk port secara otomatis sebelum terhubung dengan ssh, Anda dapat menambahkan aturan Match exec
ke file ~/.ssh/config
Anda:
Match host your-server.com exec "letmein knock -u 00000000 your-server.com 22"
Lihat petunjuk instalasi untuk informasi lebih lanjut tentang cara membuat dan menginstal letmein.
Jika Anda ingin menghapus letmein sepenuhnya dari sistem Anda, lihat instruksi uninstall.
Aplikasi klien letmein
bersifat portabel dan dapat dijalankan di semua platform utama. Platform yang diuji adalah:
Aplikasi server letmeind
hanya untuk Linux, karena hanya mendukung nftables
sebagai backend firewall.
Lihat dokumentasi konfigurasi untuk informasi rinci tentang cara mengkonfigurasi server dan klien letmein.
Perlu diketahui bahwa pengidentifikasi pengguna dan pengidentifikasi sumber daya dari file konfigurasi dikirimkan melalui jaringan tanpa enkripsi dalam teks yang jelas.
Pastikan pengidentifikasi pengguna dan pengidentifikasi sumber daya tidak menyertakan informasi pribadi apa pun.
Pengidentifikasi ini hanya dimaksudkan sebagai identifikasi abstrak untuk mengelola kunci letmein
, instalasi, dan pengaturan yang berbeda.
Tujuan desain utama letmein adalah:
-4
dan -6
.Untuk informasi lebih lanjut tentang keamanan dan pelaporan kerentanan, silakan lihat dokumentasi keamanan letmein.
Hak Cipta (c) 2024 Michael Büsch [email protected]
Berlisensi di bawah Lisensi Apache versi 2.0 atau lisensi MIT, sesuai pilihan Anda.