Linux İçin Incident Response

Linux İçin Incident Response

Herkese merhaba. Bu yazımda Incident Response kavramının ne olduğundan ve Linux sistemlerde olay müdahalesinin nasıl gerçekleştirildiğine dair konulardan bahsetmeye çalışacağım. Öncelikle Incident Response (Olay Müdahalesi) kavramını açıklayalım.

Incident Response Nedir?

En kısa tanımıyla Incident Response, bir saldırı anındaki eylem planı olarak tanımlanabilir. Tam olarak da bir kuruluşun saldırı veya ihlalin sonuçlarını yönetmeye çalışma biçimi de dahil olmak üzere veri ihlali ya da siber saldırıyı ele alma süreci olarak tanımlanabilir. Ne işe yarar diye soracak olursak; zaman ve kazanç kaybını önleyerek iş akışının seyrine engel olabilecek bir kriz durumunda olay yönetiminin gerçekleşmesini amaçlamaktadır.

Sisteminizdeki herhangi bir izinsiz girişi tespit etmek, Incident Response a yönelik çok önemli bir adımdır. Olayın tepkisi oldukça geniş ancak olay henüz küçükken inceleme altına almak her zaman iyidir. Olay müdahalelerini yurtdışında Computer Incident Response Team(CIRT) yönetirken bizde ise Siber Olaylara Müdahale Ekibi (SOME) yönetir.

Kuruluşların her zaman olay müdahale planı olmalıdır. Bir olay meydana geldiğinde izlenecek yol önceden belirlenmiş olmalıdır. Aslında tamamen Incident Response da vakaları, adlı tıpta olduğu gibi inceleyebilir, analizini gerçekleştirebiliriz.

Bu yazımda hedef olarak Linux sistemlerde olay müdahalesinin nasıl yapıldığına odaklanmak istemekteyim. Linux sistemlerde olabilecek herhangi bir saldırıda bakılması gereken kritik noktalara birlikte bakalım.

Linux İçin Incident Response

Şuanda kendimizi Incident Response ekibindeymişiz gibi düşünebiliriz. Peki bir olay müdahaleci olarak, sisteminizde neyin bulunması, neyin olmaması gerektiğini biliyor muyuz? Kesinlikle bunları bilmemiz gerekir. Linux için bakılabilecek kritik noktaları listelersek;

  • Çalışan süreçleri incelemek,
  • Bilgisayar adı, IP adresi, işletim sistemleri vb. gibi ayrıntılı bilgileri elimizde bulundurmak,
  • Sistem hizmetleri hakkında bilgi toplamak,
  • Sisteme giriş yapan tüm bilenen ve bilinmeyen kullanıcıları tanımlamak,
  • Ağ bağlantılarını, açık bağlantı noktalarını ve tüm ağ etkinliklerini incelemek,
  • Mevcut çeşitli dosyaları belirlemek,

gibi alanları sıralayabiliriz.

Linux için olay müdahalemize user accountlardan başlayabiliriz.

Kullanıcı Hesapları

İlk olarak olay müdahaleci olarak kullanıcı hesaplarının etkinliğini araştırmak oldukça önemlidir. Oturum açmış kullanıcıları, mevcut kullanıcıları, olağan ve olağandışı oturumları, başarısız oturum açma girişimlerini, kullanıcı izinlerini ve üye oldukları grupları, sudo ile erişimi vb. gibi bilgileri anlamamıza yardımcı olur.

Sistemde bulunan mevcut kullanıcıları görüntülemek için “cat /etc/passwd” komutunu kullanabilirsiniz. Bu komutun çıktısı da şu şekilde olacaktır.

Linuxta suid bitleri olarak da bilinen “setuid”, herhangi bir programın herhangi bir kullanıcı tarafından o programın sahibinin yetkilerinde çalıştırılmasını sağlamaktadır. Bu sayede erişim yetkimizin bulunmadığı bir dosya üzerinde değişiklik yapabilir hale gelmekteyiz. Örnek verecek olursak, passwd komutunu kullanarak kullanıcı kendi şifresini değiştirdiğinde “root” kullanıcısına ait olan /etc/shadow dosyası içerisinde kendine ait parola özetini değiştirmiş olur. Böylelikle kendisine ait olmayan bir dosyada düzenleme yapabilmiştir. Bu tür özelliklere sahip kullanıcıları listelemek için; “passwd -S [kullaniciadi]” parametresini kullanabiliriz.

Grep, herhangi bir dosya altında aranan ifadeyle eşleşen satırları aramak için kullanılır. UserID 0 olan kullanıcıları listelemek için “grep” komutunu kullanabiliriz. Aynı zamanda guid içinde bu komutu kullanarak root grubuna root dışında hangi kullanıcıların eklendiğini görüntüleyebiliriz.

Incident Response’un kullanıcı hesaplarıyla ilgili en önemli noktası, saldırıyı gerçekleştirmek için oluşturabileceği geçici bir user olup olmadığını öğrenmektir. Bu kullanıcıyı oluşturarak sistem içerisinde uzun süre yaşayabilirler. Bu tür kullanıcıları belirlemek ve görüntülemek için “find / -nouser -print” komutunu kullanabilirsiniz.

