18-12-2012 Saat: 18:52
/etc/inetd.conf dosyası
Bu dosya Linux makinenizin sunucu yazılımlarının pek çoğunu kontrol eder. Arka planda çalışan inetd adlı yazılım, bu dosyada belirtilen portlarda gelen istekleri dinleyerek bir istek karşısında yine bu dosyada belirtilen programın bir kopyasını çalıştırır. Bu şekilde hiç kullanılmayan ya da az kullanılan bazı sunucu yazılımların bellekte gereksiz yer kaplamaları engellenmiş olur.
Dosyanın temel yapısı şu şekildedir.
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l –a
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
Bu dosya, sisteminizin güvenliği için en önemli dosyalardandır. Gerekli olmayan her şeyi kapatmalısınız. Örneğin makine ftp sunucu olarak kullanılmayacak ise yapılması gereken en doğru hareket ilgili satırın başına bir diyez (#) işareti koyarak bu servisi aktif halden kaldırmak olacaktır. Elbette ki bu servis kullanılmıyorsa, aynı zamanda makineden silmek doğru bir harekettir. Eğer bir servisin işe yarayıp yaramadığı hakkında tereddüde düşüyorsanız, o servisi kaldırın. Büyük ihtimalle işinize yaramayacaktır. Burada açık bırakacağınız her bir satır size bir güvenlik boşluğu olarak geri dönecektir. Örnek vermek gerekirse çok zararsız gibi görünen "echo" servisi, bu porta gönderilen her bilgiyi aynen geri göndermekle görevlidir. Eğer kötü niyetli birisi bu porta, sürekli işe yaramaz bilgi gönderen bir yazılım yazarsa, bu servis gelen saçma sapan karakterlerin hepsine birden cevap vermek isterken sistem kaynaklarının çok önemli bir kısmını tüketecektir. Aynı programın bir worm tarzında yazıldığını ve Internet üzerinde binlerce makineden aynı anda saçma sapan karakterler gönderildiğini varsayarsanız, sunucunuz büyük ihtimalle göçecektir.
Bir diğer önemli madde ise her ihtimale karşı /etc/inetd.conf dosyasının haklarını kontrol etmeliyiz. Bu dosyanın hakları 600 yani sadece root kullanıcı tarafından okunabilir ve yazılabilir şekilde olmalıdır. Bu, aşağıdaki komut ile sağlanabilir.
chmod 600 /etc/inetd.conf
Bu dosyanın içeriğinden emin olunduktan sonra, bir daha root kullanıcı dahil kimse tarafından değiştirilmemesi için şu komut verilmelidir.
chattr +i /etc/inetd.conf
/etc/hosts.deny dosyası
Bu dosya, ağ servislerinize ulaşmaya yetkili kullanıcıları kısıtlamaya yarar. Genellikle bu dosya içinde herkese bütün yetkiler kısıtlanır. Ardından sisteme girmeye yetkili IP adresi veya bilgisayar adları /etc/hosts.allow dosyası içinde belirlenir.
Aşağıda standart bir /etc/hosts.deny dosyası görünmektedir.
# Bütün erişim haklarını kapat!!!...
ALL off
/etc/hosts.allow dosyası
Bu dosya, /etc/hosts.deny dosyasında tamamen kapattığınız erişim haklarını bazı yetkili bilgisayarlara iade etmek için kullanılır. Örneğin sunucu makinenize sadece trlinux.com (195.244.37.241) alan adından ve sadece sshd adlı protokol ile erişilmesini istiyorsanız, bu dosyada aşağıdaki değişiklikleri yapmalısınız.
sshd: 195.244.37.241 trlinux.com
/etc/issue ve /etc/issue.net dosyaları
Bu dosyalar, sisteminize konsoldan veya telnet yolu ile bağlanmak isteyen kişilere login: belirtkecinden önce gösterilen bilgi satırlarını içerirler. Bu, genelde kişiyi kullandığı sistemin bir Linux sistem olduğunu göstermesi açısından faydalı olabilir fakat, yüksek güvenlik gerektiren sistemlerde kullanılan işletim sistemi, kullanılan çekirdek(kernel) gibi bilgilerin kötü niyetli kişilerin eline geçmesi doğru değildir. Bu nedenle /etc/inetd.conf dosyasında telnet programını çalıştıran satırda in.telnetd sonuna –h parametresinin eklenmesi bu bilgilerin ekrana getirilmemesini sağlar.
telnet protokolü, bir makineye uzaktan erişim amaçlı kullanılır ve üzerinden akan bilgiyi şifrelemeden gönderdiği için güvenli bir makinede bulunması kesinlikle tavsiye edilmez. Şifrelenmeden yollanan her türlü bilgi, bir sniffer yazılımı aracılığı ile rahatlıkla dinlenebilir. Bunu engellemek için ssh adı verilen protokolü tercih etmelisiniz.
/etc/services
Bu dosya, bir portta bağlanacak olan programa bir isim vermek amaçlı kullanılır. Örneğin 65000 nolu portu kullanan ve inetd aracılığı ile bu portu dinleyen bir Netbus tarzı bir worm programı yazılmak istendiğinde yapılması gereken, /etc/services dosyasında bu porta bir isim vermek ve /etc/inetd.conf dosyasında verilen ismi içeren ve bu porttaki istekleri işleyen bir program yazılması yeterlidir.
Bunu engellemek için bu dosyada değişiklik yapmayı engelleyen şu komutun verilmesi yeterlidir.
chattr +i /etc/services
/etc/securetty dosyası
Bu dosya root kullanıcının sisteme direk login belirtecinde kullanıcı adı ve şifresini girerek bağlanabileceği terminal aygıtlarını listeler. Bu dosya silindiği takdirde sisteme telnet ile bağlanan herkes kullanıcı adı olarak root verebilir. Bu çok büyük bir güvenlik açığıdır. Yapılması gereken eğer bu dosya yerinde yoksa yaratılması ve içine "tty1" yazılmasıdır. Bu sayede root kullanıcı sadece bilgisayarın önünde iken ve 1 nolu sanal terminali kullanırken sisteme direk bağlanabilir.
/etc/passwd ve /etc/shadow dosyaları
passwd ve shadow dosyaları birlikte, kullanıcı şifreleri ve hesapları hakkında ayrıntılı bilgiyi barındırır. Bu nedenle korunmasına özel önem verilmelidir. Internet' te yer alan pek çok hack- warez sitesinde, bir Linux sistemi kırmakla ilgili dokümanda bu dosyaların bir şekilde ele geçirilmesi ve ardından bir brute force programı yazılımı ile bu şifrenin güçlü bir bilgisayarda deneme yanılma yöntemi ile kırılması anlatılmaktadır. Bunun önüne geçmek gerçekten çok kolaydır. Yapılması gereken /etc/shadow dosyasının okuma haklarını normal kullanıcılardan kaldırmak olmalıdır. Bu işlem şu komutla gerçekleştirilir.
chmod 600 /etc/shadow
Kullanıcıların su komutu ile root kullanıcı olmalarının engellenmesi
su komutu herhangi bir kullanıcının root şifresini bildiği takdirde root kullanıcı haklarına sahip olmasını sağlar. Bu çok büyük bir güvenlik riskidir, fakat engellemek mümkündür. /etc/pam.d/su dosyasının en tepesine aşağıdaki satırları eklediğimiz takdirde sadece wheel adlı ön tanımlı gruba üye olan kullanıcılar su komutunu çalıştırarak root kullanıcı haklarına sahip olabilirler.
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=wheel
Artık sistemimizde wheel grubuna üye olmayan hiçbir kullanıcı root haklarına sahip olamayacaktır. Wheel grubuna aşağıdaki komut ile kolayca umut adlı bir kullanıcı eklenebilir.
chmod –G10 umut
Kullanıcıların CPU ve RAM kullanımlarını sınırlamak
Bu Linux' un çok gelişmiş özelliklerinden bir tanesidir. Sisteme bağlanan kullanıcılara herhangi bir kaynak limiti verilmediği takdirde sistemi kırmak için özelleşmiş bazı programları çalıştırarak sistemi meşgul etmelerine ve belki de sonuçta başarılı olmalarına neden olunabilir. Aşağıdaki satırlar /etc/security/limits.conf dosyasına eklendiği takdirde root kullanıcı haricindeki kullanıcılar maksimum 20 tane proses açabilecek ve 5 MB bellek kullanabileceklerdir.
hard core 0
hard rss 5000
hard nproc 20
Ardından bu özelliği aktif hale geçirmek için kullanıcılar sisteme bağlanırken kullanılan /etc/pam.d/login betiğine bu özelliğin belirtilmesi gereklidir. Sonuçta bu dosya aşağıdaki gibi olacaktır.
#%PAM-1.0
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_pwdb.so shadow
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so nullok
session required /lib/security/pam_pwdb.so
session required /lib/security/pam_limits.so
Linux işletim sistemi, doğru ellerde dünyanın en güvenli işletim sistemi haline getirilebilir. Fakat, pek çoklarının düşündüğü gibi bu özelliklerin pek çoğu aktif olarak gelmez. Doğru amaçlar için konfigüre edilmiş bir işletim sistemi yaratmak için çok çalışmalı ve Linux dünyasında duyurulan güvenlik uyarılarını dikkate almalısınız.
Bu dosya Linux makinenizin sunucu yazılımlarının pek çoğunu kontrol eder. Arka planda çalışan inetd adlı yazılım, bu dosyada belirtilen portlarda gelen istekleri dinleyerek bir istek karşısında yine bu dosyada belirtilen programın bir kopyasını çalıştırır. Bu şekilde hiç kullanılmayan ya da az kullanılan bazı sunucu yazılımların bellekte gereksiz yer kaplamaları engellenmiş olur.
Dosyanın temel yapısı şu şekildedir.
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l –a
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
Bu dosya, sisteminizin güvenliği için en önemli dosyalardandır. Gerekli olmayan her şeyi kapatmalısınız. Örneğin makine ftp sunucu olarak kullanılmayacak ise yapılması gereken en doğru hareket ilgili satırın başına bir diyez (#) işareti koyarak bu servisi aktif halden kaldırmak olacaktır. Elbette ki bu servis kullanılmıyorsa, aynı zamanda makineden silmek doğru bir harekettir. Eğer bir servisin işe yarayıp yaramadığı hakkında tereddüde düşüyorsanız, o servisi kaldırın. Büyük ihtimalle işinize yaramayacaktır. Burada açık bırakacağınız her bir satır size bir güvenlik boşluğu olarak geri dönecektir. Örnek vermek gerekirse çok zararsız gibi görünen "echo" servisi, bu porta gönderilen her bilgiyi aynen geri göndermekle görevlidir. Eğer kötü niyetli birisi bu porta, sürekli işe yaramaz bilgi gönderen bir yazılım yazarsa, bu servis gelen saçma sapan karakterlerin hepsine birden cevap vermek isterken sistem kaynaklarının çok önemli bir kısmını tüketecektir. Aynı programın bir worm tarzında yazıldığını ve Internet üzerinde binlerce makineden aynı anda saçma sapan karakterler gönderildiğini varsayarsanız, sunucunuz büyük ihtimalle göçecektir.
Bir diğer önemli madde ise her ihtimale karşı /etc/inetd.conf dosyasının haklarını kontrol etmeliyiz. Bu dosyanın hakları 600 yani sadece root kullanıcı tarafından okunabilir ve yazılabilir şekilde olmalıdır. Bu, aşağıdaki komut ile sağlanabilir.
chmod 600 /etc/inetd.conf
Bu dosyanın içeriğinden emin olunduktan sonra, bir daha root kullanıcı dahil kimse tarafından değiştirilmemesi için şu komut verilmelidir.
chattr +i /etc/inetd.conf
/etc/hosts.deny dosyası
Bu dosya, ağ servislerinize ulaşmaya yetkili kullanıcıları kısıtlamaya yarar. Genellikle bu dosya içinde herkese bütün yetkiler kısıtlanır. Ardından sisteme girmeye yetkili IP adresi veya bilgisayar adları /etc/hosts.allow dosyası içinde belirlenir.
Aşağıda standart bir /etc/hosts.deny dosyası görünmektedir.
# Bütün erişim haklarını kapat!!!...
ALL off
/etc/hosts.allow dosyası
Bu dosya, /etc/hosts.deny dosyasında tamamen kapattığınız erişim haklarını bazı yetkili bilgisayarlara iade etmek için kullanılır. Örneğin sunucu makinenize sadece trlinux.com (195.244.37.241) alan adından ve sadece sshd adlı protokol ile erişilmesini istiyorsanız, bu dosyada aşağıdaki değişiklikleri yapmalısınız.
sshd: 195.244.37.241 trlinux.com
/etc/issue ve /etc/issue.net dosyaları
Bu dosyalar, sisteminize konsoldan veya telnet yolu ile bağlanmak isteyen kişilere login: belirtkecinden önce gösterilen bilgi satırlarını içerirler. Bu, genelde kişiyi kullandığı sistemin bir Linux sistem olduğunu göstermesi açısından faydalı olabilir fakat, yüksek güvenlik gerektiren sistemlerde kullanılan işletim sistemi, kullanılan çekirdek(kernel) gibi bilgilerin kötü niyetli kişilerin eline geçmesi doğru değildir. Bu nedenle /etc/inetd.conf dosyasında telnet programını çalıştıran satırda in.telnetd sonuna –h parametresinin eklenmesi bu bilgilerin ekrana getirilmemesini sağlar.
telnet protokolü, bir makineye uzaktan erişim amaçlı kullanılır ve üzerinden akan bilgiyi şifrelemeden gönderdiği için güvenli bir makinede bulunması kesinlikle tavsiye edilmez. Şifrelenmeden yollanan her türlü bilgi, bir sniffer yazılımı aracılığı ile rahatlıkla dinlenebilir. Bunu engellemek için ssh adı verilen protokolü tercih etmelisiniz.
/etc/services
Bu dosya, bir portta bağlanacak olan programa bir isim vermek amaçlı kullanılır. Örneğin 65000 nolu portu kullanan ve inetd aracılığı ile bu portu dinleyen bir Netbus tarzı bir worm programı yazılmak istendiğinde yapılması gereken, /etc/services dosyasında bu porta bir isim vermek ve /etc/inetd.conf dosyasında verilen ismi içeren ve bu porttaki istekleri işleyen bir program yazılması yeterlidir.
Bunu engellemek için bu dosyada değişiklik yapmayı engelleyen şu komutun verilmesi yeterlidir.
chattr +i /etc/services
/etc/securetty dosyası
Bu dosya root kullanıcının sisteme direk login belirtecinde kullanıcı adı ve şifresini girerek bağlanabileceği terminal aygıtlarını listeler. Bu dosya silindiği takdirde sisteme telnet ile bağlanan herkes kullanıcı adı olarak root verebilir. Bu çok büyük bir güvenlik açığıdır. Yapılması gereken eğer bu dosya yerinde yoksa yaratılması ve içine "tty1" yazılmasıdır. Bu sayede root kullanıcı sadece bilgisayarın önünde iken ve 1 nolu sanal terminali kullanırken sisteme direk bağlanabilir.
/etc/passwd ve /etc/shadow dosyaları
passwd ve shadow dosyaları birlikte, kullanıcı şifreleri ve hesapları hakkında ayrıntılı bilgiyi barındırır. Bu nedenle korunmasına özel önem verilmelidir. Internet' te yer alan pek çok hack- warez sitesinde, bir Linux sistemi kırmakla ilgili dokümanda bu dosyaların bir şekilde ele geçirilmesi ve ardından bir brute force programı yazılımı ile bu şifrenin güçlü bir bilgisayarda deneme yanılma yöntemi ile kırılması anlatılmaktadır. Bunun önüne geçmek gerçekten çok kolaydır. Yapılması gereken /etc/shadow dosyasının okuma haklarını normal kullanıcılardan kaldırmak olmalıdır. Bu işlem şu komutla gerçekleştirilir.
chmod 600 /etc/shadow
Kullanıcıların su komutu ile root kullanıcı olmalarının engellenmesi
su komutu herhangi bir kullanıcının root şifresini bildiği takdirde root kullanıcı haklarına sahip olmasını sağlar. Bu çok büyük bir güvenlik riskidir, fakat engellemek mümkündür. /etc/pam.d/su dosyasının en tepesine aşağıdaki satırları eklediğimiz takdirde sadece wheel adlı ön tanımlı gruba üye olan kullanıcılar su komutunu çalıştırarak root kullanıcı haklarına sahip olabilirler.
auth sufficient /lib/security/pam_rootok.so debug
auth required /lib/security/pam_wheel.so group=wheel
Artık sistemimizde wheel grubuna üye olmayan hiçbir kullanıcı root haklarına sahip olamayacaktır. Wheel grubuna aşağıdaki komut ile kolayca umut adlı bir kullanıcı eklenebilir.
chmod –G10 umut
Kullanıcıların CPU ve RAM kullanımlarını sınırlamak
Bu Linux' un çok gelişmiş özelliklerinden bir tanesidir. Sisteme bağlanan kullanıcılara herhangi bir kaynak limiti verilmediği takdirde sistemi kırmak için özelleşmiş bazı programları çalıştırarak sistemi meşgul etmelerine ve belki de sonuçta başarılı olmalarına neden olunabilir. Aşağıdaki satırlar /etc/security/limits.conf dosyasına eklendiği takdirde root kullanıcı haricindeki kullanıcılar maksimum 20 tane proses açabilecek ve 5 MB bellek kullanabileceklerdir.
hard core 0
hard rss 5000
hard nproc 20
Ardından bu özelliği aktif hale geçirmek için kullanıcılar sisteme bağlanırken kullanılan /etc/pam.d/login betiğine bu özelliğin belirtilmesi gereklidir. Sonuçta bu dosya aşağıdaki gibi olacaktır.
#%PAM-1.0
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_pwdb.so shadow
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_pwdb.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_pwdb.so nullok
session required /lib/security/pam_pwdb.so
session required /lib/security/pam_limits.so
Linux işletim sistemi, doğru ellerde dünyanın en güvenli işletim sistemi haline getirilebilir. Fakat, pek çoklarının düşündüğü gibi bu özelliklerin pek çoğu aktif olarak gelmez. Doğru amaçlar için konfigüre edilmiş bir işletim sistemi yaratmak için çok çalışmalı ve Linux dünyasında duyurulan güvenlik uyarılarını dikkate almalısınız.