GNU/Linux >> Belajar Linux >  >> Ubuntu

Batas Waktu Koneksi Untuk Server Ssh?

Saya mencoba mengatur openssh-server, tetapi saya mengalami beberapa masalah saat menyambungkan. Saya mengubah port ke sesuatu yang tidak standar (57757) dan kemudian mengatur router saya untuk meneruskan ke port itu. Di LAN saya, saya dapat melakukan ssh ke mesin saya dengan baik menggunakan port 57757, tetapi tidak dapat melakukannya di WAN.

Jika saya berada di luar LAN, dan saya mencoba mengakses mesin saya dengan port yang salah, saya segera mendapatkan pesan "koneksi ditolak". Namun, dengan port yang benar itu hanya hang dan kemudian timeout.

Apa yang bisa saya coba untuk men-debug masalah? Saya mencoba traceroute, tetapi tidak memberi tahu saya sesuatu yang berguna.

EDIT:Saya menyadari bahwa masalah saya adalah router saya tidak mendukung mengaksesnya dengan WAN IP secara internal. Saya ssh keluar ke server lain dan masuk kembali dan berfungsi dengan baik.

Jawaban yang Diterima:

Biasanya ini berarti Anda telah meneruskan port ke alamat IP yang salah di LAN.

Router NAT Anda menerima lalu lintas masuk pada port 57757, dan mengirimkannya ke alamat IP dan port tertentu di LAN.

Secara default, Ubuntu tidak memfilter upaya koneksi masuk dengan firewall. Jadi, kecuali Anda telah mengubah pengaturan firewall di Ubuntu, upaya untuk membuka koneksi ke port TCP apa pun, 1 hingga 65535, akan:

  • terima koneksi, jika port terbuka
  • tolak upaya koneksi, jika port ditutup

Jika port difilter oleh firewall, maka Anda akan mendapatkan apa yang Anda lihat–tidak ada respons terhadap upaya koneksi. Tapi:

  • kecuali jika Anda telah mengubah setelan firewall (mis., ufw , iptables ), tidak ada port yang difilter, dan
  • Bagaimanapun, Anda dapat terhubung ke port 22 di LAN, jadi port tersebut terbuka.

Saat Anda meneruskan port ke tidak ada mesin dengan router NAT, ia mengirimkan lalu lintas masuk pada port itu ke mesin yang tidak ada, yang mengatakan bahwa ia mengirimkannya ke lubang hitam; itu secara efektif dijatuhkan.

Itu menyebabkan persis situasi yang telah Anda gambarkan. Jadi, kemungkinan besar Anda dapat memperbaikinya dengan memastikan port diteruskan ke alamat IP yang benar di LAN.

Jika ternyata bukan itu masalahnya…

