GNU/Linux >> Belajar Linux >  >> Linux

50 Tip Keamanan Hardening Linux Terbaik:Daftar Periksa Komprehensif

Linux mendukung sebagian besar web dan sejumlah besar workstation di seluruh dunia. Salah satu alasan utama di balik popularitas sistem Linux dan BSD yang terus meningkat adalah kebijakan mereka yang kokoh terkait keamanan. Sistem Linux secara inheren sulit untuk dipecahkan karena prinsip-prinsip desain yang mendasarinya. Namun, tidak ada sistem yang tidak dapat dipecahkan, dan jika Anda tidak memperkuat workstation atau server Linux Anda setara dengan standar terbaru, Anda kemungkinan akan menjadi korban berbagai jenis serangan dan/atau pelanggaran data. Itulah sebabnya kami telah menguraikan 50 kiat pengerasan Linux yang akan membantu Anda meningkatkan keamanan server ke tingkat berikutnya.

Kiat Keamanan Pengerasan Linux untuk Profesional

Keamanan telah menjadi bagian integral dari dunia komputasi. Akibatnya, pengerasan workstation pribadi Anda, serta keamanan server, adalah suatu keharusan. Jadi, lanjutkan membaca dan sertakan tips di bawah ini sebanyak mungkin untuk meningkatkan keamanan mesin Linux Anda.

1. Informasi Host Dokumen

Mendokumentasikan informasi host dapat menjadi sangat bermanfaat dalam jangka panjang. Jika Anda berniat untuk mempertahankan sistem yang sama selama waktu tertentu, kemungkinan hal-hal akan menjadi berantakan di beberapa titik. Namun, jika Anda mendokumentasikan workstation atau server Anda langsung dari hari penginstalannya, Anda akan memiliki gagasan yang kuat tentang infrastruktur sistem secara keseluruhan dan kebijakan yang diterapkan.

Sertakan informasi di bawah ini tentang sistem dalam dokumentasi Anda. Jangan ragu untuk menambahkan beberapa tambahan berdasarkan kebutuhan server Anda.

  • Nama sistem
  • Tanggal pemasangan
  • Nomor aset (nilai yang menandai host di lingkungan bisnis)
  • Alamat IP
  • Alamat MAC
  • Versi kernel
  • Nama administrator

2. Amankan BIOS dan Nonaktifkan USB Booting

Anda harus mengamankan BIOS Anda menggunakan kata sandi yang sesuai sehingga pengguna lain tidak dapat mengakses atau mengubah pengaturan. Karena cukup mudah untuk mengakses menu BIOS di mainboard modern, pengguna akhir dapat mengganti pengaturan yang ada dan memanipulasi konfigurasi sensitif.

Selain itu, pengguna juga dapat menggunakan sistem yang dapat di-boot untuk mengakses data host Anda. Ini juga dapat menimbulkan ancaman terhadap integritas server Anda. Anda dapat menonaktifkan perangkat USB sama sekali dengan menggunakan perintah berikut.

# echo 'install usb-storage /bin/true' >> /etc/modprobe.d/disable-usb-storage.conf

Booting USB juga dapat dimatikan dari menu BIOS. Namun, ini tidak wajib jika Anda menjalankan workstation pribadi yang tidak dapat diakses oleh pengguna lain.

- -

3. Enkripsi Penyimpanan Disk

Mengenkripsi penyimpanan disk Anda terbukti sangat bermanfaat dalam jangka panjang. Ini akan mencegah kebocoran data jika terjadi pencurian atau gangguan pihak ketiga. Untungnya, ada berbagai macam alat enkripsi Linux yang membuat tugas ini tidak merepotkan bagi admin.

Selain itu, distribusi Linux modern menawarkan admin untuk mengenkripsi sistem file Linux mereka selama proses instalasi. Namun, Anda harus tahu bahwa enkripsi dapat memengaruhi throughput kinerja dan kemungkinan akan mempersulit pemulihan data.

4. Enkripsi Komunikasi Data

Karena data yang dikirimkan melalui jaringan dapat dengan mudah ditangkap dan dianalisis menggunakan alat keamanan sumber terbuka, enkripsi data harus menjadi prioritas utama Anda selama proses pengerasan Linux. Banyak alat komunikasi data lawas tidak menggunakan enkripsi yang tepat dan dengan demikian dapat membuat data Anda rentan.

Anda harus selalu menggunakan layanan komunikasi yang aman seperti ssh, scp, rsync, atau sftp untuk transfer data jarak jauh. Linux juga memungkinkan pengguna untuk memasang sistem file jarak jauh menggunakan alat khusus seperti fuse atau sshfs. Coba gunakan enkripsi GPG untuk mengenkripsi dan menandatangani data Anda. Alat Linux lain yang menawarkan layanan enkripsi data termasuk OpenVPN, Lighthttpd SSL, Apache SSL, dan Let's Encrypt.

5. Hindari Layanan Komunikasi Lawas

Sejumlah besar program Unix lama tidak menyediakan keamanan penting selama transmisi data. Ini termasuk FTP, Telnet, rlogin, dan rsh. Tidak masalah apakah Anda mengamankan server Linux atau sistem pribadi Anda, hentikan penggunaan layanan ini untuk selamanya.

Anda dapat menggunakan alternatif lain untuk jenis tugas transfer data ini. Misalnya, layanan seperti OpenSSH, SFTP, atau FTPS memastikan bahwa transmisi data terjadi melalui saluran yang aman. Beberapa dari mereka menggunakan enkripsi SSL atau TLS untuk memperkuat komunikasi data Anda. Anda dapat menggunakan perintah di bawah ini untuk menghapus layanan lama seperti NIS, telnet, dan rsh dari sistem Anda.

