Sistem FreeBSD Untuk Mengamankan Server OepnSSH - SSH Hardening
· 2 min read · Label UnixBSDKonfigurasi 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.
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
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"
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
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 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
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.
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
Silahkan Berkomentar, Kakak...! Bunda...!
Posting Komentar