Memecahkan masalah umum penerusan Linux
Dokumen ini membantu Anda mengenali dan memecahkan masalah umum yang mungkin Anda alami saat menggunakan penerusan Linux Google Security Operations.
Penerus tidak dimulai
Forwarder gagal dimulai dan berada dalam loop mulai ulang berkelanjutan dengan kesalahan berikut dalam log:
F0510 06:17:39.013603 202 main_linux.go:153] open /opt/chronicle/external/*.conf: no such file or directory
Kemungkinan penyebab 1: Pemetaan yang salah dalam file konfigurasi
Untuk mengatasi masalah ini, pastikan Anda meneruskan jalur yang benar ke file konfigurasi dan memetakannya ke folder eksternal.
Kemungkinan penyebab 2: SELinux diaktifkan
Periksa file konfigurasi dengan masuk ke container tanpa memulai forwarder dan jalankan perintah berikut:
docker run --name cfps --log-opt max-size=100m --log-opt max-file=10 --net=host -v ~/configuration:/opt/chronicle/external --entrypoint=/bin/bash \ -it gcr.io/chronicle-container/cf_production_
Perintah ini akan menempatkan Anda di shell dari dalam container.
Jalankan perintah berikut:
ls -lrt /opt.chronicle/external/
Jika Anda mendapatkan error izin ditolak, hal ini menunjukkan bahwa penerus tidak dapat membuka file konfigurasi dan oleh karena itu, tidak dapat dimulai.
Untuk menyelesaikan masalah ini, lakukan tindakan berikut:
Periksa status SELinux dengan menjalankan perintah berikut:
sestatus
Jika status SELinux diaktifkan dalam output, jalankan perintah berikut untuk menonaktifkannya:
setenforce 0
Log tidak mencapai tenant Google SecOps
Kemungkinan penyebab 1: Resolusi DNS
Periksa apakah host tidak dapat menyelesaikan alamat atau menghubungi Google SecOps dengan menjalankan perintah berikut:
nslookup malachiteingestion-pa.googleapis.com
Jika perintah gagal, hubungi tim jaringan Anda untuk mendapatkan penyelesaian.
Kemungkinan penyebab 2: Firewall
Periksa apakah firewall lokal memblokir komunikasi antara Google SecOps dan forwarder dengan menjalankan perintah berikut:
firewall-cmd --state
Jika firewall diaktifkan, nonaktifkan dengan menjalankan perintah berikut:
systemctl stop firewalld
Kemungkinan penyebab 3: Ukuran buffer
Periksa apakah ini masalah ukuran buffer dengan mencari error berikut dalam log:
Memory ceiling (1073741824) reached, freeing a batch from the backlog
Untuk menyelesaikan masalah ini, lakukan tindakan berikut:
Aktifkan kompresi di file konfigurasi penerusan.
Tingkatkan ukuran buffer dengan memperbarui parameter
max_memory_buffer_bytes
danmax_file_buffer_bytes
dalam file konfigurasi. Parameter ini menunjukkan buffer batch backlog yang disimpan di memori atau disk.
Penerus dan host tidak menerima log
Jika host dan penerus tidak menerima log, periksa status port dengan menjalankan perintah berikut untuk setiap port:
netstat -a | grep PORT
Ganti PORT
dengan ID port yang ingin Anda periksa.
Jika perintah tidak memberikan output apa pun, hal ini menunjukkan bahwa host tidak memproses permintaan di port tersebut dan Anda harus berkonsultasi dengan administrator jaringan Anda.
Jika output dari perintah menunjukkan bahwa host memproses port dan penerusan masih belum menerima log, lakukan hal berikut:
Hentikan Docker dengan menjalankan perintah berikut:
docker stop cfps
Jalankan salah satu perintah berikut berdasarkan penyiapan jaringan Anda.
Untuk TCP:
nc -l PORT
Untuk UDP:
nc -l -u PORT
Ganti
PORT
dengan ID port yang ingin Anda pecahkan masalahnya.Mulai ulang layanan eksternal Anda dan periksa apakah masalahnya telah teratasi. Jika masalah berlanjut, [hubungi dukungan SecOps Google.
Forwarder tidak menerima log, tetapi host menerima log
Jika host menerima log, tetapi penerusnya tidak, hal ini menunjukkan bahwa penerus tidak memproses port yang ditentukan dalam file konfigurasi.
Untuk menyelesaikan masalah ini, lakukan tindakan berikut:
Buka dua jendela terminal di sistem Anda, satu untuk mengonfigurasi penerusan dan satu untuk mengirim pesan pengujian ke host.
Di terminal pertama (forwarder), mulai Docker tanpa memulai forwarder dengan menjalankan perintah berikut:
docker run \ --name cfps \ --log-opt max-size=100m \ --log-opt max-file=10 \ --net=host \ -v ~/config:/opt/chronicle/external \ --entrypoint=/bin/bash \ -it gcr.io/chronicle-container/cf_production_stable
Tentukan port yang harus diproses oleh penerusan:
nc -l PORT
Ganti
PORT
dengan ID port yang ingin Anda pecahkan masalahnya.
Di terminal kedua (host), kirim pesan pengujian di port dengan menjalankan perintah berikut:
echo "test message" | nc localhost PORT
Ganti
PORT
dengan ID port yang ingin Anda pecahkan masalahnya.Jalankan kembali perintah
docker
. Tentukan flag-p
dengan port tempat forwarder harus memproses permintaan dengan menjalankan perintah berikut:docker run \ --detach \ –name cfps \ --restart=always \ --log-opt max-size=100m \ --log-opt max-file=10 --net=host \ —v /root/config:/opt/chronicle/external \ -p 11500:11800 \ gcr.io/chronicle-container/cf_production_stable
Error umum dalam file log penerusan
Anda dapat melihat log penerusan dengan menjalankan perintah berikut:
sudo docker logs cfps
Permintaan berisi argumen yang tidak valid
File log penerusan menampilkan pesan error berikut:
I0912 18:04:15.187321 333 uploader.go:181] Sent batch error: rpc error: code = InvalidArgument desc = Request contains an invalid argument.
E0912 18:04:15.410572 333 batcher.go:345] [2_syslog_CISCO_FIREWALL-tid-0] Error exporting batch: rpc error: code = InvalidArgument desc = Request contains an invalid argument.
I0912 18:04:15.964923 333 uploader.go:181] Sent batch error: rpc error: code = InvalidArgument desc = Request contains an invalid argument.
Penyelesaian:
Error ini dapat terjadi saat jenis log yang tidak valid ditambahkan. Pastikan hanya jenis log yang valid yang ditambahkan. Dalam contoh pesan error, CISCO\_FIREWALL
bukan
jenis log yang valid. Untuk mengetahui daftar jenis log yang valid, buka Jenis log yang didukung dan parser default.
Tidak dapat menemukan server
File log penerusan menampilkan pesan error berikut:
{"log":"Failure: Unable to find the server at accounts.google.com.\n","stream":"stderr","time":"2019-06-12T18:26:53.858804303Z"}`
{"log":"+ [[ 1 -ne 0 ]]\n","stream":"stderr","time":"2019-06-12T18:26:53.919837669Z"}
{"log":"+ err 'ERROR: Problem accessing the Chronicle bundle.'\n","stream":"stderr","time":"2019-06-12T18:26:53.919877852Z"}
Penyelesaian:
Hubungi tim jaringan Anda untuk memastikan jaringan berfungsi.
Tanda tangan JWT tidak valid
File log penerusan menampilkan pesan error berikut:
E0330 17:05:28.728021 162 stats_manager.go:85] send(): rpc error: code = Unauthenticated desc = transport: OAuth 2.0: cannot fetch token: 400 Bad Request Response: {"error":"invalid_grant","error_description":"Invalid JWT Signature."}
E0404 17:05:28.729012 474 memory.go:483] [1_syslog_FORTINET_FIREWAL-tid-0] Error exporting batch: rpc error: code = Unauthenticated desc = transport: OAuth 2.0: cannot fetch token: 400 Bad Request Response: {"error":"invalid_grant","error_description":"Invalid JWT Signature."}
Penyelesaian:
Error ini dapat terjadi jika file konfigurasi penerusan memiliki detail kunci rahasia yang salah. Hubungi dukungan SecOps Google untuk membantu menyelesaikan masalah ini.
Token harus berupa token berjangka pendek
File log penerusan menampilkan pesan error berikut:
token: 400 Bad Request Response:
{"error":"invalid_grant","error_description":"Invalid JWT: Token must be a
short-lived token (60 minutes) and in a reasonable timeframe. Check your iat and exp values in the JWT claim."} I0412 05:14:16.539060 480
malachite.go:212] Sent batch error: rpc error: code = Unauthenticated desc =
transport: OAuth 2.0: cannot fetch token: 400 Bad Request Response:
{"error":"invalid_grant","error_description":"Invalid JWT: Token must be a
short-lived token (60 minutes)
Penyelesaian:
Error ini dapat terjadi saat jam sistem host dan server tidak sinkron. Sesuaikan waktu di host atau coba gunakan NTP untuk menyinkronkan waktu.
Tidak ada file atau direktori tersebut
File log penerusan menampilkan pesan error berikut:
++ cat '/opt/chronicle/external/*.conf'
cat: '/opt/chronicle/external/*.conf': No such file or directory
Penyelesaian:
Error ini dapat terjadi saat penerusan dimulai dengan pemetaan drive yang salah. Gunakan
jalur direktori lengkap dalam file konfigurasi (Anda dapat memperoleh jalur dengan menjalankan
perintah pwd
).
Gagal mengambil ID pelanggan dari file konfigurasi
File log penerusan menampilkan pesan error berikut:
+ err 'ERROR: Failed to retrieve customer ID from configuration file.'
++ date +%Y-%m-%dT%H:%M:%S%z
+ echo '[2023-06-28T09:53:21+0000]: ERROR: Failed to retrieve customer ID from configuration file.'
[2023-06-28T09:53:21+0000]: ERROR: Failed to retrieve customer ID from configuration file.
+ err '==> Please contact the Chronicle support team.'
Penyelesaian:
Error ini disebabkan oleh pemetaan yang salah atau jika file konfigurasi tidak ada di direktori. Gunakan jalur direktori lengkap dalam file konfigurasi
(Anda bisa mendapatkan jalur dengan menjalankan perintah pwd
). Pastikan perintah
docker run
yang benar dijalankan dan file konfigurasi ada di
lokasi berikut:
gcr.io/chronicle-container/cf_production_stable
Contoh kode berikut menunjukkan perintah docker run
:
docker run \
--detach \
--name cfps \
--restart=always \
--log-opt max-size=100m \
--log-opt max-file=10 \
--net=host \
-v /opt/chronicle/config:/opt/chronicle/external \
gcr.io/chronicle-container/cf_production_stable
Perintah Docker yang berguna
Anda dapat mengumpulkan informasi tambahan tentang penginstalan Docker menggunakan perintah berikut:
docker info
Layanan Docker dapat dinonaktifkan secara default. Untuk memeriksa apakah fitur ini dinonaktifkan, jalankan perintah berikut:
systemctl is-enabled docker
Untuk mengaktifkan layanan Docker dan segera memulainya, jalankan salah satu perintah berikut:
sudo systemctl enable --now docker
sudo systemctl enable /usr/lib/systemd/system/docker.service
Output:
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service → /lib/systemd/system/docker.service
Saat Anda memulai penerusan, jalankan perintah berikut untuk menyetel penerusan agar dimulai ulang secara otomatis:
sudo docker run --restart=always `IMAGE_NAME`
IMAGE_NAME
adalah nama image penerusan.Untuk memeriksa status dan detail layanan Docker, jalankan perintah berikut:
sudo systemctl status docker
Output:
● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-07-18 11:14:05 UTC; 15s ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 263 (dockerd) Tasks: 20 Memory: 100.4M CGroup: /system.slice/docker.service └─263 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock Jul 18 11:14:05 swarm-kraken dockerd[263]: time="2020-07-18T11:14:05.713787002Z" level=info msg="API listen on /run/docker.sock" Jul 18 11:14:05 swarm-kraken systemd[1]: Started Docker Application Container Engine
Jika Anda mengalami masalah dengan Docker, tim dukungan SecOps Google dapat meminta output dari perintah ini untuk membantu dan men-debug masalah tersebut.
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.