GNU/Linux >> Belajar Linux >  >> Linux

5 Praktik Terbaik Keamanan SSH Linux untuk Mengamankan Sistem Anda

Pendahuluan

Meminimalkan kerentanan dalam protokol Secure Shell (SSH) Anda adalah kunci untuk memastikan keamanan lingkungan Linux Anda.

Dalam artikel ini, kami membahas keamanan SSH Linux yang paling umum langkah-langkah yang dapat Anda ambil untuk membuat server Anda lebih aman. Dengan mengubah port SSH default, menggunakan pasangan kunci, dan mengikuti praktik terbaik lain yang direkomendasikan, Anda dapat meningkatkan keamanan sistem secara keseluruhan secara signifikan.

Apa itu SSH?

Protokol Secure Shell (SSH) memungkinkan administrasi sistem jarak jauh yang dilindungi secara kriptografis dan transfer file melalui jaringan yang tidak aman. Menggunakan beberapa metode enkripsi, SSH mengamankan koneksi antara klien dan server yang melindungi perintah, autentikasi, dan keluaran pengguna dari akses dan serangan yang tidak sah.

Protokol SSH sekarang banyak digunakan di pusat data dan oleh hampir setiap perusahaan besar yang menjalankan varian UNIX mana pun.

Dalam hal langkah-langkah keamanan, penting untuk menggabungkannya, menerapkannya berlapis-lapis, dan tidak memilih hanya satu dan hanya mengandalkan solusi itu.

Untuk mempelajari lebih lanjut tentang koneksi SSH, kunjungi artikel kami tentang cara kerja SSH.

1. Ubah Port SSH Default

Menggunakan port non-standar untuk koneksi SSH membantu menghindari serangan otomatis pada server Anda. Ini juga membantu mengurangi kemungkinan kemunculannya di radar peretas dan menjadikannya target yang kurang jelas.

Catatan :Mayoritas peretas yang mencari server OpenSSH akan membidik port SSH default 22 .

Dalam hal ini, skrip yang mereka gunakan akan mencari alamat IP hanya pada port 22. Jika server Anda termasuk dalam grup itu, setiap serangan otomatis semacam itu akan berdampak pada file log Anda. Akibatnya, beban di server Anda dapat meningkat secara substansial karena banyak eksploitasi server SSH berjalan sepanjang waktu mengetuk pintu setiap server.

Penting untuk dicatat bahwa mengubah port SSH default tidak meningkatkan keamanan server Anda. Namun, ini membantu dalam menghindari serangan otomatis.

Cara Mengubah Nomor Port

Sebelum memulai, Anda perlu memutuskan port mana yang akan Anda gunakan, bukan port default 22. Sebelum membuat keputusan, Anda harus mempertimbangkan beberapa hal:

Untuk mengubah port pada server Linux Anda , ikuti langkah-langkah berikut:

  1. Hubungkan ke server melalui SSH seperti biasa.
  2. Beralih ke pengguna root menggunakan perintah su, yang akan meminta Anda memasukkan sandi server.
  3. Gunakan editor teks pilihan Anda untuk mengedit file konfigurasi sshd yang terletak di etc/ssh/ direktori. Jika Anda belum pernah menggunakan editor teks di dalam terminal, disarankan untuk menggunakan Nano. Jika tidak, gunakan vi atau vim karena mereka adalah editor yang paling umum digunakan saat ini. Kami menyarankan Anda untuk mencadangkan file asli sebelum Anda membuat perubahan apa pun.
  4. Jalankan perintah ini untuk mengedit file konfigurasi:
nano /etc/ssh/sshd_config
  1. Dalam keluaran sshd_config file cari baris yang mengatakan “Port 22 .”
  1. Ubah nomor port ke nilai pilihan Anda. Pastikan tidak ada “# ” di awal baris.
  2. Keluar dari editor dan konfirmasikan bahwa Anda ingin menyimpan perubahan.
  3. Agar perubahan diterapkan, mulai ulang layanan sshd dengan perintah ini:
service sshd restart
  1. Pastikan bahwa SSH mendengarkan pada port yang Anda tentukan dengan menghubungkannya.

Perhatikan bahwa sekarang Anda perlu menentukan port saat menghubungkan karena klien Anda akan selalu menggunakan port SSH default kecuali jika diberitahukan sebaliknya.

Manfaat