/etc/shadow linux sistemlerde bütün kullanıcıların parolalarının ve bunların geçerlilik süresinin tutulduğu dosyadır. Her alan (:) ile birbirinden ayrılır. Buraya parolalarımızın hashli hali yazılır. Bu dosyanın okunma yetkisi sadece root kullanıcısındadır. Bu dosyaya “cat /etc/shadow” komutu ile ulaşabilirsiniz.

Kullanıcıların ait olduğu bir de grupları bulunmaktadır. Grup bilgilerini görüntüleyebilmek için “cat /etc/group” komutunu kullanabilirsiniz.

Sıradan kullanıcılara root yetkisi vermek ve root’un yetkilerini kullanabilmesi için “sudoers” grubuna eklememiz gerekmektedir. Sudoers grubuna “/etc/sudoers” pathinden ulaşabilirsiniz. Burada root’un yazılı olduğu satırın hemen altına aynı formatta ayrıcalıklı hakları tanımlayacağınız user’ı girmemiz gerekmektedir. Saldırganlar da oluşturdukları kullanıcıları root gibi kullanabilmek için bu yöntemi kullanabilir. O nedenle bu dosyayı da kontrol etmekte yarar var.

Sistem Logları

Sistemde oluşan tüm hareketler loglanmaktadır. Log dan kasıt ise kayıt altına alınmasıdır. Incident Response da öncelikle log kayıtlarına bakılması gerekmektedir. Burada olağan dışı hareketleri gözlemleyebilir ve tespit edebilirsiniz. Linuxte sistem logları /var/log dizini altında bulunmaktadır.

Sistemdeki SSH ve telnet oturumlarını veya kimlik doğrulamasını belirlemek için /var/log dizini içerisinde “tail auth.log” komutunu kullanabilirsiniz. Burada ssh oturumlarını veya telnet loglarını görüntüleyebilirsiniz. “pam_unix” satırı telnet loglarını göstermektedir.

Linux sistemlerde geçmiş komutları listeleyebilirsiniz. Bu komut oldukça faydalıdır. Ben günlük kullanımlarda da bu komutu sıklıkla kullanmaktayım. Kullanıcıların yazdığı komutların geçmişini görüntüleyebilmek için “history | less” komutunu kullanabilirsiniz. Bu şekilde hangi kullanıcının hangi komutları kullandığını görüntüleyebilirsiniz.

Sistem Kaynakları

Sistem kaynakları, sistem günlük bilgileri, sistemin çalışma süresi, bellek alanı ve sistemin kullanımı bizlere çok şey anlatabilir. Linux sisteminizin fazla mesai yapıp yapmadığını bilmek veya sunucunun ne kadar süredir çalıştığını, sistemdeki o andaki zamanı, o anda kaç kullanıcının oturum açtığını ve sistemin yük ortalamalarını görmek Incident Response açısından önemlidir.

Sistemin ne kadar süredir ayakta olduğunu görebilmek için “uptime” komutunu kullanabilirsiniz.

Sistemin Linux’te bellek kullanımını, kullanılan fiziksel ve swap belleğini ayrıca kernel tarafından kullanılan arabellekleri görüntülemek için “free” komutunu kullanabilirsiniz. Sisteminizin herhangi kasılma durumunda burada bulunan “free” ve “cache” değerlerine dikkat etmek gerekmektedir.

Sistemdeki ram, mevcut bellek alanı yine swap alanlarını ve sistemle ilgili daha detaylı bilgileri öğrenebilmek için “cat /proc/meminfo” komutunu kullanabilirsiniz.

Sistem kaynaklarında son olarak bakılması gereken kritik noktalardan biri de, sisteminize ekli herhangi bir mount olup olmadığını kontrol etmektir. Fstab dosyası içerisine başka bir sunucuda konumlandırabilecek bir dizin cifs ya da nfs yöntemi ile mount edilerek data aktarılabilir. Bunun kontrolünü yapabilmek için “cat /etc/fstab” ya da “cat /proc/mounts” komutu kullanılabilir.

Processler

Yazının en başından kendimizi Incident Response takımında olduğumuzu varsaymıştık. Olay müdahaleci olarak, sisteminizin ürettiği çıktılara bakarken her zaman meraklı olmanız gerekmektedir. Bu merak sizi, sistemde hali hazırda çalışmakta olan programları, çalışmaları gereken programları, bu işlemlerin CPU kullanımını vb. görüntülemeye zorlamalıdır.

Linux sisteminde çalışan tüm işlemlerin dinamik ve gerçek zamanlı bir görselini, sistem bilgileri ve süreçlerin listesi ve bunların pid numaları veya kernal tarafından yönetilen processleri görüntülemek için “top” komutunu kullanabilirsiniz. Bu komutu Windows sistemler ile kıyaslarsak eğer top komutu görev yöneticisi ile aynı işlevi yapmaktadır. Burada olağan dışı işlemleri görüntüleyebilir “kill -9 [pid]” komutu ile processi sonlandırabilirsiniz.

