Usb Eklentisi

Eklentinin Amacı

USB eklentisi temel olarak istemci makinelerinin USB türündeki aygıtların engellenmesi, izin verilmesi, hareketlerinin izlenmesi gibi işlemlerde kullanılmaktadır. Aygıtlar için beyaz liste, kara liste gibi istisnalar da tanımlanabilmektedir.

Eklentinin Kullanılacağı Sunucular

USB eklentisi LDAP kaynağı sunucusu üzerinde kullanılmalıdır. Bu konuda mevcut durumda desteklenen Microsoft Aktif Dizin ve SAMBA Etki Alanı Denetçisine resmi olarak destek verilmektedir. İleriki sürümlerde FreeIPA üzerinde de temel özelliklerin kontrol edilmesi sağlanacaktır.

Gereksinimler

Temel Gereksinimler

USB Eklentisini kullanabilmek için Liman'a bu eklentiyi kullanabilecek yetkilerde bir kullanıcı ile giriş yapmak gerekmektedir. Bu ortamın sağlanabilmesi için öncelikle USB Eklentisi Liman'a, daha sonra ise domain sunucusuna eklenir. Eklentiye giriş yapılarak Eklenti Ayarları kısmında Paylaşımlı LDAP Kullanıcısı ve Paylaşımlı LDAP Şifresi bölümlerine LDAP üzerinde yetkili (politika oluşturma-düzenleme yetkisi) kullanıcının bilgileri girilir (örneğin Administrator). Bu sayede USB Eklentisini kullanacak olan yetkisiz kullanıcılar, yetkili bir kişiye ihtiyaç duymadan ve onların credentiallarına erişemeden USB politikaları oluşturma ve düzenleme yetkilerine sahip olurlar.

Eklenti eklendikten ve eklenti ayarları doldurulduktan sonra sırası ile:

  • LDAP yapısı üzerinde (gruplar eklentisi ile) "USBAdmin" security grubu oluşturulmalı,

  • Liman üzerinde USB eklentisini yönetecek kullanıcı ve grupları içerecek rol grubu (örnek olarak "USBYöneticileri") oluşturulmalı ve Usb eklentisini yönetecek eklenti, sunucu ve fonksiyon yetkileri verilmeli,

  • Liman üzerinde LDAPv2 modülü ile USBAdmin grubu USBYöneticileri rol grubuna eklenmeli,

  • Eklentiyi yönetecek kullanıcılar (kullanıcılar veya gruplar eklentisi ile) USBAdmin grubuna eklenmelidir.

Bu aşamalar haricinde USBAdmin grubunun makineler üzerinde yerel (local) politika düzenleyebilecek yetkilere sahip olması için politikalar ile gerekli birtakım işlemler yapılmalıdır.

  • Makinelerde lokal politikaların çalışabilmesi için Tayfa politikaları kısmından yerel politikalar aktif hale getirilmelidir.

  • Yerel politika dosyasının editlenebilmesi için recursive olmayacak şekilde:

    • /usr/share/tayfa/policies/ dizininde usbadmin grubuna rx izinleri,

    • /usr/share/tayfa/policies/{00000000-0000-0000-0000-000000000000}/ dizininde usbadmin grubuna rx izinleri,

    • /usr/share/tayfa/policies/{00000000-0000-0000-0000-000000000000}/L_Machine/ dizininde usbadmin grubuna rwx izinleri,

    • **/usr/share/tayfa/policies/{00000000-0000-0000-0000-000000000000}/L_Machine/usb.xml **dosyasında usbadmin grubuna rwx izinleri verilmelidir. Politika ayarında "Dosya varlığını kontrol et" seçeneği Hayır olarak seçilmelidir.

    • **/usr/share/tayfa/policies/{00000000-0000-0000-0000-000000000000}/L_Machine/tayfa.xml **dosyasında usbadmin grubuna rwx izinleri verilmelidir. Politika ayarında "Dosya varlığını kontrol et" seçeneği Hayır olarak seçilmelidir.

Tüm ortam sağlıklı bir biçimde sağlandıktan sonra usbadmin grubundan bir kullanıcı ile Liman'a giriş yapılır. Öncelikle arama kısmından hangi makinede USB ayarları izlemesi ve düzenlemesi yapacaksa o makinenin hostname'i ile arama yapılmalıdır. Arama sonucunda makinenin üzerine tıklanarak makine detayları penceresi açılır.

USB Loglarının Gönerilmesi İçin Gerekenler

