Dokumen ini menjelaskan apa yang dimaksud dengan Tolok Ukur CIS, bagaimana kaitan tolok ukur dengan Container-Optimized OS (COS), cara mengaudit status kepatuhan di instance, dan cara memecahkan masalah jika terjadi kegagalan.
Ringkasan
Center for Internet Security (CIS) merilis tolok ukur untuk rekomendasi keamanan praktik terbaik untuk berbagai platform. Tolok Ukur CIS Container-Optimized OS adalah serangkaian rekomendasi untuk mengonfigurasi instance yang menggunakan Container-Optimized OS untuk mendukung postur keamanan yang kuat. Image COS x86 dan ARM mematuhi CIS.
Mengakses Tolok Ukur
Tolok Ukur CIS Container-Optimized OS tersedia di situs CIS:
- Buka halaman download Tolok Ukur CIS.
- Telusuri CIS Google Container-Optimized OS Benchmark.
- Klik Download PDF.
Tingkat rekomendasi keamanan
CIS menentukan tingkat rekomendasi berikut untuk Container-Optimized OS.
Level 1
Rekomendasi di tingkat ini dimaksudkan agar dapat diterapkan di sebagian besar lingkungan. Tingkat ini mencakup rekomendasi seperti berikut:
- Address space layout randomization diaktifkan
/tmp
tidak dapat digunakan untuk menjalankan biner yang dapat dieksekusi- Pengiriman pengalihan paket dinonaktifkan
Level 2
Rekomendasi di tingkat ini memperluas rekomendasi Tingkat 1, sehingga menghasilkan lingkungan keamanan yang lebih ketat. Rekomendasi Level 2 tidak selalu berlaku untuk semua kasus karena mungkin memerlukan perubahan aplikasi. Anda harus mengevaluasi rekomendasi di Level 2 untuk lingkungan Anda sebelum menerapkannya. Tingkat ini mencakup rekomendasi seperti berikut:
- Aturan firewall ada untuk semua port terbuka
- Pengalihan ICMP dan iklan router tidak diterima
- Waktu tunggu shell pengguna default adalah 900 detik atau kurang
Cara Container-Optimized OS mematuhi Tolok Ukur CIS
Mulai dari Milestone 97, image Container-Optimized OS mematuhi CIS Level 1 secara default dan menyediakan opsi untuk mematuhi CIS Level 2. Kami juga menyediakan pemindai yang dapat Anda gunakan untuk mengaudit instance Anda berdasarkan tingkat rekomendasi CIS.
Konfigurasi CIS yang menentukan rekomendasi ada di /usr/share/google/security/cis-compliance/cis_config.textproto
. Pemindai CIS menggunakan konfigurasi untuk memeriksa status kepatuhan instance. Hasil setiap eksekusi pemindai kepatuhan tingkat CIS ditulis ke /var/lib/google/cis_scanner_scan_result.textproto
. File ini ditimpa pada setiap kali pemindai CIS dijalankan. Jika salah satu pemindaian CIS Level 1 atau Level 2 gagal, file cis_scanner_scan_result.textproto
akan berisi daftar semua pemeriksaan yang gagal.
Memeriksa status kepatuhan instance
Image Container-Optimized OS menyediakan layanan systemd berikut untuk pemeriksaan dan konfigurasi kepatuhan:
- cis-level1.service: Diaktifkan secara default dan dimulai saat booting. Saat layanan dimulai, layanan akan memeriksa apakah instance mematuhi CIS Level 1.
- cis-level2.service: Dinonaktifkan secara default. Layanan ini memungkinkan Anda mengonfigurasi instance agar mematuhi CIS Level 2, dan memeriksa status kepatuhan terhadap Level 1 dan Level 2.
Bagian berikut menjelaskan cara memeriksa status kepatuhan instance dan cara mengotomatiskan proses audit.
Memeriksa status kepatuhan CIS Level 1
Untuk melihat apakah instance Anda mematuhi CIS Level 1, periksa status cis-level1.service
:
systemctl status cis-level1
Outputnya mirip dengan hal berikut ini:
Reading scan config from /usr/share/google/security/cis-compliance/cis_config.textproto
Running scan of 62 benchmarks
Scan status: SUCCEEDED
Found 0 non-compliant benchmarks
Writing scan results to /var/lib/google/cis_scanner_scan_result.textproto
Jika ada pemeriksaan yang tidak sesuai ditemukan, lihat Pemeriksaan kepatuhan CIS Level 1/Level 2 gagal.
cis-level1.service
hanya memeriksa kepatuhan terhadap CIS Level 1 satu kali, saat instance di-boot. Untuk mengonfigurasi pemeriksaan kepatuhan berkala, lihat Pemeriksaan berkala status kepatuhan CIS.
Mengonfigurasi kepatuhan CIS Level 2 dan memeriksa status
Anda dapat menggunakan layanan cis-level2
untuk mengonfigurasi instance agar mematuhi CIS Level 2 dan memeriksa status kepatuhan terhadap Level 1 dan Level 2. Layanan systemd mendukung semua rekomendasi CIS Level 2 kecuali untuk rekomendasi berikut:
4.1.1.2 Pastikan Logging berjalan (ID: logging-service-running)
Rekomendasi ini tidak diikutsertakan secara default, tetapi dapat diaktifkan kembali dengan menghapus ID dari daftar tidak diikutsertakan yang dapat ditemukan dalam file
/etc/cis-scanner/env_vars
. Pemeriksaan ini hanya ada di tonggak pencapaian 109 dan yang lebih baru. Pada pencapaian sebelumnya, mengaktifkan fitur Pencatatan sendiri membuat Anda mematuhi rekomendasi ini. Jika Anda mengurungkan penonaktifan, menjalankan layanancis-level2
akan menjalankan skrip yang memulai logging fluent-bit. Tetaplogging-service-running
memilih tidak ikut jika Anda tidak ingin menggunakan pencatatan default kami atau ingin menggunakan pencatatan Anda sendiri.
Untuk rekomendasi berikut, layanan cis-level2
mengonfigurasi instance, tetapi tidak memverifikasi status kepatuhan:
105 dan yang lebih rendah:
- 3.3.1.1 Pastikan kebijakan firewall tolak default IPv6
- 3.3.1.2 Pastikan traffic loopback IPv6 dikonfigurasi
- 3.3.1.3 Pastikan koneksi keluar dan koneksi yang sudah dibuat IPv6 dikonfigurasi
- 3.3.1.4 Pastikan aturan firewall IPv6 ada untuk semua port terbuka
- 3.3.2.1 Pastikan kebijakan firewall tolak default
- 3.3.2.2 Pastikan traffic loopback dikonfigurasi
- 3.3.2.3 Pastikan koneksi keluar dan yang sudah dibuat dikonfigurasi
109 dan yang lebih baru:
- 3.3.1.4 Pastikan aturan firewall IPv6 ada untuk semua port terbuka
Layanan cis-level2
dinonaktifkan secara default. Untuk memulai layanan, jalankan perintah berikut:
systemctl start cis-level2.service
Untuk melihat apakah instance Anda berhasil dikonfigurasi dan mematuhi rekomendasi CIS Level 2, periksa status cis-level2.service
:
systemctl status cis-level2
Outputnya mirip dengan hal berikut ini:
Reading scan config from /usr/share/google/security/cis-compliance/cis_config.textproto
Running scan of 112 benchmarks
Scan status: SUCCEEDED
Found 0 non-compliant benchmarks
Writing scan results to /var/lib/google/cis_scanner_scan_result.textproto
Jika konfigurasi instance gagal atau ada pemeriksaan yang tidak sesuai, lihat Pemecahan masalah.
Layanan cis-level2
mengonfigurasi instance dan memeriksa kepatuhan CIS Level 2 hanya sekali. Untuk mengonfigurasi pemeriksaan kepatuhan berkala, lihat Pemeriksaan berkala status kepatuhan CIS.
Pemeriksaan berkala status kepatuhan CIS
Image Container-Optimized OS menyertakan layanan berikut untuk memeriksa kepatuhan CIS secara berkala:
- cis-compliance-scanner.service: memeriksa status kepatuhan berdasarkan variabel lingkungan yang ditentukan di
/etc/cis-scanner/env_vars
. Secara default, layanan ini memeriksa kepatuhan CIS Level 1 dan dinonaktifkan. - cis-compliance-scanner.timer: berjalan secara berkala
cis-compliance-scanner.service
. Periode default adalah sekali sehari.
Mengonfigurasi layanan pemindai
cis-compliance-scanner.service
bertanggung jawab untuk memeriksa status kepatuhan CIS berdasarkan variabel lingkungan yang ditentukan di /etc/cis-scanner/env_vars
. Secara default, layanan ini memeriksa kepatuhan CIS Level 1.
Untuk memeriksa kepatuhan terhadap CIS Level 2, tetapkan variabel lingkungan LEVEL di /etc/cis-scanner/env_vars
ke 2. File /etc/cis-scanner/env_vars
mirip dengan berikut ini:
# cis-compliance-scanner.service environment variables
# The config file defines which checks to perform by cis_scanner
CONFIG="/usr/share/google/security/cis-compliance/cis_config.textproto"
# Where to store the result of the scan
RESULT="/var/lib/google/cis_scanner_scan_result.textproto"
# Upto which level to scan. It can be 1 or 2
LEVEL="2"
# Extra options that can be passed to cis_scanner
# For valid options, see output of `cis_scanner -h`
EXTRA_OPTIONS=""
Mengonfigurasi timer
Untuk menyiapkan pemindaian kepatuhan berkala, mulai unit cis-compliance-scanner.timer
:
systemctl start cis-compliance-scanner.timer
Secara default, cis-compliance-scanner.timer
dimulai cis-compliance-scanner.service
sekali sehari. Untuk mengubah periode pemindaian, ganti kolom OnUnitActiveSec unit cis-compliance-scanner.timer
:
sudo mkdir /etc/systemd/system/cis-compliance-scanner.timer.d
sudo tee /etc/systemd/system/cis-compliance-scanner.timer.d/override.conf <<EOF
[Unit]
Description=Run CIS Scanner once an hour
[Timer]
OnUnitActiveSec=1h
EOF
Contoh ini menetapkan periode pemindai menjadi sekali setiap jam.
Untuk menerapkan perubahan, muat ulang unit systemd:
systemctl daemon-reload
Memilih tidak ikut pemeriksaan kepatuhan CIS tertentu
Rekomendasi CIS Level 1 dan Level 2 dibuat agar dapat diterapkan di sebagian besar lingkungan. Namun ,beberapa rekomendasi mungkin tidak berlaku untuk lingkungan spesifik Anda. Untuk memilih tidak ikut rekomendasi tertentu, gunakan variabel lingkungan EXTRA_OPTIONS di /etc/cis-scanner/env_vars
.
Contoh file env_vars
berikut memilih tidak menggunakan rekomendasi etc-passwd-permissions
:
# cis-compliance-scanner.service environment variables
# The config file defines which checks to perform by cis_scanner
CONFIG="/usr/share/google/security/cis-compliance/cis_config.textproto"
# Where to store the result of the scan
RESULT="/var/lib/google/cis_scanner_scan_result.textproto"
# Upto which level to scan. It can be 1 or 2
LEVEL="1"
# Extra options that can be passed to cis_scanner
# For valid options:`cis_scanner -h`
EXTRA_OPTIONS="--benchmark-opt-out-ids=etc-passwd-permissions"
Mengotomatiskan pengaktifan dan pemeriksaan status kepatuhan CIS
Anda dapat mengotomatiskan proses pemeriksaan kepatuhan untuk instance menggunakan cloud-init atau Kebijakan OS. Contoh berikut menunjukkan beberapa kasus penggunaan dengan setiap alat:
- Contoh 1: periksa kepatuhan CIS Level 1 sekali sehari.
- Contoh 2: periksa kepatuhan CIS Level 1 sekali per jam.
- Contoh 3: periksa kepatuhan CIS Level 2 sekali sehari.
- Contoh 4: memilih tidak ikut pemeriksaan kepatuhan CIS tertentu.
Menggunakan cloud-init
Sebelum mencoba contoh berikut, pastikan Anda memahami cara mengonfigurasi instance COS dengan cloud-init dengan mengikuti petunjuk di Menggunakan cloud-init dengan format Cloud config.
Contoh 1
Contoh konfigurasi berikut memulai pemindaian berkala CIS Level 1 dengan periode default sekali sehari.
#cloud-config runcmd: # Check the compliance status of the instance once a day. - systemctl start cis-compliance-scanner.timer
Contoh 2
Contoh berikut mengonfigurasi pemindaian berkala CIS Level 1 sekali setiap jam.
#cloud-config # Override cis-compliance-scanner.timer with 1 hour frequency. write_files: - path: /etc/systemd/system/cis-compliance-scanner.timer.d/override.conf permissions: 0600 owner: root content: | [Unit] Description=Run CIS Scanner once an hour [Timer] OnUnitActiveSec=1h runcmd: # Reload systemd units. - systemctl daemon-reload # Check the compliance status of the instance once an hour. - systemctl start cis-compliance-scanner.timer
Contoh 3
Contoh berikut mengonfigurasi pemindaian CIS Level 2 berkala dengan periode default sekali sehari.
#cloud-config runcmd: # Configure the instance for CIS level 2. - systemctl start cis-level2.service # Change the scan level to CIS Level 2. - sed -i 's/^LEVEL=.*$/LEVEL="2"/' /etc/cis-scanner/env_vars # Check the compliance status of the instance once a day. - systemctl start cis-compliance-scanner.timer
Contoh 4
Contoh berikut mengonfigurasi pemindai untuk berjalan sekali sehari dan memilih tidak menggunakan rekomendasi CIS tertentu.
#cloud-config runcmd: # Opt-out of the etc-passwd-permissions check. - sed -i 's/^EXTRA.*$/EXTRA_OPTIONS="--benchmark-opt-out-ids=etc-passwd-permissions"/' /etc/cis-scanner/env_vars # Check the compliance of the instance once a day. - systemctl start cis-compliance-scanner.timer
Menggunakan Kebijakan OS
Anda dapat menggunakan Kebijakan OS untuk mengonfigurasi pemindaian Tolok Ukur CIS. Sebelum memulai, pastikan Anda memahami Kebijakan OS, termasuk hal-hal berikut:
Selain itu, Anda harus menambahkan opsi instanceFilter
dan rollout
dalam contoh berikut untuk deployment.
Contoh 1
Contoh konfigurasi berikut memulai pemindaian berkala CIS Level 1 dengan periode default sekali sehari.
Contoh 2
Contoh berikut mengonfigurasi pemindaian berkala CIS Level 1 sekali setiap jam.
Contoh 3
Contoh berikut mengonfigurasi pemindaian CIS Level 2 berkala dengan periode default sekali sehari.
Contoh 4
Contoh berikut mengonfigurasi pemindai untuk berjalan sekali sehari dan memilih tidak menggunakan rekomendasi CIS tertentu.
Pemecahan masalah
Bagian ini menjelaskan cara menyelesaikan masalah terkait pemindaian tolok ukur CIS.
Mengonfigurasi instance agar mematuhi rekomendasi CIS Level 2 gagal
Layanan cis-level2
pertama-tama mengonfigurasi instance agar mematuhi rekomendasi CIS Level 2, lalu memeriksa kepatuhan terhadap CIS Level 1 dan Level 2. Jika konfigurasi instance gagal, layanan cis-level2
akan keluar dengan pesan error berikut:
Job for cis-level2.service failed because the control process exited with error code.
See "systemctl status cis-level2.service" and "journalctl -xeu cis-level2.service" for details.
Log jurnal akan menyebutkan rekomendasi yang gagal diterapkan pada instance dan mengakibatkan kegagalan layanan systemd cis-level2
.
Pemeriksaan kepatuhan CIS Level 1 atau Level 2 gagal
Hasil pemindaian untuk setiap proses kepatuhan tingkat CIS ditulis di /var/lib/google/cis_scanner_scan_result.textproto
. Jika salah satu pemindaian CIS Level 1 atau Level 2 gagal, file textproto akan berisi daftar semua pemeriksaan yang gagal, seperti dalam contoh berikut:
cat /var/lib/google/cis_scanner_scan_result.textproto
# Output
start_time: {
seconds: 1648241700
nanos: 763152171
}
end_time: {
seconds: 1648241700
nanos: 812992527
}
scanner_version: "1.1.4.3"
benchmark_version: "1.0.0"
status: {
status: SUCCEEDED
}
non_compliant_benchmarks: {
id: "etc-passwd-permissions"
compliance_occurrence: {
non_compliant_files: {
path: "/etc/passwd"
reason: "File permission is 0664, expected the following bits to be set: 0444 and the following bits to be clear: 0133"
}
}
}
compliant_benchmarks: {
id: "etc-passwd-permissions"
compliance_occurrence: {}
}
Untuk mengatasi pemeriksaan yang gagal, gunakan CIS Benchmark dan ikuti langkah-langkah di bagian Remediation
untuk pemeriksaan yang gagal agar instance mematuhi standar. Untuk menemukan rekomendasi mana yang sesuai dengan pemeriksaan yang gagal dalam CIS Benchmark, cari ID non_compliant_benchmark's
dalam file konfigurasi pemindai CIS yang berada di /usr/share/google/security/cis-compliance/cis_config.textproto
.