Instal Fleet Osquery Manager di Ubuntu 20.04

Dalam tutorial ini, Anda akan belajar cara menginstal Fleet osquery manager di Ubuntu 20.04. Dengan pensiunnya Armada Kolide secara resmi pada tanggal 4 November 2020, telah ada Armada lain yang menawarkan fungsi yang sama dengan Armada Kolide. Menurut repositori Github -nya, “ Armada adalah pengelola osquery open source yang paling banyak digunakan. Menyebarkan osquery dengan Fleet memungkinkan kueri langsung yang dapat diprogram, log streaming, dan pengelolaan osquery yang efektif di 50.000+ server, container, dan laptop. Ini sangat berguna untuk berbicara dengan beberapa perangkat secara bersamaan. “

Jika Anda menggunakan Debian 10, ikuti panduan di bawah ini untuk menginstal Fleet Osquery di Debian 10;

Instal Fleet Osquery Manager di Debian 10

Instal Fleet Osquery Manager di Ubuntu

Prasyarat

Untuk menginstal Fleet osquery manager di Ubuntu, ada beberapa persyaratan. Dalam pengaturan kami, kami akan menggunakan Ubuntu 20.04 sebagai OS dasar kami.

Instal Database MySQL

Armada menggunakan MySQL sebagai database utamanya

Dalam pengaturan ini, kita akan menggunakan database MariaDB. Karenanya, buat repositori APT MariaDB (saat ini v10.5) terbaru

apt install software-properties-common
apt-key adv --fetch-keys https://mariadb.org/mariadb_release_signing_key.asc
echo "deb [arch=amd64,arm64,ppc64el] http://sfo1.mirrors.digitalocean.com/mariadb/repo/10.5/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/mariadb-10.5.list

Jika perlu, Anda dapat memilih mirror MariaDB lain yang tertutup untuk wilayah Anda.

Perbarui cache paket Anda.

apt update

Jalankan perintah install MariaDB server 10.5 di Ubuntu 20.04

apt install mariadb-server

MariaDB dimulai dan diaktifkan untuk berjalan pada boot sistem saat instalasi.

systemctl status mariadb.service
● mariadb.service - MariaDB 10.5.9 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/mariadb.service.d └─migrated-from-my.cnf-settings.conf Active: active (running) since Sat 2021-03-20 07:22:04 UTC; 6min ago Docs: man:mariadbd(8) https://mariadb.com/kb/en/library/systemd/ Main PID: 6859 (mariadbd) Status: "Taking your SQL requests now..." Tasks: 9 (limit: 4620) Memory: 69.9M CGroup: /system.slice/mariadb.service └─6859 /usr/sbin/mariadbd Mar 20 07:23:16 ubuntu20 /etc/mysql/debian-start[6880]: mysql Mar 20 07:23:16 ubuntu20 /etc/mysql/debian-start[6880]: performance_schema Mar 20 07:23:16 ubuntu20 /etc/mysql/debian-start[6880]: Phase 6/7: Checking and upgrading tables Mar 20 07:23:16 ubuntu20 /etc/mysql/debian-start[6880]: Processing databases Mar 20 07:23:16 ubuntu20 /etc/mysql/debian-start[6880]: information_schema Mar 20 07:23:16 ubuntu20 /etc/mysql/debian-start[6880]: performance_schema Mar 20 07:23:16 ubuntu20 /etc/mysql/debian-start[6880]: Phase 7/7: Running 'FLUSH PRIVILEGES' Mar 20 07:23:16 ubuntu20 /etc/mysql/debian-start[6880]: OK Mar 20 07:23:16 ubuntu20 /etc/mysql/debian-start[8111]: Checking for insecure root accounts. Mar 20 07:23:16 ubuntu20 /etc/mysql/debian-start[8115]: Triggering myisam-recover for all MyISAM tables and aria-recover for all Aria tables

Buat Basis Data Armada dan Pengguna Basis Data

Jalankan skrip keamanan MySQL awal, mysql_secure_installation, untuk menghapus user database anonim, uji tabel, nonaktifkan login root jarak jauh.

mysql_secure_installation

Secara default, MariaDB 10.5 menggunakan unix_socket untuk otentikasi secara default dan karenanya, dapat masuk hanya dengan menjalankan,  mysql -u root. Namun jika telah mengaktifkan otentikasi password, jalankan saja;