Meskipun prosedur untuk mengubah port SSH default tidak meningkatkan tingkat keamanan itu sendiri, prosedur ini akan menjauhkan Anda dari radar pemindaian yang paling umum. Salah satu cara mudah untuk menguji ini adalah membiarkan server Anda berjalan selama beberapa hari dengan mendengarkan sshd pada port default dan kemudian mengubahnya ke port non-standar. Bandingkan jumlah login yang gagal di server Anda, dan Anda akan melihatnya berkurang secara substansial.

Dengan menggunakan port non-standar untuk SSH:

  • Anda tidak terlihat oleh pemindaian acak.
  • Lebih sulit untuk menemukan server Anda. Sebagian besar serangan akan memindai port default atau beberapa variannya, tetapi akan berpindah setelah koneksi ditolak.
  • Daemon SSH dapat dihentikan karena tidak akan mendapatkan permintaan koneksi dari serangan skrip. Beban server berkurang, dan file log tetap bersih sehingga menghemat waktu Anda untuk meninjaunya.
  • Anda tidak menerima banyak peringatan untuk login yang gagal. Jika Anda menggunakan port non-standar dan seseorang masih mencoba mengakses server Anda, itu mungkin berarti server Anda secara khusus ditargetkan dan alarm tidak berasal dari serangan skrip.
  • Anda tidak akan mudah diretas karena bug di sshd atau kunci pribadi yang lemah.
  • Sebagian besar peretas akan ditolak jika mereka melihat Anda tidak menggunakan port default. Ini akan menjadi tanda bahwa server dilindungi dengan benar dan kemungkinan ada tindakan keamanan lain yang diambil juga, membuat server Anda menjadi target yang tidak diinginkan.

Kekurangan

Ada beberapa tindakan pencegahan yang perlu diingat sebelum Anda memutuskan untuk mengubah port default untuk SSH. Kerugian menjalankan port non-standar dapat berarti bahwa:

  • Siapa saja yang dapat terhubung ke server Anda perlu diberi tahu tentang perubahan tersebut dan harus mulai menggunakan port baru.
  • Jika Anda menggunakan pemantauan yang dialihdayakan untuk server Anda, Anda juga perlu memberi tahu mereka tentang perubahan tersebut. Jika tidak, mereka dapat memperlakukan ini sebagai potensi ancaman yang dapat menyebabkan waktu henti server.
  • Aturan firewall yang terkait dengan layanan SSH harus diperiksa dan dimodifikasi sesuai dengan perubahan yang Anda buat.

Beberapa kelemahan ini mungkin tidak akan berlaku untuk kasus penggunaan Anda, tetapi harus dipertimbangkan. Manfaat mengubah port lebih besar daripada kerugiannya dan terbukti menjadi lapisan keamanan tambahan yang baik untuk server Anda.

2. Tingkatkan Keamanan SSH Linux Menggunakan Pasangan Kunci

Salah satu metode paling aman untuk mengautentikasi klien ke server adalah dengan menggunakan pasangan kunci SSH . Kata sandi yang kuat mungkin cukup untuk menjaga keamanan server Anda, tetapi serangan brute force yang terus-menerus masih dapat memecahkannya. Inilah mengapa Anda membutuhkan pengerasan SSH tambahan dengan pasangan kunci.

Kunci SSH tahan terhadap serangan semacam itu dan hampir tidak mungkin untuk didekripsi. Sepasang kunci SSH terdiri dari dua rangkaian karakter yang panjang, kunci pribadi yang dirahasiakan, dan kunci publik yang dapat dibagikan dengan aman. Tujuannya mirip dengan sandi, dan memungkinkan Anda secara otomatis membuat sesi SSH tanpa perlu mengetikkan kata sandi.

Cara Membuat Pasangan Kunci

Untuk mengatur kunci SSH, Anda perlu membuat pasangan kunci di komputer klien yang akan digunakan untuk terhubung ke server. Untuk melakukannya:

  1. Mulai terminal dan jalankan utilitas keygen SSH , tersedia dengan alat OpenSSH standar.
ssh-keygen –t rsa
  1. Anda akan mendapatkan pesan “Membuat pasangan kunci RSA publik/pribadi.” Jika Anda ingin menyimpan kunci ke lokasi default, tekan Enter ketika diminta. Kunci akan disimpan di direktori home user, di ~/.ssh direktori. Untuk mengubah lokasi, cukup ketik jalur baru. Rekomendasinya adalah tetap menggunakan lokasi default, jadi Anda tidak perlu melakukan perubahan apa pun pada klien SSH Anda. Pribadi, atau kunci identifikasi, akan disimpan sebagai id_rsa dan kunci publik yang sesuai sebagai id_rsa.pub .
  2. Secara opsional, Anda dapat menyisipkan frasa sandi . Jika Anda tidak ingin menggunakannya, tekan Enter untuk melanjutkan. Frasa sandi memberikan lapisan keamanan tambahan dengan mengenkripsi kunci pribadi pada mesin lokal. Untuk memecahkan frasa sandi, peretas harus memiliki akses ke sistem terlebih dahulu, karena kunci pribadi tidak terbuka di jaringan. Meski begitu, butuh waktu untuk berhasil, memungkinkan Anda mengubah kunci yang digunakan sebelum peretas mendapatkan akses ke server lain. Kelemahannya adalah Anda harus memasukkannya setiap kali mencoba terhubung menggunakan kunci itu.

