SSH (Secure Socket Shell) adalah antarmuka baris perintah dan protokol untuk mendapatkan akses aman ke server Linux jarak jauh. Ini menyediakan komunikasi yang aman dan terenkripsi melalui jaringan dan memungkinkan pertukaran data melalui saluran aman antara dua server. Ini banyak digunakan oleh admin sistem untuk mengontrol dan mengelola server web mereka dari jarak jauh. Tutorial ini menunjukkan cara mengamankan server SSH Anda.
Catatan : sementara tutorial di sini dilakukan di Ubuntu, langkah-langkahnya akan berlaku untuk sebagian besar distribusi Linux.
Instal dan Perbarui SSH
Pertama, perbarui sistem Anda dan instal paket yang diperlukan ke sistem Anda.
Untuk memperbarui sistem dan menginstal server SSH di mesin server dan klien, jalankan perintah berikut:
sudo pembaruan tepat && sudo peningkatan yang tepat sudo tepat Install ssh
Konfigurasikan SSH untuk Login Tanpa Kata Sandi
Ada dua metode berbeda untuk masuk ke server SSH: otentikasi kata sandi dan otentikasi kunci publik. Otentikasi kata sandi adalah metode yang sangat mendasar yang mudah digunakan dan diretas. Menggunakan otentikasi kata sandi sangat tidak aman, terutama jika kata sandi yang lemah digunakan. Di sisi lain, kunci SSH menyediakan cara yang mudah dan aman untuk masuk ke server jarak jauh, dan metode ini direkomendasikan untuk semua pengguna.
Di mesin klien Anda, buat kunci SSH dengan perintah berikut:
ssh-keygen
Tekan tombol Enter di setiap prompt. Ini akan menghasilkan dua file: “id_rsa.pub†(kunci publik) dan “id_rsa†(kunci pribadi).
Di server Anda, buat folder berikut (jika tidak ada):
mkdir -p ~ / .ssh /
Kembali ke mesin klien Anda, salin kunci SSH ke server Anda menggunakan perintah berikut:
ssh-copy-id nama pengguna @ alamat.server.ip.anda
Di mesin server Anda, pastikan folder “.ssh” memiliki izin file yang tepat.
chmod 700 ~ / .ssh chmod 600 ~ / .ssh / otor_keys
Untuk menguji apakah metode autentikasi kunci publik berfungsi, coba sambungkan ke server SSH Anda dari mesin klien:
ssh nama pengguna @ alamat.server.ip.anda
Jika Anda dapat terhubung tanpa memasukkan kata sandi, maka metode otentikasi kunci publik berfungsi.
Catatan : jika Anda menggunakan Windows, gunakan petunjuk di sini untuk membuat kunci publik/pribadi SSH.
File Konfigurasi SSH Aman
File “/etc/ssh/sshd_config†adalah file konfigurasi seluruh sistem untuk SSH yang memungkinkan Anda mengatur berbagai opsi untuk meningkatkan keamanan server SSH. Konfigurasi default di file konfigurasi sangat tidak aman, jadi Anda perlu mengeditnya terlebih dahulu dan mengatur opsi yang tepat untuk meningkatkan keamanan.
Untuk mengedit file “/etc/ssh/sshd_configâ€, jalankan:
sudo nano / etc / ssh / sshd_config
Ubah Port Pendengar SSH
Secara default, SSH mendengarkan pada port 22. Penyerang menggunakan pemindai port untuk melihat apakah layanan SSH berjalan atau tidak. Merupakan praktik yang baik untuk mengubah port default.
Untuk mengubah port default ke 2200, ubah:
Pelabuhan 22
ke
Pelabuhan 2200
Hanya Gunakan Protokol 2
Versi 1 protokol berisi kerentanan keamanan. Protokol 2 adalah entri default di Ubuntu.
Ubah baris yang ditunjukkan di bawah ini:
Protokol 2
Batasi Akses Pengguna
Anda hanya perlu mengizinkan pengguna tertentu untuk masuk ke SSH. Itu dapat meningkatkan keamanan Anda. Secara default, opsi ini tidak tersedia di file konfigurasi SSH.
Untuk mengizinkan “pengguna1” dan “pengguna2”, tambahkan baris berikut:
Izinkan Pengguna pengguna1 pengguna2
Untuk menolak “baduser1” dan “baduser2”, tambahkan baris berikut:
DenyUsers baduser1 baduser2
Nonaktifkan Login Root
Tidak perlu masuk sebagai root melalui ssh melalui jaringan. Pengguna normal juga dapat menggunakan su atau sudo untuk mendapatkan akses level root. Sebagian besar penyerang akan mencoba menggunakan pengguna root untuk login. Ini merupakan risiko keamanan yang besar, jadi praktik yang baik untuk menolak login root.
Untuk menonaktifkan login root, ubah baris
PermitRootLogin melarang kata sandi
ke
PermitRootLogin no
Sembunyikan Login Terakhir
Anda dapat menyembunyikan siapa yang masuk terakhir saat pengguna masuk.
Ubah baris
PrintLastLog ya
ke
PrintLastLog no
Anda masih dapat melihat semua koneksi SSH aktif dengan metode dalam daftar ini.
Batasi Antarmuka untuk Masuk
Secara default, SSH akan mendengarkan semua antarmuka jaringan. Jika Anda ingin mengizinkan koneksi SSH dari alamat IP tertentu, Anda dapat mengubah baris:
# Alamat Dengarkan ::
ke
ListenAddress 192.168.68.175
Nonaktifkan Otentikasi Kata Sandi
Menggunakan otentikasi kata sandi adalah risiko keamanan yang besar jika kata sandi yang lemah digunakan. Menggunakan “kunci ssh” adalah praktik yang baik. Sebuah “kunci ssh” dapat berisi lebih dari 600 karakter acak dan sulit untuk dipecahkan.
Untuk ini, ubah barisnya
# Otentikasi Kata Sandi ya
ke
PasswordAutentikasi no
Nonaktifkan File .rhosts
File .rhosts menentukan pengguna mana yang dapat mengakses perintah-r (rsh, rcp, rlogin, dll.) di mesin lokal tanpa kata sandi. Secara default, file .rhosts dinonaktifkan; jika tidak, ubah garis seperti yang ditunjukkan di bawah ini.
IgnoreRhosts yes RhostsAuthentication no RSAAuthentication yes
Nonaktifkan Otentikasi Berbasis Host
Otentikasi berbasis host SSH lebih aman daripada otentikasi .rhosts. Namun, tidak disarankan agar tuan rumah saling percaya satu sama lain. Secara default, opsi ini dinonaktifkan.
Jika tidak, ubah baris seperti yang ditunjukkan di bawah ini:
HostbasedAuthentication no
Tetapkan Batas Waktu Tenggang Masuk
“LoginGraceTime” menentukan berapa lama setelah permintaan koneksi, server akan menunggu sebelum memutuskan sambungan. Merupakan praktik yang baik untuk menguranginya menjadi 60 detik.
Untuk ini, ubah barisnya
MasukGraceTime 2m
ke
MasukGraceTime 1m
Tetapkan Koneksi Startup Maksimum
Menyiapkan jumlah maksimum koneksi bersamaan yang tepat ke daemon SSH dapat membantu melawan serangan brute-force.
Untuk ini, ubah barisnya
# MaxStartup 10 : 30 : 100
ke
MaxStartup 2
Nonaktifkan Penerusan
Teknik penerusan port digunakan oleh penyerang untuk menyalurkan koneksi jaringan melalui sesi SSH untuk masuk ke sistem. Karena itu, praktik yang baik untuk menonaktifkan opsi ini.
Untuk ini, ubah barisnya
X11Penerusan ya
ke
X11Nomor penerusan
Catat Informasi Lebih Lanjut
Secara default, SSH mencatat semuanya. Jika Anda ingin mencatat lebih banyak informasi seperti upaya login yang gagal. ubah nilainya menjadi “VERBOSE.”
Untuk ini, ubah barisnya
INFO Tingkat Log
ke
VERBOSE Tingkat Log
Nonaktifkan Kata Sandi Kosong
Anda perlu menolak pengguna dengan kata sandi kosong di server Anda. Secara default, PermitEmptyPasswords dinonaktifkan di Ubuntu.
Jika tidak, ubah baris seperti yang ditunjukkan di bawah ini.
PermitEmptyPasswords no
Tetapkan Interval Batas Waktu Idle
Secara default, opsi ini tidak tersedia di file konfigurasi SSH default, jadi praktik yang baik adalah menyetel waktu tunggu menganggur yang tepat untuk menghindari sesi tanpa pengawasan.
Untuk ini, tambahkan baris berikut.
ClientAliveInterval 300 ClientAliveCountMax 0
Modus Ketat
Ini akan mencegah penggunaan direktori home yang tidak aman dan izin file kunci. Secara default, opsi ini diaktifkan.
Jika tidak, ubah baris berikut:
StrictModes ya
Simpan dan keluar dari file “/etc/ssh/sshd_config†dan restart server SSH.
sudo systemctl restart ssh
Amankan SSH Menggunakan Pembungkus TCP
Pembungkus TCP menyediakan kontrol akses berbasis host ke layanan jaringan
yang digunakan untuk memfilter akses jaringan ke Internet. Edit file “/etc/hosts.allow†Anda untuk mengizinkan SSH hanya dari “192.168.68.1†dan “192.168.68.175.â€
sudo nano / etc / host.memungkinkan
Tambahkan baris berikut:
sshd : 192.168.68.1 192.168.68.175
Amankan SSH Menggunakan iptables
Secara default, server SSH hanya boleh menerima koneksi dari LAN Anda atau situs jarak jauh lainnya. Merupakan praktik yang baik untuk mengizinkan hanya alamat IP tertentu untuk mengakses SSH dan memblokir akses ke SSH ke alamat IP yang tidak sah.
Untuk hanya mengizinkan koneksi SSH dari “192.168.68.1”, tetapkan aturan di iptables:
sudo iptables -A INPUT -p tcp -m status –status BARU –sumber 192.168.68.1 –dport 2200 -j TERIMA
Nonaktifkan koneksi SSH dari semua host lain dengan menjalankan perintah berikut:
sudo iptables -A INPUT -p tcp –dport 2200 -j JATUHKAN
Sesuaikan Koneksi SSH di Mesin Lokal
Di mesin lokal Anda (mesin yang Anda gunakan untuk terhubung ke server jarak jauh), tambahkan file konfigurasi untuk menyederhanakan opsi baris perintah.
- Buat file “config†(tidak perlu ekstensi file) di folder “/home/user/.ssh†Anda.
- Buka file dan tambahkan baris berikut:
Host sshserver HostName remote.server.ip.address.com Port 2200 User foobar IdentityFile ~ / .ssh / remote.server.key
Ubah detail konfigurasi server jarak jauh Anda sendiri.
- Simpan dan keluar dari editor teks. Untuk terhubung ke server jarak jauh Anda, ketikkan perintah berikut:
ssh sshserver
Selain mengamankan server SSH Anda, Anda juga harus menggunakan alat ini untuk mengamankan bagian lain dari server Anda.
Pertanyaan yang Sering Diajukan
Alamat IP mesin lokal saya berubah. Apakah masih mungkin untuk mengakses server saya melalui SSH?
Jika Anda telah mengaktifkan pemfilteran IP, Anda tidak akan dapat mengakses server setelah alamat IP Anda berubah.
Apa yang dapat Anda lakukan untuk mengurangi masalah ini adalah mengonfigurasi server jarak jauh Anda untuk menerima rentang alih-alih alamat tertentu. Cukup konfigurasikan firewall Anda untuk menerima rentang IP untuk koneksi SSH: sudo iptables -A INPUT -p tcp -m state –state NEW –source 192.168.1.0/24 –dport 2200 -j ACCEPT .
Server saya memfilter melalui file host. Apakah lebih baik menggunakan iptables untuk melindungi sistem saya?
Sebagian besar, Anda hanya perlu menyiapkan satu filter untuk server SSH Anda. Menggunakan beberapa filter IP akan mempersulit Anda untuk memecahkan masalah apa pun yang mungkin muncul selama produksi.
Pastikan firewall dan filter IP Anda bekerja sama untuk melindungi antarmuka jaringan server Anda. Misalnya, adalah praktik yang baik untuk memblokir port yang tidak digunakan melalui firewall Anda dan hanya memfilter koneksi melalui file “/etc/hosts†Anda.
Saya kehilangan kunci pribadi untuk mesin lokal saya. Apakah masih mungkin untuk masuk ke server saya melalui SSH?
Tidak, Anda tidak akan dapat mengakses server Anda jika Anda kehilangan kunci privat. Cara terbaik untuk mengatasi masalah ini adalah dengan mengakses server fisik atau melalui konsol root VPS. Aktifkan kembali Otentikasi Kata Sandi dengan menyetel variabel PasswordAuthentication ke “ya”, lalu mulai ulang daemon ssh Anda dengan menjalankan perintah sudo systemctl restart ssh .
Kredit Gambar: Hapus percikan. Semua perubahan dan tangkapan layar oleh Ramces Red.