Linux Güvenliği NASIL

Tufan Karadere

Kevin Fenzi

tummy.com, ltd.


          
        

Dave Wreski

linuxsecurity.com


          
        

v2.4, 26 Ocak 2004

Bu çevirinin sürüm bilgileri:

Baskı Tarihçesi
Baskı 2.4.210 Eylül 2008Tufan Karadere

Özgün belgenin sürüm bilgileri:

Baskı Tarihçesi
Baskı 2.426 Ocak 2004 Kevin Fenzi
Dave Wreski

Özet

Bu belgede, Linux sistem yöneticilerinin yüzyüze geldiği güvenlik konularına genel bir bakış açısı, genel güvenlik felsefesi ile birlikte Linux sisteminizi daha güvenli hale getirebilmeniz için örnekler, ve güvenlik ile ilgili program ve bilgilere daha kolay erişebilmeniz için referanslar bulunmaktadır. Geliştirme, yapıcı eleştiri, ekleme veya düzeltmelerinizi, ve geribildiriminizi her iki yazara da konu kısmında "Security HOWTO" yazan bir e-mektup ile (İngilizce olarak) iletebilirsiniz. [1]



[1] (Çeviri konusundaki eleştirilerinizi, eklemek istediklerinizi, ya da yanlış çeviriler konusudaki önerilerinizi tufank@gmail.com adresine gönderebilirsiniz. Konu kısmına "Guvenlik NASIL" yazın ki, benim reklam süzgecime de yakalanmayasınız :). Cevap alma konusunda da lütfen sabırlı olun :) )


İçindekiler

Giriş
Bu Belgenin Yeni Sürümleri
Geribildirim
Yasal Sorumluluk Reddi
Copyright Information
Telif Hakkı Bilgisi
Genel Bakış
Neden Güvenliğe Gereksinim Duyuyoruz?
"Güvenli", Ne kadar Güvenli?
Neyi Korumaya Çalışıyorsunuz?
Bir Güvenlik Politikası Geliştirmek
Sitenizi Güvenli Hale Getirmenin Yolları
Bu Belgenin Düzeni
Fiziksel Güvenlik
Bilgisayar Kilitleri
BIOS Güvenliği
Sistem Yükleyici Güvenliği
xlock and vlock
Yerel cihazların güvenliği
Fiziksel Güvenlik İhlallerini Belirleme
Yerel Güvenlik
Yeni Hesap Açma
Root Güvenliği
Dosyalar ve Dosya Sistemi Güvenliği
Umask Ayarları
Dosya İzinleri
Bütünlük Denetimi
Truva Atları
Parola Güvenliği ve Şifreleme
PGP ve Açık Anahtarlı Şifreleme
SSL, S-HTTP ve S/MIME
Linux IP Güvenliği'nin (IPSec) Hayata Geçirilmesi
ssh (Güvenli Kabuk) ve stelnet
PAM - Takılabilir Kimlik Doğrulama Modülleri
Şifreli IP Sarma (CIPE)
Kerberos
Gölge Parolalar
"Crack" ve "John the Ripper"
CFS - Şifreli Dosya Sistemi ve TCFS - Şeffaf Şifreli Dosya Sistemi
X11, SVGA ve Görüntü Güvenliği
Çekirdek Güvenliği
2.0 Çekirdek Derleme Seçenekleri
2.2 Çekirdek Derleme Seçenekleri
Çekirdek Aygıtları
Ağ Güvenliği
Paket Koklayıcılar
Sistem servisleri ve tcp_wrappers
DNS Bilginizi Doğrulayın
identd
Postfix MTA'nın yapılandırılması ve güvenli hale getirilmesi
SATAN, ISS, ve Diğer Ağ Tarayıcıları
sendmail, qmail and MTA'lar
Servis Reddi Saldırıları
NFS (Ağ Dosya Sistemi) Güvenliği
NIS (Ağ Bilgi Servisi) (Önceki Sarı Sayfalar, YP).
Güvenlik duvarları
IP Chains - Linux 2.2.x Çekirdek Güvenlik duvarı
Netfilter - Linux 2.4.x Çekirdek Güvenlik duvarı
VPN'ler - Sanal Özel Ağlar
Güvenlik Hazırlığı (Bağlanmadan Önce)
Makinenizin Tam Yedeğini Alın
İyi Bir Yedekleme Çizelgesi Seçimi
Yedeklerizinin Denenmesi
RPM ve Debian Dosya Veritabanınızı Yedekleyin
Sistem Hesap Verilerinizi Takip Edin
Bütün Yeni Sistem Güncellemelerini Uygulayın
Güvenlik İhlali Sırasında ve Sonrasında Neler Yapılabilir
Güvenlik İhlali Sırasında
Güvenlik İhlali Sonrasında
Güvenlikle İlgili Kaynaklar
LinuxSecurity.com Atıfları
FTP Siteleri
WWW Siteleri
Mektup Listeleri
Kitaplar - Basılı Eserler
Sözlük
Sıkça Sorulan Sorular
Sonuç
Teşekkürler
Çeviri Hakkında - About Translation
Türkçe Çeviri Üzerine Açıklamalar
Sözcük Karşılıkları
Kısaltma Karşılıkları

Giriş

Bu belge Linux güvenliğini etkileyen ana konuları kapsıyor, ve genel felsefe ve İnternet kaynakları tartışılıyor.

Bazı NASIL belgelerinin güvenlik konusunda ortak olarak içerdiği bölümler olabilir, uygun olan yerlerde bu belirtilmiştir.

Bu belge güncel bir güvenlik açıkları listesi değildir. Her geçen gün yeni güvenlik açıkları ortaya çıkmaktadır. Bu belge, size daha çok bu güncel bilgilerin nerelerde bulunduğunu söyleyecek, ve güvenlik açıklarını engelleyebilmek için bazı genel yöntemlerden bahsedecektir.

Bu Belgenin Yeni Sürümleri

Bu belgenin yeni sürümleri comp.os.linux.answers haber grubuna düzenli olarak postalanacak, ayrıca:

http://www.linuxdoc.org/

gibi sitelere de eklenecektir

Bu belgenin en son sürümü, çeşitli belge biçimlerinde,

adreslerinden ulaşılabilir olmalı.[2]

Geribildirim

Bütün yorumlar, hata raporları, ek bilgi ve her çeşit eleştiri:

kevin-securityhowto@tummy.com

ve

dave@linuxsecurity.com

adreslerine yönlendirilmeli.

Not: Lütfen geribildiriminizi her iki yazara da gönderin. Ayrıca, mektubunuzun konu kısmında "Linux", "security", veya HOWTO" kelimelerinin bulunduguğundan emin olun ki, Kevin'in reklam süzgecine yakalanmayasınız.

Yasal Sorumluluk Reddi

Bu belgenin içeriği (yazarlara) hiçbir yasal zorunluluk/sorumluluk getirmez. Belgedeki kavramları, örnekleri ve diğer içeriği, tehlikelerini göze alarak kullanın. Ek olarak, belgenin bu sürümü "erken" bir sürüm olup hatalar veya yanlışların bulunması mümkündür.

Belgedeki bazı örnekler ve tanımlamalar RedHat(tm) düzen ve kurulumuna uygun şekilde verilmiştir. Sizin sisteminiz bundan farklı olabilir.

Belgede, bildiğimiz kadarıyla, belirli şartlar altında kullanılabilen veya kişisel kullanım için değerlendirilebilen programlar tanıtılacak. Bir çok program kaynak kodları ile birlikte, GNU şartları altında ulaşılabilir durumda olacaktır.

Copyright Information

This document is copyrighted (c)1998-2000 Kevin Fenzi and Dave Wreski, and distributed under the following terms:

  • Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium, physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the authors would like to be notified of any such distributions.

  • All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO coordinator at the address given below.

  • If you have questions, please contact Tim Bynum, the Linux HOWTO coordinator, at

tjbynum@metalab.unc.edu

Telif Hakkı Bilgisi

Bu belgenin telif hakları (c)1998-2000 Kevin Fenzi ve Dave Wreski'ye aittir, ve belge aşağıdaki şartlar altında dağıtılabilir:

  • Linux HOWTO (NASIL) belgeleri, bu telif hakkı bilgisi birlikte bulunduğu sürece, kısmen veya tamamen, çoğaltılabilir ve dağıtılabilir. Ticari amaçlı dağıtımlara da izin verilir ve teşvik edilir; bununla birlikte, böyle bir ticari dağıtım gerçekleşirse, yazarlar bundan haberdar edilmelidir.

  • Herhangi bir Linux HOWTO (NASIL) belgesini içine alan çeviriler, HOWTO (NASIL) belgesi türevleri, veya bir araya getirme çalışmaları bu Telif Hakkı kapsamı altında yapılmalıdır. Bu şu anlama geliyor: Bir NASIL belgesinden türeyen bir çalışma üretip, bu yeni çalışmaya ek kısıtlamalar getiremezsiniz. Bazı şartlar altında bu kurallara istisnalara izin verilebilir, lütfen aşağıda adresi bulunan Linux HOWTO (NASIL) Koordinatörü ile iletişime geçin.

  • Sorularınız varsa, lütfen adresi aşağıda bulunan Linux HOWTO (NASIL) Koordinatörü Tim Bynum ile iletişime geçin:

tjbynum@metalab.unc.edu

Genel Bakış

Bu belge Linux sisteminizi daha güvenli hale getirebilmek için yaygın olarak kullanılan yazılımları ve bazı yordamları açıklamaya çalışacak. Başlamadan önce, öncelikle bazı temel kavramları tartışmak, ve bir güvenlik altyapısı oluşturmak, bu açıdan önemli.

Neden Güvenliğe Gereksinim Duyuyoruz?

Sürekli değişmekte olan küresel iletişim, pahalı olmayan İnternet bağlantıları, ve hızlı adımlarla ilerleyen yazılım gelişimi dünyasında, güvenlik gitgide daha fazla "konu" haline geliyor. Şu anda güvenlik temel bir gereksinim, çünkü küresel bilişim doğal bir güvensizlik içinde. Örneğin, veriniz A noktasından B noktasına İnternet üzerinde giderken, yolu boyunca bir dizi başka noktalardan geçebilir, ve bu şekilde diğer kullanıcılara, gönderdiğiniz verinin yolunu kesebilmek, hatta veriyi değiştiribilmek için fırsatlar verebilir. Hatta sisteminizdeki diğer kullanıcılar, kötü niyetle, sizin isteğiniz dışında verinizi başka bir şekle sokabilir. "Korsan" [3] da denilen bazı saldırganlar sisteminize izinsiz erişim sağlayabilir, ileri düzey bilgileri kullanarak sizmişsiniz gibi davranabilir, sizden bilgi çalabilir, hatta kendi kaynaklarınıza erişiminizi engelleyebillir. Eğer "Bilgisayar Kurdu" ile "Bilgisayar Korsanı" arasındaki farkı merak ediyorsanız, Eric Raymond tarafından hazırlanan "Nasıl Bilgisayar Kurdu Olunur" belgesini aşağıdaki adreste bulabilirsiniz: http://www.catb.org/~esr/faqs/hacker-howto.html.

"Güvenli", Ne kadar Güvenli?

Öncelikle, hiçbir bilgisayar sisteminin tamamen güvenli olamayacağını aklınızdan çıkarmayın. Bütün yapabileceğiniz, sisteminizi bozmaya çalışan birinin, bu işini gitgide daha zor bir hale getirmek olacaktır. Ortalama bir ev Linux kullanıcısı için "korsan"ları uzak tutmak fazla bir şey gerektirmez. Bununla birlikte, daha Büyük-Ölçek Linux kullanıcıları (bankalar, telekomunikasyon şirketleri vb) için yapılması gereken çok çalışma vardır.

