Penggunaan port fana untuk server

4

Secara umum port fana digunakan oleh klien ketika membuat koneksi dengan server.

Sebagai contoh:

  1. Server mendengarkan pada port 80
  2. Seorang klien (browser, klien FTP, klien bittorent) mengirim permintaan ke server termasuk port sesaat yang ditugaskan oleh OS
  3. Server merespons menggunakan port ephemeral yang disediakan sebagai port tujuan

Dan sekarang pertanyaannya:

Saya menulis aplikasi server yang ingin saya mulai pada port bebas acak setiap kali dimulai (Untuk menjaga pertanyaan ini saya tidak akan menjelaskan mengapa saya ingin perilaku ini). Sekarang pertanyaan saya adalah apa implikasinya jika saya menggunakan salah satu porta fana untuk didengarkan oleh server. Apakah ada kelemahan (juga dalam hal keamanan) dalam melakukan ini?

Apakah Anda mungkin tahu contoh server yang juga menggunakan porta fana dalam praktik?

Salah satu keprihatinan saya juga pernyataan dari The TCP / IP Guide: Referensi Protokol Internet Lengkap, Ilustrasi (halaman 705) :

Sama seperti nomor port yang terkenal dan terdaftar digunakan untuk proses server, nomor port ephemeral hanya untuk proses klien.

PrimosK
sumber
Jadi ... agak seperti bitorrent?
Journeyman Geek
1
Sebenarnya FTP yang melakukannya terlebih dahulu. Itu server terhubung kembali ke klien pada port yang diberikan klien untuk transfer data. Ini tidak bekerja dengan proxy dan NAT sehingga mode pasif diimplementasikan yang menggunakan koneksi yang sama dengan yang digunakan klien untuk mentransfer data.
Dan D.
Sebenarnya (jika saya mengerti benar) klien bittorrent dan FTP mendengarkan pada port ephemeral tetapi saya ingin server mendengarkan pada port ephemeral yang disediakan oleh OS selama server aktif. Jadi pertanyaan saya adalah apakah aman untuk melakukan ini karena pelabuhan sementara umumnya digunakan oleh klien untuk protokol transportasi berumur pendek.
PrimosK

Jawaban:

1

Sebagai bantuan, halaman Wikipedia di Ephemeral Port memberikan informasi lebih lanjut tentang nomor port yang sebenarnya digunakan oleh OS.

Dari yang satu ini dapat segera melihat ada banyak port yang tersedia yang biasanya tidak digunakan oleh server (proses) dan tidak dalam rentang sesaat.

Dengan demikian solusi yang jelas adalah memilih secara acak dari salah satu port lain. Ini menghindari perlu membuat asumsi tentang bagaimana OS mengalokasikan dari rentang sesaat: apakah ia memeriksa penggunaan aktual atau hanya alokasi untuk menghindari tabrakan untuk alokasi baru ?.

Pertanyaan itu mungkin tampak kecil, tetapi dengan port klien prosesnya biasanya tidak langsung menggunakan nomor port (itu dialokasikan ketika proses membuka koneksi, hanya dengan melihat properti soket dapat proses menemukan nomor: dan biasanya ini adalah sama sekali tidak perlu). Namun untuk menerima koneksi masuk, soket harus terikat ke port tertentu, sehingga proses server bertanggung jawab untuk mendapatkan nomor port.

Richard
sumber
1

Jika Anda mendengarkan pada porta sesaat Anda mungkin berisiko TCP self connect .

Tom Seddon
sumber