# yum erase xinetd ypserv tftp-server telnet-server rsh-server
# apt-get --purge remove xinetd nis yp-tools tftpd atftpd tftpd-hpa telnetd rsh-server rsh-redone-server

Gunakan perintah pertama untuk distribusi berbasis RPM seperti RHEL dan Centos atau sistem apa pun yang menggunakan manajer paket yum. Perintah kedua bekerja pada sistem berbasis Debian/Ubuntu.

6. Tetap Perbarui Kernel dan Paket

Untuk menjaga keamanan server Anda, Anda harus selalu menerapkan pembaruan keamanan terbaru sesegera mungkin. Ini dapat mengurangi permukaan serangan jika ada kerentanan yang ditemukan dalam paket atau modul kernel yang lebih lama. Untungnya, memperbarui sistem sangat mudah dan dapat dilakukan dengan cukup cepat.

# yum update
# apt-get update && apt-get upgrade

Gunakan perintah yum untuk memperbarui sistem RHEL/Centos Anda dan perintah apt untuk distro berbasis Ubuntu/Debian. Selain itu], Anda dapat mengotomatiskan proses ini dengan memanfaatkan pekerjaan cron Linux. Kunjungi panduan kami di crontab Linux untuk mempelajari lebih lanjut tentang tugas cron.

7. Aktifkan SELinux

SELinux atau Security Enhanced Linux adalah mekanisme keamanan yang mengimplementasikan berbagai metode untuk kontrol akses di tingkat kernel. SELinux dikembangkan oleh Red Hat dan telah ditambahkan ke banyak distribusi Linux modern. Anda dapat menganggapnya sebagai satu set modifikasi kernel dan alat ruang pengguna. Anda dapat memeriksa apakah SELinux diaktifkan di sistem Anda atau tidak dengan menggunakan perintah di bawah ini.

# getenforce

Jika kembali menegakkan itu berarti sistem Anda dilindungi oleh SELinux. Jika hasilnya mengatakan permisif itu berarti sistem Anda memiliki SELinux tetapi tidak ditegakkan. Ini akan kembali dinonaktifkan untuk sistem di mana SELinux sepenuhnya dinonaktifkan. Anda dapat menerapkan SELinux dengan menggunakan perintah di bawah ini.

# setenforce 1

8. Minimalkan Paket Sistem

Meminimalkan paket sistem dapat sangat meningkatkan keamanan sistem Anda secara keseluruhan. Karena bug perangkat lunak adalah salah satu penghalang utama keamanan, memiliki lebih sedikit paket berarti permukaan kerentanan semakin kecil. Selain itu, server biasanya mendapatkan peningkatan kinerja yang cukup besar saat mereka bebas dari bloatware yang tidak perlu.

# yum list installed
# yum list <package>
# yum remove <package>

Anda dapat menggunakan perintah yum di atas di Linux untuk membuat daftar perangkat lunak yang diinstal di sistem Anda dan menyingkirkan yang sebenarnya tidak Anda butuhkan. Gunakan perintah di bawah ini jika Anda menjalankan sistem berbasis Debian/Ubuntu.

# dpkg --list
# dpkg --info <package>
# apt-get remove <package>

9. Layanan Jaringan Terpisah

Jika Anda menggunakan layanan jaringan monolitik tradisional di server Anda, penyerang akan mendapatkan akses ke seluruh infrastruktur Anda segera setelah dia mengeksploitasi satu layanan. Misalnya, Anda menjalankan tumpukan LAMP, apa yang terjadi ketika penyerang mengeksploitasi bug di layanan Apache? Dia pada akhirnya akan meningkatkan layanan lain dan kemungkinan akan mendapatkan kontrol sistem penuh.

Namun, jika Anda membagi layanan jaringan dan menggunakan satu jaringan per layanan, serangan akan kurang berhasil. Ini karena penyusup perlu mengeksploitasi setiap jaringan sebelum dia bisa mendapatkan akses sistem penuh. Anda dapat mengikuti langkah-langkah di bawah ini untuk membagi konfigurasi tumpukan LAMP tradisional.

  • Konfigurasikan server file NFS
  • Konfigurasikan server database MySQL
  • Mengonfigurasi server cache Memcached
  • Mengonfigurasi server web Apache+php5
  • Konfigurasikan server Lighttpd untuk data statis
  • Konfigurasikan server Nginx untuk proxy terbalik

10. Menjaga Akun Pengguna dan Kebijakan Kata Sandi

Sistem Unix biasanya memiliki lebih dari satu akun pengguna. Sistem Anda seaman pengguna yang menjalankannya. Jadi, pastikan hanya orang tepercaya yang dapat menjalankan sistem tertentu. Anda dapat menggunakan useradd /modus pengguna perintah untuk menambah dan memelihara akun pengguna baru di mesin Anda.

Selalu terapkan kebijakan kata sandi yang kuat. Kata sandi yang kuat harus lebih dari delapan karakter dan kombinasi huruf, angka, dan karakter khusus setidaknya. Namun, pengguna harus dapat mengingat kata sandi mereka. Selain itu, verifikasi bahwa kata sandi Anda tidak rentan terhadap serangan kamus. Anda dapat menggunakan modul PAM Linux yang disebut pam_cracklib.so untuk melakukan ini.

11. Setel Tanggal Kedaluwarsa Kata Sandi

