# 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.

![](/files/RDbzLE5nW10bYf6lPszY)

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

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

![](/files/LrAKmaOcohsnrAe7Oqg7)

* 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,

![](/files/b8hsRfOWc6nhmcP9T5qg)

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

![](/files/BzMErtHUMjJxIGuqlBkr)

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

![](/files/9TSrcB9i7esls9mV062c)

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**.

![](/files/HzKq0Xdn4d5PZkJvKfD8)

* 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.

![](/files/E6Ib97yxznWlybeUjNzu)

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.

![](/files/Whcy0u4Jqn3E8rgSnzpH)

* 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.

![](/files/pC8EDaxtbfWDuGs96lqN)

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

## Kullanım

### Bilgisayarlar&#x20;

* İ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.

![](/files/i0PLceraVqJKn7LW5rwG)

* 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.

![](/files/ngVepx5JkaObj2oI3LpE)

* **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.

<figure><img src="/files/BJeEEZ65ARnfJdYMR2Yn" alt=""><figcaption></figcaption></figure>

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.

<figure><img src="/files/xMlViYVWqCcDylKQvqyo" alt=""><figcaption></figcaption></figure>

### Opsiyon: USB Loglarının Kibana Üzerinden İzlenmesi <a href="#usb-i-zlemenin-akfilestirilmesi" id="usb-i-zlemenin-akfilestirilmesi"></a>

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.*

![](/files/CXWTFc5l8y7sGnZ2iWuH)

* 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.

![](/files/ZnJGxbrlqpPh0p0qByYb)

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.

<details>

<summary>Politika: USB İzleme</summary>

#### USB İzlemenin Akfileştirilmesi <a href="#usb-i-zlemenin-akfilestirilmesi" id="usb-i-zlemenin-akfilestirilmesi"></a>

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 <a href="#usb-i-zleme-ve-filtreleme" id="usb-i-zleme-ve-filtreleme"></a>

İ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.

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.liman.dev/liman-eklentileri/politika-eklentileri/usb-eklentisi.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
