Sistem FreeBSD Untuk Mengamankan Server OepnSSH - SSH Hardening

· 2 min read

Pada sistem FreeBSD, saat pertama kali menginstal OpenSSH, OpenSSH sudah disertakan dalam repositori FreeBSD default. Anda hanya perlu mengaktifkan SS

Konfigurasi sshd secara default cenderung lebih berfokus pada kompatibilitas daripada keamanan. Oleh karena itu, Hardening menjadi pilihan utama dan harus dipersiapkan untuk meningkatkan sistem keamanan SSH. Sebab, secara default sistem OpenSSH secara agresif menghentikan algoritma yang bermasalah. Tak satu pun algoritma yang diaktifkan secara default memiliki masalah keamanan yang diketahui. Meskipun sebagian besar pengaturan OpenSSH default yang terkait dengan keamanan memberikan keamanan yang baik, pengaturan tersebut masih memiliki banyak kekurangan.

Pada sistem FreeBSD, saat pertama kali menginstal OpenSSH, OpenSSH sudah disertakan dalam repositori FreeBSD default. Anda hanya perlu mengaktifkan SSH di file /etc/rc.conf. Jadi secara umum, jika Anda menggunakan FreeBSD, tidak perlu menginstal OpenSSH. Namun, sayangnya aplikasi OpenSSH yang dibangun di FreeBSD diyakini kurang kuat dalam melindungi sistem dari serangan hacker, sehingga perlu dihardening. Untuk melakukan hardening OpenSSH di FreeBSD, Anda harus memperbarui OpenSSH ke versi terbaru. Baca artikel kami tentang menginstal OpenSSH di FreeBSD "Cara Mengkonfigurasi Server OpenSSH di FreeBSD".

Artikel ini akan memandu Anda melalui proses Hardening di OpenSSH. Untuk mengikuti artikel ini, Anda diharuskan membaca artikel sebelumnya, karena proses Hardening memerlukan pembaruan SSH bawaan FreeBSD.


Install OpenSSH di FreeBSD


Oke, anggaplah Anda telah membaca artikel sebelumnya dan telah memperbarui OpenSSH ke versi terbaru. Langkah pertama untuk melakukan Hardening adalah menginstal Audit SSH.

root@ns1:~ # cd /usr/ports/security/py-ssh-audit
root@ns1:/usr/ports/security/py-ssh-audit # make install clean

1. OpenSSH Hardening Server

Setelah proses instalasi Audit SSH selesai, lanjutkan dengan mengaktifkan OpenSSH dan Audit SSH.

root@ns1:~ # service openssh enable
root@ns1:~ # service openssh restart
root@ns1:~ # uname -a > ssh-audit.out
root@ns1:~ # echo "# before hardening" >> ssh-audit.out
root@ns1:~ # ssh-audit --no-colors localhost >> ssh-audit.out || true
Berikutnya, hapus pasangan kunci yang ada dan nonaktifkan DSA & ECDSA.

root@ns1:~ # rm -f /usr/local/etc/ssh/ssh_host_*
root@ns1:~ # sysrc sshd_dsa_enable="no"
root@ns1:~ # sysrc sshd_ecdsa_enable="no"
root@ns1:~ # sysrc sshd_ed25519_enable="yes"
root@ns1:~ # sysrc sshd_rsa_enable="yes"
Setelah itu Regenerasi kunci RSA dan Ed25519.

root@ns1:~ # ssh-keygen -t rsa -b 4096 -f /usr/local/etc/ssh/ssh_host_rsa_key -N ""
Generating public/private rsa key pair.
/usr/local/etc/ssh/ssh_host_rsa_key already exists.
Overwrite (y/n)? y
Your identification has been saved in /usr/local/etc/ssh/ssh_host_rsa_key
Your public key has been saved in /usr/local/etc/ssh/ssh_host_rsa_key.pub
The key fingerprint is:
SHA256:M6NxMgV83tETp7n7bOOIAWJ9ra1HSZj68YuhO8xykfY root@ns1
The key's randomart image is:
+---[RSA 4096]----+
|     ..    ....  |
|      ... . o+   |
|       o.. +o.   |
|       o. +...   |
|      * So..o.   |
|     . B=*.oo.   |
|      .+ +++o    |
|      . =.E*o+o  |
|       ooo+.o++. |
+----[SHA256]-----+

root@ns1:~ # ssh-keygen -t ed25519 -f /usr/local/etc/ssh/ssh_host_ed25519_key -N ""
Generating public/private ed25519 key pair.
/usr/local/etc/ssh/ssh_host_ed25519_key already exists.
Overwrite (y/n)? y
Your identification has been saved in /usr/local/etc/ssh/ssh_host_ed25519_key
Your public key has been saved in /usr/local/etc/ssh/ssh_host_ed25519_key.pub
The key fingerprint is:
SHA256:clHsvJFkxp8vcy2JUFzH9ffuEImjVgLlndMKgTrrSQs root@ns1
The key's randomart image is:
+--[ED25519 256]--+
|         ++. ...+|
|        .+*ooo .o|
|       .o*o++.. o|
|      o  o*.o+ .o|
|      .oS .+=ooo.|
|    E oo  .++.=o.|
|     + o  o  +...|
|      +  .     o |
|                .|
+----[SHA256]-----+
Kemudian lanjutkan dengan menghapus modulus Diffie-Hellman yang lebih kecil dari 3071. Skrip di bawah ini berlaku jika Anda sudah memiliki berkas modulus di folder /usr/local/etc/ssh. Coba periksa di folder tersebut untuk melihat apakah ada berkas modulus di folder /usr/local/etc/ssh, jika ada, jalankan skrip di bawah ini.