Proses pembangkitan pasangan kunci selesai.

Layar akhir akan terlihat seperti ini:

ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/demo/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/demo/.ssh/id_rsa.

Your public key has been saved in /home/demo/.ssh/id_rsa.pub.

The key fingerprint is:

8b:cd:0b:f7:38:4a:3f:ed:24:18:8d:54:34:2c:63:56 [email protected]

The key's randomart image is:

+--[ RSA 2048]----+

| ..o. |

| . E.o |

| + . o |

| . = = . |

| ..S |

| = + = + |

| . o + o . |

| . + + o |

| .. |

| |

+-----------------+

Catatan: Anda dapat membuat otentikasi/otorisasi lebih aman dengan membuat kunci 4096-bit yang lebih besar daripada 2048 bit default. Untuk melakukannya, tambahkan –b 4096 ke ssh-keygen memerintah. Ini akan terlihat seperti ini:

ssh-keygen -t rsa -b 4096

Menyalin Kunci Publik

Untuk menggunakan pasangan kunci yang Anda buat di mesin Anda untuk otentikasi SSH, Anda perlu menempatkan kunci publik di server yang diinginkan. Cara termudah untuk melakukannya adalah dengan menggunakan alat yang tersedia dengan OpenSSH:

ssh-copy-id

Prosedurnya mudah:

  1. Ketik ssh-copy-id [email protected]_host_address .
  2. Jika Anda pertama kali terhubung ke host ini, Anda akan mendapatkan pesan keaslian. Ketik Yes untuk melanjutkan.
  3. Masukkan sandi ketika ditanya, dan alat akan menyalin konten ~/.ssh/ id_rsa.pub kunci authorized_keys file di bawah ~/.ssh direktori home di server.

Catatan: Tidak ada karakter yang akan terlihat saat Anda mengetik sandi karena alasan keamanan.

  1. Anda akan mendapatkan pesan:

Kunci publik Anda telah ditempatkan di server jauh, dan sekarang Anda dapat masuk ke dalamnya tanpa memasukkan kata sandi akun.

  1. Untuk menguji apakah autentikasi dengan kunci berfungsi, sambungkan ke server Anda dengan ssh [email protected]_host_address . Jika berhasil, Anda akan masuk secara otomatis. Jika sebelumnya Anda telah menyiapkan frasa sandi, Anda harus memasukkannya terlebih dahulu sebelum Anda diberikan akses ke server.

Cara Kerja Tombol

Pada dasarnya, sebuah kunci publik bukan kunci. Ini berperilaku seperti gembok yang dapat Anda pasang di akun SSH di komputer lain. Saat Anda menjalankan utilitas 'ssh-keygen', Anda menghasilkan gembok dan kunci yang membukanya, id_rsa.pub dan id_rsa masing-masing.

Anda dapat membuat salinan gembok sebanyak mungkin jika perlu, distribusikan ke server mana pun yang Anda suka, dan hanya Anda yang memiliki kunci yang tepat untuk membuka semuanya. Inilah mengapa penting untuk menjaga kunci pribadi tetap aman karena akan membuka semua salinan gembok yang telah Anda bagikan.

Tidak masalah di mana Anda meletakkan kunci publik Anda selama kunci master tidak dikompromikan. Karena tidak ada orang lain yang memiliki kunci pribadi, metode otorisasi dan autentikasi ini mungkin yang paling aman dan sangat direkomendasikan.

3. Nonaktifkan Login Root SSH Server

Distribusi server Linux memiliki akses root luar yang diaktifkan secara default. Ini bisa menjadi ancaman keamanan yang parah karena peretas dapat mencoba memecahkan kata sandi dengan serangan brute force. Disarankan untuk menonaktifkan login root dan menggunakan akun biasa dan su – perintah untuk beralih ke pengguna root.

