LAMP Sunucusunda Ağ Trafiğini sysdig ile Denetleme: CentOS 7 Üzerinde Kapsamlı Bir Rehber
Modern web uygulamalarının omurgasını oluşturan LAMP (Linux, Apache, MySQL, PHP) sunucuları, sürekli olarak dış dünyadan gelen isteklere yanıt verir ve veri alışverişinde bulunur. Bu yoğun trafik akışı, sunucu performansını, güvenliğini ve genel kararlılığını doğrudan etkileyen kritik bir unsurdur. Bir LAMP sunucusunun ağ trafiğini etkili bir şekilde denetlemek, potansiyel güvenlik tehditlerini erken aşamada tespit etmek, performans darboğazlarını gidermek ve sistemin genel sağlığını korumak için hayati öneme sahiptir. Geleneksel ağ izleme araçları genellikle ağ arayüzü düzeyinde veya paket bazında sınırlı görünürlük sunarken, sysdig gibi güçlü bir sistem denetim aracı, çekirdek seviyesindeki sistem çağrılarına erişerek çok daha derin ve anlamlı bir görünüm sağlar. CentOS 7 üzerinde bir LAMP sunucusunda sysdig kullanarak ağ trafiğini nasıl denetleyeceğinizi bu kapsamlı makalede adım adım inceleyeceğiz.
Neden Ağ Trafiği Denetimi Bu Kadar Önemli?
Ağ trafiği denetimi, bir LAMP sunucusunun operasyonel güvenilirliği ve sürekliliği için temel bir gerekliliktir. Bu denetim, çeşitli kritik alanlarda sunucu yöneticilerine ve geliştiricilere paha biçilmez bilgiler sunar:
* Güvenlik Tehditlerini Tespit Etme: Sunucunuza yönelik yetkisiz erişim girişimleri, DDoS saldırıları, SQL enjeksiyonları veya XSS gibi web tabanlı saldırılar, ağ trafiğinde anormal desenler oluşturur. sysdig ile bu tür anormal bağlantı girişimlerini, olağandışı port kullanımını veya beklenmedik giden bağlantıları gerçek zamanlı olarak izleyerek güvenlik ihlallerini önleyebilir veya hızla müdahale edebilirsiniz. Örneğin, web sunucusundan dışarıya doğru başlatılan beklenmedik bir bağlantı, bir web kabuğunun (web shell) veya kötü amaçlı yazılımın işaretçisi olabilir. MySQL portuna yapılan başarısız bağlantı denemelerinin yoğunluğu, bir kaba kuvvet saldırısının göstergesi olabilir.
* Performans Darboğazlarını Belirleme: Yavaş yüklenen web sayfaları, veritabanı sorgularının gecikmesi veya genel sistem yanıt süresindeki düşüşler genellikle ağ katmanında veya ilişkili süreçlerdeki sorunlardan kaynaklanır. sysdig, Apache veya Nginx süreçlerinin ağ bağlantılarını, MySQL sunucusunun istemci bağlantılarını ve PHP süreçlerinin dış kaynaklara (örneğin, API’ler) yaptığı çağrıları detaylı bir şekilde inceleyerek performans sorunlarının kökenini anlamanıza yardımcı olur. Hangi sürecin ne kadar ağ bant genişliği kullandığı, hangi bağlantıların uzun sürdüğü veya hangi IP adreslerinden yoğun istek geldiği gibi bilgiler, optimizasyon için kritik ipuçları sunar.
* Uyumluluk ve Yasal Gereklilikler: Bazı endüstriler ve yasal düzenlemeler, ağ trafiğinin belirli bir düzeyde izlenmesini ve kaydedilmesini gerektirir. Hassas verilerin işlendiği sunucularda, veri akışını denetlemek ve belirli protokollere uyulduğunu doğrulamak yasal zorunluluk olabilir. sysdig ile detaylı denetim günlükleri oluşturarak bu tür gereklilikleri karşılayabilirsiniz.
* Sorun Giderme ve Hata Ayıklama: Bir uygulama hatası veya sistem arızası durumunda, ağ trafiği günlükleri ve gerçek zamanlı izleme, sorunun kaynağını hızla bulmak için vazgeçilmezdir. Örneğin, bir PHP uygulamasının harici bir hizmete bağlanamaması durumunda, sysdig ile ilgili ağ bağlantılarını izleyerek bağlantı hatasının nedenini (DNS çözünürlüğü, güvenlik duvarı, hedef sunucu erişilemezliği vb.) tespit edebilirsiniz.
* Kaynak Kullanımı Analizi: Hangi uygulamaların veya kullanıcıların ağ kaynaklarını yoğun bir şekilde kullandığını anlamak, kaynak tahsisini optimize etmek ve olası kötüye kullanımları önlemek için önemlidir. sysdig ile süreç bazında ağ kullanımını izleyerek bu tür analizleri yapabilirsiniz.
Bu nedenlerden dolayı, bir LAMP sunucusunda ağ trafiği denetimi, proaktif bir güvenlik duruşu sergilemek, performansı en üst düzeye çıkarmak ve operasyonel verimliliği sağlamak için temel bir adımdır.
Neden sysdig?
Piyasada birçok ağ izleme ve denetim aracı bulunurken, sysdig özellikle sistem çağrıları seviyesinde sunduğu derin görünürlük ve esneklik sayesinde LAMP sunucusu denetimi için öne çıkmaktadır. İşte sysdig‘i tercih etmeniz için başlıca nedenler:
* Çekirdek Seviyesinde Derin Görünürlük: sysdig, Linux çekirdeğine bir modül olarak entegre olur ve tüm sistem çağrılarını yakalar. Bu, ağ trafiği de dahil olmak üzere her türlü sistem etkinliğine benzersiz bir derinlikte erişim sağlar. Geleneksel paket yakalayıcılar (örneğin tcpdump) yalnızca ağ arayüzünden geçen paketleri görürken, sysdig bir sürecin neden bir ağ bağlantısı kurduğunu veya hangi sistem çağrılarının bu bağlantıyı tetiklediğini gösterir.
* Süreç Odaklı Yaklaşım: sysdig, ağ etkinliklerini belirli süreçlerle ilişkilendirir. Bu, hangi uygulamanın (Apache, MySQL, PHP-FPM) hangi IP adresine veya portuna bağlandığını, ne kadar veri gönderip aldığını net bir şekilde görmenizi sağlar. Bir web sunucusundan beklenmedik giden bağlantılar gördüğünüzde, bunun hangi Apache veya PHP sürecinden kaynaklandığını anında tespit edebilirsiniz.
* Güçlü Filtreleme Mekanizması: sysdig, karmaşık filtre ifadeleri kullanarak yalnızca ilgilendiğiniz olayları yakalamanıza olanak tanır. Süreç adına, kullanıcıya, dosya tanımlayıcısına (socket), IP adresine, porta, protokole ve hatta sistem çağrısı türüne göre filtreleme yapabilirsiniz. Bu, gürültüyü azaltarak hedeflenen denetimler yapmanızı sağlar.
* Zengin Çıktı Formatları ve Enstrümanlar: sysdig, ham olayları gösterebileceği gibi, çeşitli “scap” (system call capture) dosyalarına kaydedebilir ve csysdig gibi interaktif bir arayüz sunar. Ayrıca, sistem çağrılarını analiz ederek netstat, top, lsof gibi komutların işlevselliğini taklit eden “chisels” adı verilen önceden tanımlanmış araçları (Lua betikleri) barındırır. Bu chisels, ağ bağlantılarını, en çok ağ kullanan süreçleri, HTTP trafiğini (şifrelenmemiş ise) ve daha fazlasını kolayca izlemenizi sağlar.
* Düşük Performans Etkisi: Çekirdek modülü sayesinde, sysdig genellikle diğer izleme araçlarına kıyasla daha düşük bir performans yüküyle çalışır, çünkü verileri doğrudan çekirdekten alır ve kullanıcı alanına kopyalama ihtiyacını azaltır.
* Esneklik ve Genişletilebilirlik: Lua betikleri aracılığıyla sysdig‘in yeteneklerini genişletebilir, özel denetim kuralları oluşturabilir veya belirli olaylara yanıt veren otomasyonlar geliştirebilirsiniz.
Bu özellikler, sysdig‘i bir LAMP sunucusunda ağ trafiği denetimi için vazgeçilmez bir araç haline getirir. Hem güvenlik hem de performans açısından derinlemesine analizler yapma yeteneği sunar.
LAMP Sunucusu Bağlamında Ağ Trafiği Denetimi
Bir LAMP sunucusu, web uygulamalarını çalıştırmak için bir dizi bileşenin uyumlu bir şekilde çalışmasını gerektirir. Bu bileşenlerin her biri, ağ trafiği denetimi açısından farklı ilgi alanları sunar:
* Apache (veya Nginx): Web sunucusu olarak, dış dünyadan gelen HTTP/HTTPS isteklerini dinler ve işler. Denetimde, hangi IP adreslerinden istek geldiği, hangi URL’lere erişildiği, kaç bağlantının açık olduğu ve bu bağlantıların ne kadar veri transfer ettiği gibi bilgiler önemlidir. Olağandışı yüksek bağlantı sayıları veya belirli bir IP’den gelen yoğun istekler DDoS saldırısı veya tarama girişimi olabilir.
* MySQL: Veritabanı sunucusu, genellikle web sunucusuyla aynı makinede veya ayrı bir sunucuda çalışır. Denetimde, MySQL’e hangi IP adreslerinden bağlantı kurulduğu (genellikle sadece localhost veya belirli uygulama sunucuları), başarısız bağlantı denemeleri, uzun süren sorgular ve veritabanından dışarıya doğru yapılan beklenmedik bağlantılar (eğer böyle bir senaryo varsa) incelenir. MySQL portuna (varsayılan 3306) dışarıdan gelen yetkisiz bağlantı girişimleri ciddi bir güvenlik riskidir.
* PHP: Genellikle Apache ile modül olarak veya PHP-FPM (FastCGI Process Manager) aracılığıyla çalışır. PHP betikleri, veritabanına bağlanır, harici API’lere istek gönderir veya dosya sistemi işlemleri yapar. Denetimde, PHP süreçlerinin dışarıya doğru hangi bağlantıları kurduğu (örneğin, bir üçüncü taraf API’ye yapılan cURL istekleri), bu bağlantıların performansı ve herhangi bir kötü amaçlı PHP betiğinin beklenmedik ağ etkinliği yaratıp yaratmadığı izlenir.
sysdig, bu üç ana bileşenin ağ etkileşimlerini süreç bazında izleyerek, her birinin kendine özgü güvenlik ve performans gereksinimlerini karşılamanıza olanak tanır.
Ön Gereklilikler
sysdig ile LAMP sunucunuzda ağ trafiği denetimi yapmaya başlamadan önce, aşağıdaki ön gerekliliklerin karşılandığından emin olun:
* CentOS 7 İşletim Sistemi: Bu rehber CentOS 7 üzerinde çalışmayı varsaymaktadır.
* LAMP Sunucusu Kurulumu: Apache HTTP Sunucusu, MySQL (veya MariaDB) ve PHP’nin sunucunuzda kurulu ve çalışır durumda olması gerekmektedir.
* Root veya Sudo Yetkileri: sysdig‘i kurmak ve çalıştırmak için kök kullanıcı (root) veya sudo yetkilerine sahip bir kullanıcı olmanız gerekmektedir.
* Temel Linux Komut Satırı Bilgisi: Linux komutlarını ve dosya sistemini kullanma konusunda temel bilgiye sahip olmak faydalı olacaktır.
* İnternet Bağlantısı: sysdig paketlerini indirmek için sunucunuzun internete bağlı olması gerekmektedir.
sysdig Kurulumu
CentOS 7 üzerinde sysdig‘i kurmak oldukça basittir. Aşağıdaki adımları izleyerek kurulumu gerçekleştirebilirsiniz:
1. sysdig Deposu Ekleme: sysdig paketleri CentOS’un varsayılan depolarında bulunmaz. Bu nedenle, sysdig‘in kendi deposunu sisteme eklemeniz gerekir.
sudo curl -s https://s3.amazonaws.com/download.draios.com/stable/install-sysdig | sudo bash
Bu komut, sysdig deposunu otomatik olarak sisteminize ekler ve GPG anahtarını içe aktarır.
2. sysdig ve Kernel Modülünü Kurma: Depo eklendikten sonra, yum paket yöneticisini kullanarak sysdig‘i ve çekirdek modülünü kurabilirsiniz.
sudo yum install sysdig kernel-devel-"$(uname -r)"
kernel-devel-"$(uname -r)" ifadesi, sisteminizde çalışan mevcut çekirdek sürümüne uygun kernel-devel paketini kurar. Bu paket, sysdig çekirdek modülünün derlenmesi için gereklidir. Kurulum sırasında bağımlılıklar da otomatik olarak yüklenecektir.
3. Kurulumu Doğrulama: Kurulum tamamlandıktan sonra, sysdig‘in doğru bir şekilde çalıştığını doğrulamak için basit bir komut çalıştırabilirsiniz:
sudo sysdig -V
Bu komut, sysdig‘in sürüm numarasını gösterecektir. Ayrıca, sysdig‘i herhangi bir filtre olmadan çalıştırarak sistemdeki gerçek zamanlı olayları görmeye başlayabilirsiniz:
sudo sysdig
Eğer ekranınızda sistem olayları akmaya başlıyorsa, sysdig başarıyla kurulmuş ve çalışıyor demektir. Çıkmak için Ctrl+C tuşlarına basabilirsiniz.
Temel sysdig Kullanımı ve Ağ Trafiği Denetimi
sysdig‘in temel komut yapısı sudo sysdig [filtre] [çıktı formatı/chisels] şeklindedir. Ağ trafiğini denetlemek için kullanabileceğiniz bazı temel komutlar ve chisels’lar şunlardır:
1. Tüm Ağ Bağlantılarını Listeleme (netstat benzeri):
sysdig‘in netstat chisel’ı, aktif ağ bağlantılarını ve dinleme soketlerini netstat komutuna benzer bir formatta gösterir.
sudo sysdig -c netstat
Bu, TCP, UDP ve UNIX soketlerini gösterir. netstat -p gibi süreç bilgilerini de içerir.
2. En Çok Ağ Kullanan Süreçleri Gösterme (iftop/nethogs benzeri):
spy_iface chisel’ı, ağ arayüzündeki en çok trafik oluşturan süreçleri gösterir.
sudo sysdig -c spy_iface
Bu, hangi süreçlerin (örn. httpd, mysqld, php-fpm) ağ bant genişliğini en çok kullandığını anlamanıza yardımcı olur.
3. Belirli Portlardaki Trafiği İzleme:
LAMP sunucusunda genellikle Apache için 80 (HTTP) ve 443 (HTTPS), MySQL için 3306 portları kullanılır. Bu portlardaki trafiği izlemek için filtreler kullanabiliriz.
* HTTP ve HTTPS trafiğini izleme:
sudo sysdig "fd.port=80 or fd.port=443"
Bu komut, 80 veya 443 numaralı portlar üzerinden gerçekleşen tüm ağ olaylarını gösterir. Çıktıda bağlantı kuran süreç, uzak IP adresi, gönderilen/alınan veri miktarı gibi bilgiler yer alır.
* MySQL trafiğini izleme:
sudo sysdig "fd.port=3306"
Bu komut, MySQL portu üzerindeki tüm etkinlikleri (bağlantı kurma, veri gönderme/alma) gösterecektir. Genellikle bu trafiğin mysqld süreci tarafından yönetildiğini görürsünüz.
4. Süreç Adına Göre Filtreleme:
Belirli bir sürecin (örneğin Apache veya MySQL) ağ etkileşimlerini izlemek için proc.name filtresini kullanabilirsiniz.
* Apache (httpd) süreçlerinin ağ etkinliklerini izleme:
sudo sysdig "proc.name=httpd and (fd.port=80 or fd.port=443)"
Bu komut, yalnızca httpd süreçleri tarafından 80 veya 443 portları üzerinden yapılan ağ bağlantılarını gösterir. Bu, web sunucusunun dış dünyayla nasıl etkileşime girdiğini anlamak için çok faydalıdır.
* MySQL (mysqld) süreçlerinin ağ etkinliklerini izleme:
sudo sysdig "proc.name=mysqld and fd.port=3306"
Bu komut, mysqld sürecinin 3306 portu üzerindeki tüm ağ etkileşimlerini izler. Bu, veritabanı bağlantılarını ve veri transferini denetlemek için önemlidir.
5. Yeni Bağlantıları İzleme:
Sunucuya gelen yeni bağlantıları izlemek, özellikle güvenlik açısından önemlidir. evt.type=accept filtresi, sunucunun bir bağlantıyı kabul ettiği olayları gösterir.
* Yeni HTTP/HTTPS bağlantılarını izleme:
sudo sysdig "evt.type=accept and (fd.port=80 or fd.port=443)"
Bu komut, web sunucusuna yeni kurulan her bağlantıyı gösterir. Hangi IP adreslerinden bağlantı geldiğini, hangi sürecin (Apache) bu bağlantıyı kabul ettiğini görebilirsiniz.
* Yeni MySQL bağlantılarını izleme:
sudo sysdig "evt.type=accept and fd.port=3306"
Bu, MySQL veritabanına yeni bağlantı girişimlerini izlemek için kritik bir güvenlik filtresidir.
6. Uzak IP Adresine Göre Filtreleme:
Belirli bir uzak IP adresinden gelen veya giden trafiği izlemek isteyebilirsiniz.
sudo sysdig "fd.cip=192.168.1.100"
Bu komut, 192.168.1.100 IP adresiyle ilişkili tüm ağ olaylarını gösterir. fd.cip istemci IP adresini, fd.sip sunucu IP adresini temsil eder.
7. csysdig ile İnteraktif İzleme:
sysdig ayrıca, htop benzeri interaktif bir kullanıcı arayüzü olan csysdig‘i de içerir. Bu araç, gerçek zamanlı sistem metriklerini ve olayları görselleştirmek için harikadır.
sudo csysdig
csysdig içinde farklı görünümler arasında geçiş yapabilir ve filtreleri kolayca uygulayabilirsiniz. Ağ bağlantılarını, süreçlerin ağ kullanımını ve daha fazlasını interaktif olarak keşfedebilirsiniz.
Gelişmiş Ağ Denetimi Senaryoları
sysdig‘in gücü, karmaşık senaryolarda derinlemesine analiz yapma yeteneğinde yatar. LAMP sunucunuzda karşılaşabileceğiniz çeşitli durumlar için gelişmiş denetim teknikleri:
1. Performans Sorunlarını Tespit Etme:
* Yavaş HTTP İstekleri: Bir web sayfasının yavaş yüklendiğini fark ettiğinizde, sysdig ile Apache süreçlerinin belirli bir isteği işlerken ne kadar süre ağda kaldığını veya hangi uzak sunuculara bağlandığını inceleyebilirsiniz. sendto ve recvfrom olaylarını izleyerek veri transfer hızlarını ve gecikmeleri değerlendirebilirsiniz.
sudo sysdig -s 1000 -A "proc.name=httpd and (evt.type=sendto or evt.type=recvfrom)"
-s 1000 ile 1000 baytlık veri yakalar, -A ile ASCII formatında gösterir. Bu, HTTP başlıklarını veya küçük veri parçacıklarını görmenizi sağlayabilir.
* Yüksek MySQL Sorgu Süreleri: MySQL veritabanının yavaşladığı durumlarda, mysqld sürecinin ağ etkileşimlerini inceleyebilirsiniz. Hangi istemcilerin (genellikle httpd veya php-fpm süreçleri) en çok sorgu gönderdiğini veya en çok veri aldığını görebilirsiniz.
sudo sysdig "proc.name=mysqld and fd.port=3306 and (evt.type=read or evt.type=write)"
Bu, MySQL sunucusunun 3306 portunda okuma/yazma (veri transferi) olaylarını gösterir.
* Ağ Gecikmesi (Latency) Tespiti: Uzak bir servise (API, dış veritabanı vb.) yapılan bağlantılarda gecikme yaşanıyorsa, PHP süreçlerinin bu servise yaptığı bağlantıları izleyebilirsiniz. sysdig olay zaman damgalarını kullanarak bağlantı kurma ve ilk veri alışverişi arasındaki süreyi gözlemleyebilirsiniz.
2. Güvenlik İhlallerini İzleme:
* Yetkisiz MySQL Bağlantıları: MySQL sunucusuna yalnızca belirli IP adreslerinden veya localhost‘tan erişim izni vermelisiniz. Dışarıdan gelen yetkisiz bağlantı girişimlerini izlemek için:
sudo sysdig "evt.type=accept and fd.port=3306 and fd.cip!='127.0.0.1' and fd.cip!='<WEB_SUNUCUSU_IP>' "
yerine web sunucunuzun dahili IP adresini yazın. Bu filtre, localhost veya yetkili web sunucusu dışındaki tüm yeni MySQL bağlantılarını gösterecektir.
* Apache’den Beklenmedik Giden Bağlantılar: Bir web sunucusunun normalde dışarıya doğru bağlantı başlatmaması gerekir (istisnalar: CDN, API çağrıları, güncellemeler). Eğer httpd veya php-fpm süreçlerinden beklenmedik giden bağlantılar görüyorsanız, bu bir güvenlik ihlalinin (örneğin, bir web kabuğu veya kötü amaçlı yazılımın komuta-kontrol sunucusuna bağlanması) işareti olabilir.
sudo sysdig "proc.name=httpd and evt.type=connect and fd.type=ipv4 and fd.cip!='<LOCAL_IP_RANGE>'"
yerine sunucunuzun yerel ağ IP aralığını yazın (örn. 192.168.1.0/24). Bu, Apache’den yerel ağ dışına yapılan tüm yeni bağlantıları izler.
* Kaba Kuvvet Saldırıları: Belirli bir portta (örneğin 22 SSH veya 3306 MySQL) çok sayıda başarısız bağlantı denemesi görüyorsanız, bu bir kaba kuvvet saldırısının işareti olabilir. sysdig doğrudan başarısız bağlantıları göstermese de, çok sayıda evt.type=accept olayının ardından hızlı bir şekilde evt.type=close olayları ve herhangi bir veri alışverişi olmaması bu duruma işaret edebilir.
3. Uygulama Katmanı Analizi (Şifrelenmemiş Trafik İçin):
* sysdig‘in httptop chisel’ı, şifrelenmemiş HTTP trafiğini analiz edebilir ve en çok istek alan URL’leri veya en yavaş HTTP isteklerini gösterebilir.
sudo sysdig -c httptop
NOT: Çoğu modern web sitesi HTTPS kullandığı için, httptop şifrelenmiş trafiği doğrudan analiz edemez. HTTPS trafiği için, sysdig yalnızca bağlantının kurulduğunu ve veri transferi olduğunu görebilir, ancak içeriği (URL, HTTP metodu vb.) deşifre edemez. Bu durumda, daha derin uygulama katmanı analizi için Apache/Nginx erişim günlüklerini kullanmak veya tcpdump ile yakalanan trafiği Wireshark gibi araçlarla deşifre etmek (eğer SSL anahtarlarına erişiminiz varsa) gerekebilir.
* Tüm Ağ Olaylarını Kaydetme: Uzun süreli analiz veya adli tıp (forensics) için tüm sistem olaylarını bir dosyaya kaydedebilirsiniz.
sudo sysdig -w /var/log/sysdig/network_audit.scap "fd.type=ipv4"
Bu komut, tüm IPv4 ağ olaylarını /var/log/sysdig/network_audit.scap dosyasına kaydeder. Kaydedilen dosyayı daha sonra sysdig -r ile okuyabilir ve farklı filtreler uygulayarak analiz edebilirsiniz.
sysdig Filtreleme ve Lua Scriptleri
sysdig‘in gücünün büyük bir kısmı, esnek filtreleme mekanizmasından ve Lua tabanlı “chisels” (betikler) kullanma yeteneğinden gelir.
1. Filtreleme Mekanizması:
sysdig filtreleri, mantıksal operatörler (and, or, not) ve parantezlerle birleştirilebilen anahtar-değer çiftlerinden oluşur. En yaygın kullanılan filtre alanları şunlardır:
* evt.type: Sistem çağrısı türü (örn. open, read, write, connect, accept, close).
* proc.name: Süreç adı (örn. httpd, mysqld, php-fpm).
* proc.pid: Süreç ID’si.
* user.name: Kullanıcı adı.
* fd.name: Dosya tanımlayıcı adı (örn. /var/log/apache/access.log, socket).
* fd.type: Dosya tanımlayıcı türü (örn. file, ipv4, ipv6, unix).
* fd.port: TCP/UDP port numarası (örn. 80, 443, 3306).
* fd.cip: İstemci IP adresi.
* fd.sip: Sunucu IP adresi.
* fd.proto: Protokol (örn. tcp, udp, icmp).
* fd.lport: Yerel port.
* fd.rport: Uzak port.
Örnek Karmaşık Filtreler:
* Apache’den dışarıya doğru 80 veya 443 portu üzerinden yapılan tüm bağlantı denemeleri:
sudo sysdig "proc.name=httpd and evt.type=connect and (fd.port=80 or fd.port=443) and fd.cip!='127.0.0.1'"
Bu, web sunucusunun dışarıdaki başka bir web sunucusuna bağlanma girişimlerini izler.
* MySQL’e gelen yetkisiz IP’lerden bağlantı denemeleri (başarısız veya başarılı):
sudo sysdig "fd.port=3306 and evt.type=accept and not (fd.cip='127.0.0.1' or fd.cip='<WEB_SUNUCUSU_IP>') "
Bu filtre, localhost veya izin verilen web sunucusu IP’si dışındaki tüm yeni MySQL bağlantılarını gösterir.
* PHP-FPM süreçlerinin dışarıdaki herhangi bir porttan veri göndermesi:
sudo sysdig "proc.name=php-fpm and evt.type=sendto and fd.type=ipv4 and fd.cip!='127.0.0.1'"
Bu, PHP-FPM’in harici bir sunucuya veri gönderme olaylarını izler ve potansiyel kötü amaçlı faaliyetleri tespit etmede yardımcı olabilir.
2. Lua Scriptleri ile Otomasyon ve Genişletme:
sysdig, Lua betikleri aracılığıyla genişletilebilir. Bu betikler, chisels olarak adlandırılır ve sysdig‘in çekirdekten aldığı olayları işleyerek özel çıktılar oluşturabilir, istatistikler hesaplayabilir veya belirli koşullar altında uyarılar tetikleyebilir.
* Mevcut Chisels’ları Keşfetme:
sysdig -l komutuyla mevcut chisels’ları listeleyebilirsiniz.
sysdig -l
Bu liste, netstat, httptop, spy_iface, top_procs gibi birçok kullanışlı aracı içerir.
* Özel Lua Betikleri Kullanma: Kendi Lua betiklerinizi yazarak veya mevcut betikleri düzenleyerek sysdig‘in davranışını özelleştirebilirsiniz. Örneğin, belirli bir eşiğin üzerinde ağ trafiği algılandığında bir uyarı gönderen bir betik yazabilirsiniz. Lua betikleri genellikle /usr/share/sysdig/chisels dizininde bulunur.
Bir mysqltop veya apache_slow_requests gibi özel bir chisel yazarak, LAMP sunucunuza özgü performans veya güvenlik metriklerini takip edebilirsiniz. Bu, sysdig‘in ham çıktısını anlamlı bilgilere dönüştürmenin güçlü bir yoludur.
Performans ve Kaynak Kullanımı
sysdig, kernel modülü sayesinde nispeten düşük bir performans yüküyle çalışacak şekilde tasarlanmıştır. Ancak, aşağıdaki faktörler performans üzerinde etkili olabilir:
* Filtrelerin Karmaşıklığı: Çok geniş veya karmaşık filtreler kullanmak, sysdig‘in daha fazla olayı işlemesine neden olabilir ve bu da CPU kullanımını artırabilir. İyi tanımlanmış, dar kapsamlı filtreler kullanmak performansı optimize eder.
* Veri Kaydı (Capturing): Olayları bir dosyaya kaydetmek (-w seçeneği), disk G/Ç (I/O) kullanımını artırır. Yoğun trafikli sistemlerde uzun süreli kayıtlar büyük dosyalar oluşturabilir. Bu dosyaların depolandığı disk alanını ve disk performansını göz önünde bulundurmak önemlidir.
* csysdig Kullanımı: csysdig gibi interaktif araçlar, terminalde sürekli güncellenen bir arayüz sundukları için sysdig‘in ham çıktıya göre biraz daha fazla kaynak tüketebilir.
Genel olarak, sysdig çoğu LAMP sunucusu için kabul edilebilir bir performans yükü ile çalışır. Ancak, çok yüksek trafikli üretim ortamlarında kullanmadan önce performans etkisini test etmek her zaman iyi bir uygulamadır.
Sık Karşılaşılan Sorunlar ve Çözümleri
sysdig kullanırken karşılaşabileceğiniz bazı yaygın sorunlar ve bunların çözümleri şunlardır:
* Kernel Modülü Yüklenememesi: sysdig‘in çekirdek modülü, çalışan çekirdek sürümünüzle uyumlu olmalıdır. Eğer sysdig kurulduktan sonra “Error: Could not load the sysdig kernel module” gibi bir hata alırsanız:
* kernel-devel paketinin mevcut çekirdek sürümünüzle eşleştiğinden emin olun: uname -r ve rpm -qa | grep kernel-devel komutlarını karşılaştırın. Gerekirse doğru kernel-devel sürümünü yükleyin.
* Sistemi yeniden başlatmayı deneyin.
* dkms (Dynamic Kernel Module Support) kurulu olduğundan emin olun: sudo yum install dkms. Bu, çekirdek güncellemelerinden sonra modülün otomatik olarak yeniden derlenmesine yardımcı olur.
* İzin Sorunları: sysdig çalışmak için kök ayrıcalıkları gerektirir. Eğer sudo kullanmadan çalıştırmaya çalışırsanız izin hataları alırsınız. Her zaman sudo sysdig veya sudo csysdig kullanın.
* Gereksiz Veri Yakalama (Noise): Filtre kullanmadan sysdig çalıştırmak, çok fazla veri akışına neden olabilir ve önemli olayları gözden kaçırmanıza yol açabilir. Her zaman belirli bir amaca yönelik dar kapsamlı filtreler kullanmaya çalışın.
* SSL/TLS Şifrelemesi ve Uygulama Katmanı Analizi Sınırlamaları: sysdig, kernel seviyesinde çalıştığı için SSL/TLS şifrelemesi altındaki trafiğin içeriğini doğrudan deşifre edemez. Bu, HTTPS trafiğinin URL’lerini veya POST verilerini doğrudan göremeyeceğiniz anlamına gelir. Bu tür durumlarda, Apache/Nginx erişim günlükleri, uygulama içi loglama veya özel SSL/TLS proxy çözümleri gibi ek araçlara başvurmanız gerekebilir. sysdig yine de şifrelenmiş bağlantıların kurulduğunu, hangi süreçlerin bağlandığını ve ne kadar veri transfer edildiğini gösterecektir, bu da bağlantı sorunlarını veya anormal trafik hacimlerini tespit etmek için hala değerlidir.
* Çıktı Formatı: Varsayılan sysdig çıktısı oldukça detaylıdır. Daha okunabilir bir çıktı için chisels (-c netstat, -c httptop) kullanmayı veya kendi Lua betiklerinizi yazmayı düşünebilirsiniz.
Sonuç
Bir LAMP sunucusunda ağ trafiğini denetlemek, sistemin güvenliğini, performansını ve genel sağlığını korumak için vazgeçilmez bir uygulamadır. sysdig, Linux çekirdeği seviyesinde sunduğu derin görünürlük, süreç odaklı yaklaşım ve güçlü filtreleme yetenekleri sayesinde bu denetim görevini üstün bir şekilde yerine getirebilen çok değerli bir araçtır. CentOS 7 üzerinde kolayca kurulabilen sysdig, Apache, MySQL ve PHP süreçlerinin ağ etkileşimlerini gerçek zamanlı olarak izleyerek güvenlik ihlallerini tespit etmenize, performans darboğazlarını gidermenize ve sisteminizin kararlılığını sağlamanıza olanak tanır.
Temel komutlardan başlayarak gelişmiş filtreleme tekniklerine ve Lua betiklerine kadar sysdig‘in geniş yeteneklerini kullanarak, LAMP sunucunuzun ağ katmanında neler olup bittiğine dair kapsamlı bir anlayış geliştirebilirsiniz. Unutmayın ki, proaktif izleme ve denetim, sadece sorunları çözmekle kalmaz, aynı zamanda potansiyel sorunları daha ortaya çıkmadan önce önlemenize yardımcı olur. sysdig‘i araç kutunuza ekleyerek, LAMP sunucularınızın operasyonel mükemmelliğini bir adım öteye taşıyabilirsiniz.
