Akses jarak jauh ke mesin Linux di belakang firewall

11

Saya akan menggunakan mesin Linux sebagai semacam terminal publik di lokasi terpencil. Saya ingin dapat mengaksesnya dari jarak jauh melalui SSH untuk pemeliharaan tetapi saya tidak ingin membuat port terbuka pada firewall jarak jauh untuk kesempatan langka saya perlu mengakses mesin ini. Meskipun saya sudah tentang skrip sederhana untuk membuat terowongan SSH terbalik ke mesin di luar, tapi saya lebih suka tidak harus memiliki pengguna harus melakukan apa pun ketika saya perlu mengaksesnya. Ada ide?

Pembaruan: Saya telah memutuskan untuk pergi dengan rencana asli naskah untuk membuat terowongan ssh terbalik. Sementara solusi lain yang disarankan, seperti port knocking akan lebih sesuai dengan apa yang benar-benar ingin saya lakukan, dalam hal ini, saya tidak memiliki akses untuk mengkonfigurasi router selain memandu pengguna melalui konfigurasi. merasa ngeri

baudtack
sumber
Anda tidak perlu mengkonfigurasi router. Linux memiliki iptables firewall yang cukup untuk keamanan firewall. Dan membuat tunnel ssh selalu ke server membuatnya rentan terhadap serangan itu melemparkan host yang terhubung dengannya.
Kazimieras Aliulis
1
Saya harus membuka port pada router namun untuk melewatkan apa pun yang saya butuhkan ke kotak linux. Terowongan ssh tidak selalu hidup. Ini akan dimulai oleh pengguna yang berakhir ketika saya membutuhkan akses ke mesin.
baudtack

Jawaban:

5

Ini tidak ada hubungannya dengan perhatian pada port yang terbuka dan lebih banyak hubungannya dengan tidak ingin memandu pengguna melalui proses membuka port. Sayangnya saya tidak memiliki akses ke router ini.

Jika mengganti router benar-benar keluar dari pertanyaan, Anda mungkin perlu melihat solusi P2P atau VPN seperti Hamachi . Jika Anda mengatur sistem untuk secara otomatis membuat koneksi VPN saat startup, maka Anda harus dapat terhubung kapan pun Anda perlu. Hamachi melakukan semua negosiasi firewall untuk Anda. Satu kekurangannya adalah Anda harus bergantung pada server Hamachi yang berfungsi dan berfungsi saat Anda perlu terhubung.

Jika Anda memiliki server yang selalu aktif, Anda dapat mengatur autossh sehingga sistem jarak jauh selalu membuat terowongan terbuka dan terhubung ke server Anda. Satu kekurangannya adalah sistem remote dikompromikan mereka penyerang akan mendapatkan kunci yang digunakan untuk membangun sesi ssh. Akan sangat penting untuk menjaga sistem Anda yang menerima koneksi ssh benar-benar terkunci.


Di bawah ini adalah jawaban asli saya, saya berasumsi bahwa memperbarui router adalah suatu pilihan.

Salah satu solusi yang mungkin ingin Anda selidiki jika firewall Anda mendukungnya, adalah port knocking . Dengan beberapa firewall, mungkin untuk mengirim paket khusus yang pemberitahuan firewall dan kemudian sementara membuka lubang melalui firewall.

Ada banyak implementasi beberapa lebih baik daripada yang lain. Beberapa menggunakan kriptografi yang kuat untuk membuat hampir tidak mungkin bagi seseorang tanpa kunci yang tepat untuk mengirim ketukan yang benar.

Sakit kepala
sumber
Itu terdengar seperti ide bagus! Sayangnya firewall yang dimaksud hanyalah Linksys tingkat konsumen yang sederhana atau setara.
baudtack
1
Jika Anda dapat menginstal dd-wrt Anda dapat menggunakan knockd ( dd-wrt.com/wiki/index.php/Knockd )
Zoredache
@Zoredache Benar, tapi ini di lokasi yang jauh. Saya tidak memiliki akses ke router ini dan saya ngeri membayangkan mencoba memandu pengguna melalui instalasi dd-wrt.
baudtack
Saya setuju bahwa ini mungkin Cara yang Tepat untuk mengatur ini, asalkan saya memiliki akses fisik ke router untuk menginstal dd-wrt.
baudtack
Hamachi, sejak diakuisisi oleh LogMeIn, telah menunjukkan pertimbangan buruk kepada pengguna Linux. Saya menemukan produk tidak dapat diandalkan ketika mesin Linux adalah bagian dari jaringan hamachi saya.
bmb
6

Saya tidak akan khawatir meninggalkan port 22 yang dapat diakses ke internet, tetapi saya akan mengambil beberapa langkah untuk mengamankannya.

Pertama, nonaktifkan otentikasi interaktif keyboard dan pindah ke tombol ssh.

Kedua, instal sesuatu seperti fail2ban di server jauh Anda ke blackball alamat IP yang berulang kali menyelidiki mesin Anda. Karena Anda memiliki kunci pengaturan ssh, seharusnya tidak ada kegagalan otentikasi untuk pengguna yang berwenang.

Atau jika Anda bisa, ikuti saran WerkkreWs dan konfigurasikan firewall di depan mesin untuk mengakhiri koneksi vpn, maka hanya izinkan daemon ssh pada server jauh untuk menerima koneksi yang datang melintasi vpn itu.

Atau jika firewall Anda tidak dapat menghentikan koneksi vpn, Anda mungkin dapat meneruskan paket GRE atau IPSEC ke mesin linux Anda, dan menghentikannya di sana.