Metode pengerasan Linux umum lainnya adalah mengaktifkan kedaluwarsa kata sandi untuk semua akun pengguna. Anda dapat dengan mudah menyetel tanggal kedaluwarsa untuk sandi pengguna dengan menggunakan chage perintah di Linux. Sistem Anda akan meminta pengguna untuk menyetel sandi baru setelah sandi yang ada saat kedaluwarsa.

# chage -l mary
# chage -M 30 mary
# chage -E "2020-04-30"

Perintah pertama mencantumkan tanggal kedaluwarsa kata sandi saat ini untuk pengguna mary. Perintah kedua menetapkan tanggal kedaluwarsa setelah 30 hari. Anda juga dapat mengatur tanggal ini menggunakan format YYYY-MM-DD dengan menggunakan perintah ketiga.

12. Terapkan modul PAM Linux

Anda dapat meningkatkan kekuatan sandi dengan memastikan bahwa pengguna tidak dapat menyetel atau menggunakan sandi yang lemah. Cracker kata sandi dapat dengan mudah memaksa mereka dan mendapatkan akses yang tidak sah. Selain itu, batasi penggunaan kembali kata sandi dengan menambahkan baris berikut ke Ubuntu/Debian dan RHEL/Centos masing-masing.

# echo 'password sufficient pam_unix.so use_authtok md5 shadow remember=12' >> /etc/pam.d/common-password
# echo 'password sufficient pam_unix.so use_authtok md5 shadow remember=12' >> /etc/pam.d/system-auth

Sekarang, pengguna Anda tidak akan dapat menggunakan kembali sandi apa pun yang digunakan dalam 12 minggu terakhir. Juga, gunakan tips di bawah ini untuk melarang frasa sandi yang lemah sama sekali.

# apt-get install libpam-cracklib       # install cracklib support on Ubuntu/Debian

Tambahkan baris –

# echo 'password required pam_cracklib.so retry=2 minlen=10 difok=6' >> /etc/pam.d/system-auth

Anda tidak perlu menginstal cracklib di RHEL/Centos. Cukup tambahkan baris berikut.

# echo 'password required /lib/security/pam_cracklib.so retry=2 minlen=10 difok=6' >> /etc/pam.d/system-auth

13. Kunci Upaya Masuk setelah Gagal

Admin harus memastikan bahwa pengguna tidak dapat masuk ke server mereka setelah sejumlah upaya gagal. Ini meningkatkan keamanan sistem secara keseluruhan dengan mengurangi serangan kata sandi. Anda dapat menggunakan perintah faillog Linux untuk melihat upaya login yang gagal.

# faillog
# faillog -m 3
# faillog -l 1800

Perintah pertama akan menampilkan upaya login yang gagal untuk pengguna dari database /var/log/faillog. Perintah kedua menetapkan jumlah maksimum upaya login gagal yang diizinkan menjadi 3. Perintah ketiga menyetel penguncian 1800 detik atau 30 menit setelah jumlah upaya login gagal yang diizinkan.

# faillog -r -u <username>

Gunakan perintah ini untuk membuka kunci pengguna setelah mereka dilarang masuk. Jumlah maksimum upaya login yang gagal untuk pengguna root harus tinggi atau serangan brute force dapat membuat Anda terkunci.

14. Periksa Kata Sandi Kosong

Pengguna adalah tautan terlemah dalam keamanan keseluruhan sistem. Admin perlu memastikan bahwa tidak ada pengguna di sistem yang memiliki frasa sandi kosong. Ini adalah langkah wajib untuk pengerasan Linux yang tepat. Gunakan perintah awk berikut di Linux untuk memverifikasi ini.

# awk -F: '($2 == "") {print}' /etc/shadow

Ini akan ditampilkan jika ada akun pengguna yang memiliki kata sandi kosong di server Anda. Untuk meningkatkan pengerasan server Linux, kunci semua pengguna yang menggunakan frasa sandi kosong. Anda dapat menggunakan perintah di bawah ini untuk melakukan ini dari terminal Linux Anda.

# passwd -l <username>

15. Nonaktifkan Login sebagai Pengguna Super

Admin tidak boleh sering login sebagai root untuk menjaga keamanan server. Sebagai gantinya, Anda dapat menggunakan sudo mengeksekusi perintah terminal Linux yang memerlukan hak istimewa tingkat rendah. Perintah di bawah ini menunjukkan cara membuat pengguna baru dengan hak istimewa sudo.

# adduser <username> sudo

Anda juga dapat memberikan hak istimewa sudo kepada pengguna yang ada dengan menggunakan perintah di bawah ini.

# usermod -a -G sudo <username>

16. Setel Notifikasi Email untuk Pengguna sudo

Anda dapat mengatur pemberitahuan email sehingga setiap kali pengguna menggunakan sudo, admin server mendapat pemberitahuan melalui email. Edit file /etc/sudoers dan tambahkan baris berikut menggunakan editor teks Linux favorit Anda.

# nano /etc/sudoers
mailto "[email protected]"
mail_always on

Ganti email dengan email Anda sendiri atau email staf audit. Sekarang, setiap kali seseorang melakukan tugas tingkat sistem, Anda mendapatkan informasi.

17. Bootloader GRUB Aman

Ada beberapa bootloader Linux yang tersedia saat ini. Namun, GRUB tetap menjadi pilihan utama bagi sebagian besar admin karena rangkaian fiturnya yang beragam. Selain itu, ini adalah bootloader default di banyak distribusi Linux modern. Admin yang mengambil langkah-langkah pengerasan Linux dengan serius harus menetapkan kata sandi yang kuat untuk menu GRUB mereka.