Değerlendirilmesi gereken bir diğer etken de, güvenlik önemleriniz arttıkça, bu güvenlik önlemlerinin kendisi sistemi kullanılmaz hale getirebilmektedir. Bu noktada dengeleri sağlayacak kararlar vermelisiniz, öyleki sisteminiz kullanılabilirliğini yitirmeden amaçlarınıza uygun bir güvenlik içinde olmalı. Örneğin, sisteminize telefon yoluyla bağlanmak isteyen herkese modem tarafından geri-arama yapılması gibi bir güvenlik önleminiz olabilir. Bu daha güvenli olmakla birlikte evinde bulunmayan bir kişinin sisteme giriş yapmasını zorlaştırır. Ayrıca Linux sisteminizin ağ veya İnternet bağlantısı olmayak şekilde de ayarlayabilirsiniz, fakat bu da sistemin yararlı kullanımını sınırlandırmak olacaktır.

Eğer orta büyüklükte veya büyük bir siteyseniz, bir güvenlik politikası oluşturmalı, ve bu politika sitenizin ne kadar güvenliğe gereksinimi olduğunu belirtiyor olmalıdır. Bu politikaya uygun olarak alınan önlemlerin ve yordamların uygulandığından emin olmak için bir izleme yordamı da olmalıdır. Yaygın olarak bilinen bir güvenlik politikası örneğini http://www.faqs.org/rfcs/rfc2196.html adresinde bulabilirsiniz. Bu belge yakın zamanda güncellendi, ve şirketinizin oluşturulacak güvenlik politikası için harika bir iskelet görevi görecek bilgiler içeriyor.

Neyi Korumaya Çalışıyorsunuz?

Sisteminizi güvenli hale getirmeden önce, korunmanız gereken tehditin düzeyine, hangi tehlikeleri dikkate almamak gerektiğine, ve sonuç olarak sisteminizin saldırıya ne kadar açık olduğuna karar vermelisiniz. Koruduğunuz şeyin ne olduğunu, neden korumakta olduğunuzu, değerinin ne olduğunu, ve verinizin ve diğer "değerli"lerinizin sorumluğunun kime ait olduğunu belirlemek amacıyla sisteminizi çözümlemelisiniz..

  • Risk, bilgisayarınıza erişmeye çalışan bir saldırganın, bunu başarma olasılığıdır. Bir saldırgan, dosyaları okuyabilir veya değiştirebilir, veya zarara yol açacak programlar çalıştırabilir mi? Önemli verileri silebilir mi? Unutmayın: Sizin hesabınıza, veya sisteminize erişim sağlamış biri, sizin kişiliğinize bürünebilir.

    Ek olarak, bir sistemde güvensiz bir hesap bulundurmak bütün ağın güvenliğinin bozulmasıyla sonuçlanabilir. Eğer bir kullanıcıya .rhosts dosyasını kullanarak giriş yapma, veya tftp gibi güvensiz bir servisi çalıştırma izni verirseniz, bir saldırganın "kapıdan içeri bir adım atması" riskini göze almış oluyorsunuz. Saldırgan bir kez sizin veya bir başkasının sisteminde bir kullanıcı hesabı sahibi olduktan sonra, bu hesabı diğer bir hesaba, veya diğer bir sisteme erişim kazanmak için kullanabilir.

  • Tehdit, tipik olarak ağınıza veya bilgisayarınıza izinsiz erişim sağlamak için güdülenmiş birinden gelir. Sisteminize erişim için kimlere güveneceğinize, ve ne gibi tehditler ortaya çıkaracaklarına karar vermelisiniz.

    Çeşitli saldırgan tipleri vardır, ve bunların değişik niteliklerini akıldan çıkarmamak, sistemlerinizin güvenliğini sağlamakta yararlı olur:

    • Meraklı - Bu tip saldırgan genelde ne çeşit bir sisteminiz ve veriniz olduğunu keşfetmek ile ilgilenir.

    • Kötü Niyetli - Bu tip saldırgan, sisteminizi çalışmaz hale getirmek, www sayfanızın görünüşünü bozmak, ya da yolaçtığı zararı karşılayabilmeniz için sizi zaman ve para harcamaya zorlamak amacıyla ortalarda dolaşır.

    • Büyük-Ölçek Saldırganı - Bu tip saldırgan, sisteminizi kullanarak tanınıp sevilme ve ün kazanma peşindedir. Büyük ölçekli sisteminizi kullanarak, yeteneklerinin reklamını yapmaya çalışır.

    • Rekabet - Bu tip saldırgan, sisteminizde hangi verilerin bulunduğu ile ilgilenir. Kendisine, parasal veya diğer yollarla yararlı olabilecek bir şeye sahip olduğunuzu düşünen biri olabilir.

    • Ödünç Alanlar - Bu tip saldırgan, sisteminize "dükkan açmak" ve kaynaklarını kendi amaçları için kullanmakla ilgilenir. Çoğunlukla sohbet veya IRC servisleri, porno siteleri, hatta DNS servisleri bile çalıştırabilirler.

    • Zıp Zıp Kurbağa - Bu tip saldırgan, sisteminizle ilgilenir çünkü sisteminizden diğer sistemlere atlamak istemektedir. Eğer sisteminiz diğer sistemlere iyi bir bağlantı sağlıyorsa, veya içerdeki diğer bilgisayarlara bir ağ geçidi niteliğindeyse, bu tip saldırganların sistem güvenliğinizi ihlal etmeye çalıştıklarını görebilirsiniz.

  • Zayıflık, bilgisayarınızın diğer ağlardan ne kadar iyi korunmakta olduğunu, ve birinin izinsiz erişim sağlaması potansiyelini tanımlar.

    Biri sisteminize girerse tehlikede olan nedir? Elbette, çevirmeli ağ ile PPP bağlantısı sağlayan bir ev kullanıcısı ile makinelerını İnternete bağlayan bir şirketin, veya diğer büyük bir ağın ilgilendikleri farklı olacaktır.

    Kaybolan herhangi bir veriyi yerine koymak/yeniden yaratmak için ne kadar zaman gerekirdi? İşin başında yapılan bir yatırım için harcanan zaman, daha sonra kaybolan veriyi yeniden yaratmak için harcanan zamandan on kat daha az olabilir. Yedekleme stratejinizi gözden geçirdiniz mi? Son zamanlarda verilerinizi doğruladınız mı?

Bir Güvenlik Politikası Geliştirmek

Sisteminiz için kullanıcılarınızın kolayca anlayıp izleyebileceği basit, ve genel bir politika yaratın. Bu politika verinizi koruduğu gibi, kullanıcılarınızın özel hayatlarını da korumalı. Eklenmesi düşünülebilecek bazı şeyler: Kim sisteme erişime sahip (Arkadaşım hesabımı kullanabilir mi?), kim sistem üzerinde yazılım kurma iznine sahip, veri kime ait, felaketten sonra toparlanma, ve sistemin uygun kullanımı.

Genel olarak kabul edilmiş bir güvenlik politikası

İzin verilmemiş herşey yasaklanmıştır.

ifadesi ile başlar. Bu, herhangi bir servis için bir kullanıcının erişimi onaylanmadığı sürece, o kullanıcı erişim onaylanana kadar o servisi kullanmıyor olmalı anlamına gelir. Politikaların kullanıcı hesapları üzerinde işlediğinden emin olun. Örneğin "Bu erişim hakları probleminin nereden kaynaklandığını bulamıyorum, neyse, root olarak halledeyim" demek, çok bariz güvenlik deliklerine olduğu kadar, henüz hiç keşfedilmemiş olanlarına da yol açabilir.

rfc1244 kendi ağ güvenlik politikanızı nasıl oluşturabileceğinizi açıklayan,

rfc1281 ise her adımı ayrıntılı olarak anlatılmış örnek bir güvenlik politikasını içeren

birer RFC (Request For Comment - Yorum İçin İstek) belgesidir.

Son olarak, gerçek hayatta güvenlik politikaları nasıl oluyor görmek isterseniz, COAST politika arşivine bir göz atmak isteyebilirsiniz: ftp://coast.cs.purdue.edu/pub/doc/policy

Sitenizi Güvenli Hale Getirmenin Yolları

Bu belge, uğrunda çok çalıştığınız değerli şeylerinizi güvenli hale getirebilmeniz için gereken çeşitli yolları tartışacak. Bu değerli şeyler yerel makineniz, veriniz, kullanıcılarınız, ağınız, hatta kendi saygınlığınız olabilir. Kullanıcılarınızın sahip olduğu veriyi bir saldırgan silerse saygınlığınız ne olur? Ya şirketinizin, önündeki üç aylık süredeki proje planlarını yayımlarsa? Bir ağ kurulumu planlıyorsanız, herhangi bir makineyi ağa dahil etmeden önce dikkate almanız gereken bir çok etken vardır.

Tek bir PPP hesabınız dahi olsa, ya da sadece küçük bir siteniz, bu saldırganların sizin sisteminizle ilgilenmeyecekleri anlamına gelmez. Tek hedefler, büyük, büyük ölçekli siteler değildir -- Bir çok saldırgan basitçe, büyüklüğü farketmeden olabildiğince çok sitenin açıklarından yararlanmak ister. Ek olarak, sizin sitenizdeki bir güvenlik deliğini, bağlı olduğunuz diğer sitelere erişim kazanmak amacıyla kullanabilirler.

Saldırganların elinde çok zaman vardır, sisteminizi nasıl anlaşılmaz bir hale getirdiğinizi, ya da ne derece gözden sakladığınızı öğrenmek için tahmin yolunu değil, basitçe tek tek bütün olasılısıkları deneme yolunu seçerler. Bir saldırganın sisteminizle ilgileniyor oluşunun bir takım başka nedenleri de vardır, bunları daha sonra tartışacağız.

Bilgisayar Güvenliği

Belki de sistem yöneticilerinin en çok yoğunlaştığı güvenlik alanlarından biri bilgisayar bazında güvenliktir. Bu, tipik olarak, kendi bilgisayarınızın güvenli olduğundan emin olmanız, ve ağınızdaki bütün herkesin de emin olduğunu ümit etmenizdir. İyi parolaların seçilmesi, bilgisayarınızın yerel ağ servislerinin güvenli hale getirilmesi, hesap kayıtlarının iyi korunması, ve güvenlik açıkları olduğu bilinen yazılımın güncellenmesi, yerel güvenlik yöneticisinin sorumlu olduğu işler arasındadır. Bunu yapmak mutlak şekilde gereklidir, fakat ağınızdaki bilgisayar sayısı arttıkça, gerçekten yıldırıcı bir iş haline dönüşebilir.

Yerel Ağ Güvenliği

Ağ güvenliği, en az bilgisayarların güvenliği kadar gerekli olan bir kavramdır. Aynı ağ üzerindeki yüzlerce, binlerce, hatta daha fazla bilgisayarla, güvenliğinizi her birinin tek tek güvenli oluşu üzerine kuramazsınız. Ağınızı sadece izin verilen kullanıcıların kullandığını garanti altına almak, güvenlik duvarları oluşturmak, güçlü bir şifreleme kullanmak, ve ağınızda "yaramaz" (yani güvensiz) makineler bulunmadığından emin olmak, güvenlik yöneticisinin görevlerinin bir parçasıdır.

