Takip et

Ubuntu 16.04 Üzerinde osquery ile Sistem Güvenliğinizi Nasıl İzlersiniz?

Ubuntu 16.04 Üzerinde osquery ile Sistem Güvenliğinizi Nasıl İzlersiniz? Sistem güvenliği, modern bilgi işlem ortamlarında en kritik önceli

Ubuntu 16.04 Üzerinde osquery ile Sistem Güvenliğinizi Nasıl İzlersiniz?

Sistem güvenliği, modern bilgi işlem ortamlarında en kritik önceliklerden biridir. Kötü niyetli saldırılar, veri ihlalleri ve sistem kesintileri gibi tehditler, işletmeler ve bireyler için ciddi sonuçlar doğurabilir. Bu tehditlere karşı koymak için proaktif ve sürekli bir güvenlik izleme stratejisi benimsemek elzemdir. Geleneksel güvenlik araçları genellikle statik analizler veya belirli olayları takip etme üzerine kuruluyken, dinamik ve esnek bir yaklaşım sunan araçlar, güvenlik analistlerine daha derinlemesine görünürlük sağlar. İşte bu noktada, SQL benzeri sorgularla işletim sistemi verilerini sorgulamamızı sağlayan açık kaynaklı bir araç olan osquery devreye girer. Bu makalede, Ubuntu 16.04 işletim sistemi üzerinde osquery’yi kurma, yapılandırma ve sistem güvenliğini etkin bir şekilde izlemek için nasıl kullanacağımızı ayrıntılı olarak inceleyeceğiz.

Giriş: Neden Sistem Güvenliği İzleme ve osquery?

Sistem güvenliği izleme, bir sistemdeki güvenlik olaylarını, anormallikleri ve potansiyel tehditleri sürekli olarak takip etme sürecidir. Bu süreç, yetkisiz erişim girişimlerini, kötü amaçlı yazılım faaliyetlerini, sistem yapılandırma değişikliklerini ve diğer güvenlik ihlallerini erken aşamada tespit etmeye yardımcı olur. Güvenlik izleme olmadan, bir saldırının ne zaman veya nasıl gerçekleştiğini anlamak, hasarı sınırlamak ve gelecekteki saldırıları önlemek son derece zorlaşır.

osquery, Facebook tarafından geliştirilen ve işletim sistemini yüksek performanslı bir ilişkisel veritabanı gibi ele almamızı sağlayan güçlü bir araçtır. Dosya sistemi, çalışan süreçler, ağ bağlantıları, yüklü paketler, kullanıcı hesapları ve çok daha fazlası gibi işletim sistemi verilerini standart SQL sorguları kullanarak sorgulayabiliriz. Bu yaklaşım, güvenlik analistlerine ve sistem yöneticilerine, sistemin anlık durumunu ve geçmiş olaylarını anlamak için benzersiz bir esneklik ve güç sunar. Ubuntu 16.04 gibi sunucu ortamlarında, osquery, güvenlik duruşunu güçlendirmek ve potansiyel tehditleri proaktif olarak tespit etmek için paha biçilmez bir araç haline gelir.

osquery Nedir?

osquery, işletim sistemini bir SQL veritabanı gibi sorgulamanızı sağlayan açık kaynaklı, platformlar arası bir araçtır. Geleneksel güvenlik araçlarının aksine, osquery, sistemdeki değişiklikleri veya belirli olayları izlemek için önceden tanımlanmış kurallara dayanmaz. Bunun yerine, sistemi sürekli olarak sorgulayarak veya olay bazlı verileri toplayarak, güvenlik analistlerinin kendi özel ihtiyaçlarına göre dinamik sorgular oluşturmasına olanak tanır.

osquery’nin temelinde, işletim sistemi üzerindeki çeşitli veri kaynaklarını temsil eden “sanal tablolar” bulunur. Örneğin, processes tablosu çalışan tüm süreçler hakkında bilgi sağlarken, users tablosu sistemdeki kullanıcı hesaplarını listeler. listening_ports tablosu açık ağ portlarını gösterirken, deb_packages tablosu yüklü Debian paketlerini listeler. Bu sanal tablolar, gerçek zamanlı işletim sistemi verilerini yansıtır ve standart SQL sorguları ile erişilebilir hale getirir.