# grub-md5-crypt

Masukkan ini di terminal Anda dan grub akan menanyakan kata sandi Anda. Masukkan kata sandi yang ingin Anda atur dan itu akan menghasilkan hash terenkripsi menggunakan kata sandi Anda. Sekarang, Anda harus memasukkan hash ini ke menu konfigurasi grub Anda.

# nano /boot/grub/menu.lst
or
# nano /boot/grub/grub.conf

Tambahkan hash yang dihitung dengan menambahkan baris di bawah ini di antara baris yang mengatur batas waktu dan gambar splash.

password –md5 <calculated-hash>

18. Validasi UID Pengguna Non-Root

UID atau User-ID adalah nomor non-negatif yang ditetapkan ke pengguna sistem oleh kernel. UID 0 adalah UID dari superuser atau root. Penting untuk memastikan bahwa tidak ada pengguna selain root yang memiliki nilai UID ini. Jika tidak, mereka dapat menyamarkan seluruh sistem sebagai root.

# awk -F: '($3 == "0") {print}' /etc/passwd

Anda dapat mengetahui pengguna mana yang memiliki nilai UID ini dengan menjalankan program awk ini. Outputnya harus berisi hanya satu entri, yang sesuai dengan root.

19. Nonaktifkan Layanan yang Tidak Perlu

Banyak layanan dan daemon dimulai selama boot sistem. Menonaktifkan yang tidak wajib dapat membantu pengerasan Linux dan meningkatkan waktu boot. Karena sebagian besar distribusi modern menggunakan systemd alih-alih skrip init, Anda dapat menggunakan systemctl untuk menemukan layanan ini.

# systemctl list-unit-files --type=service
# systemctl list-dependencies graphical.target

Perintah-perintah ini akan menampilkan layanan dan daemon tersebut. Anda dapat menonaktifkan layanan tertentu dengan menggunakan perintah di bawah ini.

# systemctl disable service
# systemctl disable httpd.service

20. Hapus Sistem X Window (x11)

Sistem X Window atau x11 adalah antarmuka grafis de-facto untuk sistem Linux. Jika Anda menggunakan Linux untuk memberi daya pada server Anda alih-alih sistem pribadi Anda, Anda dapat menghapusnya sepenuhnya. Ini akan membantu meningkatkan keamanan server Anda dengan menghapus banyak paket yang tidak perlu.

# yum groupremove "X Window System"

Perintah yum ini akan menghapus x11 dari sistem RHEL atau Centos. Jika Anda menggunakan Debian/Ubuntu, gunakan perintah berikut.

# apt-get remove xserver-xorg-core

21. Nonaktifkan Sistem X Window (x11)

Jika Anda tidak ingin menghapus x11 secara permanen, Anda dapat menonaktifkan layanan ini. Dengan cara ini, sistem Anda akan boot ke mode teks alih-alih GUI. Edit file /etc/default/grub menggunakan editor teks Linux favorit Anda.

# nano /etc/default/grub

Temukan baris di bawah ini –

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

Sekarang, ubah menjadi –

GRUB_CMDLINE_LINUX_DEFAULT="text"

Terakhir, perbarui file GRUB dengan menggunakan –

# update-grub

Langkah terakhir adalah memberi tahu systemd untuk tidak memuat sistem GUI. Anda dapat melakukannya dengan menjalankan perintah di bawah ini.

# systemctl enable multi-user.target --force
# systemctl set-default multi-user.target

22. Verifikasi Port Pendengaran

Serangan jaringan sangat umum terjadi di server. Jika Anda ingin mempertahankan server yang aman, Anda harus memvalidasi port jaringan yang mendengarkan sesekali. Ini akan memberi Anda informasi penting tentang jaringan Anda.

# netstat -tulpn
# ss -tulpn
# nmap -sT -O localhost
# nmap -sT -O server.example.com

Anda dapat menggunakan salah satu perintah di atas untuk melihat port mana yang mendengarkan permintaan masuk. Kami memiliki panduan sebelumnya yang memberikan diskusi rinci tentang perintah nmap penting di Linux.

23. Selidiki Alamat IP

Jika Anda menemukan IP yang mencurigakan di jaringan Anda, Anda dapat menyelidikinya menggunakan perintah standar Linux. Perintah di bawah ini menggunakan netstat dan awk untuk menampilkan ringkasan protokol yang sedang berjalan.

# netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n

Gunakan perintah di bawah ini untuk menemukan informasi lebih lanjut tentang IP tertentu.

# netstat -nat |grep <IP_ADDR> | awk '{print $6}' | sort | uniq -c | sort -n

Untuk melihat semua alamat IP unik, gunakan perintah berikut.

# netstat -nat | awk '{ print $5}' | cut -d: -f1 | sed -e '/^$/d' | uniq

Masukkan perintah di atas ke wc untuk mendapatkan jumlah total alamat IP unik.

# netstat -nat | awk '{ print $5}' | cut -d: -f1 | sed -e '/^$/d' | uniq | wc -l

Kunjungi panduan kami tentang berbagai perintah jaringan Linux jika Anda ingin mempelajari lebih dalam tentang keamanan jaringan.

24. Konfigurasikan IPtables dan Firewall

Linux menawarkan perlindungan built-in yang sangat baik terhadap permintaan jaringan yang tidak diinginkan dalam bentuk iptables. Ini adalah antarmuka ke mekanisme Netfilter yang disediakan oleh kernel Linux. Anda dapat dengan mudah memblokir alamat IP tertentu atau rentangnya menggunakan iptables.

# iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP

Anda dapat menggunakan perintah di atas untuk memblokir semua permintaan jaringan untuk alamat IP yang diberikan. Lihat manual kami di iptables Linux untuk mempelajari lebih lanjut tentang alat ini. Anda juga dapat menginstal dan menggunakan firewall kuat lainnya.

25. Konfigurasikan Parameter Kernel

Kernel Linux memiliki banyak parameter runtime. Anda dapat dengan mudah mengubah beberapa dari mereka untuk meningkatkan pengerasan Linux. Perintah sysctl memungkinkan admin untuk mengonfigurasi parameter kernel ini. Anda juga dapat memodifikasi file /etc/sysctl.conf untuk tweaking kernel dan meningkatkan keamanan.

Misalnya, tambahkan baris di bawah ini di akhir konfigurasi sysctl Anda untuk memungkinkan sistem reboot setelah 10 detik kernel panik.

# vim /etc/sysctl.conf
kernel.panic=10

Tambahkan baris di bawah ini untuk mengacak alamat untuk halaman mmap base, heap, stack, dan VDSO.

kernel.randomize_va_space=2

Baris berikutnya akan membuat kernel mengabaikan kesalahan ICMP.

net.ipv4.icmp_ignore_bogus_error_responses=1

Anda dapat menambahkan banyak aturan tersebut dan mempersonalisasikannya agar sesuai dengan kebutuhan kernel Anda.

26. Nonaktifkan Izin SUID dan SGID

SUID dan SGID adalah jenis izin file khusus dalam sistem file Linux. Memiliki izin SUID memungkinkan pengguna lain untuk menjalankan file yang dapat dieksekusi seperti mereka adalah pemilik file tersebut. Demikian juga, izin SGID memberikan hak direktori yang serupa dengan pemiliknya tetapi juga memberikan kepemilikan semua file anak dalam sebuah direktori.

Ini buruk karena Anda tidak ingin ada pengguna selain Anda yang memiliki izin tersebut di server yang aman. Anda harus menemukan file apa pun yang mengaktifkan SUID dan SGID dan menonaktifkannya. Perintah berikut masing-masing akan mencantumkan semua file yang memiliki izin SUID dan SGID diaktifkan.

# find / -perm /4000
# find / -perm /2000

Selidiki file-file ini dengan benar dan lihat apakah izin ini wajib atau tidak. Jika tidak, hapus hak SUID/SGID. Perintah di bawah ini akan menghapus SUID/SGID masing-masing.

# chmod 0755 /path/to/file
# chmod 0664 /path/to/dir

27. Membagi Partisi Disk

Sistem file Linux membagi semuanya menjadi beberapa bagian berdasarkan kasus penggunaannya. Anda dapat memisahkan bagian-bagian penting dari sistem file ke dalam berbagai partisi penyimpanan disk Anda. Misalnya, sistem file berikut harus dipecah menjadi beberapa partisi.

  • /usr
  • /rumah
  • /var &/var/tmp
  • /tmp

Anda juga harus membuat partisi terpisah untuk layanan yang berbeda seperti untuk Apache dan root server FTP. Ini membantu mengisolasi bagian sensitif dari sistem Anda. Jadi, bahkan jika pengguna jahat mendapatkan akses ke beberapa bagian dari sistem, dia tidak dapat menjelajahi seluruh sistem dengan bebas.

28. Partisi Sistem Aman

Saat melakukan tugas pengerasan server Linux, admin harus memberikan perhatian ekstra pada partisi sistem yang mendasarinya. Pengguna jahat dapat memanfaatkan partisi seperti /tmp, /var/tmp, dan /dev/shm untuk menyimpan dan menjalankan program yang tidak diinginkan. Untungnya, Anda dapat menerapkan langkah-langkah untuk mengamankan partisi Anda dengan menambahkan beberapa parameter ke file /etc/fstab Anda. Buka file ini menggunakan editor teks Linux.

# vim /etc/fstab

Temukan baris yang berisi lokasi /tmp. Sekarang, tambahkan parameter nosuid, nodev, noexec, dan ro sebagai daftar yang dipisahkan koma setelah default.

Mereka menawarkan fungsi berikut –

  • nosuid – melarang izin SUID pada partisi ini
  • nodev -nonaktifkan perangkat khusus pada partisi ini
  • noexec – nonaktifkan izin eksekusi untuk binari pada partisi ini
  • ro – hanya-baca

29. Aktifkan Kuota Disk

Kuota Disk hanyalah batas yang ditetapkan oleh administrator sistem yang membatasi penggunaan sistem file Linux untuk pengguna lain. Jika Anda memperkuat keamanan Linux Anda, penerapan kuota disk adalah wajib untuk server Anda.

# vim /etc/fstab
LABEL=/home /home ext2 defaults,usrquota,grpquota 1 2

Tambahkan baris di atas ke /etc/fstab untuk mengaktifkan kuota disk untuk sistem file /home. Jika Anda sudah memiliki baris /home, ubah sesuai.

# quotacheck -avug

Perintah ini akan menampilkan semua informasi kuota dan membuat file aquota.user dan aquota.group di /home.

# edquota <user>

Perintah ini akan membuka pengaturan kuota di editor tempat Anda dapat menetapkan batas kuota. Anda dapat mengatur batas lunak dan keras untuk ukuran kuota disk serta jumlah inode. Gunakan perintah di bawah ini untuk melihat laporan penggunaan kuota disk.

# repquota /home

30. Nonaktifkan Konektivitas IPv6

