Centos 7 üzerine Graylog 3.0.2 Kurulumu
Translate This Page:
Bu Makalemizde, Open Source bir loglama çözümü olan Graylog v3.0’ın kurulumunu ele alacağız (v3.0.1) ve bunu sistemlerimizin sysloglarını merkezi bir konumda toplayacak şekilde yapılandıracağız. Graylog3, SSH girişlerini ve sıra dışı etkinliklerini izlemekten hata ayıklama uygulamalarına kadar birçok kullanım senaryosuna sahip güçlü bir günlük yönetimi ve analiz aracıdır. Elasticsearch, Java, MongoDB ve Scala’ya dayanmaktadır.
Graylog3 Dört ana bileşene sahiptir:
Graylog3 Server nodes: Mesajları alan ve işleyen ve diğer tüm sunucu dışı bileşenlerle iletişim kuran bir çalışan olarak hizmet eder. Performansı CPU gücünüz ile doğru orantılıdır.
Elasticsearch node: Tüm günlükleri / mesajları saklar. Performansı RAM ve disk I/O’ye bağlıdır
MongoDB: Meta verileri depolar ve fazla yüklenmez
Web Arayüzü (GUI): Kullanıcı arayüzü
Graylog3 bileşenlerinin en basti haliyle şeması aşağıdadır (mesajların diğer sunucularınızdan gönderildiğini unutmayın):
Çok temel bir kurulum için, tüm bileşenler yukarıdaki gibi aynı sunucuya kurulabilir.
Fakat EPS oranı yüksek çok sayıda sunucu ,Firewall ve network cihazı barındıran bir IT alt yapınız varsa , Graylog sunucusu, Elasticsearch veya MongoDB bileşenleri bir kesinti yaşanmamsı ve performans artışı için , Graylog3 Kurulumunu birden fazla makine ve DB üzerine aktarmak hem kesinti sırasında log kaybının önüne geçecek ve yüksek kullanılabilirlikle beraber performans artışı sağlayacaktır.
Çoklu sunucu kurulumu ile ilgil aşağıdaki örnek diagramları inceleyerek daha detaylı fikir edinebilirsiniz.
Sistem Gereksinimleri
- Centos 7 X64 işletim sistemi (Bu kurulumu centos 7 v18.10 üzerinde yapıyor olacağız.)
- 4 Gb ram
- 4 Core CPU
- Min 100 GB Disk
- Elasticsearch 5 veya 6
- MongoDB 3.6 or later (latest stable version is recommended)
- Oracle Java SE 8 (OpenJDK 8 also works; latest stable update is recommended)
Burada belirtmek istediğim özel bir nokta var bu tür sistemlerin kurulumlarını yapmadan önce ihtiyaçları ve kaynakları kurulum öncesi belirlemek önem taşıyor Log toplama işlemlerinde kritik konu disk kapasitesini belirlemek SIEM yada logManagement yazılımları çok kısa sürede büyük disk alanlarını doldurabiliyor. Kurulum sonrası iyice şişmiş diskler üzerinde disk genişletme gibi işlemlerle uğraşmak çok isteyeceğimiz bir durum değil.
Disk hesabı yapabilmeniz için aşağıdaki linkten sistem kaynaklarınızı belirterek ne kadar alana ihtiyacınız olduğunu yaklaşık olarak hesaplayabilirsiniz.
http://www.aspiretss.com/tools
https://www.trionlogics.com/EPS.html
https://siemsizingcalculator.logpoint.com/
İlk olarak Serverımızın EPEL(Extra Packages for Enterprise Linux) Yum deposunu güncelliyoruz.
#Eğer Repo bağlantısı yoksa aşağıdaki komutu çalışıtırıyoruz. rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum repolist # Çıktımız aşağıdaki gibi olacaktır. Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.radoreservers.com * epel: ftp.wrz.de * extras: mirror.muvhost.com * updates: mirror.muvhost.com repo id repo name status base/7/x86_64 CentOS-7 - Base 10,019 epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,016 extras/7/x86_64 CentOS-7 - Extras 382 updates/7/x86_64 CentOS-7 - Updates 1,477 repolist: 24,894 [root@cacti ~]#sudo yum install epel-release -y #Sistem güncellemesini gerçekleştirin ve sistemi yeniden başlatarak sistem değişikliklerini uygulayın [root@root~]#sudo yum update -y && sudo shutdown -r now
Ön Hazırlıklarımızı tamamladığımıza göre kuruluma başlayabiliriz.
Gerekli paket kurulumları
Güvenli parola oluşturmak için Pwgen(PWDGenerate random passwords ) Paketini kuruyoruz.
root@graylog01]# yum -y install wget pwgen
Elasticsearch çalışabilmesi için java ya ihtiyaç duyar makinemize Java kurulumunu yapıyoruz. Yani, OpenJDK veya Oracle JDK’yi yükleyin.
root@graylog01]# yum install -y java-1.8.0-openjdk-headless
Java Versiyonumuzu kontrol ediyoruz
[root@graylog01 ~]# java -version openjdk version "1.8.0_212" OpenJDK Runtime Environment (build 1.8.0_212-b04) OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)
Elastik Search kurulumu
Elasticsearch, Graylog kurulumundaki önemli bileşenlerden biridir. Graylog girişinden gelen verileri depolar ve bir kullanıcı Graylog dahili web arayüzü üzerinden istediğinde mesajları görüntüler. Elasticseach, esas olarak burada verileri / günlükleri indekslemek ve Graylog web arayüzü herhangi bir bilgi istediğinde arama işlevselliğini sağlamak için kullanılır.
Yüklemeden önce GPG ( GnuPG — GNU Privacy Guard) imzalama anahtarını alıyoruz.
root@graylog01]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Elasticsearch paketinin en son sürümünü resmi depodan almak için bir depo dosyası oluşturun.
[root@graylog01]# nano /etc/yum.repos.d/elasticsearch.repo
aşağıdaki içeriği oluşturduğumuz dosyaya ekliyoruz.
[elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md
Elasticsearch paket kurulumunu başlatıyoruz.
[root@graylog01]# yum install -y elasticsearch
Systemctl arka plan programını yeniden yüklüyoruz ve Elasticsearch’ün sistem başlangıcında otomatik olarak başlatılmasını sağlıyoruz.
systemctl daemon-reload systemctl enable elasticsearch
Elasticsearch’ün Graylog kurulumuyla çalışmasını sağlamak için cluster adını graylog olarak ayarlamamız gerekir. Elasticsearch.yml dosyasını düzenleyin.
[root@graylog01]# nano /etc/elasticsearch/elasticsearch.yml
Cluster name bölümünü graylog olarak değiştiriyoruz.
cluster.name: graylog
Elastiksearch servisimizi restart ediyoruz.
systemctl restart elasticsearch
Elasticsearch’ün tamamen yeniden başlatılmasına izin vermek için 2 dakika verin. Elasticsearch, şimdi HTTP isteklerini işlemek için 9200 dinliyor olmalı. Cevabı kontrol etmek için CURL komutunu kullanın.
curl -X GET http://localhost:9200
Yukarıdaki komutun çıktısı aşağıdaki gibi olacaktır.
[root@graylog01 ~]# curl -X GET http://localhost:9200 { "name" : "N9zh8CH", "cluster_name" : "graylog", "cluster_uuid" : "0vWrOvqBSU20imDBjDv3iA", "version" : { "number" : "6.7.2", "build_flavor" : "default", "build_type" : "rpm", "build_hash" : "56c6e48", "build_date" : "2019-04-29T09:05:50.290371Z", "build_snapshot" : false, "lucene_version" : "7.7.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
Elasticsearch Cluster’ın sağlık kontrolü yapın.
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
Çıktı aşağıdaki gibi olmalıdır.
[root@graylog02 ~]# curl -XGET 'http://localhost:9200/_cluster/health?pretty=true' { "cluster_name" : "graylog", "status" : "green", "timed_out" : false, "number_of_nodes" : 1, "number_of_data_nodes" : 1, "active_primary_shards" : 1, "active_shards" : 1, "relocating_shards" : 0, "initializing_shards" : 0, "unassigned_shards" : 0, "delayed_unassigned_shards" : 0, "number_of_pending_tasks" : 0, "number_of_in_flight_fetch" : 0, "task_max_waiting_in_queue_millis" : 0, "active_shards_percent_as_number" : 100.0 }
Elastiksearch Kurulumumuzu tamamladık.
MongoDB kurulumu
MongoDB yapılandırmaları ve meta bilgileri depolamak için bir veritabanı görevi görür. MongoDB’nin en son sürümünü almak için MongoDB’nin resmi deposunu kullanacağız.
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
MongoDB nin Repo bağlantı dosyasını oluşturuyoruz.
nano /etc/yum.repos.d/mongodb-org-4.0.repo
Repostory bilgilerini dosyamıza ekliyoruz.
[mongodb-org-4.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
Mongo DB kurulumunu aşağıdaki komut ile yapıyoruz.
yum install -y mongodb-org #kurulum sonrası MongoDB servisimizi başlatıp açılışta otomatik açılmasını sağlıyoruz. systemctl start mongod systemctl enable mongod
Graylog kurulumu
Gray log paketimizin kurulumu için tüm ön gereksinimleri yükledik artık graylog3 paketinin kurulumunu yapabiliriz. Graylog sunucusu temel olarak çeşitli girdilerden gelen günlük mesajlarını kabul eder ve işler, graylog gelen loğları web arayüzünden görüntüleyeceğimiz bir ekran sunar.
Graylog 3.x reposunu indirip yüklüyoruz.
rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-3.0-repository_latest.rpm
Graylog 3.0 server kurulumunu aşağıdaki komut ile başlatıyoruz.
yum -y install graylog-server
Graylog server’ımızın default config dosyası “/etc/graylog/server/server.conf” yolunda yer almaktadır.
Günvenilir parola oluşturma işlemi
Gray log serverımız için pwgen aracı ile secret key ve parola oluşturacağız.
Secret Key oluşturuyoruz.
pwgen -N 1 -s 96
komut sonrası aşağıdaki gibi bir key çıktısı alacaksınız.
vq3K34N2PoJODtjiDuLMACwF5tI578RDKKrJ12tUzuq5m7Ft2Oiv3EhI690m273ebJMOdbcSJ63zTQA102r1LT1JCN1c7HcN
Yukarıdaki key’i config dosyasında “password_secret =” bölümüne gireceğiz. Graylog admin giriş parolasını belirliyoruz ben şifreyi “admin” olarak belirliyorum.
[root@graylog01 -]# echo -n yourpassword 1 sha256sum [root@graylog01 -]# echo -n admin 1 sha256sum 8c6976e5b5410415bde908bd4deel5dfb167a9c873fc4bb8a81f6f2ab448a918 -
Aşağıdaki key’i config dosyasında “root_password_sha2 =” bölümüne gireceğiz.
8c6976e5b5410415bde908bd4deel5dfb167a9c873fc4bb8a81f6f2ab448a918
Graylog Config Dosyası Düzenleme
Parolamızı oluşturduğumuza göre config dosyamızı düzenlemeye başlayabiliriz.
nano /etc/graylog/server/server.conf
yukarıda oluşturduğumzu “password_secret” ve “root_password_sha2” keylerimizi config dosyamızda ilgili satırlara ekliyoruz. Timezone bölümü default olarak UTC geliyor bunu Türkiye için değiştirmeniz gerekli aksi takdirde toplanan logların saati farklı UTC zamanına göre loglanır bu değişikliği buradan yapmamız gerekiyor.
config dosyasında “root_timezone” u değiştiriyoruz.
root_timezone = Asia/Kuwait
eğer farklı bir timezone seçmek isterseniz buradaki listeden seçebilirsiniz https://www.joda.org/joda-time/timezones.html
Admin hesabı için bir mail adresi belirliyoruz (isteğe bağlıdır.)
root_email = admin@yourdomain.com
Eğer graylog’u 1 host olarak kuruyorsanız aşağıdaki ayarı 1 yapınız eğer çoklu kurulum yapacaksanız ortamdaki nod sayınızı buraya girmelisiniz. Bizim yapımızda 1 adet Elastiksearch bulunuyor bu yüzden 1 yapıyoruz.
elasticsearch_shards = 1
Bu, indeksleriniz için kopya sayısını tanımlar. Elasticsearch cluster’ında yalnızca bir nod’a sahipseniz, 0 olarak ayarlayın.
elasticsearch_replicas = 0
Graylog Web interface configurasyon
config dosyamızı açıyoruz.
nano /etc/graylog/server/server.conf
Graylog Web Arabiriminin Graylog sunucusuna bağlanmasına izin vermek için girişleri değiştiriyoruz. Graylog serverımın ip adresi 192.168.1.96 aşağıdaki bölüme kendi serverınızın ip adresini giriniz.
config dosyamızı açıyoruz.
http_bind_address = 192.168.1.96:9000
Graylog servisimizi restart ediyoruz ve başlangıçta otomatik olarak başlamasını sağlıyoruz.
systemctl daemon-reload systemctl restart graylog-server systemctl enable graylog-server
Sunucu başlangıç günlüklerini kontrol edebilirsiniz; Graylog ile ilgili sorunları gidermeniz sizin için yararlı olacaktır.
tailf /var/log/graylog-server/server.log
Eğer buraya kadar tüm adımları sorunsuz uyguladıysanız log dosyasında aşağıdaki mesajı görmelisiniz.
2019-02-25T21:00:23.157+05:30 INFO [ServerBootstrap] Graylog server up and running.
Firewall Configurasyonu
Graylog 9000 portunu kullanır eğer iptable yada firewalld aktif ise aşağıdaki komut ile gerekli FW kuralını ekleyiniz.
Sudo firewall-cmd --permanent --add-port=9000/tcp sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp sudo firewall-cmd --permanent --zone=public --add-port=12900/tcp sudo firewall-cmd --permanent --zone=public --add-port=1514/tcp firewall-cmd --reload
Selinux(Security Enhanced Linux) Configurasyonu
Cacti uygulamasını çalıştırmak için selinux u kapamamız gerekiyor aşağıdaki komut ile Selnux durumunu görüntüleyebilirsiniz.
root@cacti]# sestatsu
Selinux(Security Enhanced Linux) ‘ı devre dışı bırakmak için aşağıdaki adımları takip ediniz.
[root@cacti]# nano /etc/selinux/config SELINUX=enforcing satırını aşağıdaki şekilde değitiriyoruz SELINUX=disabled
Bu işlemden sonra makinemizi reboot etmemiz gerekiyor.
Graylog Web erişimi
Graylog web erişimi için 9000 portunu dinlemektedir bu sebepten aşağıdaki linten erişim sağlaycağız.
http://yourserveripaddress:9000
Kullanıcı adı yöneticisi ve server.conf’ta root_password_sha2‘de yapılandırdığınız şifre ile giriş yapın.
Ben user bilgilerini aşağıdaki şekilde yapılandırdım
Username : admin
Parola : admin
Giriş yaptıktan sonra aşağıdaki ekran bizi karşılıyor olacak.
Graylog input
Graylog’a gelen loglar harici kaynaklardan, yani syslog veya herhangi bir log sisteminden alacak şekilde yapılandırılması gerekir. Bu örnekte, UDP 514 numaralı bağlantı noktasında syslog’dan günlükleri almak için bir input ayarlayacağız. fakat bir problem var graylog’a tanımlanan inputlardan birine, 1024’ün altındaki TCP / UDP bağlantı noktalarına giriş yapmaya başlarsanız, Graylog gelen log kayıtlarını red eder ve günlüklerinde izin redd hatalarını görürsünüz. Bu sorunu çözmek için, 1514 numaralı bağlantı noktasında başlatılacak bir input oluşturacağız ve 514 portuna gelen talepleri güvenlik duvarı kuralları ile 514’ten 1514’e yönlendireceğiz.
Böylelikle Graylog sunucumuza 514 portundan yada 1514 portundan gelen tüm loglar ulaşıyor olacak.
Aşağıdaki Yolu izliyoruz.
System >> Inputs >> select Syslog UDP
Node: Select your Graylog Node
Title: Bir isim veriniz
Bind address: 0.0.0.0 (default bırakabilr yada Graylogserverınızın ip adresini girebilrisiniz)
Port: 1514
Bu işlemden sonra oluşturduğumuz input(connector) aşağıdaki gibi 1514 numaralı porttan gelen bütün paketleri dinlemeye başlayacaktır.
Rsyslog Yapılandırması
Rsyslog server 514 portunu dinler dolayısıyla loğlarını almak istediğiniz fakat defaultta değiştiremediğiniz network cihazlarından gelen loğları Graylog server’a aktaramazsınız bunun için rsyslog server Un 514 numaralı portuna gelen istekleri Graylog server’ın 1514 numaralı portuna yönlendireceğiz.
Rsyslog config dosyamızı açıyoruz.
nano /etc/rsyslog.conf
# Provides UDP syslog reception satırındaki açıklamaları “#” kaldırıyoruz ve udp dinlemeyi aktif ediyoruz.
$ModLoad imudp $UDPServerRun 514
sayfanın en altına inerek aşağıdaki satırı ekliyoruz burada yukarıda oluşturduğumuz 1514 numaralı portu kullanacağız. Aşağıdaki komut ile Rsyslog server 514.porta UDP den gelen bütün girdileri Graylog serverımızdaki 1514 numaralı porta yönlendiriyor olacak.
*.* @10.0.11.95:1514 Yada Local host girebilirsiniz. *.* @127.0.0.1:1514
Rsyslog servisimizi restart ediyoruz.
systemctl restart rsyslog
Rsyslog Firewall ayarları
Graylog sunucusunda UDP 514 numaralı bağlantı noktasına(porta) gelen trafiği yönlendirmek için aşağıdaki yönlendirme komutlarını uyguluyoruz.
firewall-cmd --add-masquerade --permanent firewall-cmd --add-forward-port=port=514:proto=udp:toport=1514 --permanent firewall-cmd --reload
Güvenlik duvarında UDP 1514 bağlantı noktası numarasının Rsyslog’dan günlükleri almasına izin vermek için Graylog sunucusunda aşağıdaki komutları uygulayın.
firewall-cmd --permanent --add-port=1514/udp firewall-cmd --reload
Graylog kurulacak paketler
http://docs.graylog.org/en/3.0/pages/integrations/setup.html
Graylog serverımızın input böümüne tanımlayacağımız cihaz yelpazesini arttırmak için aşağıcaki komutu kullanrak ek pluginleri ekleyebilirsiniz.
sudo yum install graylog-integrations-plugins graylog-enterprise-integrations-plugins
Graylog server kurulumumuz bu kadar.
Hocam elinize emeğinize sağlık.Kolayımda ubuntu iso vardı ona kurulum yaptım ama yazınızı rehber ettim.Teşekkürler paylaşımınız için.
Rica ederim.