osquery iki ana bileşenden oluşur:
* osqueryi: Etkileşimli bir kabuk (shell) sağlar. Bu kabuk üzerinden anlık olarak SQL sorguları çalıştırabilir ve sistemin o anki durumunu inceleyebilirsiniz. Özellikle olay müdahalesi ve tehdit avcılığı (threat hunting) senaryolarında çok kullanışlıdır.
* osqueryd: Bir arka plan hizmeti (daemon) olarak çalışır. Bu hizmet, önceden tanımlanmış zamanlanmış sorguları (scheduled queries) periyodik olarak çalıştırır ve sonuçları bir loglama hedefine (varsayılan olarak disk veya bir SIEM sistemine) gönderir. Bu, sürekli güvenlik izleme için kritik öneme sahiptir. Ayrıca, dosya değişiklikleri, süreç etkinlikleri gibi olayları gerçek zamanlı olarak izlemek için olay tabanlı (event-based) tabloları da destekler.

Güvenlik açısından osquery’nin faydaları şunlardır:
* Görünürlük: Sistemdeki her türlü aktiviteye (süreçler, ağ, dosya, kullanıcılar vb.) derinlemesine görünürlük sağlar.
* Tespit: Kötü amaçlı yazılım, yetkisiz değişiklikler, yapılandırma hataları ve diğer güvenlik anormalliklerini tespit etmek için özel sorgular oluşturulabilir.
* Olay Müdahalesi: Bir güvenlik olayı sırasında hızlı bir şekilde bilgi toplamak ve olayın kapsamını anlamak için etkileşimli sorgular kullanılabilir.
* Tehdit Avcılığı: Bilinen veya bilinmeyen tehditleri proaktif olarak aramak için sistem verilerini sorgulayarak şüpheli davranışları ortaya çıkarır.
* Uyum (Compliance): Güvenlik politikalarına uyumu doğrulamak için sistem yapılandırmalarını düzenli olarak denetleyebilir.

Neden Ubuntu 16.04?

Ubuntu 16.04 (Xenial Xerus), Nisan 2016’da piyasaya sürülen bir Uzun Süreli Destek (LTS) sürümüdür. Her ne kadar güncel bir sürüm olmasa da, birçok kurumsal ortamda hala kullanılmakta olan veya geçiş sürecinde olan sistemler bulunmaktadır. Bu nedenle, bu platform üzerinde güvenlik izleme yeteneklerini anlamak ve uygulamak hala önem taşımaktadır. osquery, Ubuntu 16.04 dahil olmak üzere birçok Linux dağıtımında sorunsuz bir şekilde çalışır ve sağladığı güvenlik görünürlüğü, eski sistemlerin güvenlik duruşunu modern tehditlere karşı güçlendirmeye yardımcı olabilir.

osquery Kurulumu

Ubuntu 16.04 üzerinde osquery kurmak oldukça basittir. osquery ekibi, Debian tabanlı sistemler için resmi APT depoları sunar.

Ubuntu 16.04 Üzerine Kurulum Adımları

1. GPG Anahtarını Ekleme: osquery paketlerinin doğruluğunu sağlamak için GPG anahtarını sisteminize eklemeniz gerekir.

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B

2. osquery Deposunu Ekleme: osquery deposunu sources.list.d dizinine ekleyin. Ubuntu 16.04 için xenial kod adını kullanmalısınız.

echo "deb [arch=amd64] https://pkg.osquery.io/deb deb-xenial main" | sudo tee /etc/apt/sources.list.d/osquery.list

3. Paket Listesini Güncelleme: Yeni depoyu tanıması için APT paket listesini güncelleyin.

sudo apt update

4. osquery Kurulumu: Şimdi osquery paketini kurabilirsiniz.

sudo apt install osquery

5. Kurulumu Doğrulama: osquery’nin başarıyla kurulduğunu ve çalıştığını doğrulamak için sürüm kontrolü yapabilir ve etkileşimli kabuğa girebilirsiniz.

osqueryi --version
    osqueryi

