Aman menggunakan nomor port tinggi? (ulang: mengaburkan layanan web)

9

Saya memiliki jaringan rumah kecil dan saya mencoba menyeimbangkan kebutuhan akan keamanan dengan kenyamanan. Cara teraman untuk mengamankan server web internal adalah dengan hanya terhubung menggunakan VPN, tetapi ini tampaknya terlalu sulit untuk melindungi antarmuka web jarak jauh DVR (misalnya).

Sebagai kompromi, apakah lebih baik menggunakan nomor port yang sangat besar? (mis. lima digit hingga 65531)

Saya telah membaca bahwa port scanner biasanya hanya memindai 10.000 port pertama sehingga menggunakan nomor port yang sangat tinggi sedikit lebih aman.

Apakah ini benar?

Adakah cara yang lebih baik untuk melindungi server web? (mis. gui web untuk aplikasi)

SofaKng
sumber
Tidak itu tidak benar. Mesin CPU multi-core (bahkan desktop) modern dengan akses broadband dapat memindai semua port 65535 dalam hitungan detik. Dan bahkan jika penyerang memutuskan untuk memberi jarak dua detik untuk menggagalkan gerbang DoS, siapa yang peduli, Anda meninggalkan sistem Anda lebih dari satu hari, kan? Pepatah lama adalah, seperti yang orang lain katakan di bawah ini, bahwa "keamanan melalui ketidakjelasan" pada dasarnya tidak berguna di dunia digital.
msanford

Jawaban:

9

Saya telah membaca bahwa port scanner biasanya hanya memindai 10.000 port pertama sehingga menggunakan nomor port yang sangat tinggi sedikit lebih aman.

Banyak orang percaya ini. Bukan saya.

Mungkin sedikit lebih aman, tetapi tidak banyak. Port bernomor rendah lebih umum, sehingga beberapa pemindai akan melihat lebih dulu.

Jika saya seorang cracker, saya akan memindai port tinggi terlebih dahulu, hanya untuk menangkap orang-orang yang mengandalkan metode ini untuk keamanan. Orang-orang yang mengandalkan keamanan-melalui-ketidakjelasan mungkin memiliki pemahaman yang buruk tentang keamanan, dan lebih cenderung lupa untuk menggunakan metode keamanan lainnya. Karena itu, layanan tersebut mungkin lebih rentan, dan lebih mudah retak.

Beberapa pemindai mengeksploitasi kepercayaan ini, dan mulai dari atas dan merobohkan daftar. Pemindaian lain akan memilih port acak di seluruh rentang, sehingga semua port memiliki peluang yang sama untuk dipindai.

Silakan dan uji sendiri ini menggunakan NMAP . Jalankan pemindaian nmap terhadap port 1-10.000 dan cari server HTTP, dan bandingkan dengan pemindaian yang memindai semua port 1-65, xxx. Anda akan melihat bahwa perbedaannya biasanya 3-10 menit. Jika saya melakukan pemindaian terperinci menggunakan sesuatu seperti Nessus, perbedaannya kadang-kadang 20-60 menit.

Kerupuk yang baik adalah kerupuk pasien. Mereka akan menunggu.

Stefan Lasiewski
sumber
1
Dengan asumsi bahwa semua langkah-langkah keamanan relevan lainnya diterapkan, apakah akan lebih baik atau lebih buruk untuk mengaburkan nomor port? Pemikiran saya adalah bahwa akan sedikit lebih baik jika server tidak secara khusus ditargetkan.
wag2639
2
+1 "Seorang cracker yang baik adalah cracker yang sabar. Mereka akan menunggu."
msanford
@ wag2639 Anda tidak benar-benar melakukan apa pun dengan mengubah nomor port layanan tetapi membuat skrip-kiddie menemukan skrip yang sedikit lebih baik. Memanggil-perang satu blok IP dan port JUGA dapat memindai setiap port tunggal adalah sepele.
msanford
Jika seorang hacker mengejar target tertentu, maka mereka mungkin dapat menunggu 20 - 60 menit memindai nomor port tinggi. Namun jika mereka mencoba memindai ratusan, atau ribuan alamat IP untuk menemukan sistem yang rentan, maka mereka tidak akan memindai port yang tinggi. Mereka juga perlu tahu ada sistem di sana, sebelum mereka dapat mulai menargetkannya. Jika firewall melakukan tugasnya, maka sistem pada dasarnya tidak terlihat sampai mereka menemukan port yang terbuka.
user1751825
3

