Primer ini akan memperkenalkan Anda pada keamanan server Linux dasar. Meskipun berfokus pada Debian/Ubuntu, Anda dapat menerapkan semua yang disajikan di sini ke distribusi Linux lainnya. Saya juga mendorong Anda untuk meneliti materi ini dan memperluasnya jika ada.
1. Perbarui server Anda
Hal pertama yang harus Anda lakukan untuk mengamankan server Anda adalah memperbarui repositori lokal dan meningkatkan sistem operasi dan aplikasi yang diinstal dengan menerapkan patch terbaru.
Di Ubuntu dan Debian:
$ sudo apt update && sudo apt upgrade -y
Di Fedora, CentOS, atau RHEL:
$ sudo dnf upgrade
2. Buat akun pengguna istimewa baru
Selanjutnya, buat akun pengguna baru. Anda tidak boleh masuk ke server Anda sebagai root . Sebagai gantinya, buat akun Anda sendiri ("
Mulailah dengan membuat pengguna baru:
$ adduser <username>
Berikan akun pengguna baru Anda sudo hak dengan menambahkan (-a ) sudo grup (-G ) ke keanggotaan grup pengguna:
$ usermod -a -G sudo <username>
3. Unggah kunci SSH Anda
Anda akan ingin menggunakan kunci SSH untuk masuk ke server baru Anda. Anda dapat mengunggah kunci SSH yang telah dibuat sebelumnya ke server baru menggunakan ssh-copy-id perintah:
$ ssh-copy-id <username>@ip_address
Sekarang Anda dapat masuk ke server baru Anda tanpa harus mengetikkan kata sandi.
4. SSH aman
Selanjutnya, buat tiga perubahan ini:
- Nonaktifkan otentikasi kata sandi SSH
- Batasi root dari login dari jarak jauh
- Batasi akses ke IPv4 atau IPv6
Buka /etc/ssh/sshd_config menggunakan editor teks pilihan Anda dan pastikan baris berikut:
PasswordAuthentication yes
PermitRootLogin yes
terlihat seperti ini:
PasswordAuthentication no
PermitRootLogin no
Selanjutnya, batasi layanan SSH ke IPv4 atau IPv6 dengan memodifikasi AddressFamily pilihan. Untuk mengubahnya agar hanya menggunakan IPv4 (yang seharusnya baik-baik saja bagi kebanyakan orang) buat perubahan ini:
AddressFamily inet
Mulai ulang layanan SSH untuk mengaktifkan perubahan Anda. Perhatikan bahwa ada baiknya untuk memiliki dua koneksi aktif ke server Anda sebelum memulai ulang server SSH. Memiliki koneksi ekstra memungkinkan Anda untuk memperbaiki apa pun jika restart salah.
Di Ubuntu:
$ sudo service sshd restart
Di Fedora atau CentOS atau apa pun yang menggunakan Systemd:
$ sudo systemctl restart sshd
5. Aktifkan firewall
Sekarang Anda perlu menginstal firewall, mengaktifkannya, dan mengonfigurasinya hanya untuk mengizinkan lalu lintas jaringan yang Anda tetapkan. Uncomplicated Firewall (UFW) adalah antarmuka yang mudah digunakan untuk iptables yang sangat menyederhanakan proses konfigurasi firewall.
Anda dapat menginstal UFW dengan:
$ sudo apt install ufw
Secara default, UFW menolak semua koneksi masuk dan mengizinkan semua koneksi keluar. Ini berarti aplikasi apa pun di server Anda dapat menjangkau internet, tetapi apa pun yang mencoba menjangkau server Anda tidak dapat terhubung.
Pertama, pastikan Anda dapat masuk dengan mengaktifkan akses ke SSH, HTTP, dan HTTPS:
$ sudo ufw allow ssh
$ sudo ufw allow http
$ sudo ufw allow https
Kemudian aktifkan UFW:
$ sudo ufw enable
Anda dapat melihat layanan apa yang diizinkan dan ditolak dengan:
$ sudo ufw status
Jika Anda ingin menonaktifkan UFW, Anda dapat melakukannya dengan mengetik:
$ sudo ufw disable
Anda juga dapat menggunakan firewall-cmd, yang sudah diinstal dan diintegrasikan ke dalam beberapa distribusi.
6. Instal Fail2ban
Fail2ban adalah aplikasi yang memeriksa log server mencari serangan berulang atau otomatis. Jika ada yang ditemukan, itu akan mengubah firewall untuk memblokir alamat IP penyerang baik secara permanen atau untuk jangka waktu tertentu.
Anda dapat menginstal Fail2ban dengan mengetik:
$ sudo apt install fail2ban -y
Kemudian salin file konfigurasi yang disertakan:
$ sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Dan mulai ulang Fail2ban:
$ sudo service fail2ban restart
Itu saja. Perangkat lunak akan terus memeriksa file log mencari serangan. Setelah beberapa saat, aplikasi akan membuat daftar alamat IP yang dilarang. Anda dapat melihat daftar ini dengan meminta status layanan SSH saat ini dengan:
$ sudo fail2ban-client status ssh
7. Hapus layanan yang terhubung ke jaringan yang tidak digunakan
Hampir semua sistem operasi server Linux hadir dengan beberapa layanan yang menghadap jaringan diaktifkan. Anda akan ingin menyimpan sebagian besar dari mereka. Namun, ada beberapa yang mungkin ingin Anda hapus. Anda dapat melihat semua layanan jaringan yang berjalan dengan menggunakan ss perintah:
$ sudo ss -atpu
Keluaran dari ss akan berbeda tergantung pada sistem operasi Anda. Ini adalah contoh dari apa yang mungkin Anda lihat. Ini menunjukkan bahwa layanan SSH (sshd) dan Ngnix (nginx) mendengarkan dan siap untuk koneksi:
tcp LISTEN 0 128 *:http *:* users:(("nginx",pid=22563,fd=7))
tcp LISTEN 0 128 *:ssh *:* users:(("sshd",pid=685,fd=3))
Bagaimana Anda menghapus layanan yang tidak digunakan ("
Untuk menghapus layanan yang tidak digunakan di Debian/Ubuntu:
$ sudo apt purge <service_name>
Untuk menghapus layanan yang tidak digunakan di Red Hat/CentOS:
$ sudo yum remove <service_name>
Lebih banyak sumber daya Linux
- Lembar contekan perintah Linux
- Lembar contekan perintah Linux tingkat lanjut
- Kursus online gratis:Ikhtisar Teknis RHEL
- Lembar contekan jaringan Linux
- Lembar contekan SELinux
- Lembar contekan perintah umum Linux
- Apa itu container Linux?
- Artikel Linux terbaru kami
Jalankan ss -atup sekali lagi untuk memverifikasi bahwa layanan yang tidak digunakan tidak lagi diinstal dan dijalankan.
Pemikiran terakhir
Tutorial ini menyajikan minimal yang dibutuhkan untuk mengeraskan server Linux. Lapisan keamanan tambahan dapat dan harus diaktifkan bergantung pada cara server digunakan. Lapisan ini dapat mencakup hal-hal seperti konfigurasi aplikasi individual, perangkat lunak pendeteksi intrusi, dan mengaktifkan kontrol akses, misalnya, autentikasi dua faktor.