osqueryi komutunu çalıştırdığınızda, osquery> komut istemini görmelisiniz. Buradan SQL sorgularınızı çalıştırabilirsiniz. Çıkmak için .exit yazıp Enter tuşuna basın.

osquery Temelleri: İlk Sorgularınız

osquery’nin gücünü anlamak için bazı temel sorgularla başlamak önemlidir. Bu sorgular, sisteminizin anlık durumu hakkında anında bilgi edinmenizi sağlar.

osqueryd ve osqueryi

Kurulumdan sonra, osqueryd hizmeti varsayılan olarak arka planda çalışmaya başlar ve yapılandırma dosyasında tanımlanan zamanlanmış sorguları yürütür. osqueryi ise sadece etkileşimli sorgular için kullanılır ve bir oturumdan sonra kapanır. Güvenlik izleme için genellikle osqueryd kullanılırken, olay müdahalesi ve tehdit avcılığı için osqueryi tercih edilir.

Temel Sorgu Yapısı

osquery’deki sorgular standart SQL sözdizimini kullanır: SELECT kolonlar FROM tablo [WHERE koşullar] [ORDER BY kolon] [LIMIT sayı];.

İşte güvenlik izleme bağlamında kullanabileceğiniz bazı temel sorgular:

1. Kullanıcı Hesaplarını Listeleme:

SELECT uid, gid, username, description, directory, shell FROM users;

Bu sorgu, sistemdeki tüm kullanıcıların UID, GID, kullanıcı adı, açıklama, ana dizin ve kabuk bilgilerini listeler. Yetkisiz veya şüpheli yeni kullanıcı hesaplarını tespit etmek için kullanılabilir.

2. Çalışan Süreçleri Görüntüleme:

SELECT pid, name, path, cmdline, cwd, uid, gid FROM processes;

Sistemde çalışan tüm süreçlerin PID, adı, yürütülebilir yolu, komut satırı argümanları, çalışma dizini, kullanıcı ve grup kimliği gibi detaylarını gösterir. Bilinmeyen veya şüpheli süreçleri tespit etmek için kritik öneme sahiptir.

3. Açık Ağ Portlarını Listeleme:

SELECT pid, port, protocol, family, address, state FROM listening_ports;

Sistemde dinlemede olan tüm TCP/UDP portlarını, ilgili süreç PID’sini, protokolü, adresi ve durumu listeler. Yetkisiz bir hizmetin çalışıp çalışmadığını veya kötü amaçlı bir yazılımın bir arka kapı (backdoor) açıp açmadığını kontrol etmek için idealdir.

4. Son Giriş Yapan Kullanıcıları Görüntüleme:

SELECT username, type, host, time FROM logged_in_users;

Sisteme son giriş yapan kullanıcıları, giriş tipini (tty, ssh vb.), kaynak ana bilgisayarı ve zamanı gösterir. Şüpheli girişleri veya yetkisiz kullanıcıların varlığını kontrol etmek için faydalıdır.

5. SUID/SGID Bitli Çalıştırılabilir Dosyaları Bulma:

SELECT path, filename, uid, gid, mode FROM suid_bin;

Sistemdeki SUID (Set User ID) veya SGID (Set Group ID) bitleri ayarlanmış tüm çalıştırılabilir dosyaları listeler. Bu dosyalar genellikle ayrıcalık yükseltme (privilege escalation) saldırılarında kullanılır, bu yüzden anormallikleri izlemek önemlidir.

6. Başlangıç Öğelerini Görüntüleme:

SELECT name, path, type FROM startup_items;

Sistem başlangıcında otomatik olarak çalışan programları ve betikleri listeler. Kötü amaçlı yazılımlar genellikle kalıcılık sağlamak için başlangıç öğelerini kullanır.

Bu sorgular, osquery’nin sunduğu yüzlerce tablodan sadece birkaç örnektir. Her bir tablo, sistemin farklı bir yönü hakkında bilgi sağlar ve güvenlik analistlerinin kapsamlı bir görünüm elde etmesine yardımcı olur.

Sistem Güvenliğini İzlemek İçin osquery Kullanımı

