23 Tips Keamanan Pengerasan Server CentOS - Bagian 2


Melanjutkan tutorial Cara Mengamankan dan Memperkuat server CentOS sebelumnya, pada artikel kali ini kita akan membahas tips keamanan lainnya yang akan disajikan pada checklist di bawah ini.

Persyaratan

  1. 20 Tips Keamanan Pengerasan Server CentOS – Bagian 1

21. Nonaktifkan Perintah SUID dan SGID yang Tidak Berguna

Jika bit setuid dan setgid disetel pada program biner, perintah ini dapat menjalankan tugas dengan hak pengguna atau grup lain, seperti hak istimewa root yang dapat mengungkap masalah keamanan yang serius.

Seringkali, serangan buffer overrun dapat mengeksploitasi binari yang dapat dieksekusi untuk menjalankan kode tidak sah dengan hak pengguna root.

find /  -path /proc -prune -o -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;

Untuk menghapus bit setuid jalankan perintah di bawah ini:

chmod u-s /path/to/binary_file

Untuk menghapus setgid bit, jalankan perintah di bawah ini:

chmod g-s /path/to/binary_file

22. Periksa File dan Direktori yang Tidak Dimiliki

File atau direktori yang tidak dimiliki oleh akun yang valid harus dihapus atau diberikan izin dari pengguna dan grup.

Keluarkan perintah find di bawah ini untuk membuat daftar file atau direktori tanpa pengguna dan grup.

find / -nouser -o -nogroup -exec ls -l {} \;

23. Daftar File yang Dapat Ditulis Dunia

Menyimpan file yang dapat ditulisi dunia di sistem bisa berbahaya karena siapa pun dapat memodifikasinya. Jalankan perintah di bawah ini untuk menampilkan file yang dapat ditulisi kata, kecuali Symlinks, yang selalu dapat ditulis oleh dunia.

find / -path /proc -prune -o -perm -2 ! -type l –ls

24. Buat Kata Sandi yang Kuat

Buat kata sandi minimal delapan karakter. Kata sandi harus berisi angka, karakter khusus, dan huruf besar. Gunakan pwmake untuk menghasilkan kata sandi 128 bit dari file /dev/urandom.

pwmake 128

25. Terapkan Kebijakan Kata Sandi yang Kuat

Paksa sistem untuk menggunakan kata sandi yang kuat dengan menambahkan baris di bawah ini dalam file /etc/pam.d/passwd.

password required pam_pwquality.so retry=3

Menambahkan baris di atas, kata sandi yang dimasukkan tidak boleh berisi lebih dari 3 karakter dalam urutan monoton, seperti abcd, dan lebih dari 3 karakter berurutan yang identik, seperti 1111.

Untuk memaksa pengguna menggunakan kata sandi dengan panjang minimum 8 karakter, termasuk semua kelas karakter, pemeriksaan kekuatan untuk urutan karakter dan karakter berturut-turut tambahkan baris berikut ke /etc/security /pwquality.conf file.

minlen = 8
minclass = 4
maxsequence = 3
maxrepeat = 3

26. Gunakan Penuaan Kata Sandi

Perintah chage dapat digunakan untuk penuaan kata sandi pengguna. Untuk menyetel sandi pengguna agar masa berlakunya habis dalam 45 hari, gunakan perintah berikut:

chage -M 45 username

Untuk menonaktifkan waktu kedaluwarsa kata sandi gunakan perintah:

chage -M -1 username

Paksa masa berlaku kata sandi segera (pengguna harus mengubah kata sandi pada login berikutnya) dengan menjalankan perintah berikut:

chage -d 0 username

27. Kunci Akun

Akun pengguna dapat dikunci dengan menjalankan perintah passwd atau usermod:

passwd -l username
usermod -L username

Untuk membuka kunci akun, gunakan opsi -u untuk perintah passwd dan opsi -U untuk usermod.

28. Mencegah Akses Shell Akun

Untuk mencegah akun sistem (akun biasa atau akun layanan) mendapatkan akses ke bash shell, ubah root shell ke /usr/sbin/nologin atau /bin/false di file /etc/passwd dengan mengeluarkan perintah di bawah ini:

usermod -s /bin/false username

Untuk mengubah shell saat membuat pengguna baru, jalankan perintah berikut:

useradd -s /usr/sbin/nologin username

29. Kunci Konsol Pengguna Virtual dengan vlock