Bir işlemle ilgili daha fazla ayrıntı görüntülemek için “lsof -p [pid]” komutunu kullanabilirsiniz.

Servisler

Linux sistemindeki hizmetler, sistem ve ağ hizmetleri olarak sınıflandırılabilir. Sistem hizmetleri, hizmetlerin durumunu, zamanlanmış hizmetleri içerebilir. Ağ hizmetleri ise dosya aktarımını, domain adı çözümlemesini, iptables gibi güvenlik duvarlarını içerir. Hizmetlerde anormallik olup olmadığını anlayabilmek için tüm servisleri listeleyip o an çalışan servisleri görüntüleyebilir, çalışmaması gereken servisleri durdurabilirsiniz. “service –status-all” komutu ile tüm servisleri listeleyebilirsiniz.

Bir olay müdahaleci olarak crontab içerisindeki planlanmış görevleri ve işleri mutlaka aramamız gerekmektedir. Linux içerisinde Windowstaki “task scheduler” ile aynı işlevi gören “crontab” bulunmaktadır. Diyelim ki bir scripti her gün 12’de çalıştırmak isterseniz eğer crontab’a ekleyebilirsiniz. Crontab /etc/crontab dizini altında bulunmaktadır. Zamanlanmış görevleri listelemek için “crontab -l” komutunu kullanabilirsiniz. Herhangi bir görev eklemek isterseniz “crontab -e” ya da “vi /etc/crontab” ile yeni görevi ekleyebilirsiniz. Command and control ü sağlayan bir script saldırganlar tarafından crontab’a yerleştirilmiş olabilir. Bu nedenle zamanlanmış görevleri incelemek önemlidir.

Linux içerisinde DNS yapılandırma sorunlarını çözmek ve konfigüre edebilmek için /etc/resolv.conf dosyasını düzenlemeniz gerekmektedir. Burada DNS bilgilerinizi görüntüleyebilir ya da editleyebilirsiniz.

Linux sistemlerinde IPv4 paket filtrelemeyi ve NAT ayarlarını kontrol etmek ve yönetmek için iptables kullanabilir ve aşağıdaki gibi çeşitli komutlardan yararlanabilirsiniz.

Dosyalar

Bir olay müdahale görevlisi olarak, sisteminizdeki anormal görünen dosyaların farkında olmanız gerekmektedir. Sisteminizdeki aşırı büyük dosyaları ve bunların izinlerini hedefleriyle birlikte görüntülemek için “find /home/ -type -f -size +512k -exec ls” komutunu kullanabilirsiniz.

Dosyalarda SUID bitinin ayarlandığı herhangi bir komut çalıştırıldığında, etkin UID’si o dosyanın sahibi olur. Bu neden SUID bitini tutan tüm dosyaları bulmak isterseniz “find /etc/ -readable -type f 2> /dev/null” komutunu kullanabilirsiniz. Sistemler içerisine sızarken de yukarıdaki komutu kullanarak root hakları ile çalışan uygulamaları kullanarak yetki yükseltme yapabilirsiniz.

Sistemde bulunan anormal dosyaları gün sayısı vererek bulabilirsiniz. Bunun için “find / -mtime -2 -ls” komutunu kullanabilirsiniz. Buradaki 2, günü belirtmektedir.

Ağ Ayarları

Bir sistem ağının genel resmini ve sağlığını belirlemek son derece önemlidir. Ağ etkinliği bilgilerini almak için çeşitli komutlar kullanabilirsiniz.

Sistem üzerinde ağ ara yüzlerini görmek için “ifconfig” komutunu kullanabilirsiniz.

Portları dinleyen tüm işlemleri ve Process IDleri listemek için “lsof -i” komutunu kullanabilirsiniz. Hem UDP hem de TCP portlarını ve bu portları kullanan userları da görüntüleyebilirsiniz.

Netstat komutu ile hem windows sistemlerde hem de linux sistemlerde ağdaki tüm dinleme noktalarını listeleyebilirsiniz. Böylelikle sisteme hakimseniz eğer izniniz olmadan açılan bir portu görüntüleyebilir ve müdahale edebilirsiniz. Özellikle netcat ile port aracılığı ile bağlantı kurulduğunda netstat ile bu bağlantıyı yakalayabiliriz.

Arp Spoofing saldırılarına karşı arp önbelleğini görüntülemek önemlidir. Aynı ağ içerisinde bulunan saldırgan ARP saldırısı gerçekleştirerek arp tablosunu doldurup man in the middle saldırısı gerçekleştirebilir. Linux sistemlerde “arp -a” komutu ile tabloyu görüntüleyebilirsiniz.

$PATH, bir ortam değişkenidir. Temelde makinenizi programlar için nerede arayacağınızı söyler. “echo $PATH” ile kabuğa çalıştırılabilir dosyaları hangi dizinlerde arayacağınızı görüntüleyebilirsiniz.

Kaynakça

https://www.hackingarticles.in/incident-response-linux-cheatsheet/

https://canyoupwn.me/tr-suid-bit-istismari/

https://linux.org.tr/

Related Posts

Leave a Reply