osquery’yi güvenlik izleme için kullanırken, belirli tehdit vektörlerini hedefleyen sorgular ve yapılandırmalar oluşturmak önemlidir. İşte bazı yaygın güvenlik senaryoları ve osquery’nin bunları nasıl ele alabileceği:

Kötü Amaçlı Yazılım ve Yetkisiz Değişiklik Tespiti

1. Dosya Bütünlüğü İzleme (FIM): osquery, kritik dosyaların ve dizinlerin değişikliklerini izlemek için file_events tablosunu kullanabilir. Bu tablo, dosya oluşturma, değiştirme ve silme olaylarını kaydeder. Ancak, bu olay tablosu yüksek performans maliyetine sahip olabilir ve dikkatli yapılandırma gerektirir.
* Yapılandırma: /etc/osquery/osquery.conf dosyasında file_paths anahtarını kullanarak izlenecek yolları belirtmelisiniz.

"file_paths": {
          "etc": [
            "/etc/passwd",
            "/etc/shadow",
            "/etc/hosts",
            "/etc/crontab",
            "/etc/sudoers.d/%"
          ],
          "binaries": [
            "/usr/bin/ssh",
            "/bin/login"
          ]
        }

* Sorgu (ancak file_events doğrudan sorgulanmaz, olaylar loglanır): osqueryd bu olayları toplayacak ve log dosyalarına yazacaktır. Daha sonra bu logları SIEM sisteminizde analiz edebilirsiniz.

2. Şüpheli Süreçleri İzleme:
* Yeni veya Bilinmeyen Süreçler: processes tablosunu belirli bir zaman aralığında başlatılan süreçleri bulmak için kullanabilirsiniz.

SELECT pid, name, path, cmdline, start_time FROM processes WHERE start_time > (strftime('%s', 'now') - 300);

Bu sorgu, son 5 dakika içinde başlatılan süreçleri gösterir. Zamanlanmış bir sorgu olarak çalıştırılarak yeni süreçlerin anormalliklerini tespit edebilir.
* Yüksek CPU/Bellek Kullanan Süreçler:

SELECT pid, name, resident_size, total_size, user_time, system_time FROM processes ORDER BY resident_size DESC LIMIT 10;

Bu, sistem kaynaklarını aşırı kullanan süreçleri bulmaya yardımcı olur, ki bu da kötü amaçlı yazılım aktivitesinin bir göstergesi olabilir.
* Şüpheli Yollardan Çalışan Süreçler: Kötü amaçlı yazılımlar genellikle /tmp veya /dev/shm gibi geçici dizinlerden çalışır.

SELECT pid, name, path, cmdline FROM processes WHERE path LIKE '/tmp/%' OR path LIKE '/dev/shm/%';

3. SUID/SGID Dosyalarındaki Değişiklikleri İzleme:

SELECT path, filename, uid, gid, mode, type FROM suid_bin;

Bu sorguyu düzenli olarak çalıştırarak yeni SUID/SGID bitli dosyaların eklenip eklenmediğini veya mevcut dosyaların izinlerinin değişip değişmediğini kontrol edebilirsiniz.

4. Cron İşlerindeki Değişiklikler: Kötü amaçlı yazılımlar genellikle kalıcılık sağlamak için cron işlerini kullanır.

SELECT command, path, hour, minute FROM crontab;

Bu sorguyu düzenli olarak çalıştırarak beklenmedik yeni cron işlerini tespit edebilirsiniz.

Ağ Aktivitesi İzleme

1. Yetkisiz Dinleme Portları:

SELECT pid, port, protocol, address, state, process_name FROM listening_ports;

Bu sorgu, sistemde dinlemede olan tüm portları ve ilgili süreçleri gösterir. Bilinmeyen bir uygulamanın bir port açıp açmadığını veya kötü amaçlı bir yazılımın bir arka kapı oluşturup oluşturmadığını kontrol etmek için önemlidir.

2. Şüpheli Giden Bağlantılar:

SELECT local_address, remote_address, remote_port, family, protocol, pid, process_name FROM socket_open_connections;

