
, CC BY-SA
Saat ini, menyiapkan server di hosting hanya membutuhkan beberapa menit dan beberapa klik mouse. Namun segera setelah diluncurkan, dia mendapati dirinya berada dalam lingkungan yang tidak bersahabat, karena dia terbuka terhadap seluruh Internet seperti gadis lugu di diskotik rocker. Pemindai akan segera menemukannya dan menemukan ribuan bot dengan skrip otomatis yang menjelajahi jaringan untuk mencari kerentanan dan konfigurasi yang salah. Ada beberapa hal yang harus Anda lakukan segera setelah peluncuran untuk memastikan perlindungan dasar.
kadar
Pengguna non-root
Hal pertama yang perlu Anda lakukan adalah membuat pengguna non-root. Intinya adalah pengguna root hak istimewa absolut dalam sistem, dan jika Anda mengizinkannya melakukan administrasi jarak jauh, maka Anda akan melakukan separuh pekerjaan untuk peretas, meninggalkan nama pengguna yang valid untuknya.
Oleh karena itu, Anda perlu membuat pengguna lain, dan menonaktifkan administrasi jarak jauh melalui SSH untuk root.
Pengguna baru dibuat dengan perintah useradd:
useradd [options] <username> Kemudian kata sandi ditambahkan untuk itu dengan perintah passwd:
passwd <username> Terakhir, pengguna ini perlu ditambahkan ke grup yang memiliki hak untuk menjalankan perintah dengan hak istimewa yang lebih tinggi sudo. Tergantung pada distribusi Linux, grup ini mungkin berbeda. Misalnya, di CentOS dan Red Hat, pengguna ditambahkan ke grup wheel:
usermod -aG wheel <username> Di Ubuntu itu ditambahkan ke grup sudo:
usermod -aG sudo <username>
Kunci, bukan kata sandi SSH
Brute force atau kebocoran kata sandi adalah vektor serangan standar, jadi lebih baik nonaktifkan otentikasi kata sandi di SSH (Secure Shell) dan gunakan otentikasi kunci sebagai gantinya.
Ada berbagai program untuk mengimplementasikan protokol SSH, seperti и , tapi yang paling populer adalah OpenSSH. Menginstal klien OpenSSH di Ubuntu:
sudo apt install openssh-clientInstalasi server:
sudo apt install openssh-serverMemulai daemon SSH (sshd) di server Ubuntu:
sudo systemctl start sshdMemulai daemon secara otomatis pada setiap boot:
sudo systemctl enable sshd Perlu dicatat bahwa bagian server OpenSSH mencakup bagian klien. Artinya, melalui openssh-server Anda dapat terhubung ke server lain. Selain itu, dari mesin klien Anda, Anda dapat meluncurkan terowongan SSH dari server jarak jauh ke host pihak ketiga, dan kemudian host pihak ketiga akan menganggap server jarak jauh sebagai sumber permintaan. Fungsi yang sangat nyaman untuk menutupi sistem Anda. Untuk lebih jelasnya lihat artikel. .
Biasanya tidak ada gunanya menginstal server lengkap pada mesin klien untuk mencegah kemungkinan koneksi jarak jauh ke komputer (untuk alasan keamanan).
Jadi, untuk pengguna baru Anda, Anda harus terlebih dahulu membuat kunci SSH di komputer tempat Anda akan mengakses server:
ssh-keygen -t rsa Kunci publik disimpan dalam sebuah file .pub dan terlihat seperti serangkaian karakter acak yang dimulai dengan ssh-rsa.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname
Kemudian, sebagai root, buat direktori SSH di server di direktori home pengguna dan tambahkan kunci publik SSH ke file authorized_keysmenggunakan editor teks seperti Vim:
mkdir -p /home/user_name/.ssh && touch /home/user_name/.ssh/authorized_keysvim /home/user_name/.ssh/authorized_keysTerakhir, atur izin yang benar untuk file tersebut:
chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keysdan ubah kepemilikan ke pengguna ini:
chown -R username:username /home/username/.sshDi sisi klien, Anda perlu menentukan lokasi kunci rahasia untuk otentikasi:
ssh-add DIR_PATH/keylocationSekarang Anda dapat masuk ke server dengan nama pengguna menggunakan kunci ini:
ssh [username]@hostnameSetelah otorisasi, Anda dapat menggunakan perintah scp untuk menyalin file, utilitas untuk memasang sistem file atau direktori dari jarak jauh.
Dianjurkan untuk membuat beberapa salinan cadangan kunci pribadi, karena jika Anda menonaktifkan otentikasi kata sandi dan kehilangannya, Anda tidak akan bisa masuk ke server Anda sendiri sama sekali.
Seperti disebutkan di atas, di SSH Anda perlu menonaktifkan otentikasi untuk root (untuk alasan ini kami membuat pengguna baru).
Di CentOS/Red Hat kami menemukan garisnya PermitRootLogin yes dalam file konfigurasi /etc/ssh/sshd_config dan mengubahnya:
PermitRootLogin no Di Ubuntu tambahkan baris PermitRootLogin no ke file konfigurasi 10-my-sshd-settings.conf:
sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.confSetelah memverifikasi bahwa pengguna baru diautentikasi menggunakan kunci mereka, Anda dapat menonaktifkan otentikasi kata sandi untuk menghilangkan risiko kebocoran kata sandi atau kekerasan. Sekarang, untuk mengakses server, penyerang perlu mendapatkan kunci pribadi.
Di CentOS/Red Hat kami menemukan garisnya PasswordAuthentication yes dalam file konfigurasi /etc/ssh/sshd_config dan mengubahnya sebagai berikut:
PasswordAuthentication no Di Ubuntu tambahkan baris PasswordAuthentication no untuk mengajukan 10-my-sshd-settings.conf:
sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.confUntuk petunjuk tentang cara mengaktifkan otentikasi dua faktor melalui SSH, lihat .
Tembok api
Firewall memastikan bahwa hanya lalu lintas pada port yang Anda izinkan secara langsung yang akan masuk ke server. Hal ini melindungi terhadap eksploitasi port yang secara tidak sengaja diaktifkan oleh layanan lain, sehingga sangat mengurangi permukaan serangan.
Sebelum memasang firewall, Anda perlu memastikan bahwa SSH termasuk dalam daftar pengecualian dan tidak akan diblokir. Jika tidak, setelah memulai firewall, kami tidak akan dapat terhubung ke server.
Distribusi Ubuntu dilengkapi dengan Firewall Tidak Rumit (), dan dengan CentOS/Red Hat - .
Mengizinkan SSH di firewall di Ubuntu:
sudo ufw allow ssh Di CentOS/Red Hat kami menggunakan perintah firewall-cmd:
sudo firewall-cmd --zone=public --add-service=ssh --permanentSetelah prosedur ini, Anda dapat memulai firewall.
Di CentOS/Red Hat kami meluncurkan layanan systemd untuk firewalld:
sudo systemctl start firewalld
sudo systemctl enable firewalldDi Ubuntu kami menggunakan perintah berikut:
sudo ufw enable
Fail2Ban
Layanan menganalisis log server dan menghitung jumlah upaya akses dari setiap alamat IP. Pengaturan menentukan aturan berapa banyak upaya akses yang diperbolehkan dalam interval tertentu - setelah itu alamat IP ini diblokir untuk jangka waktu tertentu. Misalnya, kami mengizinkan 5 upaya otentikasi yang gagal melalui SSH dalam jangka waktu 2 jam, setelah itu kami memblokir alamat IP ini selama 12 jam.
Menginstal Fail2Ban di CentOS dan Red Hat:
sudo yum install fail2banInstalasi di Ubuntu dan Debian:
sudo apt install fail2banMeluncurkan:
systemctl start fail2ban
systemctl enable fail2ban Program ini memiliki dua file konfigurasi: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Pembatasan larangan ditentukan dalam file kedua.
Penjara untuk SSH diaktifkan secara default dengan pengaturan default (5 upaya, interval 10 menit, larangan selama 10 menit).
[DEFAULT] abaikan perintah = bantime = 10 menit waktu pencarian = 10 menit percobaan ulang maks = 5
Selain SSH, Fail2Ban dapat melindungi layanan lain di server web nginx atau Apache.
Pembaruan keamanan otomatis
Seperti yang Anda ketahui, kerentanan baru selalu ditemukan di semua program. Setelah informasi dipublikasikan, eksploitasi ditambahkan ke paket eksploitasi populer, yang banyak digunakan oleh peretas dan remaja saat memindai semua server secara berurutan. Oleh karena itu, sangat penting untuk menginstal pembaruan keamanan segera setelah tersedia.
Server Ubuntu mengaktifkan pembaruan keamanan otomatis secara default, jadi tidak diperlukan langkah tambahan.
Di CentOS/Red Hat Anda perlu menginstal aplikasi dan nyalakan pengatur waktu:
sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timerPemeriksaan pengatur waktu:
sudo systemctl status dnf-automatic.timer
Mengubah port default
SSH dikembangkan pada tahun 1995 untuk menggantikan telnet (port 23) dan ftp (port 21), sehingga pembuat programnya adalah Tatu Iltonen , dan itu disetujui oleh IANA.
Secara alami, semua penyerang mengetahui port mana yang menjalankan SSH - dan memindainya bersama dengan port standar lainnya untuk mengetahui versi perangkat lunak, untuk memeriksa kata sandi root standar, dan sebagainya.
Mengubah port standar - kebingungan - mengurangi volume lalu lintas sampah, ukuran log dan beban pada server beberapa kali, dan juga mengurangi permukaan serangan. Meskipun beberapa (keamanan melalui ketidakjelasan). Pasalnya, teknik ini bertentangan dengan fundamental . Oleh karena itu, misalnya, Institut Standar dan Teknologi Nasional AS menunjukkan perlunya arsitektur server terbuka: “Keamanan suatu sistem tidak boleh bergantung pada kerahasiaan implementasi komponen-komponennya,” kata dokumen tersebut.
Secara teori, mengubah port default bertentangan dengan praktik arsitektur terbuka. Namun dalam praktiknya, volume lalu lintas berbahaya justru menurun, jadi ini adalah tindakan yang sederhana dan efektif.
Nomor port dapat dikonfigurasi dengan mengubah arahan Port 22 dalam file konfigurasi . Hal ini juga ditunjukkan oleh parameter -p <port> в . Klien dan program SSH juga mendukung parameter -p <port>.
Parameter -p <port> dapat digunakan untuk menentukan nomor port saat menghubungkan menggunakan perintah ssh di Linux. DI DALAM и scp parameter digunakan -P <port> (huruf besar P). Menentukannya dari baris perintah akan menimpa nilai apa pun dalam file konfigurasi.
Jika ada banyak server, hampir semua tindakan untuk melindungi server Linux ini dapat diotomatiskan dalam skrip. Namun jika hanya ada satu server, maka lebih baik mengontrol prosesnya secara manual.
Tentang Hak Periklanan
Pesan dan mulai bekerja segera! konfigurasi apa pun dan dengan sistem operasi apa pun dalam satu menit. Konfigurasi maksimum akan memungkinkan Anda bersenang-senang - 128 inti CPU, RAM 512 GB, NVMe 4000 GB. Cukup epik :)
Sumber: www.habr.com