IPv6 atau Internet Protocol versi 6 adalah versi terbaru dari protokol TCP/IP. Muncul dengan daftar fitur yang diperluas dan banyak manfaat kegunaan. Namun, IPv4 masih menjadi pilihan utama bagi sebagian besar server. Jadi, kemungkinan Anda tidak menggunakan IPv6 sama sekali. Dalam kasus seperti itu, Anda harus menonaktifkannya sama sekali.

Dengan menghapus konektivitas jaringan yang tidak perlu, keamanan server Anda akan lebih solid. Jadi, mematikan IPv6 menawarkan efek pengerasan Linux yang masuk akal. Tambahkan baris di bawah ini ke /etc/sysctl.conf untuk menonaktifkan konektivitas IPv6 dari tingkat kernel.

# vim /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Terakhir, jalankan perintah di bawah ini untuk memuat perubahan di server Anda.

# sysctl -p

31. Memelihara File Word-Writable

File yang dapat ditulisi kata adalah file yang dapat digunakan oleh siapa saja untuk menulis. Ini bisa sangat berbahaya karena secara efektif memungkinkan pengguna untuk menjalankan executable. Plus, pengerasan Linux Anda tidak mudah kecuali Anda telah mengatur bit lengket yang sesuai. Bit lengket adalah bit tunggal yang, ketika disetel, mencegah pengguna menghapus direktori orang lain.

Jadi, jika Anda memiliki file yang dapat ditulis dunia yang memiliki bit yang lengket, siapa pun dapat menghapus file-file ini, bahkan jika itu bukan milik mereka. Ini adalah masalah serius lainnya dan akan sering menyebabkan kekacauan pada keamanan server. Untungnya, Anda dapat menemukan semua file tersebut dengan menggunakan perintah di bawah ini.

# find /path/to/dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

Ganti argumen jalur dengan direktori yang mungkin berisi file tersebut. Anda juga dapat memulai dari root '/' sistem file Anda tetapi akan membutuhkan waktu lama untuk dijalankan. Setelah terdaftar, selidiki file secara menyeluruh dan ubah izinnya sesuai kebutuhan.

32. Pertahankan File Noowner

File Noowner adalah file yang tidak memiliki pemilik atau grup yang terkait dengannya. Ini dapat menimbulkan sejumlah ancaman keamanan yang tidak diinginkan. Jadi, admin harus mengambil tindakan yang diperlukan untuk mengidentifikasi ini. Mereka dapat menetapkannya ke pengguna yang sesuai atau menghapusnya seluruhnya.

Anda dapat menggunakan perintah find berikut untuk membuat daftar file noowner yang ada di direktori. Lihat panduan ini untuk mempelajari lebih lanjut tentang perintah find di Linux.

# find /path/to/dir -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print

Periksa hasilnya secara menyeluruh untuk memastikan tidak ada file pemilik yang tidak diinginkan di server Anda.

33. Verifikasi Log Server

Kebanyakan sistem Unix menggunakan standar Syslog untuk mencatat informasi yang berguna mengenai kernel, jaringan, kesalahan sistem, dan banyak lagi. Anda dapat menemukan log ini di lokasi /var/log. Mereka dapat dilihat menggunakan beberapa perintah server terminal di Linux. Misalnya, perintah di bawah ini menampilkan entri log terbaru tentang kernel.

# tail /var/log/kern.log

Demikian pula, Anda dapat berkonsultasi dengan /var/log/auth.log untuk informasi autentikasi.

# less /var/log/auth.log

File /var/log/boot.log menyediakan informasi tentang proses boot sistem.

# less /var/log/boot.log

Anda juga dapat memeriksa informasi perangkat keras dan perangkat dari /var/log/dmesg.

# less /var/log/dmesg

File /var/log/syslog berisi informasi log tentang segala sesuatu di sistem Anda kecuali log otentikasi. Anda harus memeriksanya untuk mendapatkan gambaran umum tentang server Anda.

# less /var/log/syslog

Terakhir, Anda dapat menggunakan journalctl untuk memeriksa jurnal systemd. Ini akan menghasilkan satu ton log yang berguna.

34. Gunakan Paket logrotate

Sistem Linux mengumpulkan log dan menyimpannya untuk admin. Seiring waktu, log ini akan bertambah besar ukurannya dan bahkan dapat menyebabkan kekurangan ruang disk yang signifikan. Paket logrotate sangat berguna dalam kasus ini karena dapat memutar, mengompresi, dan mengirimkan log sistem. Meskipun Anda mungkin mempertanyakan perannya dalam hal pengerasan Linux, ia menawarkan manfaat yang tidak perlu dipertanyakan lagi.

Anda dapat menemukan file konfigurasi khusus layanan logrotate di direktori /etc/logrotate.d. Konfigurasi logrotate global dilakukan melalui /etc/logrotate.conf. Anda dapat mengatur berbagai parameter di sini seperti jumlah hari untuk menyimpan log, apakah akan mengompresnya atau tidak dan sebagainya.

35. Instal Logwatch / Logcheck

File log biasanya berisi banyak informasi, banyak di antaranya tidak relevan dalam hal pengerasan Linux. Untungnya, admin dapat menggunakan paket seperti Logwatch dan Logcheck untuk memantau log yang mencurigakan dengan mudah. Mereka menyaring entri umum yang diharapkan ada di log Anda dan hanya menarik perhatian Anda ke entri yang tidak biasa.

Logwatch adalah penganalisis log yang sangat kuat yang dapat membuat pengelolaan log menjadi lebih mudah. Sangat cocok untuk admin yang mencari solusi lengkap karena menyediakan laporan terpadu dari semua aktivitas di server mereka.