Bu belgede sitenizi daha güvenli bir hale getirmek için kullanılan teknikleri tartışacağız, ve bir saldırganın korumaya çalıştıklarınıza erişim sağlamasını engellemek için gereken yollardan bazılarını göstermeye çalışacağız.

Karmaşıklaştırma Yoluyla Güvenlik

Tartışılması gereken güvenlik tiplerinden biri "karmaşıklaştırma yoluyla güvenlik"tir. Bunun anlamı, örneğin, güvenlik açıkları bulunan bir servisin standart olmayan bir porta (kapı) taşınmasıdır, saldırganların bu şekilde servisin nerde olduğunu farketmeyerek bu açıktan yararlanamayacağı umulur. Diğerlerinin ise servisin nerde olduğunu bilmeleri, dolayısıyla yararlanabilmeleri gerekir. Sitenizin küçük, veya göreli olarak daha küçük ölçekli oluşu, saldırganların sahip olduklarınızla ilgilenmeyeceği anlamına gelmez. Önüzümüzdeki bölümlerde tartıştıklarımız arasında neyi korumakta olduğunuz da bulunacak.

Bu Belgenin Düzeni

Bu belge, bir takım bölümlere ayrılmıştır. Bu bölümlerde kapsamı geniş olan güvenlik konuları yer almaktır. İlkin, “Fiziksel Güvenlik”, makinenizi fiziksel bir zarar görmekten nasıl korumanız gerektiğini kapsıyor. İkinci olarak, “Yerel Güvenlik”, sisteminizin yerel kullanıcılar tarafından karıştırılmasının nasıl engelleneceğini açıklıyor. Üçüncüsü, “Dosyalar ve Dosya Sistemi Güvenliği”, dosya sistemlerinizi ve dosyalar üzerindeki erişim haklarının nasıl düzenlenmesi gerektiğini açıklıyor. Sonraki bölüm, “Parola Güvenliği ve Şifreleme”, makinenizi ve ağınızı daha iyi bir şekilde güvenli hale getirmek için şifrelemenin nasıl kullanıldığını tartışıyor. “Çekirdek Güvenliği” bölümünde ise daha güvenli bir sistem için farkında olmanız gereken çekirdek seçenekleri anlatılıyor. “Ağ Güvenliği”, Linux sisteminizi ağ saldırılarına karşı nasıl güvenli hale getirebileceğiniz hakkında bilgi içeriyor. “Güvenlik Hazırlığı (Bağlanmadan Önce)”, makine(leri)nizi, ağa bağlı hale getirmeden önce nasıl hazırlamanız gerektiğini anlatıyor. Sonraki bölüm, “Güvenlik İhlali Sırasında ve Sonrasında Neler Yapılabilir”, sistemizi bozmaya çalışma eylemi o an devam etmekte ise, veya böyle bir eylemin yakın zamanda gerçekleştiğini öğrendiğinizde neler yapabileceğiniz konusunu tartışıyor. “Güvenlikle İlgili Kaynaklar”, bölümünde bazı güvenlik ile ilgili bilgilere erişim sağlanabilecek başlıca kaynaklarının neler olduğu sıralanıyor. “Sıkça Sorulan Sorular”, bölümü sık sık sorulan bazı soruların cevaplarını içeriyor, ve son olarak “Sonuç” bölümü yer alıyor.

Bu belgeyi okurken farkında olunması gereken iki ana konu:

  • Sisteminizde neler olup bittiğinin farkında olun. /var/log/messages gibi sistem kayıtlarınızı düzenli olarak gözden geçirin ve gözünüz daima sisteminizin üzerinde olsun.

  • Sisteminizi güncel tutun, yazılımlarınızın en son sürümlerini kurun, ve kullandığınız yazılımla ilgili güvenlik uyarılarını takip ederek gereken güncellemeleri zamanında yapın. Sadece bunu yapmak bile sisteminizi kayda değer şekilde daha güvenli hale getirecektir.

Fiziksel Güvenlik

Güvenliğin dikkate almanız gereken ilk katmanı bilgisayar sistemlerinizin fiziksel güvenliğidir. Makinenize kimler doğrudan erişim sağlayabiliyor? Sağlamalılar mı? Makinenizi kurcalamalarını engelleyebiliyor musunuz? Engellemeli misiniz?

Sisteminizde ne kadar fiziksel güvenliğe gereksinimiz olduğu, durumunuza ve/veya bütçenize bağlıdır.

Eğer bir ev kullanıcı iseniz, büyük olasılıkla çok fazla gereksiniminiz yoktur (tabii ki makinenizi çocuklardan veya rahatsız edici akrabalarınızdan korumanız gerektiğini düşünebilirsiniz). Eğer bir laboratuvardaysanız, ciddi anlamda daha fazlasına ihtiyacınız vardır, ama kullanıcıların da aynı zamanda işlerini makineler üzerinde yapabilmesi gerekir. İzleyen bölümler bu konuda yardım etmeye çalışacak. Eğer bir ofisteyseniz, makinenizi mesai saatleri dışında, veya makinenizin başında değilken daha güvenli hale getirmeye ihtiyacınız olabilir veya olmayabilir de. Bazı şirketlerde, konsolun güvensiz bir durumda bırakılması işten çıkarılma sebebi olabilir.

Kilitler, (elektrikli) teller, kilitli dolaplar, ve kamerayla izleme gibi apaçık fiziksel güvenlik yöntemlerinin hepsi iyi fikir olmakla birlikte bu belgenin konusu ötesindedir. :)

Bilgisayar Kilitleri

Yeni PC'lerin çoğunda bir "kilitleme" özelliği bulunur. Genellikle bu, kasanın önünde yer alan ve beraberinde gelen anahtar kullanılarak açılıp kapanabilir bir kilittir. Kasa kilitleri PC'nizin çalınmasını, ya da kasanın açılarak donanımınıza doğrudan bir müdahele edilmesini veya parçaların çalınmasını engeller. Bazı durumlarda bilgisayarınızın kapatılıp, disket veya başka donanım ile yeniden açılmasının engellenmesini de sağlayabilirler.

Bu kasa kilitleri, ana karttaki desteğe, ve kasanın nasıl yapıldığına göre değişik şeyler de yapabilir. Bazı PC'lerde bu kilitler öylesine yapılmıştır ki kasayı açmak için kırmanız gerekir. Diğer bazı PC'lerde ise, yeni bir klavye ya da fare takmanıza izin vermezler. Bununla ilgili bilgiyi kasanızın veya ana kartınızın kullanım rehberinde bulabilirsiniz. Kilitler genelde düşük kalitelidir ve uygun bir maymuncukla kolayca açılabilirler, ama buna rağmen bazı durumlarda gerçekten etkili bir koruma yöntemi olabilirler.

