Mengubah Default Port SSH, Apakah Ide Yang Baik?

Saya cukup sering melihat baik di forum-forum maupun pada blog membicarakan tentang cara mengamankan server SSH yaitu dengan memindahkan default portnya yaitu 22 ke port lainnya misalnya 2222 atau bahkan 45678. Mungkin kamu sudah mengetahui juga bahwa SSH merupakan default akses untuk mengelola server ataupun VPS berbasis Linux.

Ilustrasi SSH Terminal Emulator

Gambar 1. Ilustrasi SSH Terminal Emulator

Umumnya mereka menyarankan seperti itu dengan maksud menyembunyikan informasi apakah server tersebut berbasis Linux atau bukan, ataupun mencegah tindakan brute-force attack terhadap akses SSH pada server kamu. Memang hal itu ada benarnya, namun tidak sepenuhnya benar.

Bagi sebuah program bot, tetap saja mudah untuk menemukan port SSH dari server kamu yaitu dengan melakukan scanning port. Jadi walaupun port SSH dipindahkan, tetap saja akan dapat diketahui listen port dari SSH yang sudah kamu pindahkan tadi. Intinya, memindahkan port hanya sedikit mempersulit orang lain ataupun bot untuk melakukan brute-force pada server kamu.

Lalu dimana salahnya? dan apa alasannya untuk tidak memindahkan default port SSH server kamu? Sebelumnya, kamu perlu mengetahui cara Linux dalam penanganan port TCP/IP. Ketika kamu login ke server atau VPS kamu sebagai limited user (non-root atau UID diatas 0), kamu tidak dapat melisting baik itu port TCP maupun UDP di bawah 1024. Apakah benar? tidak percaya? Silahkan simak artikel mengenai “List of TCP and UDP port number” di wikipedia. Disana disebutkan:

“The port numbers in the range from 0 to 1023 are the well-known ports. They are used by system processes that provide widely used types of network services. On Unix-like operating systems, a process must execute with superuser privileges to be able to bind a network socket to an IP address using one of the well-known ports.”

Dengan kata lain bahwa port dibawah 1024 merupakan port istimewa, dimana untuk melakukan binding atau membuka port tersebut, hanya dapat dilakukan oleh root ataupun proses yang berjalan sebagai root. Sebagai contoh, ketika suatu aplikasi webserver (misalnya Apache atau Nginx) dijalankan pada sebuah server. Aplikasi tersebut akan dimulai sebagai root untuk membuka port 80, dan ketika port sudah terbuka, aplikasi webserver akan membuat child process untuk dapat melayani trafik HTTP sebagai user selain root, misalnya httpd atau www-data. Dari proses ini, ketika terjadi hal-hal buruk yang menimpa aplikasi webserver kamu, itu hanya terbatas pada hak yang dimiliki oleh user tersebut, yaitu httpd atau www-data.

Kembali lagi ke SSH, ketika kita mulai menjalankan SSH server pada port 22, kita tahu pasti bahwa proses ini dilakukan oleh root (sebagai previlege user), karena tidak ada pengguna lain yang bisa membuka port tersebut. Lalu apa yang terjadi apabila kita memindahkan port SSH ke port 2222 atau port lainnya yang bukan merupakan port istimewa?

Ingat bahwa untuk membuka port 2222 dan port lainnya diatas 1023 tidak diperlukan previlage user. Port ini dapat dibuka oleh user selain root, yang artinya kamu bisa menuliskan script sederhana yang dapat mendengarkan port 2222 dan meniru SSH untuk menangkap password yang diketikkan. Dan hal ini cukup mudah dilakukan menggunakan tools atau aplikasi sederhana yang umum tersedia pada setiap sistem linux.

Maka dengan demikian, menjalankan SSH pada port selain port istimewa justru akan mengurangi keamanannya.

Alasan lain untuk tidak memindahkan port SSH ke nomor port diatas 1023, kemungkinannya akan merepotkan sysadmin lainnya di kantor kamu, apabila setiap server yang ada menggunakan port SSH yang berbeda-beda. Selain itu biasanya sebuah kantor ataupun perusahaan memiliki sistem firewall dimana kamu tidak dapat bebas mengakses port secara random. Beberapa port yang aman biasanya memang tidak ditutup, seperti port 22 (SSH), 80 (HTTP), 443 (SSL/HTTPS), sementara port lainnya seperti 25 (smtp) yang walaupun juga masih termasuk ke dalam port istimewa ditutup karena untuk mencegah spamming.

Sekarang mari kita berpikir lebih lanjut, apabila kamu tetap menggunakan port 22 untuk SSH pada server kamu, mungkin saja banyak bot ataupun orang yang mencoba untuk melakukan bruteforce SSH.

Apabila kita analogikan, kamu memiliki sebuah rumah dengan pintu yang berada di halaman depan, banyak orang-orang yang memukul pintu rumah kamu. Apakah itu masalah? Anggaplah mereka itu hanya menguji pertahanan kamu. Saya pun lebih suka memiliki massa yang marah diluar rumah. Saya akan melakukan segalanya untuk memastikan bahwa mereka tidak bisa masuk keadalam rumah saya, ketimbang memiliki pintu yang terbuka.

Begitu juga dengan SSH pada server kamu. Masih banyak cara lain untuk meningkatkan keamanan SSH server kamu, diantaranya:

  1. Buat password yang kuat untuk root dengan menggunakan kombinasi huruf besar, angka, huruf kecil dan karakter seperti $&?{}*+[].
  2. Gunakan TCPWrapper untuk mempersempit range alamat IP yang dapat mengakses SSH server kamu, terutama apabila internet yang kamu gunakan menggunakan alamat ip dinamis.
  3. Akan lebih baik akses SSH menggunakan metode public key authentication, dan kamu bisa mendisable keyboard login.
  4. Gunakan iptables untuk membatasi serangan bruteforce dengan melimit koneksi per menitnya.
  5. iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
    iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j LOG --log-prefix "SSH_brute_force "
    iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 4 --rttl --name SSH -j DROP

Dengan demikian kamu bisa lebih memahami bagaimana cara yang lebih baik untuk mengamankan SSH dari server atau VPS yang kamu miliki.

Artikel Terkait

[related_posts limit=”5″]

 

Leave a Reply