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
- 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:
- Nmap – pemindai jaringan 29 Contoh Perintah Nmap
- Nessus – pemindai keamanan
- OpenVAS – digunakan untuk memindai kerentanan dan manajemen kerentanan komprehensif.
- 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:
- AIDE – Lingkungan Deteksi Intrusi Tingkat Lanjut – http://aide.sourceforge.net/
- ClamAV – Pemindai Antivirus https://www.clamav.net
- Rkhunter – Pemindai Rootkit
- Lynis – Alat Audit dan Pemindaian Keamanan untuk Linux
- Tripwire – Keamanan dan Integritas Data http://www.tripwire.com/
- Fail2Ban – Pencegahan Jaringan Intrusi
- OSSEC – (HIDS) Sistem Deteksi Intrusi Berbasis Host http://ossec.github.io/
- 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.