Mengapa buruk memiliki port terbuka?

36

Inilah sesuatu yang selalu membingungkan saya. Mengapa buruk memiliki port terbuka di komputer Anda? Dengan asumsi Anda tidak memiliki virus di komputer Anda atau program lain mendengarkan port yang sebenarnya dapat melakukan sesuatu mengapa itu penting jika port terbuka? Jika beberapa orang jahat mulai mengirim paket ke port, tetapi tidak ada yang bisa menerima data dan melakukan sesuatu dengannya mengapa itu penting? Komputer tidak hanya secara sembarangan mengeksekusi data apa pun yang diterimanya. Saya mengerti membanjiri komputer dengan paket dapat menyebabkannya crash karena tidak dapat menangani jumlah data, tetapi saya hanya mempertimbangkan masalah keamanan yang benar-benar mengubah file pada komputer.

Memperbarui

Terima kasih atas balasannya sejauh ini. Saya mengerti sekarang, bahwa port terbuka sebenarnya berarti ada program yang dapat dieksploitasi mendengarkan pada port itu. Tetapi mengapa begitu sulit untuk menulis perangkat lunak yang tidak dapat dieksploitasi? Untuk melakukan kerusakan nyata pada komputer tidak akan ada program yang harus mengizinkan satu atau lebih file diunggah, dan kemudian salah satu dari file-file itu perlu dieksekusi. Sepertinya itu akan sangat sulit untuk dibiarkan tanpa sengaja.

aireq
sumber

Jawaban:

36

Port tidak terbuka jika ada sesuatu yang tidak mendengarkan koneksi di sana.

Alasan mengapa itu adalah bentuk yang buruk untuk memiliki semua port terbuka ke mana-mana adalah karena itu mengekspos layanan yang mendengarkan pada port-port tersebut untuk dieksploitasi. Itulah sebabnya firewall ada, untuk membatasi apa yang diizinkan untuk terhubung ke port tertentu, untuk mengurangi area permukaan yang terpapar oleh layanan.


EDIT

Untuk menjawab pertanyaan Anda tentang mengapa orang tidak bisa hanya menulis perangkat lunak yang tidak dapat dieksploitasi:

Ini cukup mudah untuk program sederhana, tetapi banyak program yang membutuhkan soket sangat rumit. Karena itu, mereka memiliki banyak komponen, yang sebagian besar di antaranya bahkan tidak ditulis oleh pengembang (termasuk perpustakaan). Anda tidak dapat mengandalkan orang lain untuk menjaga keamanan jaringan Anda ketika ada metode pengerasan yang dapat Anda gunakan sendiri, seperti firewall.

Eksekusi kode arbitrer / jarak jauh adalah risiko besar, seperti yang telah Anda tunjukkan. Sayangnya buffer overflow dan kelemahan keamanan lainnya yang memungkinkannya biasa terjadi. Lihatlah pembaruan keamanan Microsoft dan saya berani bertaruh itu akan menambal eksekusi kode jarak jauh atau peningkatan hak istimewa, dan MS adalah perusahaan besar dengan ratusan pengembang dan miliaran dolar.

MDMarra
sumber
4
Hanya menambahkan: Jika Anda misalnya tahu bahwa layanan memiliki bug yang dapat digunakan untuk menyusup ke kode atau apa pun dan Anda benar-benar melihat bahwa layanan ini berjalan, ini adalah undangan terbuka;)
Felix
9

Mengenai pembaruan yang Anda tulis:

Terima kasih atas balasannya sejauh ini. Saya mengerti sekarang, bahwa port terbuka sebenarnya berarti ada program yang dapat dieksploitasi mendengarkan pada port itu. Tetapi mengapa begitu sulit untuk menulis perangkat lunak yang tidak dapat dieksploitasi? Untuk melakukan kerusakan nyata pada komputer tidak akan ada program yang harus mengizinkan satu atau lebih file diunggah, dan kemudian salah satu dari file-file itu perlu dieksekusi. Sepertinya itu akan sangat sulit untuk dibiarkan tanpa sengaja.

Ini sangat sulit untuk menulis perangkat lunak yang tidak dapat dimanfaatkan!

Saya telah membaca buku Building Secure Software dan satu hal yang dibahas adalah mengeksploitasi stack overflows. Ada dua fakta yang sangat menakutkan di sana:

  • Agar suatu program memiliki bug stack overflow yang dapat dieksploitasi sangat mudah dilakukan, terutama ketika program ditulis dalam C. Dalam bahasa pemrograman C, banyak fungsi tidak aman secara default dan programmer perlu mengetahui untuk menghindari fungsi yang rentan. , atau harus mengambil tindakan khusus agar aman.
  • Eksploitasi yang perlu digunakan oleh peretas adalah singkat - sangat singkat. Itu kurang dari setengah halaman bahasa assembly, yang diterjemahkan menjadi 100 atau lebih (tebak) byte kode mesin. Kode exploit ini cukup untuk memberikan shell hacker (prompt perintah) akses ke mesin Anda. Tidak perlu mengunggah dan mengeksekusi file besar - hanya sepotong kecil kode yang dapat dimasukkan ke tengah data yang sah.