# sudo apt-get install logwatch
# yum install -y logwatch

Anda dapat menggunakan perintah di atas untuk menginstalnya masing-masing di sistem Ubuntu/Debian dan RHEL/Centos. Logcheck jauh lebih sederhana dibandingkan dengan logwatch. Ini mengirimkan admin segera setelah terjadi log yang mencurigakan. Anda dapat menginstalnya dengan –

# sudo apt-get install logcheck
# yum install -y logcheck

36. Instal Solusi IDS

Salah satu metode pengerasan Linux terbaik untuk server adalah menggunakan IDS (Intrusion Detection Software). Editor kami sangat merekomendasikan Advanced Intrusion Detection Environment (AIDE) untuk tujuan ini. Ini adalah IDS berbasis host yang menawarkan banyak fitur canggih, termasuk beberapa algoritme intisari pesan, atribut file, dukungan regex, dukungan kompresi, dan sebagainya.

# apt-get install aide
# yum install -y aide

Anda dapat menginstal di Ubuntu/Debian dan RHEL/Centos menggunakan perintah di atas. Plus, Anda juga harus menginstal checker rootkit jika Anda ingin menjaga keamanan Linux. RootKits adalah program berbahaya yang dirancang untuk mengambil alih kendali sistem. Beberapa alat populer untuk deteksi rootkit adalah Chkrootkit, dan rkhunter.

37. Nonaktifkan Perangkat Firewire/Thunderbolt

Itu selalu merupakan ide yang baik untuk menonaktifkan periferal sebanyak mungkin. Ini membuat server Anda aman dari penyerang yang telah mendapatkan akses langsung ke infrastruktur. Sebelumnya, kami telah menunjukkan cara menonaktifkan perangkat USB. Namun, pengguna jahat masih dapat menghubungkan modul firewire atau thunderbolt.

Firewire adalah nama generik dari antarmuka perangkat keras IEEE 1394. Ini digunakan untuk menghubungkan perangkat digital seperti Camcorder. Nonaktifkan dengan menggunakan perintah berikut.

# echo "blacklist firewire-core" >> /etc/modprobe.d/firewire.conf

Demikian pula, antarmuka thunderbolt menyediakan koneksi antara sistem Anda dan periferal berkecepatan tinggi seperti penyimpanan hard disk, susunan RAID, antarmuka jaringan, dan sebagainya. Anda dapat menonaktifkannya dengan menggunakan perintah di bawah ini.

# echo "blacklist thunderbolt" >> /etc/modprobe.d/thunderbolt.conf

38. Instal Solusi IPS

IPS atau Intrusion Prevention Software melindungi server jaringan dari serangan brute force. Karena sejumlah besar pengguna dan bot jahat mencoba untuk mendapatkan akses ke server jarak jauh Anda, menyiapkan IPS yang tepat akan membantu Anda dalam jangka panjang.

Fail2Ban adalah salah satu solusi IPS paling populer untuk sistem mirip Unix. Itu ditulis menggunakan Python dan tersedia di semua platform yang sesuai dengan POSIX. Ini akan mencari permintaan jaringan yang mengganggu sepanjang waktu dan memblokirnya sesegera mungkin. Install Fail2Ban using the below command.

# apt-get install -y fail2ban
# yum install -y fail2ban

DenyHosts is another popular IPS solution for Linux hardening. It will protect your ssh servers from intrusive brute force attempts. Use the following commands to install in on your Debian or Centos servers.

# apt-get install -y denyhosts
# yum install -y denyhosts

39. Harden the OpenSSH Server

OpenSSH is a software suite consisting of networking utilities that provide secure communication over public networks. The OpenSSH server has become the de-facto application for facilitating ssh connections. However, the bad guys also know this and they frequently target OpenSSH implementations. So, hardening this application should be a top concern for all Linux sysadmin.

For example- always use keys over password when initiating a new session, disable superuser login, disable empty passwords, limit user access, set up firewalls on port 22, set idle timeouts, use TCP wrappers, limit incoming requests, disable host-based authentication, and so on. You may also employ advanced Linux hardening methods like chrooting OpenSSH.

40. Utilize Kerberos

Kerberos is a computer network authentication protocol that allows access to computerized infrastructures based on tickets. It uses very hard to break cryptographic logic which makes systems supported by Kerberos very secure. Admins can protect their system from eavesdropping attacks and similar passive networking attacks very easily if they use the Kerberos protocol.

Kerberos is being developed by MIT and provides several stable releases. You can download the application from their website. Consult the documentation to see how it works and how you can set it up for your usage.

41. Harden Host Network

Admins should employ strong network policies in order to protect their secure servers against malicious hackers. We have already outlined the necessity of using intrusion detection systems and intrusion prevention systems. However, you can harden your host network further by doing the following tasks.

# vim /etc/sysctl.conf
net.ipv4.ip_forward=0
# disbale IP forwarding

net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
# disable send packet redirects

net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
# disable ICMP redirects

net.ipv4.icmp_ignore_bogus_error_responses
# enable bad error message protection

We’ve added comments using the hash symbol to outline the purpose of these network parameters.

42. Utilize AppArmor

AppArmor is a Mandatory Access Control (MAC) mechanism that makes it possible to restrict the usage of system resources based on programs. It allows admins to mandate policies on a program-level rather than users. You can simply create profiles that control the access to network, sockets, file permissions, and so on for your host applications.

Recent Debian/Ubuntu systems come with AppArmor pre-installed. The pre-existing AppArmor profiles are stored in the /etc/apparmor.d directory. You can modify these policies or even add your own policies during the Linux hardening process. Use the below command to view the AppArmor status in your system.

