31/07/2021

Graylog Proje -1

Bu minik proje ile hem müşteri problemlerini daha çabuk tespi edebilmek hemde sistem problemlerini sistem çöktükten sonra kapalıyken bile tespit edebilmek hemde güvenlik araştırmalarında kullanabilmek adına merkezi bir log toplama inceleme sistemi kurulacaktır.

Ayrıca şu kaynak da güzel : https://cenk.org/wp-content/uploads/2020/11/Log-Analizi.pdf

Kurulum graylog yazılımı ile yapılacaktır. Kurulum 3 lü Proxmox Cluster Donanım ve CEPH storage üzerinde koşacaktır.

Dell PowerEdge RXXX
Intel Xeon E5-2630L v2
32GB DDR3-1600 RDIMM
2X SAS 1TB

Mantıksal yapı olarak 3 adet graylog sunucu containerı ayrıca veri tutması açısında 3 adet elastic search containerı ve bunların öünde Load-balancing için bir adet Nginx Reverse-proxy kurulacaktır.

Kurulum zamanında mevcut olan Graylog Centos 8 i desteklemediği için kurulum Centos 7 minimal ile yapılmıştır.

Standart olarak nano,tcpdump,screen tüm containerlara kurulmuş ayrıca pwgen de ihtiyaca bağlı olarak kurulmuştur. Zaman olarak tüm Containerlarda (CT) standard aynı zaman dilimi kullanılmıştır.

Kurulum

Graylog CTlerinde ayrıca MongoDB clusterı da oluşturulmaktadır. MongoDB ile graylogta yapılmış olan bütün ayarlar tutulmaktadır. Dolayısıyla öncelikle onu kuracağız ve çalıştıracağız.

#yum install java-1.8.0-openjdk-headless.x86_64 -y
# yum install epel-release -y
# yum -y install pwgen
# yum install mongodb-org -y
# systemctl daemon-reload
# systemctl enable mongod.service
# systemctl start mongod.service

Artık mongoDB nn ayarlarına geçebiliriz.
/etc/mongod.conf

storage:
dbPath: /data/db
# network interfaces
net:
port: 27017
bindIp: 192.168.3.1,127.0.0.1 # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 addresses or,
alternatively, use the net.bindIpAll setting.
#operationProfiling:
replication:
replSetName: "graylog"

sonra MongoDB servisini restart edeceğiz. Aynı configleri tğm graylog CT’lerinde tekrarlayacağız ve MongoDB servislerini aktif edeceğiz.
Ancak MongoDB Clusteri henüz başlamadı. Bunun için Mongo CLI a geçip başlatmamız gerekmektedir.

# mongo
Graylog:PRIMARY> cfg = {"_id" : "graylog" , "members" :
[{"_id":0,"host":"192.168.3.1:27017"} , {"_id":1,"host":"192.168.3.2:27017"} ,
{"_id":2,"host":"192.168.3.3:27017"}]}
Graylog:PRIMARY> rs.initiate(cfg)
Graylog:PRIMARY> rs.status()

rs.status() ile clusterın durumuna bakarız.

"set" : "graylog",
        "date" : ISODate("2017-07-11T09:31:53.525Z"),
        "myState" : 2,
        "term" : NumberLong(7),
        "syncingTo" : "192.168.3.2:27017",
        "heartbeatIntervalMillis" : NumberLong(2000),
        "optimes" : {
                "lastCommittedOpTime" : {
                        "ts" : Timestamp(1499765513, 1),
                        "t" : NumberLong(7)
                },
                "appliedOpTime" : {
                        "ts" : Timestamp(1499765513, 1),
                        "t" : NumberLong(7)
                },
                "durableOpTime" : {
                        "ts" : Timestamp(1499765513, 1),
                        "t" : NumberLong(7)
                }
        },
        "members" : [
                {
                        "_id" : 0,
                        "name" : "192.168.3.1:27017",
                                          "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 162,
                        "optime" : {
                                "ts" : Timestamp(1499765513, 1),
                                "t" : NumberLong(7)
                        },
                        "optimeDate" : ISODate("2017-07-11T09:31:53Z"),
                        "syncingTo" : "192.168.3.2:27017",
                        "configVersion" : 1,
                        "self" : true
                },
                {
                        "_id" : 1,
                        "name" : "192.168.3.2:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 161,
                        "optime" : {
                                "ts" : Timestamp(1499765511, 1),
                                "t" : NumberLong(7)
                        },
                        "optimeDurable" : {
                                "ts" : Timestamp(1499765511, 1),
                                "t" : NumberLong(7)
                        },
                        "optimeDate" : ISODate("2017-07-11T09:31:51Z"),
                        "optimeDurableDate" : ISODate("2017-07-11T09:31:51Z"),
                        "lastHeartbeat" : ISODate("2017-07-11T09:31:52.330Z"),
                        "lastHeartbeatRecv" : ISODate("2017-07-11T09:31:52.233Z"),
                        "pingMs" : NumberLong(0),
                        "electionTime" : Timestamp(1499765360, 1),
                        "electionDate" : ISODate("2017-07-11T09:29:20Z"),
                        "configVersion" : 1
                },
                {
                        "_id" : 2,
                        "name" : "192.168.3.3:27017",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 82,
                        "optime" : {
                                "ts" : Timestamp(1499765512, 1),
                                "t" : NumberLong(7)
                        },
                        "optimeDurable" : {
                                "ts" : Timestamp(1499765512, 1),
                                "t" : NumberLong(7)
                        },
                        "optimeDate" : ISODate("2017-07-11T09:31:52Z"),
                        "optimeDurableDate" : ISODate("2017-07-11T09:31:52Z"),
                        "lastHeartbeat" : ISODate("2017-07-11T09:31:53.373Z"),
                        "lastHeartbeatRecv" : ISODate("2017-07-11T09:31:52.323Z"),
                        "pingMs" : NumberLong(0),
                        "syncingTo" : "192.168.3.2:27017",
                        "configVersion" : 1
                }
        ],
        "ok" : 1
}


Leave a Reply