Jadi, jika seorang hacker dapat menemukan sebuah program yang (a) memiliki bug stack overflow yang (b) dapat dieksploitasi melalui jaringan dan (c) memiliki beberapa cadangan 100 byte dalam buffer-nya, maka komputer Anda akan dibajak. Untungnya pengetahuan tentang bug overflow adalah pengetahuan yang cukup umum sekarang, tetapi mereka masih muncul. 5 tahun yang lalu dan lebih lama ini adalah masalah yang jauh lebih sering.

Kembali ke pertanyaan awal Anda, Anda harus menghindari port terbuka untuk menghindari kecelakaan dengan bug yang dapat dieksploitasi dalam suatu program. Anda sekarang memiliki alasan kedua: shell jauh yang kemudian akan digunakan oleh hacker adalah port terbuka lainnya. Jika Anda memiliki firewall yang memblokir semuanya kecuali yang telah Anda izinkan secara khusus, Anda juga akan memblokir remote shell tersebut (walaupun seorang hacker masih dapat melakukan hal-hal buruk lainnya ke komputer Anda, jadi jangan puas!)

Richard Downer
sumber
2
IIRC, Donald Knuth (?) Baru saja selesai secara matematis membuktikan bahwa salah satu program yang lebih kecil yang ia tulis bebas bug, dan butuh waktu bertahun-tahun
RCIX
7
  • Buka port: Ketika ada yang bertanya, komputer menjawab bahwa ada layanan mendengarkan pada port ini. Ini berarti apa pun yang datang ke port ini akan diproses oleh program (layanan) yang berjalan di komputer itu.
  • Port tertutup: Ketika ada yang bertanya, komputer menjawab bahwa tidak ada layanan yang mendengarkan port itu. Akser akan tahu ada komputer yang merespons di alamat.
  • Stealth port: Ketika ada yang bertanya, mereka tidak mendapat balasan. Intinya adalah menyembunyikan jika ada komputer di alamat sama sekali. Ini mungkin tidak terlalu efektif, karena joschi mengomentari komentar.

Jika Anda memiliki port terbuka, Anda aman asalkan program memproses barang yang masuk tidak memiliki exploit yang tersedia. Tetapi eksploit ditemukan sepanjang waktu, dan ada baiknya mengetahui bahwa ada banyak pemindaian port berkeliling internet, mencari target.

Port yang tertutup masih merespons akser, sehingga kemungkinan penyerang tahu untuk melanjutkan memeriksa port lain. Kemudian lagi, ini adalah bagaimana internet dikhususkan untuk bekerja. Sementara port siluman berusaha untuk tidak memberikan penyerang potensial informasi, secara teori mereka melanggar spesifikasi.

Dari sudut pandang keamanan, setiap port terbuka adalah lubang yang sangat besar, karena kode digunakan untuk memproses data asing. Apa yang dilakukan firewall (atau router NAT) adalah memastikan tidak ada lalu lintas masuk ke komputer Anda, bahkan jika sistem memiliki beberapa port terbuka. Dengan cara ini, mereka secara efektif menutup semua port.

Ilari Kajaste
sumber
1
Definisi Anda tentang "pelabuhan tersembunyi" adalah angan-angan. Sebenarnya seorang penyerang tahu bahwa ada komputer jika dia tidak menerima jawaban. Jika tidak ada komputer pada alamat IP tertentu, router sebelumnya akan mengirim pesan tentang itu. Dengan "port siluman" itu tidak terjadi ...
joschi
@Joschi: Ya, itu konsep yang pernah saya lihat di internet, jadi saya pikir itu bagus untuk mendefinisikannya. Anda membuat poin yang bagus. Saya mengedit jawaban untuk mencerminkan komentar Anda. Setidaknya itu membuat target IP terlihat seperti di belakang router NAT, saya kira. Saya sendiri tidak pernah menjadi penggemar konsep ini: Jika Anda memiliki port terbuka, Anda harus memastikan mereka menjalankan layanan yang aman. Dan jika Anda tidak memiliki port terbuka, tidak ada masalah untuk memberitahu net bahwa Anda ada. Stealth baunya seperti sensasi keamanan bagiku.
Ilari Kajaste
joschi: tidak semua router melakukan itu. banyak router hanya meneruskan secara membabi buta ke alamat IP di mana tidak ada sistem. koneksi mencoba waktu habis hanya karena klien bosan mencoba melakukan jabat tangan tiga arah.
benc
6

