GNU/Linux >> Belajar Linux >  >> Linux

Konfigurasikan keamanan dasar

Beberapa orang berpikir bahwa ini tidak berbahaya jika tidak ada layanan yang berjalan di server, dan tidak masalah semua port terbuka. Kami tidak setuju. Jika koneksi ke port yang tidak digunakan (dan populer) diblokir atau terputus, maka sebagian besar penyusup jahat akan pindah ke mesin lain di mana port menerima koneksi. Hanya perlu beberapa menit untuk menyiapkan firewall - jadi kami sangat menyarankan Anda melakukannya untuk melindungi server Anda.

Setelah Anda membuat server cloud baru, sebaiknya lakukan tugas berikut untuk meningkatkan keamanan server.

Catatan: Modifikasi kecil pada perintah berikut mungkin diperlukan jika Anda menggunakan distribusi yang berbeda. Jika perlu, lihat dokumentasi sistem operasi Anda.

Masuk ke server

Segera setelah Anda memiliki alamat IP dan kata sandi server Anda, masuk menggunakan perintah SSH berikut:

ssh [email protected]

Catatan :Jika Anda masuk ke server yang dibangun kembali, Anda mungkin melihat pesan yang menyatakan bahwa identifikasi host jarak jauh telah berubah. Saat Anda membangun kembali server cloud, kunci host jarak jauh berubah, yang menunjukkan aktivitas yang tidak biasa atau mencurigakan di komputer Anda. Untuk menghindari masalah ini, hapus entri lama untuk alamat IP server. Di lokalyour Anda komputer, edit SSH known_hosts file dengan menggunakan perintah berikut dan hapus entri apa pun yang mengarah ke alamat IP server cloud Anda:

nano ~/.ssh/known_hosts

Jika komputer lokal Anda menjalankan sistem operasi selain Linux atau Mac OS X, lokasi known_hosts berkas akan berbeda. Lihat dokumentasi OS Anda untuk mempelajari lokasi file ini.

Ubah kata sandi root

Setelah masuk ke server Anda, ubah kata sandi root dengan mengeluarkan perintah berikut:

passwd

Tambahkan Pengguna Admin

Catatan :Jika Anda menyiapkan pengguna SSH tambahan untuk server OnMetal, lihat Membuat Server Cloud OnMetal untuk langkah-langkah OnMetal yang berlaku.

  1. Untuk menambahkan pengguna admin, jalankan perintah berikut dan gantidemo dengan nama pengguna pilihan Anda:

    adduser demo
    

    Catatan :Setelah langkah awal ini, Anda tidak boleh masuk sebagai pengguna root untuk melakukan operasi harian di server Anda. Namun, Anda memerlukan hak istimewa Pengguna Super (sudo) untuk menyelesaikan tugas administratif ini.

  2. Untuk menetapkan hak sudo kepada pengguna admin, jalankan perintah berikut, yang memanggil editor nano secara default pada sistem operasi Ubuntu:

    visudo
    
  3. Di akhir file, tambahkan nama pengguna admin Anda (sebagai ganti demoin contoh berikut) dan string teks berikut:

    demo   ALL=(ALL) ALL
    
  4. Setelah selesai menambahkan baris ini, keluar, konfirmasi, dan simpan file sebagai berikut:

    sebuah. Tekan Ctrl-X untuk keluar.b. Tekan y untuk mengkonfirmasi perubahan.c. Tekan Enter untuk menyimpan file sebagai /etc/sudoers.tmp .

    Catatan :Saat bekerja di editor nano, tombol spasi/hapus bekerja secara tidak terduga, menghapus karakter di depan kursor, bukan di belakangnya. Anda dapat mengatasi masalah ini dengan mengedit /etc/nanorc file (dengan nano, misalnya) dan menghapus komentar pada baris berikut atau menambahkannya:

        set rebinddelete
    

Perilaku baru akan berlaku setelah Anda menyimpan file dan membuka nano lagi.

Menyiapkan kunci publik dan pribadi (keygen SSH)

Salah satu cara efektif untuk mengamankan akses SSH ke server cloud Anda adalah dengan menggunakan publik/pribadi key, yang berarti bahwa kunci publik ditempatkan di server dan kunci pribadi ada di komputer lokal Anda. Hal ini membuat tidak mungkin bagi seseorang untuk masuk hanya dengan menggunakan kata sandi; mereka harus memiliki kunci pribadi. Penyiapan ini terdiri dari langkah-langkah dasar berikut:buat kunci di komputer lokal Anda, salin kunci publik ke server, dan atur izin yang benar untuk kunci tersebut.