Bu sorgu, sistemden dışarıya doğru yapılan tüm aktif bağlantıları listeler. Bilinmeyen bir hedefe bağlantı kurmaya çalışan süreçleri veya kötü amaçlı yazılımların komuta ve kontrol (C2) sunucularıyla iletişim kurup kurmadığını tespit etmek için kullanılabilir.

3. DNS Cache İzleme:

SELECT hostname, address, type, time FROM dns_cache;

DNS önbelleğini kontrol ederek şüpheli alan adlarına yapılan çözümleri veya DNS zehirlenmesi (DNS poisoning) girişimlerini tespit edebilirsiniz.

Kullanıcı ve Yetki İzleme

1. Yeni veya Değiştirilmiş Kullanıcı Hesapları:

SELECT uid, username, description, directory, shell, create_time FROM users;

Bu sorguyu zamanlanmış olarak çalıştırarak create_time veya diğer alanlardaki değişiklikleri izleyerek yeni kullanıcıların eklenip eklenmediğini veya mevcut kullanıcıların özelliklerinin değiştirilip değiştirilmediğini tespit edebilirsiniz.

2. Sudo Olayları: osquery, sudo_events tablosu aracılığıyla sudo komutlarının kullanımını izleyebilir (eğer olaylar etkinleştirildiyse).

SELECT uid, username, command, time FROM sudo_events;

Bu, ayrıcalık yükseltme girişimlerini veya yetkisiz sudo kullanımını tespit etmek için önemlidir.

3. Giriş Geçmişi:

SELECT username, host, time FROM last;

Bu sorgu, sistemdeki kullanıcıların son girişlerini gösterir. Yetkisiz girişleri veya şüpheli kaynak IP adreslerinden gelen girişleri tespit etmek için kullanılabilir.

Sistem Konfigürasyonu ve Zafiyet Yönetimi

1. Yüklü Paketleri Kontrol Etme:

SELECT name, version, arch, source FROM deb_packages;

Bu sorgu, sistemde yüklü tüm Debian paketlerini listeler. Bilinen güvenlik açıklarına sahip eski yazılım sürümlerini veya yetkisiz paketlerin yüklenip yüklenmediğini kontrol etmek için kullanılabilir.

2. /etc/hosts Dosyasını İzleme:

SELECT address, hostnames FROM etc_hosts;

/etc/hosts dosyasındaki değişiklikler, DNS zehirlenmesi veya kötü amaçlı alan adlarının yerel olarak çözümlenmesi girişimlerini gösterebilir.

3. Kernel Modüllerini Kontrol Etme:

SELECT name, path, author, license FROM kernel_modules;

Şüpheli veya bilinmeyen çekirdek modüllerinin yüklenmesi, rootkit gibi gelişmiş kötü amaçlı yazılımların bir göstergesi olabilir.

osquery Konfigürasyonu: Güvenlik İzleme İçin Optimizasyon

osquery’nin tam potansiyelini kullanmak için osquery.conf yapılandırma dosyasını anlamak ve düzenlemek çok önemlidir. Bu dosya, osqueryd daemon’unun nasıl davranacağını, hangi sorguları ne sıklıkla çalıştıracağını ve logları nereye göndereceğini belirler.

Yapılandırma Dosyası (osquery.conf)

osquery’nin ana yapılandırma dosyası genellikle /etc/osquery/osquery.conf konumunda bulunur. Bu dosya JSON formatındadır.

{
  "options": {
    "config_plugin": "filesystem",
    "logger_plugin": "filesystem",
    "schedule_splay_percent": 10,
    "disable_events": false,
    "enable_file_events": true,
    "events_expiry": 3600,
    "verbose": false,
    "pack_delimiter": "/"
  },
  "schedule": {
    "users_check": {
      "query": "SELECT uid, username, description FROM users;",
      "interval": 3600
    },
    "listening_ports_check": {
      "query": "SELECT pid, port, protocol, address FROM listening_ports;",
      "interval": 300
    },
    "suid_binaries_check": {
      "query": "SELECT path, filename FROM suid_bin;",
      "interval": 7200
    }
  },
  "file_paths": {
    "critical_configs": [
      "/etc/passwd",
      "/etc/shadow",
      "/etc/sudoers",
      "/etc/cron.d/%",
      "/etc/ssh/sshd_config"
    ],
    "web_server_root": [
      "/var/www/html/%"
    ]
  },
  "packs": {
    "incident-response": "/usr/share/osquery/packs/incident-response.conf",
    "osquery-monitoring": "/usr/share/osquery/packs/osquery-monitoring.conf"
  }
}

Temel Yapılandırma Bölümleri:

1. options: osquery daemon’unun genel davranışını kontrol eden anahtarları içerir.
* config_plugin: Yapılandırma dosyasının nereden yüklendiğini belirtir (genellikle filesystem).
* logger_plugin: Logların nereye gönderileceğini belirler (filesystem, syslog, tls vb.).
* schedule_splay_percent: Zamanlanmış sorguların başlangıç zamanlarını rastgele yayarak CPU yükünü dengelemeye yardımcı olur.
* disable_events: Olay tabanlı tabloların devre dışı bırakılıp bırakılmayacağını kontrol eder. false olarak ayarlanmalıdır.
* enable_file_events: Dosya olaylarının izlenmesini etkinleştirir. true olarak ayarlanmalıdır.
* events_expiry: Olayların ne kadar süreyle saklanacağını belirler (saniye cinsinden).

2. schedule: Periyodik olarak çalıştırılacak SQL sorgularını tanımlar. Her sorgu için benzersiz bir anahtar, query (çalıştırılacak SQL sorgusu) ve interval (sorgunun kaç saniyede bir çalıştırılacağı) belirtilir.
* Örnek Güvenlik Sorguları:
* Yeni Kullanıcı Tespiti:

"new_users_check": {
              "query": "SELECT uid, username, description, directory, shell FROM users WHERE create_time > (strftime('%s', 'now') - 3600);",
              "interval": 3600,
              "description": "Her saat yeni oluşturulan kullanıcıları kontrol et."
            }

Bu sorgu her saat çalışarak son bir saat içinde oluşturulan kullanıcıları bulur. create_time alanı osquery’nin bazı versiyonlarında olmayabilir, bu durumda users tablosundaki diğer alanları kullanarak (örneğin, kullanıcıların bir önceki sorgudaki listeyle karşılaştırılması) değişiklikleri tespit etmek gerekir. osquery genellikle differential anahtarını kullanarak önceki sonuçlarla farkları raporlar.

"new_users_differential": {
              "query": "SELECT uid, username, description, directory, shell FROM users;",
              "interval": 3600,
              "description": "Kullanıcı hesaplarındaki değişiklikleri raporla.",
              "snapshot": false,
              "platform": "linux",
              "removed": false
            }

snapshot: false ve removed: false ile differential sorgular, sadece yeni eklenen veya değişen satırları loglar.

* Değişen SUID/SGID Binaries:

"suid_bin_differential": {
              "query": "SELECT path, filename, uid, gid, mode FROM suid_bin;",
              "interval": 86400,
              "description": "SUID/SGID bitli dosyalardaki değişiklikleri günlük olarak kontrol et.",
              "snapshot": false,
              "platform": "linux",
              "removed": false
            }

* Şüpheli Çalışan Süreçler:

"suspicious_processes": {
              "query": "SELECT pid, name, path, cmdline, uid FROM processes WHERE path LIKE '/tmp/%' OR path LIKE '/dev/shm/%';",
              "interval": 300,
              "description": "Geçici dizinlerdeki şüpheli süreçleri her 5 dakikada bir kontrol et."
            }

3. file_paths: file_events tablosunun hangi dosya ve dizinleri izleyeceğini tanımlar. Wildcard (%) kullanımıyla dizinler altındaki tüm dosyalar izlenebilir.
* Kritik sistem dosyaları (/etc/passwd, /etc/shadow, /etc/sudoers.d/, /var/log/)
* Web sunucusu kök dizinleri (/var/www/html/)
* Kullanıcı ana dizinleri (/home/%/.ssh/authorized_keys)

4. packs: Önceden tanımlanmış sorgu setlerini (pack’leri) içerir. osquery, genel güvenlik izleme, olay müdahalesi veya uyumluluk için birçok hazır pack ile gelir. Bu pack’ler, /usr/share/osquery/packs/ dizininde bulunur.
* incident-response.conf: Olay müdahalesi sırasında faydalı olabilecek sorguları içerir.
* osquery-monitoring.conf: osquery daemon’unun kendisini izlemek için sorgular içerir.
* Bu pack’leri etkinleştirmek için sadece adlarını yapılandırma dosyasına eklemeniz yeterlidir.

Yapılandırma dosyasını değiştirdikten sonra, değişikliklerin etkili olması için osqueryd hizmetini yeniden başlatmanız gerekir:

sudo systemctl restart osqueryd

Loglama ve Entegrasyon

osquery, topladığı verileri çeşitli hedeflere loglayabilir. Varsayılan olarak, loglar /var/log/osquery/ dizinine JSON formatında yazılır.

* osqueryd.results.log: Zamanlanmış sorguların sonuçlarını içerir.
* osqueryd.events.log: Olay tabanlı tabloların (file_events, process_events vb.) olaylarını içerir.

Bu JSON logları, bir Güvenlik Bilgileri ve Olay Yönetimi (SIEM) sistemi (örneğin, Splunk, ELK Stack, Graylog) tarafından kolayca ayrıştırılabilir ve analiz edilebilir. osquery, logları doğrudan bir syslog sunucusuna veya TLS üzerinden bir SIEM’e göndermek için de yapılandırılabilir.

* Syslog Entegrasyonu (örnek):

"options": {
      "logger_plugin": "syslog",
      "syslog_pipe_path": "/dev/log"
    }

Bu yapılandırma, logları yerel syslog daemon’una gönderir. Daha sonra syslog’u bir uzak SIEM’e yönlendirebilirsiniz.

* TLS Entegrasyonu (örnek):

"options": {
      "logger_plugin": "tls",
      "tls_hostname": "your-siem-server.com",
      "tls_port": 8443,
      "tls_server_certs": "/etc/osquery/certs/server.pem",
      "tls_client_certs": "/etc/osquery/certs/client.pem",
      "tls_client_key": "/etc/osquery/certs/client.key"
    }

TLS entegrasyonu, logları doğrudan şifreli bir bağlantı üzerinden merkezi bir SIEM sunucusuna gönderir. Bu, daha güvenli ve ölçeklenebilir bir loglama yöntemidir.

Gelişmiş İzleme Senaryoları ve İpuçları

osquery’nin esnekliği, sadece temel güvenlik kontrolleriyle sınırlı değildir; aynı zamanda tehdit avcılığı ve olay müdahalesi gibi daha gelişmiş senaryolarda da parlar.

Tehdit Avcılığı (Threat Hunting)

Tehdit avcılığı, bilinen göstergeler olmadan sistemlerdeki potansiyel tehditleri proaktif olarak aramaktır. osqueryi, bu süreçte interaktif bir araç olarak çok değerlidir.

* Örnek Senaryo: Bilinmeyen Bir Sürecin Kökenini Araştırma:
Bir sistemde şüpheli bir süreç (evil_process) tespit ettiniz.
1. Sürecin Detaylarını Alın:

SELECT pid, name, path, cmdline, cwd, uid, gid, start_time FROM processes WHERE name = 'evil_process';

2. Sürecin Açtığı Ağ Bağlantılarını Kontrol Edin:

SELECT * FROM socket_open_connections WHERE pid = ;

3. Sürecin Çalışma Dizinindeki Değişiklikleri Kontrol Edin (eğer file_events etkinse):
Bu tür bir araştırma için genellikle loglara bakmak gerekir, ancak file_events tablosu doğrudan sorgulanabilir olmasa da, olayları loglar.
4. Sürecin Üst Sürecini (Parent Process) Bulun:

SELECT p.pid, p.name, p.path, p.cmdline, p.uid, p.gid, pp.name AS parent_name, pp.path AS parent_path FROM processes p JOIN processes pp ON p.parent = pp.pid WHERE p.name = 'evil_process';

Bu sorgu, şüpheli sürecin hangi süreç tarafından başlatıldığını gösterir. Bu, saldırının başlangıç noktasını anlamak için kritik olabilir.

* Örnek Senaryo: Şüpheli bir IP Adresine Bağlanan Süreçleri Bulma:

SELECT pid, process_name, local_address, remote_address, remote_port FROM socket_open_connections WHERE remote_address = 'X.X.X.X';

Belirli bir şüpheli IP adresine (örneğin, bilinen bir C2 sunucusu) bağlanan tüm süreçleri hızlıca tespit edebilirsiniz.

Otomatik Yanıt (Automated Response)

osquery bir yanıt aracı olmasa da, topladığı veriler otomatik yanıt sistemlerini tetiklemek için kullanılabilir. Örneğin, osquery bir kritik dosya değişikliği veya şüpheli bir süreç tespit ettiğinde, SIEM sisteminize bir uyarı gönderebilir. SIEM daha sonra bir otomasyon platformunu (SOAR) tetikleyerek şüpheli süreci sonlandırma veya ana bilgisayarı ağdan izole etme gibi eylemler gerçekleştirebilir.

Performans Hususları

osquery, performans göz önünde bulundurularak tasarlanmıştır, ancak yanlış yapılandırma veya aşırı sorgulama sistem kaynaklarını tüketebilir.
* Sorgu Optimizasyonu: Karmaşık JOIN’ler veya çok sık çalışan sorgular performansı etkileyebilir. Sorgularınızı mümkün olduğunca basit ve hedef odaklı tutun.
* interval Ayarları: Sorgu aralıklarını (interval) makul düzeyde tutun. Her saniyede bir tüm süreçleri sorgulamak gereksiz yük yaratacaktır. Kritik veriler için daha kısa aralıklar, daha az kritik veriler için daha uzun aralıklar kullanın.
* Olay Tabloları (file_events, process_events): Bu tablolar, özellikle yoğun sistemlerde önemli performans maliyetleri getirebilir. Yalnızca gerçekten ihtiyacınız olan kritik yolları ve olayları izlemek için file_paths ve olay filtreleme seçeneklerini dikkatlice yapılandırın.
* osqueryd Bayrakları: osqueryd başlangıç bayrakları, önbellek boyutları, loglama seviyeleri gibi birçok performans ayarını kontrol etmenizi sağlar.

Sonuç

Ubuntu 16.04 üzerinde osquery, sistem güvenliği izleme yeteneklerinizi önemli ölçüde artıran güçlü ve esnek bir araçtır. SQL’in tanıdık sözdizimini kullanarak işletim sistemi verilerini sorgulama yeteneği, güvenlik analistlerine ve sistem yöneticilerine benzeri görülmemiş bir görünürlük ve kontrol sağlar. Kurulumu nispeten kolaydır ve doğru yapılandırma ile kötü amaçlı yazılım faaliyetlerini, yetkisiz değişiklikleri, ağ anormalliklerini ve kullanıcı tabanlı tehditleri etkin bir şekilde tespit etmek için kullanılabilir.

osquery’yi güvenlik stratejinize dahil ederek, sistemlerinizin güvenlik duruşunu güçlendirebilir, tehditleri daha erken aşamada tespit edebilir ve olaylara daha hızlı ve bilinçli bir şekilde müdahale edebilirsiniz. Sürekli izleme ve proaktif tehdit avcılığı, modern siber güvenlik ortamında hayati öneme sahiptir ve osquery bu hedeflere ulaşmak için paha biçilmez bir müttefiktir. Unutmayın ki osquery, bir güvenlik çözümünün sadece bir parçasıdır; en iyi sonuçlar için diğer güvenlik araçları ve iyi güvenlik uygulamalarıyla birlikte kullanılmalıdır. Ayrıca, Ubuntu 16.04’ün yaşam döngüsünün sona erdiğini ve daha yeni, desteklenen bir Ubuntu sürümüne yükseltmenin genel sistem güvenliği için kritik olduğunu belirtmekte fayda var. Ancak mevcut 16.04 sistemlerinizde osquery kullanmak, geçiş sürecinde veya eski sistemler için önemli bir güvenlik katmanı sağlayacaktır.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.