Dave Cheney
sumber
Ini tidak ada hubungannya dengan perhatian pada port yang terbuka dan lebih banyak hubungannya dengan tidak ingin memandu pengguna melalui proses membuka port. Sayangnya saya tidak memiliki akses ke router ini.
baudtack
Saya mengerti dan bersimpati dengan rasa sakit Anda.
Dave Cheney
2
Langkah pertama dalam solusi ini adalah mengkonfigurasi sshd untuk dijalankan pada port non-standar. Ada banyak bot yang mengetuk port 22 di luar sana. Pilih port yang tidak muncul di / etc / services dan "nmap HOST" tidak menemukannya.
hayalci
4

Kedengarannya seperti Anda mencari yang mengetuk

Anda dapat menginstalnya di server linux itu sendiri, dengan iptables sehingga semacam firewall tingkat 2. Bahkan dengan port 22 terbuka di firewall frontend, itu tidak akan terbuka di server, sehingga portscan tidak akan melihat port terbuka. Kemudian ketika Anda mengirim "ketukan rahasia", tiba-tiba Anda memiliki jalur terbuka ke port 22.

Apakah itu masuk akal?

Brent
sumber
Kecuali saya salah, saya harus meneruskan semua port ketukan juga kan? Bukankah itu jelas ketika seseorang memindai router? Mereka tidak akan tahu urutannya, tetapi menurunkan kombinasi yang mungkin menjadi 6, jika saya ingat bagaimana saya melakukan permutasi dengan benar, memberi mereka permulaan yang besar. Atau apakah saya memikirkan hal yang salah ini?
baudtack
Sementara port yang digunakan untuk mengetuk perlu diteruskan, tuan rumah yang menjalankan knockd sebenarnya tidak perlu membalas sumber ketukan dengan cara apa pun.
Zoredache
benar - port yang terbuka pada firewall pertama tidak akan terbuka pada tanggal 2, sehingga untuk pemindai mereka semua tampak tertutup. Tidak ada cara untuk membedakan port knocking dari non-knocking.
Brent
3

Singkatnya, semua jawaban:

gunakan ssh, tetapi membuatnya lebih tidak jelas dan aman.

Untuk keamanan:

  • Pastikan login root tidak diizinkan (PermitRootLogin no).
  • Batasi pengguna, yang dapat masuk dengan opsi config AllowUsers atau AllowGroups.
  • Pastikan hanya menggunakan 2 versi ssh protokol (Protokol 2).
  • Dianjurkan untuk hanya menggunakan kunci otentikasi, tetapi kata sandi lebih nyaman, ketika ada kebutuhan untuk terhubung ke server dari hari libur di mana Anda tidak memiliki akses ke kunci otentikasi.

Untuk ketidakjelasan:

  • Ubah ssh port ke beberapa port tinggi acak yang akan Anda ingat, seperti 20486. Ini akan menghilangkan sebagian besar bruteforcers otomatis, tetapi ia tidak akan menyembunyikannya dari semua port scan di server.
  • Sembunyikan kemampuan untuk terhubung ke port. Salah satu caranya adalah port knocking yang disebutkan dalam jawaban lain, tetapi Anda memerlukan perangkat lunak khusus, yang tidak dapat diakses di mana-mana. Opsi sederhana lainnya adalah menggunakan iptables firewall dengan modul terbaru untuk membuat aturan, yang akan memungkinkan untuk terhubung hanya pada percobaan kedua atau ketiga. Jadi Anda tahu Anda harus mencoba beberapa kali untuk terhubung dengan sukses, tetapi sederhana semua pemindaian port tidak akan mengungkapkan port ssh. Aturan akan serupa dengan yang:


iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW -m recent --set
iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW  -m recent --rcheck --seconds 60 --hitcount 2 -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 20486 -j DROP

Kazimieras Aliulis
sumber
+1 ringkasan bagus, dan ide menarik tentang trik beberapa upaya.
David Z
2

Tugas yang dijadwalkan skrip untuk terowongan ssh terbalik Anda, atau buka port firewall.

Jika Anda khawatir SSH terbuka untuk dunia, Anda dapat menjadwalkan tugas saat periode pemeliharaan Anda dengan skrip iptables dan hanya memiliki port yang tersedia saat itu.

sclarson
sumber
1
Sepakat. Kecuali Anda memiliki cara masuk ke VPN, satu-satunya solusi nyata adalah membuka porta. Jika Anda gugup, Anda selalu dapat menggunakan port non-standar.
WerkkreW
2

Lihatlah port-knocking untuk membuka terowongan SSH Anda.

Juga, jalankan denyhosts untuk mengunci orang setelah terlalu banyak permintaan buruk.

Kedua paket tersedia di repositori Ubuntu, Fedora, dan RHEL standar.

Tim Howland
sumber
1

Silakan buka port, buat saja porta di luar kisaran normal. Saya akan membuatnya beberapa port acak lebih dari 1024. Dengan cara itu para peretas tidak akan mungkin bahkan mencarinya.

Brad Gilbert
sumber
0

Tidak ada alasan untuk tidak menyodok lubang di firewall jika Anda memerlukan akses ke mesin dari jarak jauh, namun jarang.

Namun, jika Anda tetap tidak mau (atau tidak bisa) membuka port, skrip shell sederhana dapat memonitor beberapa sumber daya Internet yang tersedia yang Anda kontrol dan dengarkan perintah untuk meluncurkan terowongan terbalik. Akun email, saluran IRC, dan halaman web langsung terlintas dalam pikiran sebagai perangkat pemicu.

Tentu saja, ini jauh lebih rapuh dan kurang aman daripada hanya membuka porta. Tapi saya yakin Anda punya alasan.

Brian
sumber