Petunjuk berikut mengasumsikan bahwa Anda menggunakan Linux atau Mac OS X. Untuk petunjuk Windows, lihat Pembuatan kunci menggunakan Putty untuk Windows.

Langkah 1. Buat kunci publik dan pribadi

  1. Di komputer lokal Anda, buat folder untuk menyimpan kunci Anda:

    mkdir ~/.ssh
    
  2. Untuk membuat kunci SSH, di lokal . Anda komputer, masukkan perintah berikut:

    ssh-keygen -t rsa
    
    • Id_rsa dan id_rsa.pub dibuat di direktori .ssh. File rsa.pub menyimpan kunci publik. Anda akan menempatkan file ini di server Anda.

    • File id_rsa adalah kunci pribadi Anda. Jangan pernah tampilkan, berikan, atau simpan file ini di komputer umum.

Langkah 2. Salin kunci publik

Anda dapat menggunakan scp perintah untuk menempatkan kunci publik di server Anda.

  1. Saat masih di lokal . Anda komputer, masukkan perintah berikut, gantikan pengguna admin Anda untuk demo, alamat IP dan direktori home pengguna admin:

    scp ~/.ssh/id_rsa.pub [email protected]:/home/demo/
    
  2. Saat diminta, masukkan kata sandi pengguna admin.

  3. Buat direktori di folder beranda pengguna admin di server Anda yang disebut .ssh dan pindahkan kunci pub ke dalamnya, seperti yang ditunjukkan pada contoh berikut:

    mkdir /home/demo/.ssh
    
    mv /home/demo/id_rsa.pub /home/demo/.ssh/authorized_keys
    

Langkah 3. Ubah izin SSH

Setel izin yang benar pada kunci menggunakan perintah berikut, ubah pengguna dan grup "demo" menjadi pengguna dan grup admin Anda:

chown -R demo:demo /home/demo/.ssh
chmod 700 /home/demo/.ssh
chmod 600 /home/demo/.ssh/authorized_keys

Sekarang Anda telah berhasil membuat kunci di komputer lokal Anda, menyalin kunci publik ke server Anda, dan menyetel izin yang benar untuk kunci tersebut.

Ubah konfigurasi SSH

Menjaga layanan SSH pada port default 22 membuatnya menjadi sasaran empuk. Sebaiknya ubah konfigurasi SSH default agar lebih aman.

  1. Berikan perintah berikut:

    nano /etc/ssh/sshd_config
    
  2. Ubah port default 22 ke salah satu pilihan Anda, matikan rootlogin, dan tentukan pengguna mana yang dapat masuk:

    Port 22                           <--- change to a port of your choosing
    Protocol 2
    PermitRootLogin no
    PasswordAuthentication no
    UseDNS no
    AllowUsers demo
    

    Catatan :Nomor port dapat berupa bilangan bulat dari 1025 hingga 65536. Pastikan untuk mencatat nomor port baru dan ingat untuk menghindari konflik port jika nanti Anda mengonfigurasi proses mendengarkan tambahan.

Karena Anda telah menyiapkan kunci publik/pribadi, Anda dapat menyetel parameterPasswordAuthentication ke no. Namun, jika Anda bermaksud mengakses server Anda dari komputer yang berbeda, Anda mungkin ingin membiarkanPasswordAuthentication disetel ke ya. Gunakan kunci pribadi hanya jika komputer lokal aman (yaitu, jangan letakkan kunci pribadi di komputer kantor).

Pengaturan ini belum diaktifkan. Sebelum memulai ulang SSH dengan menggunakan port baru, Anda perlu membuat firewall sederhana dengan menggunakan iptables.

Catatan :Jangan restart SSH dulu.

Siapkan firewall pribadi dengan menggunakan iptables

Utilitas yang disebut iptables adalah firewall default untuk sistem Linux. Ini bekerja dengan menolak koneksi ke port atau layanan yang Anda tentukan.

Catatan: Prosedur di bagian ini tidak berlaku untuk server yang menggunakan systemd . Server yang menggunakan systemd sekarang gunakan frontend firewall lain ke iptables yang disebut FirewallD. Sintaks dan implementasi untuk FirewallD sangat bervariasi. Untuk konfigurasi firewall yang tepat di FirewallDand systemd server, lihat “Pengantar firewalld” di portal pelanggan Red Hat.