vlock adalah program yang digunakan untuk mengunci satu beberapa sesi di konsol Linux. Instal program dan mulai mengunci sesi terminal Anda dengan menjalankan perintah di bawah ini:

yum install vlock
vlock

30. Gunakan Sistem Terpusat untuk Mengelola Akun dan Otentikasi

Menggunakan sistem autentikasi terpusat dapat sangat menyederhanakan pengelolaan dan kontrol akun. Layanan yang dapat menawarkan manajemen akun jenis ini adalah IPA Server, LDAP, Kerberos, Microsoft Active Directory, Nis, Samba ADS atau Winbind.

Beberapa layanan ini secara default sangat aman dengan protokol kriptografi dan kriptografi kunci simetris, seperti Kerberos.

31. Paksa Pemasangan Media USB Hanya-Baca

Dengan menggunakan utilitas blockdev Anda dapat memaksa semua media yang dapat dipindahkan untuk dipasang sebagai hanya-baca. Misalnya, buat file konfigurasi udev baru dengan nama 80-readonly-usb.rules di direktori /etc/udev/rules.d/ dengan konten berikut:

SUBSYSTEM=="block",ATTRS{removable}=="1",RUN{program}="/sbin/blockdev --setro %N"

Kemudian, terapkan aturan tersebut dengan perintah di bawah ini:

udevadm control -reload

32. Menonaktifkan Akses Root melalui TTY

Untuk mencegah akun root melakukan log-in sistem melalui semua perangkat konsol (TTY), hapus konten file securetty dengan mengetikkan perintah terminal prompt berikut sebagai root.

cp /etc/securetty /etc/securetty.bak
cat /dev/null > /etc/securetty

Ingatlah bahwa aturan ini tidak berlaku untuk sesi login SSH
Untuk mencegah login root melalui SSH, edit file /etc/ssh/sshd_config dan tambahkan baris di bawah ini:

PermitRootLogin no

33. Gunakan POSIX ACL untuk Memperluas Izin Sistem

Daftar Kontrol Akses dapat menentukan hak akses untuk lebih dari satu pengguna atau grup dan dapat menentukan hak untuk program, proses, file, dan direktori. Jika Anda mengatur ACL pada sebuah direktori, turunannya akan mewarisi hak yang sama secara otomatis.

Misalnya,

setfacl -m u:user:rw file
getfacl file

34. Atur SELinux dalam Mode Berlaku

Peningkatan SELinux pada kernel Linux menerapkan kebijakan Mandatory Access Control (MAC), yang memungkinkan pengguna menentukan kebijakan keamanan yang memberikan izin terperinci untuk semua pengguna, program, proses, file, dan perangkat.

Keputusan kontrol akses kernel didasarkan pada seluruh konteks keamanan yang relevan dan bukan pada identitas pengguna yang diautentikasi.

Untuk mendapatkan status Selinux dan menerapkan kebijakan, jalankan perintah di bawah ini:

getenforce
setenforce 1
sestatus

35. Instal Utilitas Tambahan SELinux

Instal paket policycoreutils-python yang menyediakan utilitas Python tambahan untuk mengoperasikan SELinux: audit2allow, audit2why, chcat , dan semanage.

Untuk menampilkan semua nilai boolean beserta deskripsi singkatnya, gunakan perintah berikut:

semanage boolean -l

Misalnya, untuk menampilkan dan menyetel nilai httpd_enable_ftp_server, jalankan perintah di bawah ini:

getsebool httpd_enable_ftp_server

Untuk membuat nilai boolean tetap ada saat reboot, tentukan opsi -P ke setsebool, seperti yang diilustrasikan pada contoh berikut:

setsebool -P httpd_enable_ftp_server on

36. Gunakan Server Log Terpusat

Konfigurasikan daemon rsyslog untuk mengirim pesan log utilitas sensitif ke server log terpusat. Juga, pantau file log dengan bantuan utilitas logwatch.

Mengirim pesan log ke server jarak jauh memastikan bahwa setelah sistem disusupi, pengguna jahat tidak dapat sepenuhnya menyembunyikan aktivitas mereka, selalu meninggalkan jejak pada file log jarak jauh.

37. Aktifkan Akuntansi Proses

Aktifkan penghitungan proses dengan menginstal utilitas psacct dan gunakan perintah lastcomm untuk menampilkan informasi tentang perintah yang dijalankan sebelumnya sebagaimana dicatat dalam file akuntansi sistem dan sa untuk meringkas informasi tentang perintah yang dijalankan sebelumnya sebagaimana dicatat dalam file akuntansi sistem.

