29 Mayıs 2017 Pazartesi

Syslog Centos 7 Loganalyzer Kurulumu

Centos 7 de Loganalyzer Syslog Kurulumu (2019)

Herkese Merhabalar
Geçen zaman ile daha önce yazdığım makalemin geçerliliği bittiğinden hem de yeni bir syslog ihtiyacım olduğundan güncel sistemler ile kurup yeni bir makale hazırlamak istedim.
 Tüm sistemcilerin temel görevlerinden olan SW veya Linux serverlerin loğlarının merkezi bir yerde toplamak. Free , stabil ve çok fonksiyonel olduğundan vazgeçilmez bir yapı kurulmuş oluyor. Eminim sizde türevlerini kullanıyorsunuzdur.
 Eski makalede olduğu gibi aynı mantık sadece güncel versiyonlar olacak. Tabi tüm kurulum değişmiş. Neyse uzatmadan başlayalım.

Yapı: Centos 7 üzerine rsysylog ile loğları db ye yazıyoruz. Loganalyzer uygulaması ile web browser üzerinden db deki loğları istediğimiz gibi inceleyebiliriz.

Centos 7 minimal  indirip kurdum. Yum update ile güncelledim. Buradan kuruluma başladım.
[root@localhost ~]# cat /etc/centos-release
CentOS Linux release 7.3.1611 (Core)
[root@localhost ~]# yum update
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.rackdc.com
 * extras: mirror.rackdc.com
 * updates: mirror.rackdc.com
No packages marked for update

Kurulumu gerçekleştirirken yararlandığım kaynakların listesi paylaşmak istiyorum. Biraz ondan biraz burdan ihtiyacıma göre kurulum yaptım. Bazı yerleri kendime göre değiştirdim.



1.     Rsyslog kurulumu:

Logları toplayacak ve DB mize yazacak uygulama kurulumu ile başlayalım.

Mevcut yum deposunda V8 olmadığı için özel depo kullanmamız gerekiyor.

[root@localhost ~]# yum install rsyslog
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.rackdc.com
 * extras: mirror.rackdc.com
 * updates: mirror.rackdc.com
Package rsyslog-7.4.7-16.el7.x86_64 already installed and latest version
Nothing to do

 Sayfasına bakarak son versiyon stable olanı tespit edebilirsiniz. Ben bu yazıyı yazarken V8 olanı vardı.
Depomuzu ekleyelim ve rsyslogu kuralım.
wget http://rpms.adiscon.com/v8-stable/rsyslog.repo
mv rsyslog.repo /etc/yum.repos.d/rsyslog.repo
yum install rsyslog* --skip-broken

Server yeni açıldığında otomatik çalışması için:
systemctl enable rsyslog.service


Kurulum tamamlandı. Config ayarları için DB gerekiyor. Önce DB mizi kuralım sonra ayarlarını tamamlayalım.

2.     MYSQL kurulumu ve ayarları:

Centos 7 ile birlikte artık yum depomuzda mysql gelmiyor. Mysql özel deposunu ekliyerek kolayca kurulumu tamamlayacağız.

Yukarıdaki web sayfasını ziyaret ederek son versiyonu tespit edip onun deposunu indirip kullanacağız.
İndirdiğimiz dosyaların artıkları için kendime temp dosyası oluşturuyorum.

mkdir /root/temp
cd /root/temp

Sonra en güncel depoyu indiriyorum.

wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm

İnen rpm dosyasını kuruyorum.
 rpm -ivh mysql80-community-release-el7-3.noarch.rpm
Artık depomuz ekli. Yum ile kuruluma başlayabiliriz.

yum install mysql-server mysql

Kurulum sırasında sorulan sorulara ‘Y’ ile ilerleyip kurulumu tamamlıyoruz.

Kurulum sonrası mysql çalıştırıyoruz.


systemctl start mysqld 
systemctl status mysqld

Mysql kurulum sırasında otomatik root şifresi atıyor. Bunu öğrenmek için loğlarında arama yapıyoruz.

[root@localhost ~]# grep 'temporary password' /var/log/mysqld.log
2019-11-22T13:16:58.311684Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: rss5)TJH.Kdj

Yukarı gördüğünüz şifreyi ile girişte değiştirmenizi istiyor. Basit güvenlik ayarları yapmak için:

mysql_secure_installation