Sebenarnya sejauh yang saya tahu, port terbuka berarti bahwa suatu program mendengarkannya. Jadi ada beberapa jenis layanan yang memproses data.

Felix
sumber
3

Dengan asumsi Anda tidak memiliki virus di komputer Anda atau program lain mendengarkan port yang sebenarnya dapat melakukan sesuatu mengapa itu penting jika port terbuka? Jika beberapa orang jahat mulai mengirim paket ke port, tetapi tidak ada yang bisa menerima data dan melakukan sesuatu dengannya mengapa itu penting?

Asumsi adalah ibu dari semua usaha :)

agak aman daripada menyesal ... inilah bacaan yang bagus untuk Anda di makeuseof.com:

Teknologi Dijelaskan: Buka Router Port & Implikasinya Keamanan


sumber
bacaan pendek yang bagus.
DaveParillo
1

Saya bukan ekspor keamanan, tapi saya melakukan sedikit riset ... Port "terbuka" adalah port yang diatur untuk menerima koneksi TCP yang masuk.

Jika aplikasi Anda hanya mendengarkan pada port 9, 21, dan 80, dan firewall Anda memblokir akses ke ketiga port tersebut, secara teknis Anda tidak memiliki port yang terbuka. TKI, port 25, misalnya, tidak terbuka karena tidak ada yang mendengarkannya.

Untuk menjawab pertanyaan Anda: Alasan mengapa buruk untuk memiliki port terbuka di komputer Anda adalah karena port ini dapat dengan mudah ditemukan, dan sekali ditemukan port ini sekarang rentan terhadap kerentanan aplikasi mendengarkan.

Dgn kaki telanjang
sumber
Definisi Anda tentang apa port itu, tidak benar. Port tidak terbatas pada TCP dengan cara apa pun.
MDMarra
1
Saya kira orang tidak boleh percaya SEMUA yang mereka baca di 'internet :) 5 dari 6 hasil Google teratas secara eksplisit menyatakan "TCP" dalam definisi mereka. google.com/…
Shoeless
Tidak, kata mereka TCP / IP. Perbedaan besar. TCP / IP termasuk UDP
MDMarra
1
ICMP tidak menggunakan port, itu adalah protokol layer 3 yang termasuk dalam paket protokol IP.
MDMarra
1
Satu-satunya alasan yang saya katakan adalah bahwa ini sangat penting sehubungan dengan firewall (yang secara tidak langsung mengenai hal ini). TCP stateful, dan dengan demikian koneksi diingat, di mana UDP tidak. Sering kali ini berarti port harus terbuka untuk mengembalikan lalu lintas UDP yang dimulai secara internal di mana hal ini tidak perlu terjadi untuk koneksi TCP yang dibuat secara internal.
MDMarra
0

Untuk alasan yang sama ketika Anda menutup dan mengunci pintu dan jendela di rumah.

Steven A. Lowe
sumber
3
saya mengunci pintu & jendela karena di luar dingin. apa hubungannya pertanyaan ini dengan isolasi?
Quack quixote
2
Apakah pintu dan jendela Anda tidak terisolasi jika hanya ditutup? Apakah baut ekstra benar-benar memberikan isolasi lebih banyak.
Dentrasi
Poin yang bagus, tetapi perlu dicatat bahwa tidak semua orang mengunci pintu dan jendela mereka di rumah. Ini bisa jadi "Tidak semua orang ingin melindungi properti mereka" atau "Tidak semua orang suka hidup dalam budaya ketakutan", tergantung pada sudut pandang Anda.
Ilari Kajaste
-2

Anggap saja port terbuka seperti jendela terbuka dan pintu terbuka, tetapi ketika jendela Anda terbuka, perampok atau tikus dan laba-laba bisa masuk. Tolong beritahu saya jika saya bodoh atau bodoh. Diedit tidak ada asinine. Port terbuka seperti jendela terbuka tetapi di internet ada port terbuka saya kira juga port tertutup adalah windows yang tertutup tanpa itu kita tidak dapat terhubung atau browsing saya kira seperti HTTP dan SSH atau FTP tanpa itu kita tidak dapat terhubung karena itu klien itu hanya koneksi TCP

Saya bukan ahli keamanan

pengguna210203
sumber
Port terbuka diperlukan untuk menawarkan layanan. Hanya satu dari sekian banyak contoh yang mungkin: Gmail menggunakan port terbuka (443 untuk situs web mereka menggunakan HTTPS). Tetapi ia meminta Anda untuk masuk sebelum menunjukkan sesuatu.
Arjan