…maka Anda harus melakukan beberapa pemecahan masalah.

  1. Apakah port yang ditentukan untuk sisi LAN sudah benar? Artinya, dengan asumsi Anda belum mengubah konfigurasi server SSH, apakah port 57757 di sisi WAN disetel untuk meneruskan ke port 22 di server OpenSSH? (Anda mungkin ingin memeriksa ulang ini.)

  2. Mungkin ada masalah dengan port tertentu yang Anda pilih (57757). Coba yang lain dan lihat apakah itu bekerja lebih baik.

    (Jika tidak, dan Anda melanjutkan dengan petunjuk ini, ubah kembali atau ganti “57757” di bawah dengan nomor baru.)

  3. Coba mulai ulang server OpenSSH. Itu mungkin membantu jika ada masalah jaringan. Jika itu tidak membantu, coba mulai ulang router dan modem kabel/DSL/ISDN juga.

    Jika karena alasan tertentu Anda tidak dapat memulai ulang ketiga perangkat, saya sarankan untuk memulai ulang apa pun yang Anda bisa. Jika Anda tidak dapat memulai ulang layanan OpenSSH, setidaknya Anda dapat memulai ulang layanan dan (lebih mungkin untuk memperbaikinya) turunkan antarmuka dan buka kembali.

    Untuk memulai ulang server OpenSSH:

    sudo restart ssh
    

    Untuk menurunkan antarmuka jaringan, pertama-tama cari tahu antarmuka apa yang digunakan:

    ifconfig
    

    Biasanya, untuk mesin dengan satu kartu Ethernet dan/atau satu kartu nirkabel, Ethernet adalah eth0 dan nirkabelnya adalah wlan0 .

    Jika koneksi Ethernet kabel yang ingin Anda hapus dan mulai ulang, jalankan:

    sudo ifdown eth0
    

    Kemudian jalankan:

    sudo ifup eth0
    

    Atau, Anda dapat menjalankan:

    sudo ifconfig eth0 down
    

    Diikuti oleh:

    sudo ifconfig eth0 up
    

    Jika mesin menggunakan NetworkManager untuk mengelola antarmuka tempat server OpenSSH berjalan, saya tetap menyarankan untuk mencoba cara di atas, tetapi Anda juga dapat mencoba memutuskan dan menyambungkan kembali di NetworkManager.

    Untuk koneksi Ethernet, coba juga cabut kabel dan sambungkan kembali. Untuk koneksi nirkabel, coba matikan dengan sakelar perangkat keras (jika ada), dan hidupkan kembali.

    Sesuatu yang aneh sedang terjadi di sini dan semua ini tidak memakan waktu lama–sebaiknya teliti sebelum melakukan langkah pemecahan masalah yang lebih melelahkan.

  4. Bagaimana Anda mencoba mengaksesnya dari sisi WAN? Jika Anda menggunakan mesin di LAN untuk melakukan ini (hanya menghubungkan dari LAN ke IP WAN router Anda), ini hanya didukung untuk beberapa router. Bagaimanapun, tugas router adalah merutekan lalu lintas antara sisi WAN dan LAN, bukan mengarahkan lalu lintas dari satu sisi ke sisi itu sendiri. Dukungan untuk menghubungkan ke port yang diteruskan pada IP WAN dari dalam LAN sebenarnya merupakan pengecualian daripada aturan, meskipun banyak router rumah/kantor memiliki fitur ini.

    Jadi, jika Anda tidak menguji port forward dari host di sisi WAN, Anda harus melakukannya. Pilihan Anda untuk ini adalah:

    • Hubungkan diri Anda dari sisi WAN. Ini berfungsi jika Anda memiliki akses ke mesin di sana, misalnya, akses SSH ke mesin jarak jauh di sekolah, kantor, rumah teman, atau sejenisnya.

    • Hubungkan mesin uji antara router dan apa pun yang menyediakan nya Koneksi internet. Jika Anda memiliki modem kabel/DSL/ISDN dengan port Ethernet dan router Anda terhubung ke port tersebut, Anda dapat menghubungkan switch ke modem dan menghubungkan router ke switch. Hubungkan komputer ke sakelar. Pertama lihat apakah mesin itu baru saja mendapatkan akses Internet-hari ini, banyak ISP menyediakan dua atau lebih alamat IP terpisah. Jika tidak , buka halaman penyiapan router Anda dan periksa IP WAN dan subnet mask WAN, lalu tetapkan alamat IP secara statis ke mesin yang terhubung dengan sakelar yang berada dalam subnet yang sama.

      Metode ini memiliki beberapa kelemahan. Ini menyakitkan! Selain itu, secara teoritis mungkin bagi ISP untuk mengonfigurasi jaringan mereka secara tidak benar sehingga mesin uji yang terhubung ke sakelar dapat mengakses Internet. (Kecuali jika ISP Anda berniat untuk mengizinkan Anda terhubung dengan lebih dari satu IP WAN dan Anda kebetulan telah memilih IP WAN untuk mesin uji yang telah ditetapkan oleh ISP Anda, lalu lintas antara itu dan host WAN yang sebenarnya harus diblokir/dijatuhkan oleh ISP. Tetapi beberapa ISP memiliki praktik yang aneh, jadi siapa yang tahu?) Jika ini terjadi, kemungkinan besar tidak akan menyebabkan masalah serius bagi siapa pun (dan bahkan jika itu terjadi, Anda hanya menghubungkannya hingga beberapa menit). Namun, ini berpotensi dilihat sebagai upaya untuk mendapatkan akses tambahan di luar batas langganan Anda, dan–yang lebih penting–jika pengguna lain memiliki IP yang sama, itu dapat mengganggu koneksi mereka. Oleh karena itu, jika Anda ingin mencoba metode ini , jangan mencoba mengakses Internet dari mesin uji, segera hentikan jika Anda menemukan mesin uji dapat mengakses Internet, dan jangan mencoba sama sekali jika dilarang atau dilarang oleh ISP Anda. (Dan jangan gunakan ini jika sisi WAN router Anda adalah LAN kantor, tanpa berkonsultasi dengan administrator jaringan Anda terlebih dahulu. Itu bukan ISP dan tidak ada asumsi bahwa sumber daya disediakan untuk mencegah akses yang tidak diinginkan.)

      Ada variasi pada teknik ini yang terkadang lebih tepat. Router Anda mungkin mendapatkan informasi koneksinya–alamat IP, subnet mask, alamat IP gateway (router) pada WAN yang itu digunakan ketika tidak tahu ke mana harus mengirim sesuatu, dan informasi tentang server DNS–dari ISP Anda, melalui DHCP, melalui modem kabel/DSL/ISDN. Inilah sebabnya mengapa Anda harus menghubungkan router ke modem untuk memberikan konfigurasi yang diperlukan agar hasil pengujian sisi WAN bermakna. Tapi router biasanya akan mengingat informasi ini, selama itu benar-benar terhubung ke jaringan di sisi WAN. Jadi Anda dapat menghubungkan router, modem, dan mesin uji, tetapi kemudian, dengan cepat, dan sebelum melakukan apa pun dengan mesin uji selain memastikan sakelar melihatnya terhubung , lepaskan modem.

    • Gunakan layanan gratis di Internet untuk menguji port Anda. Karena memasukkan mesin uji antara antarmuka WAN router Anda dan Internet (di atas) sangat terlibat – dan karena itu akan menunjukkan port yang dapat diakses meskipun tidak dapat diakses karena diblokir oleh ISP Anda (yang juga berlaku untuk menghubungkan ke router WAN IP dari sisi LAN)–biasanya lebih baik menggunakan layanan pemindaian port berbasis web.

      Ada banyak layanan pemindaian port. (Beberapa menggunakan frasa “periksa firewall Anda” dengan gagasan bahwa kebanyakan orang mencoba untuk memblokir daripada memfasilitasi akses.) Ini salah satunya. Jika Anda memilih untuk menggunakan yang itu, klik Lanjutkan , ketik 57757 ke dalam kotak teks, dan klik Gunakan Probe Port Khusus yang Ditentukan . Untuk tujuan menjalankan server, Anda ingin itu menjadi "terbuka." "Tutup" berarti port dapat diakses tetapi server tidak berjalan (dan dengan demikian upaya koneksi ditolak). “Stealth” berarti port tidak dapat diakses–seolah-olah tidak ada mesin yang ditemukan di sana (atau seolah-olah port diteruskan saat tidak ada mesin).

  5. Oke, jadi Anda telah menentukan bahwa itu benar-benar tidak dapat diakses dari Internet. Kemungkinan Anda dapat memindainya (idealnya dari sisi WAN) untuk mendapatkan detail, meskipun seringkali ini tidak memberikan informasi yang berguna.

    Jika Anda ingin melakukan ini, maka di sisi WAN, Anda dapat menjalankan:

    sudo nmap -sS -sV -p57757 -vv WAN-IP

    Jika port ditampilkan sebagai difilter, itu mengonfirmasi bahwa paket yang dikirim ke sana mungkin tidak akan kemana-mana (atau diblokir/dijatuhkan di tengah jalan).

  6. Sebaiknya periksa untuk melihat apakah masalahnya muncul dari port yang terpapar ke WAN yang berbeda dari port yang sebenarnya didengarkan oleh server. Meneruskan port 55757 pada WAN ke port 22 pada mesin LAN akan membuat semuanya berjalan dengan baik, tetapi mungkin di suatu tempat (server, klien) ada sesuatu yang mengasumsikan nomor port sama dari sudut pandang server dan klien.

    Agaknya Anda tidak dapat meneruskan port 22 melalui router. Mungkin ISP Anda memblokir port itu. Tapi jika Anda bisa melakukannya, lakukan itu!

    Jika tidak, Anda dapat membuat server OpenSSH sebenarnya dengarkan di port 57757.

    Untuk melakukannya, buat cadangan file konfigurasi server:

    cd /etc/ssh
    sudo cp sshd_config sshd_config.old
    

    Kemudian edit:

    gksu gedit sshd_config
    

    Atau gunakan editor teks konsol jika mesin tidak memiliki GUI:

    sudo nano -w sshd_config
    

    Di dekat bagian atas file, blok teks ini muncul:

    # What ports, IPs and protocols we listen for
    Port 22
    # Use these options to restrict which interfaces/protocols sshd will bind to
    #ListenAddress ::
    #ListenAddress 0.0.0.0
    Protocol 2
    # HostKeys for protocol version 2
    HostKey /etc/ssh/ssh_host_rsa_key
    HostKey /etc/ssh/ssh_host_dsa_key
    HostKey /etc/ssh/ssh_host_ecdsa_key
    #Privilege Separation is turned on for security
    UsePrivilegeSeparation yes
    

    Cukup ubah Port 22 baris di atas, untuk mengatakan Port 57757 sebagai gantinya.

    • Anda dapat menambahkan port daripada mengubahnya. Saya merekomendasikan pengujian dengan konfigurasi efektif yang paling sederhana.

      Lihat man sshd_config untuk detail lebih lanjut tentang mengkonfigurasi server OpenSSH.

    Simpan file, keluar dari editor teks, dan mulai ulang server SSH dengan:

    sudo restart ssh
    

    Sekarang ubah port forward pada router sehingga port 57757 meneruskan ke port 57757 (bukan 22) di server OpenSSH, dan lihat apakah port tersebut dapat diakses dari Internet.

  7. Jika masih tidak berfungsi, lihat apakah mungkin firewall Ubuntu benar-benar memblokir lalu lintas yang berasal dari luar LAN.

    (Ini tidak mungkin jika Anda tidak mengonfigurasinya dengan cara ini sendiri, tetapi jika semua pengaturan Anda benar dan tidak ada langkah di atas yang mengungkapkan apa pun tentang masalah tersebut, ada baiknya untuk memeriksanya.)

    Jalankan:

    sudo iptables -L
    

    Secara default, di Ubuntu, outputnya terlihat seperti:

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    

    Ini adalah kebijakan permisif sederhana, pada dasarnya setara dengan tidak menjalankan firewall. (Memang, jika modul firewall netfilter tidak dikompilasi ke dalam kernel Anda, sistem Anda akan berperilaku sama seperti pengaturan di atas, meskipun iptables perintah, yang menanyakan netfilter pengaturan, tentu saja tidak akan berfungsi.)

    Jika konfigurasi Anda tidak terlihat seperti itu, baca man iptables untuk mengetahui apa yang mereka lakukan, dan/atau mengedit pertanyaan Anda (atau, jika Anda adalah orang yang berbeda dengan masalah yang sama saat membaca ini, kirimkan pertanyaan baru) untuk menyertakan mereka. Harap perhatikan bahwa, kemungkinan besar, iptables . Anda aturan dapat mengungkapkan informasi sensitif tentang konfigurasi Anda. Secara praktis, ini biasanya tidak terjadi–dengan kemungkinan pengecualian aturan tentang host tertentu yang diblokir, atau jika konfigurasi Anda sangat buruk/tidak aman–biasanya kegunaan informasi ini bagi penyerang, terutama untuk mesin di LAN rumah/kantor di belakang router NAT , minimal.

Terkait:Masalah NVidia GeForce GTX970 ubuntu 16.04?
Ubuntu
  1. Bagaimana cara meningkatkan batas waktu Koneksi SSH

  2. Ssh Private-public Key Map Untuk Klien?

  3. Dapatkan Hak Istimewa Root Untuk Nautilus Pada Koneksi Sftp?

  1. Koneksi Ssh Ditolak Dari Dalam Lan?

  2. Ubah nomor port server SSH default

  3. Perbaiki ::Koneksi kesalahan SSH Linux ditolak

  1. Mengatur Otentikasi Multi-Faktor untuk SSH di Ubuntu 20.04

  2. Ubah batas waktu MySQL di server

  3. Server Ubuntu untuk Dummies