Sebelum Anda menonaktifkan login root, pastikan Anda telah menambahkan akun yang dapat memperoleh akses root. Untuk melakukannya, ikuti langkah-langkah di bawah ini:

  1. Gunakan SSH untuk masuk ke server sebagai root.

2. Gunakan editor teks untuk membuka file konfigurasi utama. Kali ini, kita akan menggunakan vi editor.

vi /etc/ssh/sshd_config

3. Temukan baris yang bertuliskan “PermitRootLogin_yes dan ubah ke PermitRootLogin_no . Anda mungkin perlu menggulir ke bawah beberapa baris untuk menemukannya.

4. Penting untuk menambahkan akun pengguna yang akan Anda gunakan untuk masuk. Cukup tambahkan baris lain dengan nama pengguna yang dimaksud:AllowUsers your_username_here

5. Simpan perubahan yang Anda buat lalu keluar editor teks.

6. Mulai ulang layanan SSH tetapi tidak tutup sesi root dulu. Untuk Ubuntu dan Debian gunakan sudo service ssh restart dan untuk Fedora/CentOS gunakan service ssh restart perintah.

Buka jendela terminal baru dan verifikasi bahwa Anda sekarang dapat masuk sebagai pengguna yang Anda tambahkan. Setelah Anda mengonfirmasi itu berfungsi, keluar sesi root aktif.

4. Nonaktifkan Login Berbasis Sandi di Server Anda

Jika Anda menggunakan kunci SSH untuk otentikasi SSH, Anda dapat menonaktifkan otentikasi kata sandi server sama sekali. Ini adalah cara lain untuk menjaga server Anda aman dari serangan brute force dan upaya untuk memecahkan sandi Anda. Sebelum Anda melanjutkan, periksa kembali apakah otentikasi berbasis kunci SSH berfungsi untuk akun root di server atau untuk akun dengan sudo akses.

Saat Anda siap, selesaikan langkah-langkah ini:

  1. Gunakan kunci SSH untuk masuk ke server sebagai root atau dengan hak sudo.

2. Gunakan editor teks untuk membuka sshd_config mengajukan. Kami akan menggunakan vi:

vi /etc/ssh/sshd_config

3. Cari baris yang bertuliskan PasswordAuthentication dan ubah ke PasswordAuthentication_no . Pastikan untuk menghapus komentar pada baris jika # hadir.

4. Simpan perubahan yang Anda buat lalu keluar editor teks.

5. Mulai ulang layanan SSH untuk menerapkan perubahan. Untuk Ubuntu/Debian gunakan sudo service ssh restart dan untuk Fedora/CentOS gunakan service ssh restart perintah.

Selamat, Anda telah berhasil menonaktifkan opsi untuk masuk melalui SSH menggunakan kata sandi akun. SSH Daemon akan mengabaikan permintaan otentikasi yang tidak menyertakan pasangan kunci privat/publik.

5. Batasi Akses SSH Menggunakan iptables

Iptables adalah utilitas Linux yang digunakan untuk mengonfigurasi aturan firewall dan pemantauan/pemfilteran lalu lintas masuk dan keluar ke server Anda. Ini disertakan secara default dengan sebagian besar distribusi Linux.

Dengan iptables, Anda dapat menentukan aturan yang membatasi atau mengizinkan lalu lintas untuk berbagai jenis layanan berdasarkan alamat IP, port, atau protokol jaringan dan dengan demikian secara substansial meningkatkan keamanan server Anda. Dalam kasus kami, kami akan menetapkan aturan firewall untuk membatasi lalu lintas SSH masuk untuk semua orang kecuali satu alamat IP atau subnet.

Dengan cara ini, memblokir port 22 tidak hanya akan menghentikan akses tidak sah ke server Anda, tetapi juga dapat menghentikan atau mencegah serangan DDoS.

Saat mengambil langkah ini, Anda harus memastikan bahwa Anda tidak mengunci diri dengan memblokir lalu lintas SSH sepenuhnya. Anda hanya perlu menggunakan beberapa perintah untuk mengizinkan alamat IP atau subnet tertentu untuk koneksi SSH yang masuk.

Catatan: Perintah peka huruf besar/kecil.

Aturan ini akan memasukkan alamat IP yang Anda ketikkan ke daftar putih. Harap ganti IP contoh di perintah dengan IP Anda. Anda juga dapat menggunakan subnet, misalnya, 10.10.10.0/24.

sudo iptables -A INPUT -p tcp -s 123.456.78.90 -dport 22 -j ACCEPT

Anda perlu menyimpan aturan, sehingga Anda tidak kehilangannya setelah reboot:

sudo iptables-save