38. Pengerasan /etc/sysctl.conf

Gunakan aturan parameter kernel berikut untuk melindungi sistem:

Menonaktifkan Perutean Sumber

net.ipv4.conf.all.accept_source_route=0

Nonaktifkan penerusan IPv4

ipv4.conf.all.forwarding=0

Nonaktifkan IPv6

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Nonaktifkan penerimaan dan pengiriman paket yang dialihkan ICMP kecuali diperlukan secara khusus.

net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.all.send_redirects=0

Nonaktifkan Penerusan Jalur Terbalik

net.ipv4.conf.all.rp_filter=2

Abaikan semua permintaan gema ICMP (setel ke 1 untuk mengaktifkan)

net.ipv4.icmp_echo_ignore_all = 0

39. Gunakan Layanan VPN untuk Mengakses Tempat Anda melalui Jaringan Publik yang Tidak Dilindungi

Selalu gunakan layanan VPN bagi operator untuk mengakses lokasi LAN dari jarak jauh melalui Internet. Jenis layanan tersebut dapat dikonfigurasi menggunakan solusi sumber terbuka gratis, seperti OpenVPN, atau menggunakan solusi berpemilik, seperti Cisco VPN (instal utilitas baris perintah vpnc yang disediakan oleh Epel Repositories).

40. Lakukan Pemindaian Sistem Eksternal

Evaluasi kerentanan keamanan sistem Anda dengan memindai sistem dari titik jarak jauh melalui LAN Anda menggunakan alat khusus seperti:

  1. Nmap – pemindai jaringan 29 Contoh Perintah Nmap
  2. Nessus – pemindai keamanan
  3. OpenVAS – digunakan untuk memindai kerentanan dan manajemen kerentanan komprehensif.
  4. Nikto – pemindai skrip antarmuka gerbang umum (CGI) yang luar biasa Pindai Kerentanan Web di Linux

41. Melindungi Sistem Secara Internal

Gunakan perlindungan sistem internal terhadap virus, rootkit, malware, dan, sebagai praktik yang baik, instal sistem deteksi intrusi yang dapat mendeteksi aktivitas tidak sah (serangan DDOS, pemindaian port), seperti:

  1. AIDE – Lingkungan Deteksi Intrusi Tingkat Lanjut – http://aide.sourceforge.net/
  2. ClamAV – Pemindai Antivirus https://www.clamav.net
  3. Rkhunter – Pemindai Rootkit
  4. Lynis – Alat Audit dan Pemindaian Keamanan untuk Linux
  5. Tripwire – Keamanan dan Integritas Data http://www.tripwire.com/
  6. Fail2Ban – Pencegahan Jaringan Intrusi
  7. OSSEC – (HIDS) Sistem Deteksi Intrusi Berbasis Host http://ossec.github.io/
  8. Mod_Security – Melindungi Serangan Brute Force atau DDoS

42. Memodifikasi Variabel Lingkungan Pengguna

Tambahkan format tanggal dan waktu untuk menyimpan eksekusi perintah dengan mengeluarkan perintah di bawah ini:

echo 'HISTTIMEFORMAT="%d/%m/%y  %T  "' >> .bashrc'

Paksa untuk langsung merekam HISTFILE setiap kali perintah diketik (bukan logout):

echo ‘PROMPT_COMMAND="history -a"’ >> .bashrc

Batasi sesi login batas waktu. Secara otomatis merobohkan shell ketika tidak ada aktivitas yang dilakukan selama periode waktu idle. Sangat berguna untuk memutuskan sambungan sesi SSH secara otomatis.

echo ‘TMOUT=120’ >> .bashrc

Terapkan semua aturan dengan menjalankan:

source .bashrc

43. Cadangan Data

Gunakan utilitas cadangan, seperti tar, cat, rsync, scp, LVM snapshots, dll untuk menyimpan salinan sistem Anda, sebaiknya di luar lokasi, jika terjadi kegagalan sistem.

Jika sistem disusupi, Anda dapat melakukan pemulihan data dari cadangan sebelumnya.

Terakhir, jangan lupa bahwa tidak peduli berapa banyak tindakan keamanan dan tindakan pencegahan yang Anda lakukan untuk menjaga sistem Anda tetap aman, Anda tidak akan pernah 100% aman sepenuhnya selama mesin Anda terhubung dan dihidupkan.