1. Hedef Mimari
Bu çalışmanın amacı, Docker ortamında çalışan container loglarının merkezi log yönetimi ve korelasyon amacıyla FortiSIEM platformuna iletilmesidir. Bu sayede container seviyesindeki uygulama, sistem ve güvenlik olayları SIEM üzerinde izlenebilir, alarm üretilebilir ve geriye dönük analiz yapılabilir hale gelir.
Hedef mimaride bileşenler aşağıdaki gibidir:
- Docker Host (Ubuntu): Container’ların çalıştığı ve log dosyalarının üretildiği sunucu
- Docker Engine: Container loglarını varsayılan olarak json-file formatında diske yazar
- FortiSIEM Linux Agent: Docker host üzerine kurularak log dosyalarını izler
- FortiSIEM Collector: Agent tarafından gönderilen logları toplayan ve analiz eden merkezi bileşen
Log akışı şu şekilde gerçekleşir:
Docker Container → JSON Log Dosyası → FortiSIEM Agent → FortiSIEM Collector
Bu yapı sayesinde container içindeki uygulamalara doğrudan müdahale etmeden, host seviyesinden log toplama sağlanmış olur.
2. Docker Kontrolleri
Varsayılan olarak Docker komutları sadece root kullanıcısı tarafından çalıştırılabilir. Normal kullanıcı ile Docker kullanabilmek için kullanıcı docker grubuna eklenmiştir:
- sudo usermod -aG docker infinitum


Kullanıcının Docker erişimi doğrulanmıştır:
- docker ps
Docker’ın düzgün çalıştığını doğrulamak amacıyla test container çalıştırılmıştır:
- docker run –rm alpine sh -c “echo SIEM-DOCKER-TEST”
Bu komut, kısa süreli bir Alpine container başlatır ve ekrana test mesajı yazdırır. Çıktı görülüyorsa Docker düzgün çalışıyor demektir.

Container logları varsayılan olarak şu dizin altında oluşur:
- /var/lib/docker/containers/
4. FortiSIEM Linux Agent Kurulumu
Bu adımda Docker host üzerine FortiSIEM Linux Agent kurulmuştur. Bu agent, sistem logları ve Docker container loglarını okuyarak FortiSIEM Collector’e iletecektir.
Agent kurulum dosyası Windows makineden Linux sunucuya kopyalanmıştır:
- scp fortisiem-linux-agent-installer-7.4.2.0453.sh.zip [email protected]:/home/infinitum/
Bu işlem sonucunda kurulum dosyası Linux sunucuda kullanıma hazır hale gelir.

Sıkıştırılmış dosya açılır:
- unzip fortisiem-linux-agent-installer-7.4.2.0453.sh.zip
Çıkan kurulum scriptine çalıştırma yetkisi verilir:
- chmod +x fortisiem-linux-agent-installer-7.4.2.0453.sh

FortiSIEM Agent’in düzgün çalışabilmesi için bazı sistem paketleri gereklidir.
Paket listesi güncellenir:
- sudo apt update

Gerekli log ve audit bileşenleri yüklenir:
- sudo apt install -y libcap2-bin auditd audispd-plugins rsyslog logrotate dnsutils

Ek olarak zamanlanmış görevler için:
sudo apt install -y at

Kurulum scripti Supervisor ve Collector bilgileri ile çalıştırılır:
- Sudo ./fortisiem-linux-agent-installer-7.4.2.0453.sh -s SupervisorIP -I CollectorID -o TenantName -u AgentName -p Password -n CollectorHostname

Kurulum tamamlandıktan sonra agent servisi otomatik olarak oluşturulur ve başlatılır.
Servis durumu kontrol edilir:
- systemctl status fortisiem-linux-agent

5. FortiSIEM Linux Template Oluşturma, Path Tanımları
Bu adımda FortiSIEM üzerinde Linux Agent için bir izleme (monitor) template’i oluşturularak Docker container log dosyalarının toplanması sağlanır.
FortiSIEM’in okuyacağı logların dosya tabanlı olması gerekir. Bunun için Docker logging driver kontrol edilir:
- docker info | grep “Logging Driver”

FortiSIEM arayüzünden:
Admin → Linux Agent → Monitor Templates → New
Bu template, Docker loglarını toplamak için kullanılacaktır.

Monitor Sekmesi
Bu sekmede sistem performans metrikleri de izlenebilir. Örnek yapı:
- CPU → 1 Minute
- Memory → 3 Minutes
- Disk → 3 Minutes
- Network → 1 Minute
- Application → 2 Minutes
Bu ayarlar Docker loglarından bağımsızdır ancak host izleme için önerilir.