Bazı makinelerin (SPARClar ve Mac'ler dikkate değer), arka taraflarında içinden bir telin geçebileceği iki tane delik vardır. İçinden bir tel geçirdiğinizde, saldırganlar kasayı açabilmek için teli kesmek veya kasayı kırmak zorunda kalırlar. Bir asma kilit veya bir şifreli kilit takmak bile makinenizin çalınmasında oldukça caydırıcı olabilir.

BIOS Güvenliği

BIOS, x86 tabanlı donanımızı yönlendiren ve ayarlarını yapan en alt düzeydeki yazılımdır. LILO ve diğer Linux sistem yükleme yöntemleri, Linux makinenizin nasıl açılacağına karar vermek için BIOS'a erişir. Linux'un çalıştığı diğer donanımlarda da benzer bir yazılım bulunur (Mac'lerde OpenFirmware ve yeni Sun'larda Sun boot PROM'u gibi). BIOS'unuzu kullanarak saldırganların bilgisayarınızı kapatıp açmasını, ve Linux sisteminizi yönlendirmesini engelleyebilirsiniz.

Bir çok BIOS bir parola ayarı yapmanıza izin verir. Bu o kadar da çok güvenlik sağlamaz (BIOS sıfırlanabilir, veya kasa açılarak çıkarılabilir), ama iyi bir caydırıcı etken olabilir (yani zaman alacak ve kurcalamanın izleri kalacaktır). Benzer şekilde, s/Linux (SPARC(tm) işlemcili makineler için Linux) sisteminizde, açılış parolası için EEPROM'unuzu kullanabilirsiniz. Bu saldırganları yavaşlatacaktır.

BIOS parolalarına güvenmenin diğer bir riski varsayılan parola sorunudur. Çoğu BIOS üreticisi, insanların parolalarını unuttuklarında bilgisayarlarını açıp pilleri çıkarmasını beklemediği için, BIOS'lara, seçilen paroladan bağımsız bir parola koymuştur. Bu parolalardan yaygın olarak kullanılanlar:

j262 AWARD_SW AWARD_PW lkwpeter Biostar AMI Award bios BIOS setup cmos AMI!SW1 AMI?SW1 password hewittrand shift + s y x z

Ben Award BIOS için olan AWARD_PW parolasını denedim ve çalıştı. Bu parolalar üreticilerin WWW sayfalarından ve http://astalavista.box.sk adresinden kolaylıkla ulaşılabilir durumdadır ve böyle olduğu için de BIOS parolasının yeterince bilgili bir saldırgana karşı yeterli bir koruma olduğu düşünülemez.

Çoğu x86 BIOS'u, diğer bazı güvenlik ayarlarına sahiptir. BIOS kitapçığınıza bakabilir, veya bir sonraki açılışta BIOS'a girerek ne tür ayarlar olduğunu gözden geçirebilirsiniz. Örneğin, bazı BIOS'lar disket sürücülerden sistem yüklenmesine izin vermez, bazıları da BIOS'un bazı özelliklerinin kullanılması için bir parola gerektirir.

Not: Makineniz sunucu görevi yapıyorsa, ve bir açılış parolası koyduysanız, makineniz başında kimse olmadığı zaman açılmayacaktır. Örneğin bir elektrik kesilmesi durumunda makinenin açılması için başına giderek parolayı girmeniz gerekecek ;(

Sistem Yükleyici Güvenliği

Çeşitli Linux sistem yükleyicileri de bir parola belirlenmesine izin verebilir. Örneğin, LILO'da password ve restricted ayarları vardır, password açılış (sistem yükleme) sırasında bir parola ister,restricted ise sadece LILO satırında bir seçenek (single gibi) belirtirseniz parola ister.

>lilo.conf'un man (yardım) sayfasından:

password=password
    Her imge (çekirdek imgesi) için ayarlanabilir olan 
    `password=...' seçeneği (aşağıya bakın) bütün imgeler
    için geçerlidir.

restricted
    Her imge (çekirdek imgesi) için ayarlanabilir olan 
    `restricted' seçeneği (aşağıya bakın) bütün imgeler 
    için geçerlidir.

  password=password
    İmgeyi bir parola ile korur.

  restricted
    Sadece komut satırında seçenekler belirtilirse 
    (örneğin single) bir parola girilmesini gerektirir.
      

Parolaları belirlerken bir gün onları hatırlamanız gerekeceğini aklınızdan çıkarmayın :). Ayrıca bu parolaların kararlı bir saldırganı sadece yavaşlatacağını da unutmayın. Parolalar birinin sistemi disketle açıp sabit disk bölümünüzü bağlamasını engellemez. Eğer açılış bağlamında bir güvenlik uyguluyorsanız, o zaman BIOS'tan disketten açılışı da engelleyip, BIOS'u da bir parola ile koruyabilirsiniz.

Aklınızdan çıkarmamanız gereken bir diğer konu da /etc/lilo.conf dosyasının erişim izinlerinin "600" olması gerektiğidir. Aksi takdirde diğerleri parolanızı okuyabilir!

GRUB bilgi sayfasından: GRUB, sadece yöneticilerin etkileşimli işlemleri başlatabilmesi (örneğin menü girişlerini düzenlemek ve komut-satırı arayüzüne girebilmek) için "password" özelliği sunmaktadır. Bu özelliği kullanmak için, yapılandırma dosyanızda 'password' komutunu aşağıdaki gibi çalıştırmalısınız (*note password::)

password --md5 PASSWORD

Eğer bu belirtilirse, <p> tuşuna basıp doğru parolayı girene dek GRUB tüm etkileşimli denetimlere izni kısıtlar. '--md5' seçeneği GRUB'a 'PASSWORD'ün MD5 formatında olduğunu söyler. Eğer girilmezse, GRUB 'PASSWORD'ün açık metin olduğunu varsayar.

Parolanızı 'md5crypt' komutu ile şifreleyebilirsiniz.(*note md5crypt::). Örneğin, grub kabuğunu başlatın (*note Invoking the grub shell::), parolanızı girin:

grub> md5crypt Password: ********** Encrypted: $1$U$JK7xFegdxWH6VuppCUSIb.

Sonra da şifrelenmiş parolayı kopyalayıp yapılandırma dosyanızın içine yapıştırın.

Grub'da aynı zamanda doğru parolayı girmediğinizde disk bölümünü kitlemeye olanak sağlayan 'lock' komutu da vardır. Basitçe 'lock' sözcüğünü ekleyin ve disk bölümünü parola sağlanmadan erişilemez olacaktır.

Eğer farklı bir sistem yükleyici hakkında herhangi biri güvenlikle ilgili bilgiye sahipse duymaktan memnun oluruz ( grub, silo, milo, linload, vb).

Not: Makineniz sunucu görevi yapıyorsa, ve bir açılış parolası koyduysanız, makineniz başında kimse olmadığı zaman açılmayacaktır. Örneğin bir elektrik kesilmesi durumunda makinenin açılması için başına giderek parolayı girmeniz gerekecek ;(

xlock and vlock

Eğer zaman zaman makinenizin başından uzaklaşıyorsanız, konsolu "kilitleyebilmek", böylece hiçkimsenin çalışmanızı kurcalayamamasını, veya bakamamasını sağlamak hoş olur. İki program bu iş için var: xlock ve vlock.

xlock bir X görüntü kilidi. X'i destekleyen tüm Linux dağıtımlarında muhtemelen bulunuyordur. Tüm seçenekler hakkında bilgi almak için man (yardım) sayfasına bir göz atmanız gerekebilir, ama genellikle xlock'u konsolunuzdaki herhangi bir xterm'den çalıştırabilirsiniz. xlock bir kere çalıştı mı görüntüyü kitler ve kilidin kalkması için parolanızı girmenizi gerektirir.

vlock Linux'unuzdaki bazı veya tüm sanal konsolları kilitleyebilmenizi sağlayan küçük bir programdır. O anda çalışmakta olduğunuz konsolu ya da tüm konsolları kilitleyebilirsiniz. Eğer sadece bir tanesini kilitlerseniz, diğerleri geldiğinde konsolu kullanabilir, fakat o an çalışmakta olduğunuz (ve kilitlediğiniz) konsola erişim sağlayamazlar. vlock RedHat Linux ile birlikte geliyor, fakat kullandığınız dağıtıma göre değişiklik gösterebilir.

Elbette konsolu kilitlemek, çalışmanızı kurcalamak isteyen birini engeller, fakat makinenizi yeniden başlatmalarını veya bir şekilde çalışmanızı bozmalarını engellemez. Ayrıca makinenize ağdaki başka bir makinenin erişimini ve yol açacağı problemlere de engel olamaz.

Daha önemlisi, birinin X Windows sisteminden tamamen çıkıp, normal bir sanal konsol giriş satırına ulaşmasını, ya da X11'in başlatıldığı sanal konsola gidip askıya almasını ve haklarınıza sahip olmasını da engelleyemez. Bu sebeple, X'i sadece xdm kontrolü altında kullanmayı düşünmeli, veya startx kullanıyorsanız bilgisayarın başından ayrıldığınızda kimsenin bilgisayara ulaşmadığından emin olmalısınız.[4]

Yerel cihazların güvenliği

Sisteminize eklenmiş bir webcam veya mikrofon varsa, bir saldırganın bu cihazlara erişim sağlaması tehlikesini göz önünde bulundurmalısınız. Kullanımda değilken bu tür cihazların kasadan ayırmak veya fişlerini çekmek bir seçenek olabilir. Bu tür cihazlara erişim sağlayan yazılımı da (kullanımı kitapçıklarını/belgelerini okuyarak) çok iyi tanımalısınız.

Fiziksel Güvenlik İhlallerini Belirleme

Dikkat edilmesi gereken ilk nokta bilgisayarınızın ne zaman yeniden başlatıldığıdır. Linux sağlam ve kararlı bir işletim sistemi olduğu için, makinenizi yeniden başlatmanızın gerektirdiği nadir durumlar, sizin gerçekleştirdiğiniz işletim sistemi güncellemeleri, veya donanım değişikliği gibi durumlardır. Eğer makineniz böyle bir şey yapmadığınız halde kapanıp açılmışsa, bu, makinenizin güvenliğinin bir saldırgan tarafından bozulduğunun bir işareti olabilir.

Bilgisayarın bulunduğu alanda ve kasada kurcalama işaretleri arayın. Bir çok saldırgan varlıklarının izlerini günlüklerden siler, bütün günlükleri incelemek ve herhangi bir uygunsuzluk olup olmadığını gözden geçirmek, iyi bir fikirdir.

İyi bir fikir olan bir başka şey de, günlük verisini güvenli bir yerde saklamaktır, örneğin, iyi korunmuş bir ağınızdaki bu işe adanmış bir günlük sunucusunda. Makinenin güvenliği bir kere bozuldu mu, günlük verisi çok az yarar sağlar, çünkü saldırgan tarafından değiştirilmiş olması muhtemeldir.

Syslog sunucu programı (daemon), günlükleri merkezi bir syslog sunucusuna göndermek üzere yapılandırılabilir, ama bu bilgi çoğunlukla şifresiz gönderilir, bu da veri aktarılırken bir saldırgan tarafından görülmesine izin vermek anlamına gelir. Bu, ağınız ve herkese açık olmasını düşünmediğiniz konular hakkındaki bilgilerin ortaya çıkmasına yol açabilir. Gönderilen veriyi şifreleyen syslog sunucu programları da vardır.

Farkında olmanız gereken bir diğer durum, sahte syslog mesajları hazırlamanın kolay olduğudur - bunun için yayımlanan bir program vardır. Hatta syslog, ağdan gelen ve gerçek kökenini göstermeden yerel bilgisayardan geldiğini iddia eden günlük satırlarını bile kabul eder.

Günlüklerinizde denetim altında tutmanız gereken bazı şeyler:

  • Kısa veya tamamlanmamış günlükler.

  • Tarih ve zamanları garip olan günlükler.

  • Yanlış erişim hakları veya sahiplikleri olan günlükler.

  • Bilgisayarın veya servislerin yeniden başlatılma kaytları.

  • Kayıp günlükler.

  • su kullanımı kayıtları veya sisteme garip yerlerden yapılan girişler

Sistem günlük verisini, bu belgede daha sonra “Sistem Hesap Verilerinizi Takip Edin” bölümünde tartışacağız.

Yerel Güvenlik

Şöyle bir göz atılması gereken sonraki konu, yerel kullanıcılardan gelen saldırılara karşı sistem güvenliğiniz konusu. Kullanıcıların yerel olduğunu söyledik mi? Evet!

Sistem saldırganlarının root hesabına giden yollarındaki ilk şeylerden bir tanesi yerel bir kullanıcı hesabına erişim elde etmektir. Bu saldırganlar, gevşek bir yerel güvenlik ile, kötü ayarlı bir yerel servis veya çeşitli "böceklerden" [5] yararlanarak, normal kullanıcı erişimlerini root erişimine "terfi ettirir". Eğer yerel güvenliğinizin sıkı olduğundan emin olursanız, saldırganın üzerinden atlaması gereken başka bir çit daha oluşturmuş olursunuz.

Yerel kullanıcılar, gerçekten söyledikleri kişi oldukları durumda bile sistem üzerinde fazlaca kargaşa yaratabilir. [6] Tanımadığınız insanlara, veya iletişim bilgilerine sahip olmadığınız birine hesap açmak, gerçekten çok kötü bir fikirdir.

Yeni Hesap Açma

Kullanıcı hesaplarının, kullanıcıların yapması zorunlu işler için asgari gereklerini karşılayacak şekilde açıldığından emin olmalısınız. Eğer (10 yaşındaki) oğlunuza bir hesap açarsanız, erişiminin bir kelime işlemci ya da çizim programıyla sınırlı olmasını, ve kendisinin olmayan veriyi silme yetkisinin olmamasını isteyebilirsiniz.

Diğer kullanıcıların Linux makinenize meşru bir erişim sağlamasına izin verirken esas olarak alınabilecek bazı kurallar:

  • Onlara, gereksinim duydukları en az yetkiyi verin.

  • Ne zaman ve nereden sisteme giriş yaptıklarına, ya da yapmaları gerektiğine dikkat edin.

  • Kullanılmayan hesapların kapandığından emin olun.

  • Bütün bilgisayar ve ağlarda aynı kullanıcı isminin kullanılması, hesabın bakımını kolaylaştırması, ve günlük verisinin daha kolay çözümlenmesi açısından tavsiye edilir.

  • Grup kullanıcı kimliklerinin yaratılması mutlak surette yasaklanmalıdır. Kullanıcı hesapları sorumluluk mekanizması da sağlar, ve bu birden fazla kişinin kullandığı grup hesaplarıyla mümkün değildir.

Güvenlik ihlallerinde kullanılan bir çok yerel kullanıcı hesabı, aylardır hata yıllardır kullanılmayanlardır. Kimse onları kullanmadığı için, ideal bir saldırı aracıdırlar.

Root Güvenliği

Makinenizdeki, peşinden en fazla koşulan hesap root (üstün kullanıcı) hesabıdır. Bu hesap bütün makine üzerinde yetki sağlamasının yanı sıra, ağdaki diğer makineler üzerinde de yetki sağlıyor durumda olması mümkündür. Unutmayın ki root hesabını, sadece özel işler için ve çok kısa süreliğine kullanmalısınız, geri kalan zamanlarda normal kullanıcı olarak işlerinizi yürütmelisiniz. Root kullanıcısı olarak sisteme giriş yaptığınızda, yaptığınız küçük hatalar dahi sorunlara yol açabilir. Root hesabıyla ne kadar az zaman harcarsanız, o kadar güvende olursunuz.

Diğer kullanıcıların Linux makinenize meşru bir erişim sağlamasına izin verirken esas olarak alınabilecek bazı kurallar:

  • Karmaşık bir komut kullanırken, komutu ilk önce yıkıcı olmayan başka bir şekilde kullanmayı deneyin... Özellikle komutun geniş çaplı kullanımında... Örneğin rm foo*.bak, yapmak istiyorsanız, önce ls foo*.bak komutunu kullanarak, silmek üzere olduğunuz dosyaların, silmeyi düşündüğünüz dosyalar olduğundan emin olun. Bu tür tehlikeli komutların kullanımında, komutlar yerine echo kullanmak da zaman zaman işe yarayabilir.

  • Kullanıcılarınıza, rm komutunun, dosyaları silmeden önce onay almasını sağlayacak, varsayılan bir takma ismini oluşturun. [7]

  • Sadece belirli, tek bir işi yapmanız gerektiği zamanlarda root olun. Eğer kendinizi bir şeyin nasıl yapıldığını tahmin etmeye çalışırken bulursanız, normal kullanıcı hesabınıza geri dönüp, root tarafından neyin yapılacağından emin olmadan önce root kullanıcısına dönmeyin.

  • Root için komut yolu tanımı çok önemli. Komut yolu (yani PATH evre değişkeni), girdiğiniz herhangi bir komut ya da programın hangi dizinlerde aranacağını belirtir. Root kullanıcısı için komut yolunu olabildiğince sınırlandırmaya çalışın, ve asla . dizinini eklemeyin ("geçerli dizin" anlamına gelir [8]. Ek olarak, komut yolunuzda, yazılabilen dizinler bulundurmayın, çünkü bu saldırganların bu dizinler içine, bir sonraki sefer kullandığınızda root erişim izniyle çalışacak olan yeni çalıştırılabilir dosyalar koyabilmesi anlamına gelir.

  • Asla rlogin/rsh/rexec araçlarını (r-araçları olarak adlandırılırlar) root olarak kullanmayın. Çünkü bunlar, çok çeşitli saldırılara açık komutlardır, dolayısıyla root olarak çalıştırıldıklarında çok daha tehlikeli hale gelirler. Asla root için .rhosts dosyası oluşturmayın. [9]

  • /etc/securettydosyası, root olarak giriş yapılabilecek terminalleri belirtir. Bu dosyanın varsayılan ayarları (Red Hat Linux'ta) yerel sanal konsollardır. Bu dosyaya herhangi bir şey eklerken çok tedbirli olun. Root olmanız gerektiğinde uzaktan normal bir kullanıcı hesabına (ssh (Güvenli Kabuk) ve stelnet veya diğer şifrelenmiş bir yolla) giriş yapıp su komutuyla root olabilirsiniz. Dolayısıyla doğrudan root olarak giriş yapabilmeye gereksiniminiz yoktur.

  • Root'u kullanırken daima yavaş ve temkinli davranın. Davranışlarınız bir çok şeyi etkileyebilir. Tuşlara dokunmadan önce düşünün!

Eğer birine (umarız güvenilir biridir), mutlak surette root hesabını kullanması için izin vermeniz gerekiyorsa, yardımcı olabilecek bir kaç araç var. sudo, kullanıcıların, parolalarını kullanarak sınırlı sayıda komutu root olarak çalıştırmalarına izin verir. Bu, örneğin, bir kullanıcının, ayrılabilir medyanın bağlanması veya çıkarılması işini, diğer root yetkilerini kullanamadan yapabilmesi anlamına gelebilir. sudo aynı zamanda, başarılı ve başarısız sudo denemelerinin bir günlüğünü tutar, bu şekilde kimin ne yapmak için bu komutu kullandığını izlemeniz mümkün hale gelir. Bu sebeple sudo, birden fazla kişinin root erişimi olduğu yerlerde bile iyi bir iş yapar, çünkü değişikliklerin takip edilmesinde yardım etmiş olur.

sudo belirli kullanıcılara belirli yetkiler vermekte yararlı olmasına rağmen, bazı eksiklikleri vardır. Sadece sınırlı bir takım işlerde kullanılmak zorundadır, örneğin bir sunucuyu yeniden başlatmak, veya yeni kullanıcılar eklemek gibi. sudo ile çalıştırılan, ve kabuğa çıkmaya izin veren her program, sisteme root erişimi sağlamış olur. Buna örnek olarak bir çok metin düzenleyici gösterilebilir. Ayrıca,/bin/cat kadar zararsız bir program bile, dosyaların üzerine yazmakta, ve root erişimi sağlamakta kullanılabilir. sudo programını, yapılan işten kimin sorumlu olduğunun izlenilmesi için kullanılan bir programmış gibi düşünün, ve hem root kullanıcısının yerine geçmesini hem de güvenli olmasını beklemeyin.

Dosyalar ve Dosya Sistemi Güvenliği

Sistemlerinizi ağa bağlamadan önce yapılacak bir kaç dakikalık hazırlık ve planlama, sistemlerinizin ve üzerlerinde saklanan verinin korunmasında yardımcı olabilir.

  • Kullanıcıların, SUID/SGID programları ev dizinlerinden çalıştırmalarına izin vermek için herhangi bir sebep olmamalıdır. /etc/fstab dosyasında, root'tan başkalarının da yazma izninin olduğu disk bölümleri için nosuid seçeneğini kullanın. Ayrıca, kullanıcıların ev dizinlerinin bulunduğu bölümlerde, ve /var dizininde, program çalıştırılmasını ve karakter veya blok cihazların oluşturulmasını engellemek için (ne de olsa hiçbir zaman böyle bir şey gerekmeyecektir) nodev ve noexec seçeneklerini kullanabilirsiniz.

  • NFS kullanarak dosya sistemlerini dışarı açıyorsanız, /etc/exports dosyasında en fazla sınırlandırma sağlayan seçenekleri kullandığınızdan emin olun. Bu, genel karakter kullanılmaması, root kullanıcısına yazma izninin verilmemesi, ve mümkün olduğu yerlerde salt-okunur şekilde dışa açılması anlamına geliyor.

  • Kullanıclarınızın dosya yaratma umask'ini mümkün olduğu kadar sınırlı tutun. Bkz. “Umask Ayarları”.

  • Eğer, NFS gibi bir ağ dosya sistemini kullanarak dosya sistemlerini bağlıyorsanız, /etc/exports dosyasında uygun sınırlama ayarlarını yaptığınızdan emin olun. Tipik olarak, nodev, nosuid, ve belki de noexec gerekli olanlardır.

  • Dosya sistemlerinin sınırları belirleyin, varsayılan unlimited [10] ayarına izin vermeyin. Kullanıcı bazındaki sınırları, kaynak-limitleri PAM modülünü kullanarak, ve /etc/pam.d/limits.confdosyasındaki ayarlar aracılığı ile yapabilirsiniz. Örneğin, users grubu için sınırlar şu şekilde olabilir:

      @users     hard  core    0
      @users     hard  nproc   50
      @users     hard  rss     5000
    

    Burda söylenen, core dosyalarının yasaklanması, işlem sayısının 50 ile sınırlanması, ve bellek kullanımının 5M ile sınırlandırılmasıdır.

    Aynı sınırlamaları, /etc/login.defs dosyasında da belirtebilirsiniz.

  • The /var/log/wtmp ve /var/run/utmp osyaları sisteminizdeki tüm kullanıcıların sisteme giriş bilgilerini içerir. Bu dosyaların bütünlükleri korunmalıdır, çünkü bir kullanıcının (ya da bir saldırganın) ne zaman ve nereden giriş yaptığını belirlemede kullanılabilirler. Bu dosyaların erişim izinleri, olağan işlevlerini gerçekleştirmelerine engel olmayan 644 olmalıdır.

  • Korunması gereken bir dosyanın kazara silinmesi veya üzerine yazılmasını önlemek için değişmez biti kullanılabilir. Bu ayrıca, dosyaya bir simgesel bağ oluşturulmasını da engelleyecektir. Değişmez biti ile ilgili daha fazla bilgi için chattr(1) man sayfasına bakın.

  • Sisteminizdeki SUID ve SGID dosyaları, potansiyel bir güvenlik riski oluşturur ve yakından izlenmelidir. Bu programlar, onları çalıştıran kullanıcıya özel yetkiler verdiği için, güvensiz programların kurulu olmadığından emin olmak gereklidir. Korsanların gözde bir numarası da SUID-root programlarından yararlanarak, bir sonraki girişlerinde arkakapı olarak kullanmak üzere bir SUID programı yerleştirmektir. Bu şekilde asıl delik kapatılsa bile yeni arkakapı sayesinde sisteme giriş yapabilirler.

    Sisteminizdeki bütün SUID/SGID programları bularak ne olduklarını izleyin. Böylelikle, bir değişiklik olduğunda, ki bu değişiklikler potansiyel bir saldırganın göstergesi olabilir, haberiniz olmuş olur. Sisteminizdeki bütün SUID/SGID programları bulmak için aşağıdaki komutu kullanabilirsiniz:

                    root#  find / -type f \( -perm -04000 -o -perm -02000 \)
    

    Debian dağıtımı, hangi SUID programlarının bulunduğunu belirlemek için her gece bir iş çalıştırır. Daha sonra bunu bir önceki gece ile karşılaştırır. Bu günlük için /var/log/setuid* dosyalarına bakabilirsiniz.

    Şüpheli bir programdaki SUID ve SGID erişim izinlerini chmod ile kaldırabilir, daha sonra mutlak şekilde gerektiğini hissederseniz tekrar yerine koyabilirsiniz.

  • Herkes tarafından yazılabilir dosyalar, özellikle sistem dosyaları, bir korsan sisteminize erişir ve üzerlerinde değişiklik yaparsa bir güvenlik deliği haline gelebilir. Ayrıca herkes tarafından yazılabilir dizinler de tehlikelidir, çünkü bir korsanın istediği gibi dosya ekleme ve silmesine izin verir. Sisteminizdeki herkes tarafından yazılabilen dosyaları bulmak için, aşağıdaki komutu kullanın:

      root# find / -perm -2 ! -type l -ls
    

    ve bu dosyaların neden yazılabilir olduklarını bildiğinizden emin olun. Normal işlevler sırasında, herkes tarafından yazılabilir bir takım dosyalar bulunur, bunlar arasında /dev dizinindekiler ve simgesel bağlar da vardır. Bu nedenle yukarıdaki find komutunda simgesel bağları dışarıda bırakan ! -type l seçeneğini kullandık.

  • Sahipsiz dosyalar da bir saldırganın sisteminize eriştiğinin bir göstergesi olabilir. Sahibi olmayan veya hiçbir gruba ait olmayan dosyaları aşağıdaki komut ile bulabilirsiniz:

      root# find / \( -nouser -o -nogroup \) -print
    

  • .rhosts dosyalarına sisteminiz üzerinde izin vermemelisiniz, dolayısıyla sistem üzerindeki bu dosyaların bulunması düzenli yönetim görevlerinizin bir parçası olmalı. Unutmayın, bir korsan bütün ağınıza erişebilmek için sadece bir güvensiz hesaba gereksinim duyar. Aşağıdaki komutla sistem üzerindeki tüm .rhosts dosyalarını bulabilirsiniz:

                   root# find /home -name .rhosts -print
    

  • Son olarak, herhangi bir sistem dosyası üzerindeki erişim izinlerini değiştirmeden önce, ne yaptığınızı anladığınızdan emin olun. Sadece bazı işlerin daha kolay olduğunu düşündüğünüz için bir dosyanın erişim izinlerini değiştirmeyin. Daima değiştirmeden önce neden o dosyanın o izinlere sahip olduğunu belirleyin.

Umask Ayarları

The umask komutu, sistem üzerinde varsayılan dosya yaratma kipini belirlemek amacıyla kullanılabilir. İstenen dosya kipinin sekizli sayı düzeninde tümleyicisidir. Eğer dosyalar, erişim ayarlarına bakmaksızın oluşturulursasa, kullanıcı dikkatsizce, okuma veya yazma izni olmaması gereken birine bu izinleri verebilir. Tipik umask ayarları, 022, 027, ve 077 (en fazla sınırlama budur) ayarlarıdır. Normal olarak, umask /etc/profile dosyasında belirlenir, dolayısıyla bütün kullanıcılar için geçerlidir. Ortaya çıkan izin şu şekilde hesaplanabilir: kullanıcı/grup/diğerleri için olan varsayılan izin (dizinler için 7, dosyalar için 6), umask'in mantıksal DEĞİLi ile bit bazında VE mantıksal işlemine sokulur.[11]

Örnek 1:

dosya, varsayılan 6, ikili : 110 umask, (örn. 2): 010, DEĞİL: 101

ortaya çıkan izin, VE: 100 (eşittir 4, r__)

Örnek 2:

dosya, varsayılan 6, ikili : 110 umask, (örn. 6): 110, DEĞİL: 001

ortaya çıkan izin, AND: 000 (eşittir 0, ___)

Örnek 3:

dizin, varsayılan 7, ikili : 111 umask, (örn. 2): 010, DEĞİL: 101

ortaya çıkan izin, VE: 101 (eşittir 5, r_x)

Örnek 4:

dizin, varsayılan 7, ikili : 111 umask, (örn. 6): 110, DEĞİL: 001

ortaya çıkan izin, VE: 001 (eşittir 1, __x)

  # Set the user's default umask
  umask 033

root kullanıcısının umask'ini 077 yaptığınızdan emin olun. Böylelikle root tarafından oluşturulan dosyaların/dizinlerin varsayılan olarak diğer kullanıcılara okuma, yazma ve çalıştırma izinleri, chmod komutuyla değiştirilmedikleri sürece kapalı olacaktır. which will disable read, write, and execute permission for other users, unless explicitly changed using chmod . Yukarıdaki örnekte, yeni oluşturulan dizinlerin izinleri, 777 - 033 = 744 olacaktır. Yeni oluşturulan dosyaların ise bu maske ile erişim izinleri 644 olur.

Eğer Red Hat kullanıyorsanız, ve onların kullanıcı ve grup ID oluşturma düzenlerine bağlı kalıyorsanız, umask için gereken sadece 002 değeridir. Bunun sebebi, Red Hat'te varsayılan ayarın her kullanıcı için ayrı bir grup olmasıdır. [12]

Dosya İzinleri

Sistem dosyalarınızın, kullanıcılar tarafından, ve sistem dosyalarının bakımından sorumlu olmayan kişiler tarafından açılmadığını garanti altına almak önemlidir.

Unix, dosya ve dizinlerdeki erişim denetiminde üç ayrı özelliğe göre sağlar: sahip, grup, ve diğer. Bir dosyanın her zaman bir sahibi ve grubu vardır, geriye kalan herkes "diğer" özelliğine sahiptir.

Unix izinlerini kısaca açıklayacak olursak:

Sahiplik - Hangi kullanıcı(lar) ve grup(lar), dosyanın (veya dizin/üst dizinin) izin haklarını denetim altında tutuyor?

İzinler - Kimi erişim tiplerine müsade etmek için 1 veya 0 olabilen bitler. Dosyaların izinleri, dizinlerinkinden farklı anlamlar taşır.

Okuma:

  • Dosyanın içeriğini görebilme

  • Dizini okuyabilme. [13]

Yazma:

  • Bir dosya üzerinde değişiklik veya ekleme yapabilme

  • Bir dizindeki dosyaları silebilme veya taşıyabilme

Çalıştırma:

  • İkili yapıdaki bir programı veya kabuk betiğini çalıştırma [14]

  • Bir dizinde arama yapabilme, okuma izinleri ile birlikte [15]

Metin Sakla Niteliği: (Dizinler için)

"Yapışkan bit" dizinlere ve dosyalara uygulandığında farklı anlamlar taşır. Eğer bir dizinin yapışkan biti 1 ise, bir kullanıcı o dizinde yeni bir dosya oluşturabilir, fakat dizindeki diğer dosyaları, kendine ait olmadığı veya açık bir şekilde izin verilmediği sürece silemez. Bu bit, /tmp gibi herkesin yazabileceği, ama diğer hiçbir kullanıcının başkalarının dosyalarını silmemesinin sağlanması gereken dizinler için tasarlanmıştır. Uzun dizin listesinde yapışkan bit t olarak görünür. [16]

SUID Niteliği: (Dosyalar için)

Bu, dosyanın "kullanıcı-kimliği-belirle" izinleriyle ilgilidir. Eğer sahip izinleri bölümünde bu bit 1 ise, ve dosya çalıştırılabilir bir dosya ise, çalışan süreçler sistem kaynaklarına, işlemi başlatan kişinin değil, dosya sahibinin kimliğinde erişim sağlar. Bu, bir çok "tampon taşması" açıklarının da sebebidir. [17]

SGID Niteliği: (Dosyalar için)

Bu bit grup izinlerinde 1 ise, dosyanın "grup-kimliği-belirle" durumunu denetler. Bu kullanıcı-kimliği-belirle biti ile aynı şekilde çalışır, fakat bu kez grup kimliği etkilenir. Bu bitin etkili olabilmesi için dosyanın çalıştırılabilir olması şarttır.[18]

SGID Niteliği: (Dizinler için)

Eğer bir dizinin bu bitini 1 yaparsanız (chmod g+s dizin ile), bu dizinde yaratılan dosyaların grupları, bu dizinin grubu ile aynı olacaktır.

Siz - Dosyanın sahibi

Grup - Ait olduğunuz grup

Herkes - Sizin ve grubunuzun diğer üyelerinin dışında kalan herkes.

Dosya Örneği:

        -rw-r--r--  1 kevin  users         114 Aug 28  1997 .zlogin
        1. bit - dizin mi?                        (hayır)
         2. bit - sahibi okuyabilir mu?             (evet, kevin tarafından)
          3. bit - sahibi yazabiliyor mu?            (evet, kevin tarafından)
           4. bit - sahibi çalıştırabiliyor mu?       (hayır)
            5. bit - grup üyeleri okuyabilir mu?       (evet, users tarafından)
             6. bit - grup üyeleri yazabiliyor mu?      (hayır)
              7. bit - grup üyeleri çalıştırabiliyor mu? (hayır)
               8. bit - herkes okuyabiliyor mu?           (evet)
                9. bit - herkes yazabiliyor mu?            (hayır)
                 10. bit - herkes çalıştırabiliyor mu?      (hayır)

Aşağıdaki satırlar, dosyalar için açıklanan erişim izinlerinin uygulanabilmesi için verilmesi gereken en az izinlerin örnekleridir. Herhangi birine burdakilerden daha fazla izin vermek isteyebilirsiniz, fakat bunların en azları açıklanmaktadır:

-r-------- Dosya sahibinin dosyayı okumasına izin verir.
--w------- Dosya sahibinin dosyayı değiştirmesine veya silmesine izin verir.
           (Dosyanın içinde bulunduğu dizine yazma hakkı olan herkes, dosyanın
           üzerine yazabilir, dolayısıyla dosyayı silebilir)
---x------ Dosyanın sahibi programları çalıştırabilir. Kabuk betiklerini
           çalıştıramaz, çünkü onlar için de okuma izni olmalıdır.
---s------ Etkin kullanıcı kimliğini dosya sahibinin kullacı kimliği haline getirir.
--------s- Etkin grup kimliğini dosyanın grup kimliği haline getirir.
-rw------T "Son değiştirilme zamanı" güncellenmez. Genelde takas dosyaları için 
           kullanılır.
---t------ Etkisi yoktur. (Önceleri yapışkan bit olarak kullanılırdı)

Dizin Örneği:

        drwxr-xr-x  3 kevin  users         512 Sep 19 13:47 .public_html/
        1. bit - dizin mi?               (evet, bir çok dosyaya sahip)
         2. bit - sahibi okuyabilir mu?             (evet, kevin tarafından)
          3. bit - sahibi yazabiliyor mu?            (evet, kevin tarafından)
           4. bit - sahibi çalıştırabiliyor mu?       (evet, kevin tarafından)
            5. bit - grup üyeleri okuyabilir mu?       (evet, users tarafından)
             6. bit - grup üyeleri yazabiliyor mu?      (hayır)
              7. bit - grup üyeleri çalıştırabiliyor mu? (evet, users tarafından)
               8. bit - herkes okuyabiliyor mu?           (evet)
                9. bit - herkes yazabiliyor mu?            (hayır)
                 10. bit - herkes çalıştırabiliyor mu?      (evet)

Aşağıdaki satırlar, dosyalar için açıklanan erişim izinlerinin uygulanabilmesi için verilmesi gereken en az izinlerin örnekleridir. Herhangi birine burdakilerden daha fazla izin vermek isteyebilirsiniz, fakat bunların en azları açıklanmaktadır:

dr-------- Dizin içeriği listelenebilir, fakat dosya nitelikleri okunamaz.
d--x------ Dizine girilebilir, ve tam çalıştırma yollarında kullanılabilir [19]
dr-x------ Dosya nitelikleri sahip tarafından okunabilir.
d-wx------ Dosyalar, dizinin içine girilmeksizin yaratılabilir/silinebilir.
d------x-t Dosyaların yazma hakkı olan diğerlerince silinmesini engeller. /tmp 
           dizininde kullanılır.
d---s--s-- Bir etkisi yoktur.

Sistem yapılandırma dosyaları (genelde /etc içinde) , genelde 640kipindedir (-rw-r-----), ve sahipleri root'tur. Sitenizin güvenlik gereksinimlerine bağlı olarak, bunun üzerinde değişiklik yapmak isteyebilirsiniz. Asla herhangi bir sistem dosyasını grup veya herkes tarafından yazılabilir durumda bırakmayın. Bazı yapılanış dosyaları, /etc/shadow da buna dahildir, sadece root tarafından okunabilir durumda olmalı. /etc içindeki bazı dizinler de en azından diğer kullanıcılar tarafından erişilemez olmalı.

SUID Kabuk Betikleri

SUID kabuk betikleri, ciddi bir güvenlik riskidir, ve bu sebeple çekirdek tarafından hoş karşılanmazlar. Bir kabuk betiğinin ne kadar güvenli olduğunu düşünürseniz düşünün, bir korsan ondan yararlanarak bir root kabuğuna erişebilir.

Bütünlük Denetimi

Yerel (ve ağ) saldırılarını ortaya çıkarmanın çok iyi bir yolu da bir bütünlük denetleyici, örneğin Tripwire, Aide veya Osiris. gibi bir program çalıştırmaktır. Bu bütünlük denetleyiciler, bütün önemli ikili dosyalarınızın üzerinde bir sağlama toplamı hesaplar, ve dosyalar iyi durumda olduklarındaki toplamlarla karşılaştırır. Sonuç olarak, dosyalardaki değişiklikler farkedilebilir.

Bu tür programları bir diskete kurmak, ve disketin yazma korumasını kapatmak iyi bir fikirdir. Bu yolla saldırganlar bütünlük denetleyicisinin kendisini veya veritabanını kurcalayamazlar. Bir kere bunun gibi bir düzeneğiniz olduktan sonra, bu düzeneği normal yönetim görevleriniz arasında kullanmak, ve değişen bir şeyler olup olmadığını görmek de iyi bir fikirdir.

Hatta, crontab 'a denetleyicinizin her gece disketten çalışması için bir girdi ekleyebilir, ve sabaha sonuçlarını gözden geçirebilirsiniz. Aşağıdaki gibi bir şey size her sabah 5:15'te bir raporu mektup olarak yollar:

  # set mailto
  MAILTO=kevin
  # run Tripwire
  15 05 * * * root /usr/local/adm/tcheck/tripwire 

Bütünlük denetleyicileri, aksi takdirde farkedilmesi zor olan saldırganları ortaya çıkarmak konusunda bir nimettir. Ortalama bir sistemde çok fazla dosya değiştiği için, hangisinin bir korsan tarafından, hanginizin kendiniz tarafından değiştirildiği konusunda dikkatli olmak zorundasınız.

Tripwire'ın açık kaynak sürümünü, ücretsiz olarak http://www.tripwire.org adresinde bulabilirsiniz. Kitapçıklar ve destek ise satın alınabilir.

Aide http://www.cs.tut.fi/~rammer/aide.html adresinde,

Osiris ise http://www.shmoo.com/osiris/ adresinde bulunabilir.

Truva Atları

Truva Atlarının ismi Virgil'in "Aenid"indeki ünlü numaradan gelmektedir. Bunun arkasındaki fikir, bir korsanın, kulağa çok hoş gelen bir program veya ikili dosya dağıtıp, diğer insanların dosyayı indirmesi ve root olarak çalıştırmasını teşvik etmesidir. Çalıştırılan program, sistem güvenliğini dikkat çekmeden ihlal eder. İnsanlar indirdikleri ve çalıştırdıkları dosyanın tek bir şey yaptığını (ve bunu çok iyi yapıyor da olabilir) düşünürler, ama program bir taraftan güvenliğe de zarar vermekle meşguldür.

Makinenize hangi programları kurduğunuza dikkat edin. Red Hat, RPM dosyaları için, programın gerçeğini kurduğunuzu doğrulayabilmeniz amacıyla, MD5 sağlama toplamları ve PGP imzaları sağlar. Diğer dağıtımlar da benzer yöntemler kullanır. Asla bilmediğiniz, kaynak kodu elinizde bulunmayan bir ikili dosyayı, root olarak çalıştırmayın! Çok az saldırgan kaynak kodlarını halka açık hale getirir.

Karmaşık olabilir, fakat bir programın kaynak kodunu gerçek dağıtım sitesinden aldığınıza emin olun. Eğer program root olarak çalışacaksa, güvendiğiniz birinin kaynak koduna bakmasını ve doğrulamasını sağlayın.

Parola Güvenliği ve Şifreleme

Bugün en önemli güvenlik özelliklerinden biri parolalardır. Hem sizin hem de tüm kullanıcılarınız için, güvenli, tahmin edilemeyen parolalara sahip olmak önemli bir konudur. Yakın zamanlı Linux dağıtımlarının çoğu, kolay tahmin edilebilir bir parola belirlemenizi engelleyen passwd programları ile birlikte gelir. passwd programınızın güncel ve bu özelliklere sahip olduğundan emin olun.

Şifrelemenin derinlemesine tartışılması bu belgenin konusu ötesindedir, ama bir giriş yapılabilir. Şifreleme gerçekten yararlıdır, hatta bu zaman ve çağda gereklidir de. Şifrelemenin bir çok yöntemi vardır ve her biri kendi özellikler kümesini birlikte getirir.

Bir çok Unix (ve Linux bir istisna değil), parolalarınızı şifrelemek için çoğunlukla tek yönlü, DES (Data Encryption Standard - Veri Şifreleme Standardı) adında bir algoritma kullanır. Şifrelenmiş parola (tipik olarak)/etc/passwd veya (daha az sıklıkla) /etc/shadowdosyasının içinde tutulur. Sisteme giriş yapmaya kalktığınızda, girmiş olduğunuz parola tekrar şifrelenir, ve parola dosyalarının içindeki ile karşılaştırılır. Eğer uyarsa, o zaman aynı parola olmalı demektir, ve erişime izin verilir. DES aslında iki yönlü bir şifreleme algoritmasıdır (doğru anahtar olduğunda, bir mesajı şifreleyebilir veya şifreli bir mesajın şifresini çözebilirsiniz). Bununla beraber, DES'in Unixler üzerindeki değişik biçimi tek yönlüdür. Bunun anlamı, /etc/passwd (veya /etc/shadow) dosyasının içindeki şifrelenmiş parolaya bakarak, şifreleme algoritmasını tersine çevirmek yoluyla parolayı bulmak mümkün olmamalıdır.

"Crack" veya "John the Ripper" (Bkz. “"Crack" ve "John the Ripper"”) programlarında olduğu gibi kaba kuvvet saldırıları, parolanızı yeterince rastgele değilse bulabilir. PAM modülleri (aşağıda), parolalarınız ile birlikte başka bir şifreleme algoritmasının kullanılmasına izin verir (MD5 vb.). Crack programını kendi lehinizde de kullanabilirsiniz. Kendi parola veritabanınızı, güvensiz parolalara karşı Crack programını çalıştırarak düzenli olarak denetlemeyi düşünün. Güvensiz parolaya sahip kullanıcıyla iletişim kurarak, parolasını değiştirmesini isteyebilirsiniz.

İyi bir şifrenin nasıl seçildiği hakkında bilgi almak için http://consult.cern.ch/writeup/security/security_3.html adresine gidebilirsiniz.

PGP ve Açık Anahtarlı Şifreleme

Açık anahtarlı şifreleme, örneğin PGP'de kullanılan gibi, bir anahtarı şifreleme, diğer bir anahtarı da şifre çözme için kullanır. Geleneksel şifreleme tekniklerinde, şifreleme ve şifre çözme için aynı anahtar kullanılır. Bu anahtarın, her iki tarafta da bulunması, dolayısıyla bir şekilde bir tarafdan diğer tarafa güvenli şekilde aktarılmış olması gerekir.

Şifreleme anahtarının güvenli aktarımını kolaylaştırmak için, açık anahtarlı şifreleme iki ayrı anahtar kullanır: bir açık anahtar ve bir de özel anahtar. Herkesin açık anahtarı diğerlerine şifreleme yapabilmesi amacıyla "açık"tır, ama herkes özel anahtarını, doğru açık anahtarla yapılmış şifreyi açabilmek için diğerlerinden gizli tutar.

Açık anahtarlı ya da gizli anahtarlı şifrelemenin kendine has bazı avantajları vardır. İkisi arasındaki farklar hakkında bilgi edinmek için the the RSA Cryptography FAQ (RSA Şifreleme SSS) belgesine göz atabilirsiniz.

PGP (Pretty Good Privacy, Oldukça İyi -Kişisel- Gizlilik) Linux'ta iyi desteklenir. 2.6.2 ve 5.0 sürümlerinin iyi çalıştığı biliniyor. İyi bir PGP tanıtımı ve nasıl kullanıldığı ile ilgili bilgiyi PGP SSS içermektedir: http://www.pgp.com/service/export/faq/55faq.cgi

Ülkeniz için uygun sürümü kullandığınızdan emin olun. ABD Hükümetinin dışsatım sınırlamalarından dolayı, güçlü şifrelemenin elektronik yollarla ülke dışına aktarılması yasaktır.

ABD dışsatım denetimleri, artık ITAR tarafından değil, EAR (Export Administration Regulations - Dışsatım Yönetim Düzenlemeleri) tarafından idare edilmektedir.

Ayrıca, Linux üzerinde PGP yapılandırmasını adım adım anlatan bir rehber http://mercury.chem.pitt.edu/~angel/LinuxFocus/English/November1997/article7.html adresinde bulunmaktadır. Bu rehber PGP'nin uluslararası sürümleri için yazılmıştır, ama ABD sürümü için de uyarlanabilir. Bunun yanısıra Linux'un son sürümleri için bir yamaya ihtiyacınız olabilir. Bu yamaya ftp://metalab.unc.edu/pub/Linux/apps/crypto adresinden ulaşabilirsiniz..

PGP'nin ücretsiz ve açık kaynak şekliyle yeniden hayata geçirme amacını taşıyan bir proje var. GnuPG, PGP'nin yerini alacak tamamlanmış ve ücretsiz bir yazılım. IDEA veya RSA'yı kullanmadığı için sınırlandırma olmaksızın kullanılabilir. GnuPG OpenPGP ile uyumludur. Daha fazla bilgi için GNU Gizlilik Nöbetçisi ana sayfasına bakabilirsiniz: http://www.gnupg.org/.

Şifreleme ile ilgili daha fazla bilgi RSA Şifreleme SSS'ında bulunabilir: http://www.rsa.com/rsalabs/newfaq/. Burda, "Diffie-Hellman", "Açık-Anahtarlı Şifreleme", "Sayısal Sertifika" vb. konular hakkında bilgi bulabilirsiniz.

SSL, S-HTTP ve S/MIME

Kullanıcılar sık sık çeşitli güvenlik ve şifreleme protokolleri arasındakı farkları, ve nasıl kullanıldıklarını sorar. Bu bir şifreleme belgesi olmamakla birlikte her bir protokolün ne olduğunu ve daha fazla bilginin nerde bulunabileceğini açıklamak iyi bir fikir olabilir.

  • SSL: - SL, veya Secure Sockets Layer (Güvenli Soket Katmanı), Netscape tarafından İnternet üzerinde güvenlik sağlamak amacıyla geliştirilen bir şifreleme yöntemidir. SSL veri aktarım katmanında işlev görür, güvenli bir şifreli veri kanalı oluşturduğu için bir çok veri tipini şifreleyebilir. Bu en yaygın olarak, Communicator güvenli bir WWW sitesine bağlandığı, ve güvenli bir belgeyi görüntülemek istediğinde görülür. SSL, Netscape Communications şirketinin diğer veri şifrelemelerinin olduğu kadar, Communicator'ın da güvenli iletişim temellerini oluşturur. Daha fazla bilgi için http://www.consensus.com/security/ssl-talk-faq.html adresine bakabilirsiniz. Netscape'in güvenlikle ilgili hayata geçirdiği diğer örnekler, ve bu protokoller için iyi bir başlangıç noktası da http://home.netscape.com/info/security-doc.html adresinde bulunabilir. SSL protokolü diğer bir çok protokolü "sararak" güvenlik sağlayabilir. http://www.quiltaholic.com/rickk/sslwrap/ adresinde ayrtıntılı bilgi bulabilirsiniz.

  • S-HTTP: - S-HTTP, İnternet üzerinde güvenlik servislerini sağlayan bir diğer protokoldür. Tasarlanma amacı gizlilik, kimlik doğrulama, bütünlük, ve inkar edememe (kendisinden başkası olduğunu söyleyememe) olan S-HTTP, aynı zamanda birden çok anahtar-yönetimi mekanizmasını ve şifreleme algoritmasını, taraflar arasındaki aktarımda yer alan seçenek kararlaştırılması yoluyla destekler. S-HTTP, kendisini hayata geçirmiş olan belirli yazılımlarla sınırlıdır, ve her bir mesajı ayrı ayrı şifreler (RSA Şifreleme SSS, Sayfa 138)

  • S/MIME: - S/MIME, veya Güvenli Çokamaçlı İnternet Mektup Uzantısı (Secure Multipurpose Internet Mail Extension), elektronik mektup ve İnternet üzerindeki diğer mesajları şifrelemek için kullanılan bir şifremele standardıdır. RSA tarafından geliştirilen açık bir standarttır, dolayısıyla bir gün Linux üzerinde görme olasılığımız yüksektir. S/MIME ile ilgili daha fazla bilgi http://home.netscape.com/assist/security/smime/overview.html adresinde bulunabilir.

Linux IP Güvenliği'nin (IPSec) Hayata Geçirilmesi

CIPE ve diğer veri şifreleme biçimlerinin yanında, IPSEC'in de Linux için bir kaç hayata geçirilme örneği vardır. IPSEC, IP ağ düzeyinde şifreli-güvenli iletişimler yaratmak, ve kimlik doğrulama, bütünlük, erişim denetimi ve gizlilik sağlayabilmek amacıyla IETF tarafından gösterilen bir çabadır. IPSEC ve İnternet taslağı üzerinde daha fazla bilgiye http://www.ietf.org/html.charters/ipsec-charter.html adresinden ulaşabilir, ayrıca anahtar yönetimini içeren diğer protokollere, ve bir IPSEC mektuplaşma (haberleşme) listesi ve arşivlerine ulaşabilirsiniz.

Arizona Üniversitesi'nde geliştirilen, Linux için x-çekirdek (x-kernel) uygulaması, x-çekirdek adı verilen ağ protokollerinin hayata geçirilmesi için nesne tabanlı bir iskelet kullanır. Bununla ilgili bilgi http://www.cs.arizona.edu/xkernel/hpcc-blue/linux.htmladresinde bulunabilir. En basit anlatımla, x-çekirdek, mesajların çekirdek düzeyinde aktarılması yöntemidir, ki bu hayata geçirilmesini kolaylaştırır.

IPSEC'in ücretsiz bir diğer uygulaması da Linux FreeS/WAN IPSEC'tir. WWW sayfalarında belirtildiğine göre,“"Bu servisler, güvenmediğiniz ağların içinde güvenli tüneller oluşturmanızı sağlar. Güvenilmeyen ağdan geçen herşey IPSEC ağ geçidi tarafından şifrelenir ve diğer uçtaki ağ geçidinde şifresi çözülür. Sonuç bir Sanal Özel Ağ, yani VPN'dir (Virtual Private Network). Bu, bir takım farklı sitelerdeki güvensiz İnternet ile birbirine bağlı bulununan makineler içerdiği halde, etkin anlamda özel bir ağdır."

Bilgisayarınıza indirmek isterseniz, http://www.xs4all.nl/~freeswan/, adresinden ulaşabilirsiniz. Bu belge yazıldığı sırada sürüm 1.0 henüz çıkmıştı.

Diğer şifreleme biçimleri gibi, bu da dışsatım sınırlamaları nedeniyle çekirdek ile birlikte dağıtılmıyor.

ssh (Güvenli Kabuk) ve stelnet

ssh ve stelnet uzak sistemlere giriş yapabilmenizi, ve şifreli bir bağlantı kurabilmenizi sağlayan programlar grubudur.

openssh ise for rlogin, rsh ve rcp'nin yerine geçen güvenli bir programlar grubudur. Kullanıcıların kimliğini doğrulamak için ve iki bilgisayar arasındaki iletişimi şifrelemek için açık anahtarlı şifreleme tekniğini kullanır. Uzaktaki bir bilgisayara güvenli şekilde giriş yapmak veya bilgisayarlar arasında veri kopyalama yapmak, ama bu sırada gelebilecek ortadaki-adam (oturum kaçırma) ve DNS taklit saldırılarını engellemek amacıyla kullanılabilir. Bağlantılarınız arasındaki verilerı sıkıştırır, ve bilgisayarlar arasındaki X11 iletişimini güvenli hale getirir.

Şu anda bir çok ssh uygulaması mevcut. Data Fellows tarafından hayata geçirilen özgün ticari sürümü http://www.datafellows.com adresinde bulunabilir.

Mükemmel Openssh uygulamasında, Data Fellows ssh'ının önceki sürümlerinden biri taban oluşturmuş, ve patentli veya tescilli herhangi bir parça bulunmaması için tamamen yeniden bir çalışma yapılmıştır. BSD lisansı altında ücretsiz olarak dağıtılmaktadır: http://www.openssh.com.

ssh'ı sıfırdan yeniden yazmak amacıyla, "psst..." adıyla başlatılan bir açık kaynak kodlu bir proje daha mevcut. Daha fazla bilgi için: http://www.net.lut.ac.uk/psst/

ssh'ı Windows iş istasyonunuzdan Linux ssh sunucunuza bağlanmak amacıyla da kullanabilirsiniz. Ücretsiz olarak dağıtılan bir çok Windows istemcisi de mevcut, bunlardan birine http://guardian.htu.tuwien.ac.at/therapy/ssh/ adresinden ulaşabilirsiniz. Data Fellows'un ticari bir uygulamasına ise aşağıdaki adresten ulaşılabiliyor olmalı: http://www.datafellows.com.

SSLeay, Netscape'in Güvenli Soket Katmanı protokol uygulamasının, Eric Young tarafından yazılan ücretsiz bir sürümü. Güvenli telnet gibi bazı uygulamalar, Apache için bir modül, bir takım veritabanları, ve DES, IDEA, ve Blowfish algoritmaları SSLeay'in içinde bulunabilir.

Bu kütüphaneyi kullanarak, telnet bağlantısı üzerinde şifreleme yapan güvenli bir telnet uygulaması oluşturuldu. SSH'nin tersine, stelnet SSL'yi, Netscape tarafından geliştirilen Güvenli Soket Katmanı'nı kullanıyor. Güvenli telnet ve Güvenli FTP hakkında bilgiyi SSLeay SSS'ından başlayarak bulabilirsiniz: http://www.psy.uq.oz.au/~ftp/Crypto/.

Bir diğer güvenli telnet/ftp uygulaması ise SRP. WWW sayfalarından:

"SRP projesi, dünya çapında ücretsiz kullanım için güvenli İnternet yazılımı geliştiriyor. Tamamen güvenli bir Telnet ve FTP dağıtımından başlayarak, ağ üzerindeki zayıf kimlik doğrulama sistemlerini değiştirmeyi, bunu yaparken de güvenlik uğruna kullanıcı-dostluğunu kurban etmemeyi amaçlıyoruz. Güvenlik, varsayılan olmalı, bir seçenek değil!"

Daha fazla bilgi için: http://www-cs-students.stanford.edu/~tjw/srp/

PAM - Takılabilir Kimlik Doğrulama Modülleri

Red Hat Linux dağıtımlarının yeni sürümleri, "PAM" adı verilen birleşmiş bir kimlik doğrulama tasarımı ile birlikte geliyor. PAM, kimlik doğrulama yöntem ve gereksinimlerinizi çalışma kesilmeksizin değiştirmenize izin veriyor, ve ikililerinizin yeniden derlenmesine gerek bırakmaksızın bütün yerel kimlik doğrulama yöntemlerinizi çevreliyor. PAM yapılandırması, bu belgenin konusu dışında, bununla birlikte daha fazla bilgi için PAM sitesini şöyle bir gözden geçirmeyi ihmal etmeyin: http://www.kernel.org/pub/linux/libs/pam/index.html.

PAM ile yapabileceklerinizden sadece bir kaçı:

  • Parolalarınız için DES'ten başka bir şifreleme kullanma (Böylelikle kaba kuvvet saldırılarını daha da zorlaştırma)

  • Tüm kullanıcılarınızın üzerinde, kaynak sınırlandırmaları koyabilme, böylelikle servis-reddi saldırılarını engelleme (işlem sayısı, bellek miktarı vb.)

  • Çalışma kesilmeksizin gölge parolaya geçiş olanağı (aşağıya bakın)

  • Belirli kullanıcıların, sadece belirli zamanlarda ve belirli yerlerden giriş yapmalarına izin verme

Sisteminizi bir kaç saat içinde kurduktan ve yapılandırdıktan sonra, bir çok saldırıyı gerçekleşmeden durdurabilirsiniz. Örneğin, kullanıcıların ev dizinlerindeki .rhosts dosyalarının kullanımını engellemek için, sistem genelinde /etc/pam.d/rlogin dosyasına aşağıdaki satırları ekleyerek PAM'i kullanabilirsiniz:

  #
  # Kullanıcılar için rsh/rlogin/rexec kullanımını yasakla
  #
  login auth required pam_rhosts_auth.so no_rhosts

Şifreli IP Sarma (CIPE)

Bu yazılımın birincil amacı (gizlice dinleme, trafik çözümlemesi ve araya sahte mesaj sokmaya karşı), İnternet gibi güvensiz paket ağı boyunca oluşturulan alt ağ bağlantılarını güvenli hale getirmede bir kolaylık sağlamaktır.

CIPE veriyi ağ düzeyinde şifreler. Bilgisayarlar arasında ağ üzerinde seyahat eden paketler şifrelenir. Şifreleme motoru, paketleri alan ve gönderen sürücüye yakın bir yerdedir.

Bu, verileri soket düzeyinde bağlantılara göre şifreleyen SSH'den farklıdır. Farklı bilgisayarda çalışan programlar arası mantıksal bağlantılar şifrelenir.

CIPE, Sanal Özel Ağ yaratmak amacıyla tünellemede kullanılabilir. Düşük-düzey şifrelemenin, uygulama yazılımında değişiklik yapmaksızın VPN'de bağlı iki ağ arasında şeffaf şekilde çalıştırılabilme getirisi vardır.

CIPE belgesinden özet:

IPSEC standartları, (diğer şeyler arasında) şifrelenmiş VPN'ler oluşturmak için kullanılabilecek protokoller kümesini tanımlar. Bununla birlikte, IPSEC, bir çok seçeneği olan ağır ve karışık bir protokol kümesidr, protokolün bütün olarak hayata geçirilebildiği durumlar nadirdir ve bazı konular (anahtar idaresi gibi) tam olarak çözülmemiş durumdadır. CIPE, değiştirgelenebilen bir çok şeyin (kullanılan asıl şifreleme algoritmasının seçimi gibi) kurulum zamanındaki sabit bir seçim olduğu daha basit bir yaklaşım kullanır. Bu esnekliği kısıtlar, ama daha basit (ve dolayısıyla daha etkili, böcek ayıklamasını kolaylaştıran) bir uygulama olanağı sağlar.

Daha fazla bilgi http://www.inka.de/~bigred/devel/cipe.html adresinde bulunabilir.

Diğer şifreleme biçimleri gibi, dışsatım kısıtlamaları yüzünden çekirdek ile birlikte dağıtılmamaktadır.

Kerberos

Kerberos, MIT'teki [20] Athena Projesi tarafından geliştirilen bir kimlik doğrulama sistemidir. Kullanıcı sisteme giriş yaptığında, Kerberos kullanıcının kimliğini doğrular (bir parola kullanarak), ve kullanıcıya ağa dağılmış diğer sunucular ve bilgisayarlara kimliğini kanıtlamak için bir yol sağlar.

İşte bu kimlik doğrulama rlogin gibi programlar tarafından kullanılır (.rhosts dosyası yerine), ve kullanıcıya diğer bilgisayarlara parolasız girebilmesi için izin verilir. Bu kimlik doğrulama yöntemi posta sistemi tarafından da mektubun doğru kişiye dağıtıldığından emin olmak, ve gönderen kişinin iddia ettiği kişi olduğunu garanti altına almak amacıyla kullanılabilir.

Kerberos ve birlikte gelen diğer programlar, kullanıcıların başka birini "taklit" yoluyla sistemi yanıltmasını engeller. Ne yazık ki, Kerberos'u kurmak kökten değişiklik ister, bir çok standard programın yenileriyle değiştirilmesini gerektirir.

Kerberos hakkında daha fazla bilgi almak için Kerberos SSS'a, kodu almak içinse http://nii.isi.edu/info/kerberos/ adresine bakabilirs