Sebagai bagian dari prosedur ini, Anda akan membuka tiga port:ssh , http , dan https.

Anda kemudian akan membuat dua file:

  • /etc/iptables.test.rules

  • /etc/iptables.up.rules

Yang pertama adalah seperangkat aturan pengujian sementara dan yang kedua adalah seperangkat aturan permanen yang akan digunakan iptables.

Catatan :Anda perlu me-root izin pengguna untuk menyelesaikan prosedur. Jika saat ini Anda tidak masuk sebagai root, gunakan perintah sudo di depan perintah berikut.

  1. Keluarkan perintah berikut untuk melihat proses apa yang sedang berjalan:

    iptables -L
    

    Anda akan melihat sesuatu yang mirip dengan ini:

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    

    Ini berarti server menerima apa pun dari siapa pun di port mana pun.

  2. Untuk membangun firewall, buat file /etc/iptables.test.rules dan menambahkan beberapa aturan. Jika Anda telah mengerjakan langkah-langkah ini sebelumnya, file ini tidak boleh kosong:

    nano /etc/iptables.test.rules
    
  3. Ubah dan tambahkan port jika perlu.

  4. Keluarkan perintah berikut untuk menerapkan aturan ke server Anda:

    iptables-restore < /etc/iptables.test.rules
    
  5. Keluarkan perintah berikut untuk mencatat perbedaan apa pun:

    iptables -L
    
  6. Jika tidak ada perubahan pada output, ulangi langkah sebelumnya dan coba lagi.

  7. Periksa aturan dan lihat persis apa yang diterima, ditolak, dan dijatuhkan. Saat Anda puas dengan aturan, simpan secara permanen dengan mengeluarkan perintah berikut:

    iptables-save > /etc/iptables.up.rules
    

    Catatan :Jika server di-boot ulang sebelum Anda menyimpan aturan secara permanen, perubahan akan hilang dan server kembali ke pengaturan sebelumnya.

  8. Tambahkan skrip yang dijalankan sistem saat antarmuka jaringan Anda dimulai. Buat file dengan menjalankan:

    nano /etc/network/if-pre-up.d/iptables
    
  9. Tambahkan baris berikut ke file baru:

    #!/bin/sh
    /sbin/iptables-restore < /etc/iptables.up.rules
    
  10. Simpan perubahan Anda, lalu buat skrip baru dapat dieksekusi:

    chmod +x /etc/network/if-pre-up.d/iptables
    

Mengatur iptables di Red Hat

Jika Anda menggunakan distribusi Red Hat, iptables bekerja sedikit berbeda dari pada sistem operasi Ubuntu. Dengan menggunakan perintah berikut, Anda dapat mengubah set aturan iptables Anda langsung dari baris perintah.

HTTP - port 80

Untuk RHEL 7 dan CentOS 7, gunakan perintah berikut untuk membuka port 80 untuk lalu lintas HTTP (web) di firewall iptables Anda:

sudo firewall-cmd --add-service=http --permanent

Untuk versi OS yang lebih lama, gunakan perintah berikut:

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport http -j ACCEPT

HTTPS/SSL - port 443

Untuk RHEL 7 dan CentOS 7, gunakan perintah berikut untuk membuka port 443 untuk mengamankan lalu lintas HTTP:

sudo firewall-cmd --add-service=https --permanent

Untuk versi OS yang lebih lama, gunakan perintah berikut:

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport https -j ACCEPT

SSH - port 22

Meskipun port 22 terbuka secara default untuk memungkinkan Anda melakukan SSH ke server Anda setelah dibangun, perintah berikut menunjukkan kepada Anda bagaimana Anda akan membuka port 22 di RHEL 7 dan CentOS 7:

sudo firewall-cmd --add-service=ssh -permanent

Jika Anda menyiapkan port khusus untuk SSH, gunakan perintah berikut untuk RHEL7 dan CentOS 7:

sudo firewall-cmd --add-port=<customport>/tcp --permanent

Untuk versi OS yang lebih lama, gunakan perintah berikut untuk membuka port 22:

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport ssh -j ACCEPT

FTP - port 21

FTP adalah layanan umum untuk transfer file, tetapi sebagian besar sudah usang karena ini bukan protokol yang aman. Kami sangat menyarankan untuk menggunakan protokol transfer file yang aman seperti SFTP. Jika Anda benar-benar harus menggunakan FTP, gunakan perintah berikut untuk membuka port default 21 di RHEL 7 dan CentOS 7:

sudo firewall-cmd --add-service=ftp --permanent

Untuk versi OS yang lebih lama, gunakan perintah berikut:

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport ftp -j ACCEPT
sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport ftp-data -j ACCEPT

MySQL - port 3306

Jika Anda perlu membuat koneksi jarak jauh ke database MySQL Anda dari server lain, Anda harus membuka port 3306 di iptables. Untuk RHEL 7 dan CentOS 7, gunakan perintah berikut:

sudo firewall-cmd --add-service=mysql --permanent

Untuk versi OS yang lebih lama, gunakan perintah berikut:

sudo /sbin/iptables -I RH-Firewall-1-INPUT 1 -p tcp --dport mysql -j ACCEPT

Simpan aturan Anda

Gunakan perintah berikut untuk menyimpan semua aturan yang telah Anda buat. Jika tidak disimpan sebelum server Anda di-boot ulang, kumpulan aturan iptables akan kembali ke kumpulan aturan default, memblokir semua lalu lintas kecuali pada port 22. Jika Anda menggunakan RHEL 7 atau CentOS 7, langkah ini tidak diperlukan.

sudo /sbin/service iptables save

Mulai ulang iptables

Perubahan Anda pada iptables hanya berlaku setelah Anda menyimpan aturan dan memulai kembali layanan iptables. Ingat, jika Anda memulai ulang iptables sebelum menyimpan aturan Anda, iptables akan kembali ke kumpulan aturan default.

Untuk RHEL 7 dan CentOS 7, gunakan perintah berikut:

firewall-cmd --reload

Untuk versi OS yang lebih lama, gunakan perintah berikut:

sudo /sbin/service iptables restart

Periksa aturan

Untuk memeriksa aturan setelah memuat ulang firewall di RHEL 7 dan CentOS 7, gunakan perintah berikut:

firewall-cmd --get-active-zones

Ini mengembalikan zona mana yang aktif (yang baru saja Anda simpan semua aturan Anda).

firewall-cmd --zone=<zone> --list-all

Ini mencantumkan layanan yang diaktifkan di zona tertentu.

Mulai ulang ssh

Sekarang Anda dapat me-restart layanan SSH. Tetap masuk saat Anda memulai ulang dan uji dengan koneksi baru. Dengan begitu jika terjadi kesalahan, Anda dapat memecahkan masalah dengan lebih mudah.

Pada sebagian besar distribusi, layanannya adalah sshd, dan Anda memulai ulang dengan perintah:

sudo service sshd restart

Pada sistem operasi Ubuntu dan beberapa distribusi lainnya, layanan ini disebut ssh dan Anda memulai ulang dengan perintah serupa:

sudo service ssh restart

Jika Anda kesulitan membuat sambungan baru setelah memulai ulang SSH, periksa gejalanya untuk menentukan apa yang mungkin salah.

  • Jika waktu koneksi habis, mungkin ada masalah dengan konfigurasi theiptables.
  • Jika Anda mendapatkan peringatan tentang kunci pribadi, kunci Anda mungkin tidak terpasang dengan benar di server (periksa jeda baris tambahan atau karakter yang terlewatkan dalam operasi salin dan tempel).
  • Jika Anda telah membangun kembali server, Anda mungkin perlu menghapus kunci host dari file known_hosts Anda sebelum dapat membuat sambungan.

Jika Anda terkunci

Konfigurasi SSH, Sudo, atau iptables yang salah dapat menyebabkan Anda terkunci dari sistem Anda. Jika ini terjadi, masuk ke Panel Kontrol Cloud TheRackspace dan gunakan Konsol Darurat atau Mode Penyelamatan untuk memperbaiki konfigurasi.

Ini adalah dasar-dasar menghubungkan ke Server Cloud Linux dan keamanan pengaturan. Lihat Windows Cloud Server untuk melakukan langkah-langkah ini di server Windows.


Linux
  1. Cara menginstal dan mengkonfigurasi Server OpenVPN di Debian 10

  2. Cara Mengamankan Server PostgreSQL

  3. Manajemen firewall iptables dasar

  1. Manajemen Pengguna Linux Dasar

  2. Konfigurasikan server MariaDB di CentOS

  3. Mengonfigurasi Keamanan IP di IIS

  1. Cara Menginstal dan Mengkonfigurasi Server VNC di Debian 10

  2. Keamanan NFS Dasar – NFS, no_root_squash dan SUID

  3. Centos 7:Konfigurasi Server DNS