Yazının son bölümünde yer alan "USB Loglarının Kibana Üzerinden İzlenmesi" bölümünün uygulanabilmesi için yapılandırılmış bir ELK sunucusu gerekmektedir. Ardından kökten oluşturulacak bir politika nesnesi ile USB loglarının gönderilmesi için politika ayarı yapılmalıdır.

  • Politikanın Rsyslog bölümünde USB loglarını gönderebilmek adına aşağıdaki gibi politika ayarı yapılması gerekir.

    • Sunucu IP Adresi kısmına ELK sunucusunun IP adresi, Sunucu Portu kısmına ise Logstash ayarlarında yapılandırılacak TCP input seçeneğinin portu girilmelidir. Bu dokümanda bu port 5045 olarak ayarlanacaktır. Diğer ayarlar aynen uygulanmalıdır.

  • Ayrıca Tayfa yüklü istemcilerin USB loglarını ELK sunucusuna (aslında Logstash'e) gönderebilmesi için yine politika ayarları yapılmalıdır.

    • Politikada öncelikle Tayfa bölümündeki "Usb hareketlerini izle" seçeneği Açık hale getirilmelidir.

  • Politika ayarları kaydedildikten sonra makinelerde (otomatik veya elle) uygulanmış olmalıdır.

Kullanım

Bilgisayarlar

  • İlk önce gelen Genel Bakış sekmesinde Son Politika Kontrol Tarihi satırının en sağındaki butona tıklanarak makinenin tekrar politika çekmesi (dolayısıyla en güncel politikalara sahip olması) sağlanabilir.

  • Ardından Makine Politikaları ve Kullanıcı Politikaları sekmelerinde makinenin çektiği USB politikaları görüntülenebilir.

    • Eğer ki makinenin çektiği politikalarda hiç USB makine politikası yoksa Makine Politikaları sekmesindeki politika seçim yeri boş gelecektir. Aynı şey Kullanıcı Politikaları sekmesi için de geçerlidir.

    • Kullanıcı Politikaları sekmesinde makinenin hangi kullanıcı ile politika çektiği de yazmaktadır. Böylelikle hangi kullanıcıya tanımlanan kullanıcı politikalarının da çekilmiş olduğu görüntülenebilir. Bir kullanıcı kendisini kapsamayan (tanımlanmayan) kullanıcı politikalarını çekemeyecektir.

  • Yerel Politika sekmesinde ise makine üzerinde tekil (yalnızca bu makine için geçerli) politika ayarlamaları yapılabilir. Yerel politikaların en üstte çalışacağı, yani aynı ayar gruplarında yapılan makine ve kullanıcı politikalarını ezeceği unutulmamalıdır.

    • Yerel politika ayarlandıktan ve kaydedildikten sonra makinenin tekrar politika kontrolü yapması gerektiği unutulmamalıdır. Bunun için yine manuel olarak Genel Bakış sekmesindeki buton kullanılabilir.

Politikalar

  • USB Eklentisinde ayrıca kök dizinden kullanıcı politikası oluşturularak kullanıcı bazlı USB kuralları düzenlenebilir.

Oluşturulan politikaların isimlerinin başına "lnx-usb-" otomatik olarak eklenecektir. Arama yapıldığında da sadece bu politikalar arasında arama yapılabilir. Oluşturulan politika nesnesine girildiğinde Makine tabı görünmeyeceği gibi yalnızca Kullanıcı politikası düzenlemeleri yapılabilecektir.

Opsiyon: USB Loglarının Kibana Üzerinden İzlenmesi

Yazının gereksinimler kısmındaki ayarlarla makinelerin log gönderimi yapılandırıldıktan sonra ELK sunucusunda Logstash servisinin 5045 portundan TCP ile log kabul etmesi sağlanmalıdır.

  • Öncelikle /etc/logstash/conf.d dizinine tcp.conf dosyası oluşturularak aşağıdaki gibi yapılandırılmalıdır.

# INPUT
input {
   tcp {
      port => 5045
    }
  }

# FILTER
filter{
}

#OUTPUT
output {
      elasticsearch {
        index => "tcp"
      }
}
  • Daha sonra /etc/logstash/pipelines.yml dosyasına aşağıdaki satırlar eklenerek yukarıda eklediğimiz tcp.conf dosyasının pipeline'a dahil edilmesi sağlanır.

# 
# ÖNCEKİ AYARLAR
#
- pipeline.id: tcp
  path.config: "/etc/logstash/conf.d/tcp.conf"
  • Bu değişiklikler tamamlandıktan sonra systemctl restart logstash komutu ile servis yeniden başlatılır.

Şu anki durumda istemcilerdeki logların Logstash servisi tarafından yakalanması gerekmektedir. Logların Kibana arayüzünden izlenebilmesi için oluşturduğumuz tcp indexinin Kibana patternlerine eklenmesi gerekmektedir.

  • Kibana arayüzünde Stack Management ekranına gidilerek Kibana > Index Patterns bölümüne girilir. Create index pattern butonuna tıklanarak tcp indexi eklenir.

    • Index pattern oluştururken Name kısmına yazılacak ismin Logstash tarafınan yakalanan loglardaki indexlerle eşleşmesi gerekmektedir. Bu sebeple Name kısmına "tcp" (veya "tcp*") yazıldıktan sonra ekranın sağ tarafında aşağıdaki gibi index pattern eşleşmesi görünmüyorsa (veya index pattern eşleşmeme hatası gözüküyorsa) henüz Logstash tcp indexli log yakalamamış veya bu adıma kadar yapılan ayarlar yanlış/eksik yapılmış olabilir. Ayarlar dikkatlice kontrol edildikten sonra makineler üzerinde USB hareketi (takma-çıkarma, yazma, dosya oluşturma vs.) log gönderimi sağlanabilir.

  • Index başarıyla eklendikten sonra Kibana arayüzünden Discover tabına girilerek oluşturulan tcp indexi seçilir ve loglar görüntülenebilir.

USB loglarındaki event bölümündeki hareketleri açıklamak gerekirse:

  • USB_INSTALL: USB aygıtının takıldığını ifade eder.

  • USB_MOUNT: USB aygıtının bilgisayar dosya sistemi üzerine mount edildiğini ifade eder.

  • USB_REMOVE: USB aygıtının çıkartıldığını ifade eder.

  • USB_UNMOUNT: USB aygıtının bilgisayar dosya sistemi üzerinden unmount edildiğini ifade eder.

  • USB_FILE_CREATE: USB aygıtı üzerinde dosya oluşturulduğunu ifade eder.

  • USB_DIR_CREATE: USB aygıtını üzerinde dizin oluşturulduğunu ifade eder.

  • USB_MODIFY: USB aygıtı üzerindeki dosyada değişiklik yapıldığını ifade eder.

  • USB_FILE_MOVED_TO: USB aygıtı üzerinde dosya taşıma işlemi yapıldığını ifade eder.

  • USB_DELETE: USB aygıtı üzerinde dosya silme işlemi yapıldığını ifade eder.

Politika: USB İzleme

USB İzlemenin Akfileştirilmesi

USB Eklentisine girildikten Yerel Politika sekmesine girilerek en alttaki USB hareketlerini izle seçeneği Açık hale getirilir. Kaydedilip çıkılır.

Usb İzleme ve Filtreleme

İzleme aktifleştirildikten sonra ilgili makine(ler)de gpupdate komutu çalıştırılır. Ardından Kaptan eklentisine girilerek (ilgili istemcinin iletişimde olduğu Kaptan) USB Aktiviteleri sekmesi açılır ve USB hareketleri izlenebilir.

Filtreleme aşamalarından önce olası USB Etkinlikleri ve anlamlarından bahsetmek gerekirse:

  • USB_INSTALL: USB aygıtının takıldığını ifade eder.

  • USB_MOUNT: USB aygıtının bilgisayar dosya sistemi üzerine (aynı satırdaki BAĞLANTI NOKTASI sütunundaki yere) mount edildiğini ifade eder.

  • USB_REMOVE: USB aygıtının çıkartıldığını ifade eder.

  • USB_UNMOUNT: USB aygıtının bilgisayar dosya sistemi üzerinden (aynı satırdaki BAĞLANTI NOKTASI sütunundaki yerden) unmount edildiğini ifade eder.

  • USB_FILE_CREATE: USB aygıtı üzerinde dosya oluşturulduğunu ifade eder.

  • USB_DIR_CREATE: USB aygıtını üzerinde dizin (aynı satırdaki DOSYA sütunundaki) oluşturulduğunu ifade eder.

  • USB_MODIFY: USB aygıtı üzerindeki dosyada (aynı satırdaki DOSYA sütunundaki) değişiklik yapıldığını ifade eder.

  • USB_FILE_MOVED_TO: USB aygıtı üzerinde dosya (aynı satırdaki DOSYA sütunundaki) taşıma işlemi yapıldığını ifade eder.

  • USB_DELETE: USB aygıtı üzerinde dosya (aynı satırdaki DOSYA sütunundaki) silme işlemi yapıldığını ifade eder.

Filtreleme işlemi ise üstteki filtreleme alanı üzerinde filtreler belirlenerek yapılır.

  • VE filtresi aynı etkinlik içerisindeki özelliklerin filtresini yapıyorsak kullanılır. Örneğin hem belli bir tarihteki hem de belli bir kullanıcı üzerindeki hareketler listelenmek isteniyorsa (administrator kullanıcısının 10/01/2022 tarihindeki USB hareketleri gibi) VE seçilmelidir.

  • VEYA filtresi aynı özelliğin farklı seçenekleri filtrelenmek isteniyorsa kullanılır. Örneğin hem USB mount hem de USB unmount hareketleri filtrelenmek isteniyorsa VEYA seçilmelidir.

Örneğin makine üzerindeki USB'lerin remove ve mount etkinlikleri görüntülenmek isteniyorsa filtre kısmına USB_REMOVE USB_MOUNT yazılır ve yandaki seçenekten VEYA seçilerek Filtrele denilir.

Bir diğer örnek olarak 18/1/2022 tarihindeki USB install hareketleri görüntülenmek isteniyorsa filtre kısmına USB_INSTALL 2022/1/18 yazılır ve yandaki seçenekten VE seçilerek Filtrele denilir.

Last updated