mysql -u root -p

Selanjutnya, buat database Armada.

Note: the database database names used here are not standard. Choose any name of your preference.

create database fleetdb;

Buat user database Armada dengan semua hibah pada Fleet DB yang dibuat di atas.

grant all on fleetdb.* to [email protected] identified by '[email protected]';

Reload tabel hak istimewa dan keluar dari database;

flush privileges; exit

Install Redis on Ubuntu 20.04

Armada menggunakan Redis untuk mencerna dan mengantri hasil kueri terdistribusi, data cache, dll.

Untuk menginstal Redis versi stabil terbaru, Anda perlu menginstal  redislabs/redis repositori paket dengan menjalankan perintah di bawah ini;

add-apt-repository ppa:redislabs/redis --yes

Selanjutnya, perbarui cache paket;

apt update

Install Redis on Ubuntu 20.04;

apt install redis

Server Redis juga dimulai saat instalasi;

systemctl status redis-server.service
● redis-server.service - Advanced key-value store Loaded: loaded (/lib/systemd/system/redis-server.service; disabled; vendor preset: enabled) Active: active (running) since Sat 2021-03-20 07:34:27 UTC; 5min ago Docs: http://redis.io/documentation, man:redis-server(1) Main PID: 10391 (redis-server) Status: "Ready to accept connections" Tasks: 5 (limit: 4620) Memory: 2.4M CGroup: /system.slice/redis-server.service └─10391 /usr/bin/redis-server 127.0.0.1:6379 Mar 20 07:34:27 ubuntu20 systemd[1]: Starting Advanced key-value store... Mar 20 07:34:27 ubuntu20 systemd[1]: Started Advanced key-value store.

Aktifkan untuk berjalan pada boot sistem;

systemctl enable redis-server

Instal Fleet Osquery Manager di Ubuntu 20.04

Instal biner Armada di Ubuntu 20.04

Aplikasi Armada didistribusikan sebagai biner statis tunggal. Biner ini berfungsi:

  • Interface web Armada
  • Titik akhir API aplikasi Armada
  • Titik akhir API server TLS osquery

Untuk mengdownload biner Armada terbaru, cukup jalankan perintah di bawah ini;

curl -LO https://github.com/fleetdm/fleet/releases/latest/download/fleet.zip

Buka zip binari untuk platform Linux:

unzip fleet.zip 'linux/*' -d ~/fleet

Copy binari Armada ke direktori binari;