# apparmor_status

43. Secure Web Server

Linux servers are widely used for powering web applications. If you’re using your server for this purpose, you need to harden your server components appropriately. Some of these the PHP runtime, Apache HTTP server, and the Nginx reverse proxy server. Secure your Apache server by adding the below lines in the configuration file.

# vim /etc/httpd/conf/httpd.conf
ServerTokens Prod
ServerSignature Off
TraceEnable Off
Options all -Indexes
Header always unset X-Powered-By
# systemctl restart httpd.service

We’ve prepared a standalone guide on the Nginx server a while ago. Follow the suggestions in that guide to secure your Nginx server. Head over to this documentation for learning the best PHP security practices.

44. Configure TCP Wrappers

TCP wrappers are a host-based network filtering system that allows or denies access to your host services based on pre-set policies. However, for it to work, your host service must be compiled against the libwrap.a Perpustakaan. Some common TCP wrapperd Unix daemons include sshd, vsftpd, and xinetd.

# ldd /sbin/sshd | grep libwrap

This command will notify if a service is supported by TCP wrappers or not. The TCP wrappers system enforces access control using two configuration files, the /etc/hosts.allow and /etc/hosts.deny. For example, add the following lines to /etc/hosts.allow for allowing all incoming requests to the ssh daemon.

# vi /etc/hosts.allow
sshd : ALL

Add the following to /etc/hosts.deny for rejecting all incoming requests to the FTP daemon.

# vi /etc/hosts.deny
vsftpd : ALL

To see more information about the configuration options, consult the tcpd man page, or visit this documentation from FreeBSD.

45. Maintain Cron Access

Linux provides robust automation support by means of cron jobs. In short, you can specify routine tasks using the cron scheduler. Visit our earlier guide on cron and crontab to learn how cron works. Nevertheless, admins must make sure that ordinary users are unable to access or put entries in the crontab. Simply put their usernames in the /etc/cron.deny file to do this.

# echo ALL >>/etc/cron.deny

This command will disable cron for all users in your server except root. To allow access for a specific user, add his username to the /etc/cron.allow file.

46. Disable Ctrl+Alt+Delete

The Ctrl+Alt+Delete key combinations allow users to force reboot many Linux distributions. This can be particularly problematic if you’re managing a secure server. Admins should disable this hotkey in order to maintain proper Linux hardening. You can run the following command to disable this in systemd-based systems.

# systemctl mask ctrl-alt-del.target

If you’re on legacy systems that use init V instead of systemd, edit the /etc/inittab file and comment out the following line by appending a hash before it.

# vim /etc/inittab
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

47. Enable NIC Bonding

NIC or Network Interface Card bonding is a form of link aggregation in Linux. Multiple network interfaces are joined in this method for gaining better resource availability and throughput. If you’re maintaining busy Linux servers, you can use this method for reducing the workload on a single interface and distribute them across multiple interfaces.

The whole process of NIC bonding differs between Debian and RHEL/Centos systems. We will cover them in a standalone guide soon. For now, simply remember that you can achieve better reliability by enabling network bonding.

48. Restrict Core Dumps

Core dumps are memory snapshots that contain crash information of executables. These are created when binaries stop working or crash in simple terms. They contain too much sensitive information about the host system and may threaten your Linux security if fallen into the wrong hands. Thus, it is always a good idea to restrict core dumps on production servers.

# echo 'hard core 0' >> /etc/security/limits.conf
# echo 'fs.suid_dumpable = 0' >> /etc/sysctl.conf
# sysctl -p
# echo 'ulimit -S -c 0 > /dev/null 2>&1' >> /etc/profile

Run the above commands to restrict cor dumps on your server and increase Linux hardening.

49. Enable Exec Shield

The Exec Shield project was developed by Red Hat for protecting Linux systems against automated remote attacks. It performs particularly well against various buffer overflow-based exploits. You can enable exec shield for your Linux server by running the below commands.

# echo 'kernel.exec-shield = 1' >> /etc/sysctl.conf
# echo 'kernel.randomize_va_space = 1' >> /etc/sysctl.conf

This method will work on both Debian and RHEL systems.

50. Create Regular Backups

No matter how many Linux hardening methods you apply, you need to be always prepared for unforeseen problems. Backing up your workstation or server can prove extremely beneficial in the long run. Thankfully, a large number of backup utility for Linux exists to make system backups easier.

Moreover, you must automate the backup process and store your system data safely. Employing disaster management and recovery solutions can be also useful when it comes to data management.

Ending Thoughts

Although Linux is much more secure when compared to home operating systems, admins still need to maintain a set of Linux hardening policies. We have compiled this guide with many of the best practices used by Linux security experts. You should try to employ as many of them as possible. However, do not apply these without understanding their effect on your system. You need to have a foolproof plan as well as a good understanding of server security to keep your system safe from malicious users. Hopefully, we provided you the essential tips you were looking for.


Linux
  1. 10 Aplikasi Pesan Instan Terbaik untuk Linux

  2. Hyper – Aplikasi Terminal Terbaik untuk Linux

  3. Server Web Linux Terbaik

  1. 8 tips untuk baris perintah Linux

  2. Apa VPS Terbaik:Windows atau Linux?

  3. Linux atau Windows- masalah keamanan

  1. Kiat untuk menggunakan perintah teratas di Linux

  2. Manakah Distro Linux Terbaik dalam Ilmu Data?

  3. Praktik terbaik keamanan Wordpress di Linux