Log File Sekmesi
Docker log dosyalarının yolu burada tanımlanır.
| Full File Name | /var/lib/docker/containers/containerID/ContainerID-json.log |
| Log Prefix | test |
- Burada Full File Name kısmında belirtilen path verilir. ContainerID yazan kısma dockerden aldığımız container ID yazıılır. (Container ID’yi öğrenmek için docker’da sudo docker inspect -f ‘{{.Id}}’ ContainerName)
Not: Lof Prefix’e ne yazılırsa siemde logları search ederken ilgili kelimeyle search edilebilir.


Template oluşturmak yeterli değildir, ilgili host’a atanması gerekir.
Admin → Linux Agent → Host To Template Associations → New
Kaydedildikten sonra template aktif hale gelir ve agent log dosyalarını izlemeye başlar.



6. Docker Loglarını Agent’a Okutma ve Permission İşlemleri
Bu adımda Docker container log dosyalarının FortiSIEM Linux Agent tarafından okunabildiği doğrulanır ve gerekli dosya izinleri düzenlenir.
Linux Agent’ın çalışıp çalışmadığı kontrol edilir.
- Systemctl status fortisiem linux-agent
Test Amaçlı Log Üreten Container Çalıştırılması
Öncelikle sürekli log üreten bir test container başlatılır:
- sudo docker run -d –name siemtest alpine sh -c ‘while true; do echo SIEM_DOCKER_LOG; sleep 5; done’
Container’ın çalıştığı doğrulanır:
- docker ps

Container Log Dosyasının Konumunun Bulunması
Container ID öğrenilir:
- docker inspect -f ‘{{.Id}}’ siemtest

Docker Config Dosyasının Editlenmesi
- sudo nano /etc/docker/daemon.json
Aşağıdaki gibi editlenir:


Tüm container log dosyalarına execute izni verilir:
- sudo find /var/lib/docker/containers -mindepth 1 -maxdepth 1 -type d -exec chmod o+x {} \;
- sudo chmod o+x /var/lib/docker
- sudo usermod -aG docker fsmadmin
JSON log dosyalarının okunabilmesi için read (r) izni verilmiştir:
- sudo find /var/lib/docker/containers -maxdepth 2 -name “*-json.log” -exec chmod o+r {} \;
İzinlerin çalıştığını test etmek için agent kullanıcısı ile log dosyası okunmuştur:
- CID=$(sudo docker inspect -f ‘{{.Id}}’ livetest)
- sudo -u fsmadmin head -n 2 /var/lib/docker/containers/$CID/$CID-json.log

ACL ile Kalıcı Docker Log Erişim Yetkisi Tanımlama
Bazı Linux sistemlerinde yalnızca chmod o+r vermek yeterli olmayabilir. Docker klasörleri root sahipliğinde ve kısıtlı izinlerle oluşturulduğu için FortiSIEM Agent kullanıcısı (fsmadmin) hâlâ erişim hatası alabilir.
Bu durumda ACL kullanılarak özel kullanıcıya doğrudan yetki tanımlanmıştır.
- sudo apt install acl -y
- sudo setfacl -m u:fsmadmin:rx /var/lib/docker
- sudo setfacl -R -m u:fsmadmin:rx /var/lib/docker/containers
- sudo setfacl -d -m u:fsmadmin:rx /var/lib/docker/containers (Yeni oluşacak container klasörleri için de otomatik yetki verilmesi sağlanır)
- sudo systemctl restart fortisiem-linux-agent


Agent kullanıcısı ile log dosyası okunarak test yapılır:
- sudo -u fsmadmin head -n 2 /var/lib/docker/containers/<container_id>/<container_id>-json.log



7. Canlı Log Gönderme ve Doğrulama
Bu adımda Docker container’dan canlı log üretilerek FortiSIEM’e iletilmesi doğrulanır.
Sürekli log üreten bir test container başlatılır:
- sudo docker run -d –name siemtest alpine sh -c ‘while true; do echo SIEM_DOCKER_NOW; sleep 5; done’

Container’ın çalıştığı doğrulanır:
- sudo docker ps –filter name=siemtest
Container ID öğrenilir:
- sudo docker inspect -f ‘{{.Id}}’ siemtest
İzinler kontrol edilir.
- sudo ls -lah /var/lib/docker/containers/ID…

Log dosyasının içeriği kontrol edilir:
- sudo tail -n 5 /var/lib/docker/containers/<container_id>/<container_id>-json.log

FortiSIEM arayüzünde:
Analytics → Search
Veya CMDB → Docker → Actions → Real-Time Events

Vakit ayırdığınız için teşekkürler.
Ülkü YAŞAR

1 ay önce
16


























English (US) ·