Jika Anda ingin melihat daftar semua aturan iptables, Anda dapat menggunakan iptables –L memerintah. Untuk menyertakan lebih banyak detail seperti paket, byte, dan informasi target, tambahkan –v ke perintah di atas. Tambahkan -n untuk semua itu dan output akan ditampilkan dalam format numerik.

Jika Anda ingin mengatur ulang semua aturan dan mulai membersihkan, gunakan perintah flush iptables –F . Ini akan menghapus konfigurasi iptables yang berguna jika Anda tidak yakin apakah semuanya sudah diatur seperti yang Anda inginkan.

Parameter Iptables dan Definisi Opsi

Berikut adalah beberapa penjelasan untuk parameter, opsi, dan nilai iptables yang digunakan dalam contoh di atas, serta beberapa yang tidak disebutkan sebelumnya.

Nilai Deskripsi
TERIMA Mengizinkan paket melewati
HAPUS Memblokir paket
KEMBALI Memberitahu untuk melewati rantai saat ini dan melanjutkan pada aturan berikutnya dalam rantai (panggilan) sebelumnya
>Parameter Deskripsi
-c penghitung memungkinkan pengaturan paket dan penghitung byte dari aturan tertentu
-d tujuan – bisa berupa alamat, nama host atau alamat, dll.
-f fragmen – menerapkan aturan ke yang kedua dan fragmen yang mengikutinya
-g rantai goto – menyatakan bahwa tindakan akan berlanjut dalam rantai yang ditentukan pengguna
-i dalam antarmuka – menyatakan nama antarmuka dari mana paket datang
-j lompat – menentukan tindakan jika paket cocok dengan aturan
-o antarmuka luar – nama antarmuka paket keluar
-p protokol – semua protokol yang tersedia seperti SSH, TCP, UDP, dan FTP
-s sumber – bisa berupa alamat, nama host atau alamat, dll.
Rantai Deskripsi
MASUKKAN Mengontrol paket yang masuk
Maju Meneruskan paket yang datang ke server Anda tetapi ditujukan ke tempat lain
OUTPUT Memfilter paket yang keluar dari server Anda
Opsi Deskripsi
-A tambahkan menambahkan satu (atau lebih) aturan dari rantai yang dipilih
-C periksa – memeriksa aturan yang cocok dengan kriteria dalam rantai yang dipilih
-D hapus – menghapus hanya satu aturan dari rantai yang dipilih
-F siram – menghapus semua aturan iptables yang ditentukan
-Saya masukkan – masukkan aturan ke dalam rantai yang dipilih
-L daftar – menampilkan aturan rantai yang dipilih
-n numerik – menunjukkan alamat IP/nama host dan mengembalikan nilai dalam format numerik
-N rantai baru membuat rantai baru yang ditentukan pengguna
-v verbose – digunakan dalam kombinasi dengan -L untuk memberikan informasi tambahan
-X hapus rantai menghapus rantai yang ditentukan pengguna

Kesimpulan, Keamanan SSH, dan Praktik Terbaik Pengerasan

Baik Anda sedang membangun server baru atau mesin virtual, adalah praktik yang baik untuk menerapkan beberapa lapisan keamanan dalam lingkungan Anda. Bisnis biasanya ingin menyiapkan infrastruktur mereka sesegera mungkin, tetapi langkah-langkah keamanan yang diperlukan harus diterapkan sejak awal.

Jika Anda menggunakan metode keamanan SSH Linux yang tercantum di atas, Anda seharusnya dapat menghindari ancaman keamanan umum di cloud.

Mempersulit peretas untuk menembus server Anda dan membatasi kerusakan apa pun. Pastikan Anda menerapkan sebanyak mungkin praktik terbaik ini sebelum membuat server Anda tersedia di jaringan.

Jangan lupa untuk melihat daftar Blog Keamanan Siber Terbaik kami yang diperbarui secara berkala yang harus Anda ikuti agar selalu mengikuti semua tren terbaru.


Linux
  1. Pindai keamanan Linux Anda dengan Lynis

  2. Keamanan Linux:Lindungi sistem Anda dengan fail2ban

  3. 13 tutorial keamanan Linux

  1. Praktik Terbaik Keamanan OpenSSH

  2. Praktik terbaik keamanan server Windows

  3. Praktik terbaik keamanan Wordpress di Linux

  1. Cara Mengubah Port SSH Di Linux

  2. Ubah Port SSH di Sistem Linux Ubuntu 20.04 - Metode Terbaik?

  3. Praktik terbaik keamanan server Linux