diyerek loğda öğrendiğimiz şifreyi giriyoruz. Bizden yeni şifremizi oluşturmamızı istiyor. Güvenlik biraz abartılmış. En az 12 karakter ve içinde  küçük harf, büyük harf, rakam, özel karakter olacak şekilde yeni şifremizi belirliyoruz.
İlk girişte bize şifremizi değiştirtmişti. Bu sefer komutun devreye girmesi ile root şifremizi değiştirmek istiyor musunuz diye soruyor. No diyebilirsiniz.
Diğer sorulara da okuyarak istediğimiz gibi cevap verebilirsiniz. Bilmiyorsanız yes diyebilirsiniz. Cevap vermesseniz sorun oluyor. Boş geçmeyin.

3.     Rsyslog DB bağlantısı:


Şimdi Rsyslog için mysql içinde uygun db ve tabloları oluşturalım:
mysql -u root -p < /usr/share/doc/rsyslog-8.1911.0/mysql-createDB.sql


Yukarıdaki komutu yazarken “mysql -u root -p < /usr/share/doc/rsyslog” sonrasını tab tamamlatırsanız farklı versiyon kurmuşsanız otomatik doğru olanı ekleyecektir. Bu komut size Mysql içinde “Syslog” isminde bir database oluşturacak.
Şimdi bu databese’de yetkili bir kullanıcı oluşturalım. Önce Mysql e girelim:
mysql -u root –p 

Not: Yukarıdaki komutta p den sonra boşluk bırakmazsanız "Access denied for user 'root'@'localhost' (using password: NO)" hatası alırsınız.
Syslog databesinde tam yetkili local “rsyslogdbadmin” isimli ‘Rsyslogdbadmin1!’ şifreli bir kullanıcı oluşturalım.
CREATE USER 'rsyslogdbadmin'@'%' IDENTIFIED BY 'Rsyslogdbadmin1!';
GRANT ALL PRIVILEGES ON *.* TO 'rsyslogdbadmin'@'%';

ALTER USER 'rsyslogdbadmin'@'%' IDENTIFIED WITH mysql_native_password BY 'Rsyslogdbadmin1!';

FLUSH PRIVILEGES;
exit

Mysql hazır. Şimdi rsyslog ayarlayalım.
vi /etc/rsyslog.conf

Kırmızı ile işaretlediğim satırların başındaki # ifadeyi kaldıralım.

# for parameters see http://www.rsyslog.com/doc/imudp.html
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

# Provides TCP syslog reception
# for parameters see http://www.rsyslog.com/doc/imtcp.html
module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")

Aşağıdaki satırları istediğiniz uygun bir yere ekleyelim.

module(load="ommysql")
#*.* :ommysql:127.0.0.1,Syslog,rsyslogdbadmin,Rsyslogdbadmin1!
$template tpl,"insert into SystemEvents (Message, Facility, EventSource, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag, FromHost, EventUser) values ('%msg%', %syslogfacility%, '%FROMHOST-IP%', %syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag%', '%FROMHOST%', '%HOSTNAME%')",SQL
#########

*.*;cron.none :ommysql:127.0.0.1,Syslog,rsyslogdbadmin,Rsyslogdbadmin1!;tpl


Yukarıdaki değişikler ile 514 portumuzu aktif ettik. Ayrıca *.* ile her şeyi ommysql modulü ile localdeki (172.0.0.1) Syslog Database’sine verilen kullanıcı adı ve şifre ile gönder dedik J Siz farklı kullanıcı ve şifre oluşturursanız burayı ona göre düzenleyin.

 Artık hazırız. Rsyslogu yeniden başlatalım.
systemctl restart rsyslog
systemctl status rsyslog

Sorunsuz bir şekilde çalışmaya başlamış ise loğlarımız mysqle düşmeye başlamıştır. İsterseniz aşağıdaki gibi kontrol edebilirsiniz.

mysql -u rsyslogdbadmin -p Syslog
mysql> select count(*) from SystemEvents;
+----------+
| count(*) |
+----------+
|        2 |
+----------+


4.     Firewall  ayarlarının yapılması:

Bir çok insan firewall ları kapatır ve geri açmayı düşünmez. Güvenlik önemli bir olaydır. Basit bir şekilde bu işlemi yapacağız. İhtiyaçlarımızı belirleyelim:
·        Uzaktan log gelmesi için 514 port
·        Web sayfası için 80 portu
·        İstiyorsak (şart değil) Mysql remote için 3306 portu
Firewall kurallarımıza bakalım.
firewall-cmd --list-all
firewall-cmd --permanent --add-port=514/tcp
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --permanent --add-port=514/udp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens160
  sources:
  services: dhcpv6-client ssh
  ports: 514/tcp 3306/tcp 80/tcp 514/udp
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:

5.     Web Servis kurulumu:

Apache:


yum install httpd
systemctl enable httpd.service
systemctl start httpd
systemctl status httpd

Web Servisimizide kurduğumuza göre artık http://server-ip-adresi  gittiğimizde apache sayfası göreceğiz.

Php:


yum install php php-mysql php-gd

Gerekli olan php de kurulduğuna göre php modulumüzü test edelim. Bunun için:

vi /var/www/html/test.php

içine aşağıdaki metini ekleyip kaydediyoruz.

<?php
phpinfo();
?>

systemctl restart httpd

Web servisimizide restart ettiğimize göre http://server-ip-adresi/test.php  sayfasını açtığımızda php info sayfasını göreceğiz.Bu şekilde php testini yapmış olduk.

6.     Loganalyzer Kurulumu:


Son versiyonu öğrenmek için http://loganalyzer.adiscon.com/downloads/ sitesini ziyaret ediyoruz.

cd /root/temp

Not: Proxy ile örnek olsun diye yukarıdaki komutun başka hali
"wget -e use_proxy=yes -e https_proxy='http://10.81.101.65:3128/' https://download.adiscon.com/loganalyzer/loganalyzer-4.1.8.tar.gz "
Son versiyonu indiriyoruz. Bu yazıyı yazarken en son 4.1.8 vardı.

tar zxvf loganalyzer-4.1.8.tar.gz

Dosyamızı açıyoruz.

cd loganalyzer-4.1.8
cp -fR contrib/* /var/www/html/
cp -fR src/* /var/www/html/

ilgili dosyalarımızı web servisimizin dizinine taşıyoruz. Ben burda küçük bir değişiklik yaparak direk html içine taşıyorum. Bu sayede http://server*ip-adresimiz/ yazdığımızda log analyzer gelecek.

cd /var/www/html/
Web servisimizin dizinine geçiyoruz.
chmod +x configure.sh secure.sh
Kurulum için gerekli olan  izinleri veriyoruz.
./configure.sh
Bu komut ile config.php dosyasının oluşmasını sağlıyoruz. Artık Web sayfımızdan kuruluma devam edebileceğiz.

Not: Php web sayfasında kurulum ayabilmek için selinux kapalı olması gerekiyor. Bunun için disable yapmamıza gerek yok. Permissive olması yeterli. Sunucu reboot olduğunda tekrar normale dönecektir. İsterseniz direk “setenforce 1” tekrar açabilirsiniz.

[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive

Eğer Selinuz kapatılmaz ise chmod 666 hatası alacaksınız.


http://server*ip-adresimiz/   Yazarak kuruluma Web Servisi üzerinden devam ediyoruz.



Kuruluma Başlıyoruz.


 Chmod ayarları ve selinux tamam ise burası sorun olmayacaktır.

Bu sayfa loganalyzer kullanıcılarının tanımlanacağı db ayarlıyoruz. Database ismini, kullanıcı adı ve şifresini doğru giriniz. Tablo adına dokunmuyoruz. 


Burası esas olan yer. Source type olarak mysql seçiyoruz. Database ismini , tablo ismini doğru yazmamız gerekiyor. Tablo isminde Büyük, küçük harflere dikkat edelim.
Not: Enable Row Counting kısmını No yapın. Yoksa ilerde sayfanız çok yavaşlar. Her sayfa açılışında log sayısını bulmaya çalışır :)



Ve Bitti Yeni syslog uygulamanız hayırlı olsun.



#!/bin/sh
#MYSQL queries
RECORDSTODELETE=`mysql -u {user} -p{password} –silent -e “SELECT COUNT(*) FROM Syslog.SystemEvents WHERE Syslog.SystemEvents.ReceivedAt < DATE_SUB(NOW(), INTERVAL 120 DAY);"`
RESULTS=`mysql -u {user} -p{password} –silent -e "DELETE from Syslog.SystemEvents WHERE Syslog.SystemEvents.ReceivedAt < DATE_SUB(NOW(), INTERVAL 120 day);"`
`logger -i Purged ${RECORDSTODELETE} records from logging database`



vi /etc/my.cnf

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
bind-address            = 0.0.0.0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid