Semua sistem, aplikasi, dan perangkat lunak menghasilkan informasi yang disimpan dalam file yang disebut log. Log ini harus terus dipantau untuk memastikan berfungsinya sistem yang bersangkutan dan mencegah kesalahan atau risiko keamanan. Mereka sering tersebar di beberapa server dan, seiring dengan peningkatan volume data, pengelolaannya menjadi semakin kompleks.
Graylog adalah sistem manajemen log tingkat perusahaan sumber terbuka dan gratis yang terdiri dari Elasticsearch, MongoDB, dan server Graylog. Ini terdiri dari server utama, yang menerima data dari klien yang diinstal pada server yang berbeda, serta antarmuka web, yang digunakan untuk melihat data yang dikumpulkan oleh server. Graylog adalah alat serupa seperti Splunk dan LogStash.
Dalam tutorial ini, kita mempelajari cara menginstal Graylog 4 di Ubuntu 20.04 . Kami juga akan mengamankan server Graylog dengan sertifikat SSL menggunakan Let's Encrypt.
Persyaratan:
- Mesin Ubuntu 20.04 atau lebih baru
- Perangkat Keras - 4 Inti CPU, RAM 8 GB, Hard Disk SSD dengan IOPS Tinggi untuk Penyimpanan Log Elasticsearch
- Elasticsearch
- MongoDB
- Oracle Java SE 8 (OpenJDK 8 atau lebih tinggi)
Langkah1:Instal MongoDB di Ubuntu 20.04
Graylog menggunakan MongoDB untuk menyimpan data konfigurasi seperti aliran, peringatan, pengguna, pengaturan, dll. Hanya metadata yang disimpan dan tidak menyimpan data log. Mari kita instal MongoDB terlebih dahulu di Ubuntu 20.04.
Pertama, instal semua paket prasyarat:
$ sudo apt update
$ sudo apt install apt-transport-https openjdk-11-jre-headless uuid-runtime pwgen dirmngr gnupg wget
Sekarang impor kunci GPG publik:
$ wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
Untuk membuat file daftar sumber, ketik:
$ sudo touch /etc/apt/sources.list.d/mongodb-org-5.0.list
Sekarang, tambahkan sumber repositori untuk Ubuntu 20.04:
$ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
Sekarang, perbarui indeks apt:
$ sudo apt update
Untuk menginstal MongoDB di Ubuntu, ketik:
$ sudo apt install mongodb-org
Layanan MongoDB tidak akan dimulai secara otomatis setelah proses instalasi selesai. Untuk memulai layanan dan mengaktifkan layanan, ketik:
$ sudo systemctl enable --now mongod.service
Verifikasi status layanan MongoDB:
$ sudo systemctl status mongod.service
Keluaran:
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
Active: active (running) since Sun 2021-08-22 04:47:46 UTC; 3s ago
Docs: https://docs.mongodb.org/manual
Main PID: 17965 (mongod)
Memory: 66.1M
CGroup: /system.slice/mongod.service
└─17965 /usr/bin/mongod --config /etc/mongod.conf
Aug 22 04:47:46 li175-223 systemd[1]: Started MongoDB Database Server.
Saat output menunjukkan MongoDB dimulai dan layanan aktif dan berjalan.
Anda dapat memeriksa versi MongoDB yang diinstal
$ sudo mongod --version
db version v5.0.2
Build Info: {
"version": "5.0.2",
"gitVersion": "6d9ec525e78465dcecadcff99cce953d380fedc8",
"openSSLVersion": "OpenSSL 1.1.1f 31 Mar 2020",
"modules": [],
"allocator": "tcmalloc",
"environment": {
"distmod": "ubuntu2004",
"distarch": "x86_64",
"target_arch": "x86_64"
}
}
Outputnya menunjukkan bahwa kita telah menginstal MongoDB versi 5.0.2 .
Langkah 2:Instal Elasticsearch di Ubuntu 20.04
Graylog menyimpan semua data log di Elasticsearch. Lihat situs web resmi Graylog untuk versi elasticseach yang didukung.
Elasticseach membutuhkan Java, ia hadir dengan OpenJDK versi Java yang dibundel
Impor kunci GPG repositori:
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Selanjutnya, tambahkan repositori Elasticsearch:
# echo "deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
Sekarang perbarui repositori
$ sudo apt update
Terakhir, instal elasticsearch versi opensource dengan mengetik:
$ sudo apt install elasticsearch-oss
Ubah file konfigurasi elasticsearch untuk menetapkan beberapa informasi sebagai nama cluster, alamat IP yang didengarkan elasticsearch, dan nomor port
$ sudo vi /etc/elasticsearch/elasticsearch.yml
cluster.name: graylog-server
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
action.auto_create_index: false
File dan direktori konfigurasi utama Elasticsearch adalah :
Data disimpan - direktori /var/lib/elasticsearch.
File konfigurasi - direktori /etc/elasticsearch
Opsi memulai Java - /etc/default/elasticsearch file
Elasticsearch hadir dengan versi paket OpenJDK. Untuk menggunakan versi Java Anda sendiri, setel variabel lingkungan ES_JAVA_HOME.
Anda dapat mengaktifkan dan memulai layanan Elasticsearch menggunakan satu perintah:
$ sudo systemctl enable --now elasticsearch.service
Sekarang verifikasi layanan berjalan dengan benar menggunakan perintah berikut:
$ sudo systemctl status elasticsearch.service
Keluaran:
● elasticsearch.service - Elasticsearch
Loaded: loaded (/lib/systemd/system/elasticsearch.service; disabled; vendor preset: enabled)
Active: active (running) since Sun 2021-08-22 12:38:24 UTC; 11min ago
Docs: http://www.elastic.co
Main PID: 19502 (java)
Tasks: 41 (limit: 1071)
Memory: 833.2M
CGroup: /system.slice/elasticsearch.service
├─19502 /bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negat>
└─19565 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller
Aug 22 12:38:24 li663-124 systemd[1]: Started Elasticsearch.
Tekan q untuk keluar, kembali ke command prompt.
Elasticsearch secara default bekerja pada port 9200
, Anda harus membukanya di firewall.
$ sudo ufw allow 9200
Anda dapat memeriksa apakah itu berfungsi
$ sudo curl -XGET 'http://localhost:9200'
"name" : "Ubuntunode",
"cluster_name" : "graylog-server",
"cluster_uuid" : "sz3jP3rKTPWZlasWwD-rBg",
"version" : {
"number" : "7.10.2",
"build_flavor" : "oss",
"build_type" : "deb",
"build_hash" : "747e1cc71def077253878a59143c1f785afa92b9",
"build_date" : "2021-01-13T00:42:12.435326Z",
"build_snapshot" : false,
"lucene_version" : "8.7.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
Dengan output dari perintah tersebut, Anda dapat melihat baris "number": "7.10.2"
tampilkan versi elasticsearch.
Langkah 3:Instal Graylog di Ubuntu 20.04
Graylog mengumpulkan log dari berbagai input dan memberikan output ke antarmuka web yang ditawarkan untuk mengelola log.
Pertama, kita perlu mengunduh file Graylog Repo menggunakan perintah wget:
$ wget https://packages.graylog2.org/repo/packages/graylog-4.1-repository_1-3_all.deb
Untuk mengkonfigurasi repositori Graylog, ketik:
$ sudo dpkg -i graylog-4.1-repository_1-3_all.deb
Sekarang kita dapat menginstal server Graylog
$ apt update
$ sudo apt install graylog-server
Aktifkan dan mulai layanan server greylog
$ sudo systemctl enable --now graylog-server.service
Edit File Konfigurasi
Sekarang kita perlu mengatur password_secret
dan nilai hast dari root greylog Anda root_password_sha2
.
Untuk mengatur rahasia untuk mengamankan kata sandi pengguna, Anda dapat menggunakan perintah pwgen:
$ pwgen -N 1 -s 96
8KOikhjxetTdcJ7qhtPlgtLgBqCX5y4vL36Ig423pqUQn32QatiecCcYol5UEw3XDzwgWDvcFOmMBJzkBZKC52aEpBrItwke
Sekarang, edit file konfigurasi untuk mengatur kata sandi
$ sudo vi /etc/graylog/server/server.conf
password_secret = RlTRqWSBENLKeg89iAWlxSaf1zfqLvBW7VX5SH1d2ji3RMKyeXb8bmfOXLl3GaWkxp9oDRfvbjXiEr36AFd6T9CMmnjdG7dn
Sekarang kita harus menentukan nilai hash dari akun kata sandi root Graylog Anda
$ echo -n GraylogRootPassword | shasum -a 256
4b09467e174a03d5ebd720d514f57783ad1e03b4877fff5e0dc45356340ab215 -
Sekarang Anda dapat menyalin dan menempelkannya
sudo vi /etc/graylog/server/server.conf
root_password_sha2 = 4b09467e174a03d5ebd720d514f57783ad1e03b4877fff5e0dc45356340ab215
Anda dapat menambahkan informasi tambahan sebagai alamat email root Graylog dan antarmuka jaringan yang digunakan oleh antarmuka HTTP Graylog
root_email = "[email protected]"
root_timezone = UTC
http_bind_address = 0.0.0.0:9000
Anda harus membuka port pada firewall Anda
$ sudo ufw allow 9000
Aktifkan dan mulai layanan server greylog
$ sudo systemctl enable --now graylog-server.service
Anda dapat menemukan data log untuk Graylog /var/log/graylog-server/server.log dan berguna untuk debugging atau saat server tidak dapat dijalankan.
Anda dapat melihat homepage dengan memasukkan ip publik server Anda dan nomor port dari browser Anda yaitu http://admin
dan kata sandi adalah yang digunakan untuk nilai hash
Langkah 4:Mengonfigurasi Nginx sebagai Proksi Penghentian SSL (Opsional)
Disarankan untuk mengamankan antarmuka web Graylog Anda dengan HTTPS. Di sini akan menggunakan Nginx sebagai proxy terbalik dan menghasilkan sertifikat SSL gratis untuk domain menggunakan Let's Encrypt.
Pertama, kita perlu menginstal Nginx, lalu cerbot untuk sertifikat enkripsi.
Sekarang mari kita instal Nginx
$ sudo apt install nginx
Sekarang mari izinkan Nginx di firewall
$ sudo ufw allow 'Nginx Full'
Sekarang mari kita edit konten file konfigurasi nama domain kita. Jangan lupa untuk mengganti nama file dengan nama domain Anda
$ sudo vim /etc/nginx/sites-available/websitefortesting.com.conf
server {
listen 80;
server_name websitefortesting.com;
add_header Strict-Transport-Security max-age=2592000;
rewrite ^ https://$server_name$request_uri? permanent;
access_log /var/log/nginx/websitefortesting.com.access.log combined;
error_log /var/log/nginx/websitefortesting.com.error.log;
}
Sekarang mari kita aktifkan
$ sudo ln -s /etc/nginx/sites-available/websitefortesting.com.conf /etc/nginx/sites-enabled/websitefortesting.com.conf
Kemudian verifikasi apakah konfigurasinya baik-baik saja
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Sekarang kita perlu menginstal cerbot dengan paket yang diperlukan untuk nginx
$ sudo apt install certbot python3-certbot-nginx
Sekarang kita perlu menjalankan cerbot untuk Nginx
$ sudo certbot --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
(A)gree/(C)ancel: A
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
(Y)es/(N)o: N
Which names would you like to activate HTTPS for?
1: websitefortesting.com
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for websitefortesting.com
Waiting for verification…
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/websitefortesting.com.conf
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/websitefortesting.com.conf
Congratulations! You have successfully enabled https://websitefortesting.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=websitefortesting.com
IMPORTANT NOTES:
Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/websitefortesting.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/websitefortesting.com/privkey.pem
Your cert will expire on 2021-11-18. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew all of
your certificates, run "certbot renew"
If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Dari output, Anda dapat melihat lokasi sertifikat SSL dan kunci pribadi. Anda dapat menggunakan informasi ini untuk mengonfigurasi SSL untuk Nginx.
$ sudo vi /etc/nginx/sites-available/websitefortesting.com.conf
server {
listen 80;
server_name websitefortesting.com;
add_header Strict-Transport-Security max-age=2592000;
rewrite ^ https://$server_name$request_uri? permanent;
access_log /var/log/nginx/websitefortesting.com.access.log combined;
error_log /var/log/nginx/websitefortesting.com.error.log;
}
server {
listen 443 ssl; # managed by Certbot
server_name websitefortesting.com;
ssl_certificate /etc/letsencrypt/live/websitefortesting.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/websitefortesting.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
location / { proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:9000;
}
}
Sekarang mari kita verifikasi lagi dengan
$ sudo nginx -t
Dan restart layanan Nginx
$ sudo systemctl restart nginx.service
Sekarang akses URL Graylog Anda menggunakan nama domain dengan HTTPS.
Setelah login, Anda dapat melihat halaman rumah Anda
Kesimpulan
Dalam tutorial ini, kita mempelajari cara menginstal server Graylog di Ubuntu 20.04, mengonfigurasi SSL menggunakan Nginx sebagai proxy terbalik.
Jika Anda menghadapi tantangan apa pun selama proses penyiapan, silakan beri komentar atau ajukan pertanyaan di bagian komentar.