Ana Sayfa » *nix » SUID ve SGID Bit’ler ve Bu Bitlere Sahip Dosyaların Bulunması

SUID ve SGID Bit’ler ve Bu Bitlere Sahip Dosyaların Bulunması


BerbatKötüİdare EderGüzelHarika (Toplam 3 oy. 5 puan üzerinden ortalama 4,33 || Oy vererek siz de katkıda bulunabilirsiniz.)
Loading...
Nix sistemerde kullanılan SUID ve SGID özelliği, bir kullanıcının, bir programı kendisine tanınmış haklardan daha fazla izne sahip olarak çalıştırması gerektiği durumlarda kullanılmaktadır. Suid ve sgid oldukça kullanışlı birer dosya yetki özelliği olmasına rağmen güvenlik açısından dikkat edilmesi gereken bir husustur. Zira, suid biti aktif edilmiş dosyalar suistimal edilerek ve zafiyete neden olabilirler. suid sgid bit

İşte bu nedenle, sistemdeki SUID ve SGID dosyaların taranması ve listelenmesi rutin bir güvenlik önlemi konuyla ilgili biraz detay vermek istedim. Yazının devamında SUID/SGID bit’lerinin ne olduğu ve sistemde bu bitlere sahip dosyaların nasıl saptanabileceği ile ilgili bilgiler bulabilirsiniz.

SUID/SGID Biti Nedir ?

SUID ve SGID konusunun daha iyi anlaşılması açısından örneklemek gerekirse, kullanıcı şifremizi değiştirmek için kullandığımız “passwd” aracını ele alabiliriz. Bildiğiniz gibi passwd komutunu kullanarak, kendi kullanıcımıza ait şifreyi -root olmamıza gerek kalmaksızın- değiştirebiliyoruz. Ancak sıradan bir kullanıcı olarak şifremizi değiştirdiğimiz zaman, -sadece root kullanıcısının erişme yetkisi olduğu- /etc/shadow dosyasının içeriğinde değişiklik yapılmış oluyor. İşte, erişimimizin olmadığı bir dosyada değişiklik yapabiliyor olmamızın nedeni, /usr/bin/passwd binary dosyasında “suid” bitinin etkinleştirilmiş olmasıdır. Yani örnek olarak “aliveli” kullanıcısı ile sisteme bağlı olan birisi passwd binarysini çalıştırdığı zaman, passwd aracını o binary’nin sahibinin yetkileri ile çalıştırmış olur; binary’nin sahibi de root olduğundan dolayı sadece root kullanıcısının erişme izni olduğu /etc/shadow dosyasında değişiklik yapabilir.

Dolayısı ile SUID biti, herhangi bir programın herhangi bir kullanıcı tarafından bile, program sahibinin haklarıyla çalıştırılabilmesine olanak sağlamaktadır. SUID biti etkinleştirilmiş olan passwd aracının izinlerini kontrol ettiğimiz zaman çalıştırılabilir (x) bitin yerine gelen SUID (s) bitini görebiliriz.

# ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 22984 Jan  6  2007 /usr/bin/passwd

İzin diziminde geçen bu (s) ibaresi suid bitinin aktif olduğunu, passwd’yi kim çalıştırırsa çalıştırsın programın root yetkisi ile çalıştırılacağını belirtir.

Aynı şekilde SGID de, herhangi bir programın, grup hakları ile çalıştırılabileceğini söyler. Örnek olarak /usr/bin/wall binary dosyası için SGID aktif edilmiştir.

# ls -l /usr/bin/wall
-r-xr-sr-x 1 root tty 10484 Jan 21  2009 /usr/bin/wall

SUID/SGID biti aktif dosyaların bulunması


Sonuç olarak SUID ve SGID konusu kullanışlı bir durum olmasına rağmen güvenlik açısından dikkat de edilmesi gereken bir konudur. Zira, suid biti aktif edilmiş herhangi bir programda bulunan bir bug sistemde root yetkileri ile çalıştırılması gibi durumlara olanak verebilir ya da bir saldırgan sisteminizde suid biti aktif edilmiş bir dosya üzerinden root yetkisi elde etmeye çalışabilir. Bu açıdan, sisteminizde SUID/SGID bitleri aktif edilmiş dosyaları gözlem altında tutmak rutin bir güvenlik önlemidir.

Bu rutin işlem için komutundan yararlanılabilir. Aşağıdaki ile SUID ya da SGID (ya da ikisi birden) bitleri etkinleştirilmiş dosyaları saptanabilir.

 / \( -perm -u+s -or -perm -g+s  \) -type f -exec ls -l {} \;

Örnek bir çıktı şu şekildedir:

-rwsr-xr-x 1 root root 22984 Jan  6  2007 /usr/bin/passwd
-rwsr-xr-x 1 root root 46972 Mar  3  2009 /usr/bin/chage
-rwsr-sr-x 1 root root 315416 Jan  6 02:59 /usr/bin/crontab
rwxr-sr-x 1 root mail 16020 Mar 29  2007 /usr/bin/lockfile
-rwxr-sr-x 1 root tty 10984 Jan 20 12:43 /usr/bin/write
-rwx--s--x 1 root slocate 23856 Sep  3  2009 /usr/bin/locate

Yukarıdaki çıktıda görüldüğü gibi SUID ya da SGID biti atkif edilmiş dosyaların bir dökümü bulunuyor. Bu dosyaları düzenli olarak incelemek, listeye yeni dosyalar eklenip eklenmediğini kontrol etmek  akıllıca olacaktır. Normalde FreeBSD sistemlerde setuid,setgid dosyalar periodic olarak taranır ve sistem yöneticisine mail olarak raporlanır. Ancak linux sistemlerde bu işlem öntanımlı olarak yapılmamaktadır. Bu yüzden arama işlemini yapıp, email ile raporlama yapacak küçük bir script yazmak ve periyodik olarak çalıştırılmak üzere cron’a eklemek iyi olacaktır.

Örneğin aşağıdaki script iş görecektir. Kendinize göre düzenleyip kullanabilirsiniz.

#!/bin/sh

SUBJECT="SUID/SGID Raporu"
TO="[email protected]"
BODY="/tmp/setuid-files.txt"

 / \( -perm -u+s -or -perm -g+s  \) -type f -exec ls -l {} \; > /tmp/setuid-files.txt
mail -s "$SUBJECT" "$TO" < $BODY

Mesela her gece saat 03:00’da çalışması için de cron’a şu şekilde eklenebilir:

00 03 * * * /bin/sh /yol/findsuid.sh

Böylece, suid/sgid dosyaları sürekli gözlem altında tutabilirsiniz.

Kategoriler: *nix,ipucu,Security |

Bu yazılar da ilginizi çekebilir:


- Herkes tarafından yazılabilir dosyaların saptanması
- Belli bir zaman aralığında değiştirilmiş dosyaların saptanması
- iotop İle Disk Aktivitesini Görüntülemek | I/O Monitoring
- lsof (LiSt Open Files) Kullanımı ve Örnek Komutlar
- Arşiv (Tar, tar.gz) dosyalarının içeriğinin listelenmesi

Yorumlar


  1. Yusuf | (Mayıs 21st, 2016 8:35 pm)

    Teşekkürler önemli bir bilgi..

    [Cevapla]

Trackbacks

Yorumda bulunun.