cp ~/fleet/linux/* /usr/local/bin/

Untuk memverifikasi binari sudah ada;

which fleet fleetctl
/usr/local/bin/fleet /usr/local/bin/fleetctl

Menjalankan Fleet Server di Ubuntu 20.04

Inisialisasi Basis Data Armada

Untuk menginisialisasi infrastruktur Armada setelah menginstal dan menyiapkan semua persyaratan di atas, gunakan yang  fleet prepare db berikut ini;

fleet prepare db --mysql_address=127.0.0.1:3306 --mysql_database=fleetdb --mysql_username=fleetadmin [email protected]

Jika inisialisasi selesai dengan sukses, Anda akan mendapatkan output,

Migrations completed.
Hasilkan Sertifikat SSL/TLS

Server armada digunakan untuk menjalankan server HTTPS utama. Oleh karena itu, jalankan perintah di bawah ini untuk membuat sertifikat yang ditandatangani sendiri.

CATATAN: If you are using Self Signed Certificates as in this demo, DO NOT use wildcards lest enrollment of hosts won’t work.

openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/fleet.key -out /etc/ssl/certs/fleet.cert -subj "/CN=osquery.kifarunix-demo.com/"

If you can, use the commercial TLS certificates from your preferred trusted CA.

Hasilkan Token Web Json

Hasilkan Json Web Token (JWT) kunci acak  untuk menandatangani dan memverifikasi token sesi. Ini akan diperlukan saat menjalankan fle
et serve perintah untuk digunakan dengan –auth_jwt_key pilihan. Fleet server won’t start without this option.

Untuk membantu membuat token secara otomatis, cukup jalankan perintah server armada tanpa opsi ini.

fleet serve --mysql_address=127.0.0.1:3306  --mysql_database=fleetdb --mysql_username=fleetadmin [email protected]  --server_cert=/etc/ssl/certs/fleet.cert --server_key=/etc/ssl/private/fleet.key  --logging_json

Perintah gagal dan otomatis menghasilkan kunci acak untuk Anda;

################################################################################ # ERROR: # A value must be supplied for --auth_jwt_key or --auth_jwt_key_path. This value is used to create # session tokens for users. # # Consider using the following randomly generated key: # cw1h9ww06XwWDOwDDBpi9pxwNqEVf6Ig ################################################################################

Meluncurkan Fleet Osquery Manager

Setelah Anda menginisialisasi database, memperoleh sertifikat TLS dan mendapatkan kunci acak JWT, Anda kemudian dapat meluncurkannya untuk memverifikasi bahwa itu dapat berjalan dengan sukses menggunakan fleet serve perintah seperti gambar di bawah ini.

Sintaks untuk menjalankan fleet servediberikan di bawah ini;

fleet serve [flags]

Ada beberapa cara berbeda untuk menentukan flag Armada;

  • Di command line
  • Menggunakan variabel lingkungan
  • Menggunakan file konfigurasi
Menentukan Bendera Manajer Armada di baris Perintah

Anda dapat menentukan bendera pada command line seperti yang ditunjukkan di bawah ini;

fleet serve --mysql_address=127.0.0.1:3306  --mysql_database=fleetdb --mysql_username=fleetadmin [email protected]  --server_cert=/etc/ssl/certs/fleet.cert --server_key=/etc/ssl/private/fleet.key  --logging_json --auth_jwt_key=cw1h9ww06XwWDOwDDBpi9pxwNqEVf6Ig

Jika semuanya baik-baik saja, Anda akan melihat bahwa server Armada sekarang sedang berjalan 0.0.0.0:8080 dan karenanya dapat diakses di https://<server-IP>:8080.

{"component":"service","err":null,"level":"info","method":"ListUsers","took":"651.223µs","ts":"2021-03-20T08:12:04.045682218Z","user":"none"} {"address":"0.0.0.0:8080","msg":"listening","transport":"https","ts":"2021-03-20T08:12:04.046253256Z"}

Tekan Ctrl+c untuk menghentikan server Armada.

Menentukan Bendera Manajer Armada Menggunakan Variabel Lingkungan

Demikian pula, Anda dapat menentukan flag Armada menggunakan variabel lingkungan seperti yang ditunjukkan di bawah ini (perbarui nilai untuk variabel lingkungan dan tempel perintah di terminal);

FLEET_MYSQL_ADDRESS=127.0.0.1:3306  FLEET_MYSQL_DATABASE=fleetdb  FLEET_MYSQL_USERNAME=fleetadmin  [email protected]  FLEET_REDIS_ADDRESS=127.0.0.1:6379  FLEET_SERVER_CERT=/etc/ssl/certs/fleet.cert  FLEET_SERVER_KEY=/etc/ssl/private/fleet.key  FLEET_AUTH_JWT_KEY=cw1h9ww06XwWDOwDDBpi9pxwNqEVf6Ig  FLEET_LOGGING_JSON=true  $(which fleet) serve

Demikian pula, tekan Ctrl+c untuk menghentikan server Armada.

Mengatur Bendera Manajer Armada dalam file Konfigurasi

Anda dapat membuat file konfigurasi YAML tempat Anda dapat menentukan flag dan opsinya. Sebagai contoh, mari kita buat file konfigurasi, mis/etc/fleet/fleet.yml.

mkdir /etc/fleet

Itu, buat file konfigurasi YAML di bawah direktori di atas.

Anda cukup menjalankan perintah di bawah ini dan pastikan untuk mengganti pengaturan Anda dengan tepat.

cat > /etc/fleet/fleet.yml << 'EOL' mysql: address: 127.0.0.1:3306 database: fleetdb username: fleetadmin password: [email protected] redis: address: 127.0.0.1:6379 server: cert: /etc/ssl/certs/fleet.cert key: /etc/ssl/private/fleet.key logging: json: true auth: jwt_key: cw1h9ww06XwWDOwDDBpi9pxwNqEVf6Ig EOL

Selanjutnya, luncurkan Fleet manager dengan menjalankan perintah di bawah ini;

fleet serve -c /etc/fleet/fleet.yml

Demikian pula, tekan Ctrl+c untuk menghentikan server Armada.

Buat Unit Layanan Armada Systemd di Ubuntu 20.04

Setelah Anda memverifikasi bahwa Armada berjalan dengan baik, buat file service systemd, /etc/systemd/system/fleet.service. Anda dapat menggunakan metode apa pun yang ditunjukkan di atas untuk menentukan flag untuk ExecStart opsi saat membuat file unit service systemd.

Contoh file unit service sistem Armada dengan Bendera yang ditentukan dalam format seperti ‘cli’.

cat > /etc/systemd/system/fleet.service << 'EOL' [Unit] Description=Fleet Osquery Fleet Manager After=network.target [Service] LimitNOFILE=8192 ExecStart=/usr/local/bin/fleet serve  --mysql_address=127.0.0.1:3306  --mysql_database=fleetdb  --mysql_username=fleetadmin  [email protected]  --redis_address=127.0.0.1:6379  --server_cert=/etc/ssl/certs/fleet.cert  --server_key=/etc/ssl/private/fleet.key  --auth_jwt_key=cw1h9ww06XwWDOwDDBpi9pxwNqEVf6Ig  --logging_json ExecStop=/bin/kill -15 $(ps aux | grep "fleet serve" | grep -v grep | awk '{print$2}') [Install] WantedBy=multi-user.target EOL

Metode yang saya sukai sendiri adalah menggunakan file konfigurasi sebagai gantinya. File service di bawah ini menggunakan file konfigurasi dengan flag Armada yang didefinisikan seperti yang ditunjukkan di atas.

cat > /etc/systemd/system/fleet.service << 'EOL' [Unit] Description=Fleet Osquery Fleet Manager After=network.target [Service] LimitNOFILE=8192 ExecStart=/usr/local/bin/fleet serve -c /etc/fleet/fleet.yml ExecStop=/bin/kill -15 $(ps aux | grep "fleet serve" | grep -v grep | awk '{print$2}') [Install] WantedBy=multi-user.target EOL

Reload konfigurasi systemd.

systemctl daemon-reload

Mulai dan aktifkan service Armada.

systemctl enable --now fleet

Periksa statusnya;

systemctl status fleet
● fleet.service - Fleet Osquery Fleet Manager Loaded: loaded (/etc/systemd/system/fleet.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2021-03-20 08:19:12 UTC; 4s ago Main PID: 11844 (fleet) Tasks: 8 (limit: 4620) Memory: 14.1M CGroup: /system.slice/fleet.service └─11844 /usr/local/bin/fleet serve -c /etc/fleet/fleet.yml Mar 20 08:19:12 ubuntu20 systemd[1]: Started Fleet Osquery Fleet Manager. Mar 20 08:19:12 ubuntu20 fleet[11844]: {"component":"service","err":null,"level":"info","method":"ListUsers","took":"378.122µs","ts":"2021-03-20T08:19:12.73338155Z","user"> Mar 20 08:19:12 ubuntu20 fleet[11844]: {"address":"0.0.0.0:8080","msg":"listening","transport":"https","ts":"2021-03-20T08:19:12.733806227Z"}

Akses Interface Web Armada

Armada dapat diakses di browser menggunakan URL https://<server-IP_OR_hostname>:8080.

Jika firewall berjalan, buka port ini untuk mengizinkan akses eksternal;

ufw allow 8080/tcp

Kemudian akses interface Web Armada dari browser. dan lanjutkan untuk menyelesaikan pengaturan manajer Fleet Osquery di Ubuntu 20.04;

Buat user admin;

Masukkan detail organisasi Anda, Nama dan url untuk logo.

Setel URL server Armada.

Kirimkan detailnya dan lanjutkan ke interface web Armada.

Dan itu menandai akhir dari tutorial kami tentang cara menginstal Fleet Osquery Manager di Ubuntu 20.04. Dalam tutorial kami berikutnya, Anda akan belajar cara mendaftarkan agen Osquery ke manajer Armada.

Cara Mendaftar Host Osquery di Fleet Manager

Referensi

Memasang Armada

Tutorial Terkait Lainnya

Instal Osquery di Ubuntu 20.04

Instal Osquery di Debian 10 Buster

Cara Menginstal Osquery di Ubuntu 18.04