Menggunakan nomor port ganjil sama sekali bukan keamanan, kecuali jika Anda menggunakan fakta bahwa itu memungkinkan Anda untuk menjalankan aplikasi Anda sebagai pengguna non-root.

Hal semacam ini dapat dianggap sebagai keamanan oleh ketidakjelasan tetapi sebenarnya bukan keamanan.

Antoine Benkemoun
sumber
Apakah ada alternatif untuk menggunakan VPN full-blown? Mungkin semacam proxy web terbalik yang memiliki perlindungan login / kata sandi ekstra? (cumi-cumi tidak melakukan ini)
SofaKng
@sofakng: Anda mungkin tertarik dengan bungkus SSL seperti Stunnel: stunnel.org
Maxwell
3

Anda juga dapat menggunakan ssh tunnel jika Anda menggunakan Linux di kedua ujungnya:

ssh -f -N -L 9090:localhost:9090 user@remote-host

Sebagai contoh, itulah yang saya gunakan untuk meneruskan port 9090 pada host jarak jauh ke port lokal 9090 cherokee-adminsaya, dan saya menggunakan pengaturan serupa untuk GUI web lainnya. Anda dapat melindungi aplikasi dengan cara ini dengan menentukan konfigurasi aplikasi yang dijalankan di localhost, yaitu pada 127.0.0.1. Dengan cara ini mereka tidak dapat dijangkau dari luar, tetapi Anda dapat meneruskannya ssh. Periksa man sshopsi lainnya menggunakan penerusan port (termasuk X, yang mungkin menyelesaikan masalah Anda dengan cara lain sama sekali.)

Ini mungkin cara yang cocok untuk mencapai tujuan Anda tanpa menginstal / mengkonfigurasi perangkat lunak tambahan, tergantung pada pengaturan Anda.

Sam Halicke
sumber
1

Jika firewall Anda mengizinkannya, Anda dapat membuat otentikasi terjadi terlebih dahulu di tingkat firewall, jika kompleksitas kata sandi Anda cukup bagus, yang seharusnya menegakkan keamanan layanan yang diekspos. Anda juga dapat menggunakan penerowongan SSL menggunakan misalnya stunnel dan mutual auth.

Mempertimbangkan fakta bahwa menggunakan nomor port yang lebih tinggi lebih aman, dengan cara tertentu, mungkin mengacu pada bot yang memindai IP Anda dan mencoba beberapa eksploitasi, tetapi jika seseorang benar-benar ingin menerobos masuk, menggunakan nomor port yang lebih tinggi tidak akan memberikan peningkatan keamanan.

Maxwell
sumber
Saya menggunakan pfsense dan beberapa layanan web saya memiliki dukungan SSL (HTTPS) bawaan. Apakah masih lebih baik menggunakan stunnel? Apakah menggunakan stunnel tingkat "otentikasi di firewall"?
SofaNg
1
Bagaimana Anda melakukan "otentikasi di firewall"?
wag2639
Saya tidak tahu apakah pfsense memiliki fungsionalitas itu tetapi, pada router Junipers Anda dapat menggunakan pengguna lokal (bahkan RADIUS) untuk memberikan akses ke lalu lintas yang diterjemahkan HTTP. Mengenai Stunnel Anda dapat menggunakan otentikasi bersama dengan sertifikat, stunnel akan mengenkapsulasi lalu lintas HTTP dengan SSL dan menangani otentikasi.
Maxwell