root@ns1:~ # awk '$5 >= 3072' /usr/local/etc/ssh/moduli > /etc/ssh/moduli.safe
root@ns1:~ # mv /usr/local/etc/ssh/moduli.safe /etc/ssh/moduli
Jika berkas moduli tidak tersedia di folder /usr/local/etc/ssh, Anda dapat membuat kunci untuk berkas moduli. Berikut ini adalah cara membuat kunci untuk file moduli.

root@ns1:/usr/local/etc/ssh # /usr/local/bin/ssh-keygen -M generate -O bits=3072 moduli
Tue Jul 25 16:29:22 2023 Sieve next 150896640 plus 3071-bit
Tue Jul 25 16:38:58 2023 Sieved with 203277289 small primes in 576 seconds
Tue Jul 25 16:39:07 2023 Found 127434 candidates

root@ns1:/usr/local/etc/ssh # /usr/local/bin/ssh-keygen -M screen -f moduli moduli-final
Tue Jul 25 16:49:39 2023 processed 12698 of 127434 (9%) in 0:05, ETA 0:45
Tue Jul 25 16:54:39 2023 processed 25203 of 127434 (19%) in 0:10, ETA 0:40
Tue Jul 25 16:59:39 2023 processed 37404 of 127434 (29%) in 0:15, ETA 0:36
Tue Jul 25 17:04:39 2023 processed 49979 of 127434 (39%) in 0:20, ETA 0:30
Tue Jul 25 17:09:39 2023 processed 62716 of 127434 (49%) in 0:25, ETA 0:25
Tue Jul 25 17:14:39 2023 processed 75377 of 127434 (59%) in 0:30, ETA 0:20
Tue Jul 25 17:19:39 2023 processed 88223 of 127434 (69%) in 0:35, ETA 0:15
Tue Jul 25 17:24:39 2023 processed 99937 of 127434 (78%) in 0:40, ETA 0:11
Tue Jul 25 17:29:39 2023 processed 112008 of 127434 (87%) in 0:45, ETA 0:06
Tue Jul 25 17:34:39 2023 processed 124967 of 127434 (98%) in 0:50, ETA 0:00
Tue Jul 25 17:35:36 2023 Found 30 safe primes of 106029 candidates in 3056 seconds
Kedua proses di atas memerlukan waktu yang cukup lama untuk menghasilkan kunci, jadi Anda harus bersabar dan menunggu hingga proses pembuatan selesai.

Kedua skrip di atas akan membuat file moduli baru. Sebagian besar pengguna tidak mengubah file moduli ini. Secara default, file moduli memiliki hash yang sangat pendek, yaitu 2048 bit, sehingga sangat rentan terhadap peretasan dan memudahkan penyerang untuk melakukan peretasan. Idealnya, moduli hash file minimum adalah 3072 bit yang akan memberikan keamanan sebesar 128 bit.

Setelah semuanya dikonfigurasi, sekarang kita akan membatasi pertukaran kunci, sandi, dan algoritma MAC yang didukung oleh OpenSSH.

root@ns1:~ # printf "\n# Restrict key exchange, cipher, and MAC algorithms, as per sshaudit.com\n# hardening guide.\nKexAlgorithms sntrup761x25519-sha512@openssh.com,curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha256\nCiphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr\nMACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-128-etm@openssh.com\nHostKeyAlgorithms ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,rsa-sha2-512,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-256-cert-v01@openssh.com\n" >> /usr/local/etc/ssh/sshd_config

Sekarang kita mulai ulang openssh dan ssh-audit.

root@ns1:~ # service openssh restart
root@ns1:~ # echo "# after hardening" >> ssh-audit.out
root@ns1:~ # ssh-audit --no-colors localhost >> ssh-audit.out

2. OpenSSH Hardening Client

Klien OpenSSH diproses secara berurutan dan diperiksa untuk mengetahui pengaturan konfigurasi yang tersedia. Ada 3 cara untuk mengonfigurasi Klien OpenSSH.
  • Melalui baris perintah Command Line.
  • Berkas konfigurasi Klien OpenSSH dalam folder asal terletak di /root/.ssh/config atau Anda juga dapat membuat folder di tempat lain seperti /usr/home/.ssh/config.
  • Berkas konfigurasi untuk semua pengguna berada di folder /usr/local/etc/ssh/ssh_config.
Setelah mengetahui dan menentukan letak folder klien OpenSSH, sekarang kita akan melakukan proses Hardening. Kita asumsikan folder klien OpenSSH berada di /root/.ssh. Gunakan skrip berikut untuk Hardening Klien OpenSSH.

root@ns1:~ # mkdir -p -m 0700 ~/.ssh ; printf "\nHost *\n  Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr\n  KexAlgorithms sntrup761x25519-sha512@openssh.com,curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha256\n  MACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,umac-128-etm@openssh.com\n  HostKeyAlgorithms ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-512,rsa-sha2-512-cert-v01@openssh.com\n" >> ~/.ssh/config
Dengan menerapkan semua langkah di atas, Anda akan dapat meningkatkan keamanan OpenSSH, sehingga sistem FreeBSD menjadi lebih aman dan sulit diretas. Cara di atas bukanlah salah satu cara untuk meningkatkan keamanan OpenSSH, masih ada cara lain seperti menggunakan VPN, Proxy dan lain-lain.
Subscribe on LinkedIn Sistem FreeBSD Untuk Mengamankan Server OepnSSH - SSH Hardening

Enclosures Link: Sistem FreeBSD Untuk Mengamankan Server OepnSSH - SSH Hardening

Silahkan Berkomentar, Kakak...! Bunda...!

Posting Komentar