Menjalankan Lynis pertama kali pada VPS baru biasanya memberi angka sekitar 60 dan daftar saran panjang yang tidak jelas harus dimulai dari mana. Kabar baik: 80 sampai 85 adalah pekerjaan satu malam, dan sebagian besar langkahnya bukan kosmetik melainkan benar-benar layak dilakukan. Kabar buruk: lima belas poin terakhir tak terjangkau pada mesin virtual sewaan, dan mengejarnya adalah kesalahan.
Apa yang ditunjukkan indeks dan apa yang tidak
Indeks hardening adalah rasio uji yang lolos terhadap totalnya, dengan pembobotan — bukan persentase keamanan. Lynis menjalankan sekitar tiga ratus uji dan menghasilkan dua daftar terpisah: warnings, yang tampak seperti masalah sungguhan, dan suggestions, yang bisa diperbaiki. Selalu mulai dari peringatan; biasanya jumlahnya hanya segelintir.
Seratus poin tidak pernah terjadi: sebagian saran menuntut keputusan yang diambil saat memasang sistem (partisi terpisah untuk /home, /tmp dan /var), sebagian menuntut akses ke bootloader yang tidak dimiliki VPS, dan sebagian saling bertentangan. Dan membandingkan indeks Anda dengan milik orang lain tidak ada gunanya: Lynis memotong poin untuk apa yang berjalan di mesin. Setiap layanan yang berjalan berarti satu port terbuka lagi, konfigurasinya sendiri dan selusin saran baru, karena itulah angka tinggi lebih sering dijumpai di tempat yang tidak menjalankan apa pun selain SSH. Untuk server kerja dengan situs, basis data dan surat, 85 adalah hasil yang bagus.
Jalankan sebagai root
sudo lynis audit system
Tanpa sudo, Lynis melewati setiap uji yang memerlukan berkas sistem dan melaporkan indeks yang lebih rendah — bukan karena servernya buruk melainkan karena pemeriksaannya tidak terlihat. Laporan ditulis ke /var/log/lynis-report.dat, log yang bisa dibaca ada di /var/log/lynis.log.
Setiap baris keluaran diawali pengenal uji, misalnya SSH-7408 atau KRNL-6000. Pengenal itulah yang dipakai untuk menemukan penjelasan sekaligus cara mematikan uji — ingat bentuknya, semua yang di bawah berputar di sekitar ini.
Apa yang benar-benar menggeser angkanya
SSH (SSH-7408). Blok terberat: satu uji memeriksa selusin parameter sekaligus. Jangan ubah seluruh sshd_config; letakkan berkas terpisah supaya pembaruan paket tidak menghapus kerja Anda:
sudo tee /etc/ssh/sshd_config.d/10-hardening.conf <<'EOF'
PermitRootLogin no
PasswordAuthentication no
MaxAuthTries 3
MaxSessions 2
X11Forwarding no
AllowTcpForwarding no
ClientAliveInterval 300
ClientAliveCountMax 2
LogLevel VERBOSE
TCPKeepAlive no
EOF
sudo sshd -t && sudo systemctl reload ssh
sshd -t sebelum memuat ulang layanan adalah wajib: kesalahan pada konfigurasi saat sesi Anda masih hidup akan meninggalkan Anda di luar. Dan sebelum menetapkan PasswordAuthentication no, pastikan kuncinya benar-benar bekerja — dari terminal kedua yang terbuka.
Parameter kernel (KRNL-6000). Uji ini memeriksa sekitar dua lusin nilai sysctl. Berkas untuk mereka:
sudo tee /etc/sysctl.d/99-hardening.conf <<'EOF'
kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
kernel.sysrq = 0
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.log_martians = 1
EOF
sudo sysctl --system
Perkakas yang belum ada. Bagian yang cukup besar dari saran hanyalah «pasang yang belum ada»: auditd (pencatatan peristiwa sistem), aide (integritas berkas), debsums (integritas paket), unattended-upgrades (pembaruan keamanan otomatis), sysstat dan acct (pencatatan proses), pemindai malware. Masing-masing menutup satu dua saran, tetapi jangan pasang demi poin: tanpa mereka, setelah sebuah insiden Anda tidak akan bisa menyusun ulang apa pun.
Hal-hal kecil dengan rasio usaha terhadap manfaat yang bagus. umask 027 di /etc/login.defs; masa berlaku kata sandi di berkas yang sama; spanduk di /etc/issue dan /etc/issue.net; kompiler yang hanya bisa dibaca root (chmod 700 /usr/bin/gcc). Jujur soal spanduk: mereka tidak berbuat apa-apa untuk keamanan, mereka formalitas hukum — tetapi memang memberi poin.
Satu jebakan di login.defs
Menyunting umask dengan mengganti baris memakai sed sering menyisakan beberapa baris UMASK sekaligus di berkas itu. Lynis lalu tidak menghitung nilainya sama sekali, dan uji AUTH-9328 tetap merah meski pengaturannya tampak sudah dibuat. Periksa setelah menyunting:
grep -c '^UMASK' /etc/login.defs
Harus ada tepat satu. Hal yang sama berlaku untuk setiap parameter lain di berkas itu.
Hasil positif palsu dan cara membungkamnya dengan benar
Sebagian peringatan sama sekali tidak berlaku untuk server Anda. Contoh nyata: pada VPS sebuah penyedia besar, uji PKGS-7388 melaporkan bahwa repositori keamanan tidak ditemukan — semata-mata karena repositori dijabarkan dalam format deb822 dengan rujukan ke berkas mirror, sementara Lynis mencari baris yang sudah dikenalnya. Pembaruan keamanan datang dengan baik-baik saja.
Bungkam itu dengan profil, bukan dengan menghapus baris dari laporan. Berkas profil memakai ekstensi .prf (bukan .prof — di sini mudah kehilangan setengah jam), dan aturan Anda sendiri masuk ke /etc/lynis/custom.prf:
skip-test=PKGS-7388
skip-test=KRNL-5788
Satu aturan: setiap baris perlu komentar di sebelahnya yang menyatakan mengapa uji itu dilewati. Enam bulan lagi Anda tidak akan ingat apakah ia dimatikan karena tidak berlaku atau karena memperbaikinya terlalu merepotkan — dan perbedaan antara kedua hal itulah inti persoalannya.
Yang tidak boleh dilakukan
Jangan mengejar angkanya. Indeks mudah digelembungkan dengan mematikan uji yang merepotkan, dan setelah tingkat tertentu itulah satu-satunya jalan — hanya saja servernya tidak jadi lebih aman karenanya. Yang berguna adalah hal lain: catat nilai Anda sendiri lalu amati perubahannya. Indeks yang turun setelah pembaruan atau setelah orang lain menyunting sebuah konfigurasi adalah sinyal yang jauh lebih berharga daripada besaran mutlaknya.
Justru karena itu Lynis layak dijalankan terjadwal alih-alih sekali saja, dan laporannya disimpan supaya ada bahan pembanding. Bagaimana tampilannya ketika dikumpulkan pada satu halaman — lihat di demo bawah: indeks, daftar peringatan beserta pengenal uji, dan apa yang berubah sejak jalan sebelumnya.