Linux Sistemlerde Güvenlik Duvarı

07 May
2009

Her yeni kernel, güvenlik duvarı yaratma ve yönetmede kullanılan araçlar için gelişmeler getiriyor.

Linux, evlerinde ağ kuranlardan, kendi ağlarını kuran firmalar ve ticari ürünlerinde içeren üretici firmalara kadar pek çok güvenlik duvarı inşa eden için seçilen bir işletim sistemi.

Her güvenlik cihazında olduğu gibi, bir Linux güvenlik duvarı kurduktan sonra arkanıza yaslanıp ilgisiz kalamazsınız. Güvenlik yamaları ve alarmlarını takip etmeli ve kernelinizi hep gözden geçirmeli ve güvenliği arttırmak ve saldırılardan korunmak için güncellemelisiniz.

Linux yıllar geçtikçe geliştiği gibi güvenlik duvarı yetenekleride gelişiyor. İlk Linux güvenlik duvarları paket-filtreleme kuralları yaratıp yönetmek için ipfwadmin aracını kullandı. Linux kernel 2.2 geçtiğimiz iki yılda 2.0`ın yerine geçtiğinden beri, ipchains`de ipfwadmin`in yerini aldı. Bu sene kernel 2.4`ün çıkmasıyla pek çok ticari güvenlik duvarında bulunan durumsal paket inceleme (stateful packet inspection) çözümü artık Linux`da da mevcut.

Linux ile güvenlik duvarı çözümünün 3 yüzü
Linux sistemlerdeki güvenlik duvarlarının en son 3 üretim sürümü Linux kernel`lerine (2.0,2.2,2.4 – Çift rakamlı Linux kernel minör sürüm numaraları kernel`in üretim amaçları için uygun olduğunu gösterir. Tek sayılı Linux kernel minör sürüm numaraları sadece deneysel ve geliştirme kullanımı için uygun olduğunu gösterir) karşılık gelen 3 farklı uygulaması vardır.

Tamamen olmasada 2.0 eskimeye başladı. Red Hat Linux 1999`da çıkan v5.2 sürümünden beri kernel 2.0`ı kullanmadı. Geçen sene, çoğu dağıtım kenerl 2.2 kullanıyordu ve 2.4 bu sene başlarında çıktı.

Değişen kernel sürümleri Linux güvenlik duvarı çözümü için kritik çünkü her yeni sürüm güvenlik duvarı yönetimi mekanızmasını değiştiriyor. Kernel 2.0`ın IP Firewall (IPFW) mekanızması için arabirim sağlayan ipfwadmin programı, kernel 2.2`de ipchains ile değiştirildi. Ve ipchains`in yerinide kernel 2.4`de iptables aldı.

IP paketleriyle uğraşmaktan Linux kernel sorumlu olsada, sistem yöneticisi kernel`e hangi paketleri geçireceğini, sessizce bloklayacağını yada gönderene bir hata mesajı ile bloklayacağını belirleyen kuralları yaratmalı. Tabiki bu klasik IP filtreleme güvenlik duvarı kurulumu: Güvenlik duvarı IP başlıklarını kontrol eder, değerlendirir ve filtre kuralları ile karşılaştırır.

Çoğu Linux kullanıcısı, ağ güvenlik araçları yapmada kullanan üretici firmalar dahil kernel 2.0 ile başladılar. Her yeni kernel sürümü gelişmeler ve önemli yeni özellikler getirsede, sistem yöneticileri genelde iyi çalışan Linux sistemleri güncellemeyi pek düşünmediler. Bu sebeple pek çok sistem hala kernel 2.0 çalıştırıyor çünkü işe yarıyor ve güncellemenin getireceği bozulmalar yada bölünmeler buna değmez. Ayrıca ağ güvenlik araçları kullanıcıları Linux kullandıklarını farkında bile olmayabilir yada güncelleyecek yeterlilikte olmayabilir.

Sky-NetWEB`de bir Unix sistem yöneticisi ve Bastille Linux Project`de (http://www.bastille-linux.org) koordinatör olan Jon Lasser`e göre kernel 2.0`ın ‘ipfwadmin BSD sistemlerinde mevcut olan araçların bir yansısı.’ 1997`de çıktığında kernel 2.0, Linux, BSD veya diğer Unix-tabanlı işletim sistemleri ile çalışan ağ sorumluları için mükemmel bir mükemmel bir seçim idi. IPFW için kuralları sıfırdan yazmak yerine bir sistem yöneticisi var olan BSD-tabanlı güvenlki duvarlarının kurallarını kullanabilirdi.

Ipfwadmin basit, düşük-ihtiyaç IP paket filtreleme gereksinimleri için uygun. Örnek ipfwadmin filtreleme kuralları pek çok yerde mevcut ve çoğu Linux sistem yöneticisi kolaylıkla paket filtreleme güvenlik duvarları inşa edebilirler. Ipfwadmin yüksek hızda internet bağlantıları olan ve evlerinde ağ kurmuş olanların çoğu tarafından kullanılmakta.

Kernel 2.2`nin 1999`da çıkmasıyla ipchains güvenlik duvarı çözümü için ileri atılmış bir adım olarak kabul edildi. Ek olarak ipfwadmin ile geriye uyumlu olmanın yanında, geliştirilmiş yazım, IP üzerindeki katmanlarda protokol testi ve wildcard arabirimlerde filtreleme desteği gibi yeni özellikler getirdi.

Linux Firewalls kitabının yazarı Robert Zeigler`e göre ‘ipchains optimizasyon ve filtreleme performansı konularında büyük kazanç olabilecek kullanıcı-tanımlı zincirler ekledi.’ ipchains`in dinamik olması ile ipfwadmin`den daha gelişmiş oluyor. Kurallar ‘chains’ adı verilen tablolar içinde (‘input’, ‘output’ ve ‘forward’) tutuluyor. Yeni kurallar güvenlik duvarı çalışırkan bu tabloların herbiri içinde en başa yada sona eklenebiliyor. Bu, güvenlik duvarı kurallarını günün belirli saatine göre değiştirme veya yeni bulunan tehditlere karşı koymayı mümkün kılıyor.

Ipchains`in diğer önemli bir özelliği ise ICMP alt-tip mesaj kodlarına erişebilmesi. Zeigler ‘Bu küçük birşey gibi görünebilir. Fakat bu sayede güvenlik duvarı sistemleri için önemli olan Type 3 hata kodları filtrelenebilir.’ diyor. (‘port unreachable error’ içeren bir ICMP pakedi saldırganların potansiyel olarak zayıf sistemleri bulabilmesine yardımcı oluyor).

Durumsuz Filtreleme ve Durumsal-Paket inceleme
Tekrar dizayn edilmesine karşın ipchains, ipfwadmin gibi hala bir IP paket filtreleme güvenlik duvarı. Paket filtreleleri kullanışlı fakat günümüzde pek çok enterprise-sınıfı güvenlik duvarı, daha kapsamlı bir yaklaşım olan durumsal-paket inceleme teknolojisini kullanır. Kernel 2.4 ve iptables arabirimi yeni bir mekanizma getirdi:
Netfilter, IPFW modülünün yerine geçen bir kernel modülü. IPFW gibi netfilter`da güvenlik duvarı kuralları ile bir pakete ne yapacağına karar verir. Fakat netfilter basit filtreleme yerine durumsal paket inceleme kullanır.
Bir durumsuz paket filtreleme güvenlik duvarı paketleri kabul eden, başlıklarını inceleyen ve sistem yöneticisi tarafından belirlenen kurallara göre pakedi geçirip geçirmeyeceğine karar veren bir güvenlik duvarıdır.

Her tip güvenlik duvarı için tipik yaklaşım kesin bir politika ile başlamaktır. Varsayılan olarak tüm paketlerin erişimi engellenmeli, ve sadece kurallarda izin verilmişse geçirilmelidir. Tipik olarak sadece belirli bazı TCP/IP başlıkları incelenir, böylece belirli IP adreslerinden veya portlarından gönderilen ve alınan paketlere izin verilir yada bloklanır.

Paket-filtreleme güvenlik duvarlarını ayarlamak zordur, sistem yöneticisinin güçlü bir TCP/IP ağları ve güvenlik bilgisi olmasını gerektirir. Düzgün yapılandırılmayan kurallar güvenlik açıkları ile sonuçlanabilir.

En tehlikelisi paket filtreleme kavramı bilgisinin eksikliğidir. Paket filtreleme güvenlik duvarları ‘durum bilgisini korumazlar’. Diğer bir deyişle, gelen yada giden paketlerin durum kayıtlarını tutmazlar. Buda bir pakedin geçerli görünebileceği fakat gerçekte bir saldırının parçası olabileceği anlamına gelir.

Örneğin, çoğu paket filtreleri içeriye gelen istenmeyen trafiği bloklarlar, fakat içerdeki bir hostun isteğine cevap olarak gelen bir pakete izin verilir. Eğer güvenlik duvarı dışarı giden isteklerin bir kaydını tutmuyorsa, bir paket filtresi, gerçek bir cevap ile bir saldırgan tarafından gerçek bir cevap gibi gösterilmek üzere değiştirilmiş pakedi birbirinden ayıramaz.

Durumsal paket filtreleme güvenlik duvarları IP başlık bilgisini ve paket içeriğini kontrol eder ve içerdeki host`ların haberleştiği dış hostların kaydını tutar. Örneğin bir UDP pakedi bir DNS isteğine cevap olarak geliyor göründüğünde durumsal-inceleme güvenlik duvarı bunu orjinal istekle karşılaştıracaktır. Eğer orjinal istek yoksa güvenlik duvarı pakedi bloklayacaktır.

Aynı şekilde, bir durumsal-inceleme güvenlik duvarı Web sunucusundan gelen paketlerin içerdeki bir makinadan yapılan isteğe karşılık olup olmadığınıda kontrol edebilir. Durumsuz-filtreleme güvenlik duvarları bu tip saldırıları algılayamazlar.

Netfilter IPFW`ye karşı
Eski IPFW ile Netfilter arasındaki en büyük fark Netfilter`ın durumsal-paket-inceleme içeriyor olması. Ve güvenlik duvarı kullanıcıları için büyük bir değişiklikde Netfilter`ın güvenlik duvarı kurallarının yönetimi için iptables kullanıyor olması. Sistem yöneticileri için iyi bir haber uyumluluk modülünün olması, böylece ipchains kuralları iptables ile kullanılabiliyor.

iptables ile ipchains arasında önemli farklar var. ipchains tarafından kullanılan kurallar zincirleri yerine, hedefi gösteren zincirleri içeren tablolar (tables) geldi. Hedef, bir güvenlik duvarı aksiyonunu temsil ediyor: bir pakedi reddet, yönlendir, kabul et veya logla. Tablolar ile, aynı paket için çoklu hedefler kullanabilirsiniz. Örneğin, bir pakedi loglayıp yönlendirebilir veya loglayıp reddedebilirsiniz.
Netfilter`daki bir diğer özellik ise Ağ adres çevriminin (Network Address Translation – NAT) gelişmiş kullanımı. IPFW`de olduğu gibi NAT`ı bir hedef olarak uygulamaktansa Netfilter hem gelen gemde giden NAT fonksiyonları ile daha iyi entegre olan yeni bir NAT modülü sağlıyor. Gelen NAT (Inbound NAT-INAT) tüm ağın tek bir IP adresini paylaşabilmesini sağlıyor, Gİden NAT (Destination NAT-DNAT) ağ içinden gelen paketleri direk hedefe değilde önce -örneğin proxy sunucuya- yönlendiriyor.

Netfilter ayrıca tek bir kaynaktan gelebilecek SYN paketlerinin sayısınıda sınırlayabiliyor. Böylece SYN-flood DoS saldırılarına karşı bir koruma sağlıyor. Paket filreleme güvenlik duvarlarını aşmak için bozuk TCP başlıkları kullanan gizli (stealth) taramaları (örneğin port tarama aracı nmap) algılayabiliyor.
Linux güvenlik duvarı kullanıcıları Netfilter`in durumsal-paket-inceleme fonksiyonlarını hevesle bekliyorlardı. Linux Firewalls yazarı Zeigler Netfilter ve iptables bu konudaki olumlu görüşlerini şöyle belirtiyor: ‘durum ve NAT modüllerinin sunduğu özellikler çok büyük bir kazanç ve herkes mümkün olduğunca çabuk geçiş yapacaktır.’ Fakat Zeigler aynı zamanda birde uyarıda bulunuyor: ‘Öğrenilmesi gereken çok şey var, bir iki günde yapmayı hayal etmeyin.’

Eskisini mi kullanacaksınız, yenisine mi geçecekmisiniz?
Geçtiğimiz yıllardaki yönetici fonksiyonlarının evrimini gözönünde bulundurursak, Linux güvenlik duvarları daha güvenli hale geldimi? Evet ve Hayır. Ever çünkü her yeni sürümle ve özellikle bug`lar düzeltildi. Hayır çünkü her yeni yazılım yeni riskleri ortaya çıkarır.
Case Western üniversitesi doktora yapan ve bir ağ güvenliği uzmanı olan Jose Nazario ‘Linux kernel`inin fixlediklerinden daha çok bug içerenler sunduğu uzun ve denenmiş bir tarihi vardır.’ diyor. ‘Birşeyi fixlemek isterken başka değerli bir şeyi bozuyor olmanız mümkün.’
Geçtiğimiz yıllarda Linux kernel modüllerinde birkaç ciddi güvenlik açığı bulundu. En son olarak Nisan ayında rapor edilen, Netfilter modülünün FTP trafiğini işlemesiyle ilgili olandı. FTP istemci ile sunucu arasında iki bağlantı seti gerektirdiğinden diğer protokollerden biraz farklı. Birincisi istemciden sunucuya kontrol bağlantısı, ikincisi sunucudan istemciye bilgi-transfer bağlantısı. (Tüm FTP bağlantıları bu şekilde çalışmayabilir fakat bu protokol tarafından orjinal metoddur).
 

Her yeni kernel, güvenlik duvarı yaratma ve yönetmede kullanılan araçlar için gelişmeler getiriyor.
 

Linux, evlerinde ağ kuranlardan, kendi ağlarını kuran firmalar ve ticari ürünlerinde içeren üretici firmalara kadar pek çok güvenlik duvarı inşa eden için seçilen bir işletim sistemi.

Her güvenlik cihazında olduğu gibi, bir Linux güvenlik duvarı kurduktan sonra arkanıza yaslanıp ilgisiz kalamazsınız. Güvenlik yamaları ve alarmlarını takip etmeli ve kernelinizi hep gözden geçirmeli ve güvenliği arttırmak ve saldırılardan korunmak için güncellemelisiniz.

Linux yıllar geçtikçe geliştiği gibi güvenlik duvarı yetenekleride gelişiyor. İlk Linux güvenlik duvarları paket-filtreleme kuralları yaratıp yönetmek için ipfwadmin aracını kullandı. Linux kernel 2.2 geçtiğimiz iki yılda 2.0`ın yerine geçtiğinden beri, ipchains`de ipfwadmin`in yerini aldı. Bu sene kernel 2.4`ün çıkmasıyla pek çok ticari güvenlik duvarında bulunan durumsal paket inceleme (stateful packet inspection) çözümü artık Linux`dada mevcut.

Linux ile güvenlik duvarı çözümünün 3 yüzü
Linux sistemlerdeki güvenlik duvarlarının en son 3 üretim sürümü Linux kernel`lerine (2.0,2.2,2.4 – Çift rakamlı Linux kernel minör sürüm numaraları kernel`in üretim amaçları için uygun olduğunu gösterir. Tek sayılı Linux kernel minör sürüm numaraları sadece deneysel ve geliştirme kullanımı için uygun olduğunu gösterir) karşılık gelen 3 farklı uygulaması vardır.

Tamamen olmasada 2.0 eskimeye başladı. Red Hat Linux 1999`da çıkan v5.2 sürümünden beri kernel 2.0`ı kullanmadı. Geçen sene, çoğu dağıtım kenerl 2.2 kullanıyordu ve 2.4 bu sene başlarında çıktı.

Değişen kernel sürümleri Linux güvenlik duvarı çözümü için kritik çünkü her yeni sürüm güvenlik duvarı yönetimi mekanızmasını değiştiriyor. Kernel 2.0`ın IP Firewall (IPFW) mekanızması için arabirim sağlayan ipfwadmin programı, kernel 2.2`de ipchains ile değiştirildi. Ve ipchains`in yerinide kernel 2.4`de iptables aldı.

IP paketleriyle uğraşmaktan Linux kernel sorumlu olsada, sistem yöneticisi kernel`e hangi paketleri geçireceğini, sessizce bloklayacağını yada gönderene bir hata mesajı ile bloklayacağını belirleyen kuralları yaratmalı. Tabiki bu klasik IP filtreleme güvenlik duvarı kurulumu: Güvenlik duvarı IP başlıklarını kontrol eder, değerlendirir ve filtre kuralları ile karşılaştırır.

Çoğu Linux kullanıcısı, ağ güvenlik araçları yapmada kullanan üretici firmalar dahil kernel 2.0 ile başladılar. Her yeni kernel sürümü gelişmeler ve önemli yeni özellikler getirsede, sistem yöneticileri genelde iyi çalışan Linux sistemleri güncellemeyi pek düşünmediler. Bu sebeple pek çok sistem hala kernel 2.0 çalıştırıyor çünkü işe yarıyor ve güncellemenin getireceği bozulmalar yada bölünmeler buna değmez. Ayrıca ağ güvenlik araçları kullanıcıları Linux kullandıklarını farkında bile olmayabilir yada güncelleyecek yeterlilikte olmayabilir.

Sky-NetWEB`de bir Unix sistem yöneticisi ve Bastille Linux Project`de (http://www.bastille-linux.org) koordinatör olan Jon Lasser`e göre kernel 2.0`ın ‘ipfwadmin BSD sistemlerinde mevcut olan araçların bir yansısı.’ 1997`de çıktığında kernel 2.0, Linux, BSD veya diğer Unix-tabanlı işletim sistemleri ile çalışan ağ sorumluları için mükemmel bir mükemmel bir seçim idi. IPFW için kuralları sıfırdan yazmak yerine bir sistem yöneticisi var olan BSD-tabanlı güvenlki duvarlarının kurallarını kullanabilirdi.

Ipfwadmin basit, düşük-ihtiyaç IP paket filtreleme gereksinimleri için uygun. Örnek ipfwadmin filtreleme kuralları pek çok yerde mevcut ve çoğu Linux sistem yöneticisi kolaylıkla paket filtreleme güvenlik duvarları inşa edebilirler. Ipfwadmin yüksek hızda internet bağlantıları olan ve evlerinde ağ kurmuş olanların çoğu tarafından kullanılmakta.

Kernel 2.2`nin 1999`da çıkmasıyla ipchains güvenlik duvarı çözümü için ileri atılmış bir adım olarak kabul edildi. Ek olarak ipfwadmin ile geriye uyumlu olmanın yanında, geliştirilmiş yazım, IP üzerindeki katmanlarda protokol testi ve wildcard arabirimlerde filtreleme desteği gibi yeni özellikler getirdi.

Linux Firewalls kitabının yazarı Robert Zeigler`e göre ‘ipchains optimizasyon ve filtreleme performansı konularında büyük kazanç olabilecek kullanıcı-tanımlı zincirler ekledi.’ ipchains`in dinamik olması ile ipfwadmin`den daha gelişmiş oluyor. Kurallar ‘chains’ adı verilen tablolar içinde (‘input’, ‘output’ ve ‘forward’) tutuluyor. Yeni kurallar güvenlik duvarı çalışırkan bu tabloların herbiri içinde en başa yada sona eklenebiliyor. Bu, güvenlik duvarı kurallarını günün belirli saatine göre değiştirme veya yeni bulunan tehditlere karşı koymayı mümkün kılıyor.

Ipchains`in diğer önemli bir özelliği ise ICMP alt-tip mesaj kodlarına erişebilmesi. Zeigler ‘Bu küçük birşey gibi görünebilir. Fakat bu sayede güvenlik duvarı sistemleri için önemli olan Type 3 hata kodları filtrelenebilir.’ diyor. (‘port unreachable error’ içeren bir ICMP pakedi saldırganların potansiyel olarak zayıf sistemleri bulabilmesine yardımcı oluyor).

Durumsuz Filtreleme ve Durumsal-Paket inceleme
Tekrar dizayn edilmesine karşın ipchains, ipfwadmin gibi hala bir IP paket filtreleme güvenlik duvarı. Paket filtreleleri kullanışlı fakat günümüzde pek çok enterprise-sınıfı güvenlik duvarı, daha kapsamlı bir yaklaşım olan durumsal-paket inceleme teknolojisini kullanır. Kernel 2.4 ve iptables arabirimi yeni bir mekanizma getirdi:
Netfilter, IPFW modülünün yerine geçen bir kernel modülü. IPFW gibi netfilter`da güvenlik duvarı kuralları ile bir pakete ne yapacağına karar verir. Fakat netfilter basit filtreleme yerine durumsal paket inceleme kullanır.
Bir durumsuz paket filtreleme güvenlik duvarı paketleri kabul eden, başlıklarını inceleyen ve sistem yöneticisi tarafından belirlenen kurallara göre pakedi geçirip geçirmeyeceğine karar veren bir güvenlik duvarıdır.

Her tip güvenlik duvarı için tipik yaklaşım kesin bir politika ile başlamaktır. Varsayılan olarak tüm paketlerin erişimi engellenmeli, ve sadece kurallarda izin verilmişse geçirilmelidir. Tipik olarak sadece belirli bazı TCP/IP başlıkları incelenir, böylece belirli IP adreslerinden veya portlarından gönderilen ve alınan paketlere izin verilir yada bloklanır.

Paket-filtreleme güvenlik duvarlarını ayarlamak zordur, sistem yöneticisinin güçlü bir TCP/IP ağları ve güvenlik bilgisi olmasını gerektirir. Düzgün yapılandırılmayan kurallar güvenlik açıkları ile sonuçlanabilir.

En tehlikelisi paket filtreleme kavramı bilgisinin eksikliğidir. Paket filtreleme güvenlik duvarları ‘durum bilgisini korumazlar’. Diğer bir deyişle, gelen yada giden paketlerin durum kayıtlarını tutmazlar. Buda bir pakedin geçerli görünebileceği fakat gerçekte bir saldırının parçası olabileceği anlamına gelir.

Örneğin, çoğu paket filtreleri içeriye gelen istenmeyen trafiği bloklarlar, fakat içerdeki bir hostun isteğine cevap olarak gelen bir pakete izin verilir. Eğer güvenlik duvarı dışarı giden isteklerin bir kaydını tutmuyorsa, bir paket filtresi, gerçek bir cevap ile bir saldırgan tarafından gerçek bir cevap gibi gösterilmek üzere değiştirilmiş pakedi birbirinden ayıramaz.

Durumsal paket filtreleme güvenlik duvarları IP başlık bilgisini ve paket içeriğini kontrol eder ve içerdeki host`ların haberleştiği dış hostların kaydını tutar. Örneğin bir UDP pakedi bir DNS isteğine cevap olarak geliyor göründüğünde durumsal-inceleme güvenlik duvarı bunu orjinal istekle karşılaştıracaktır. Eğer orjinal istek yoksa güvenlik duvarı pakedi bloklayacaktır.

Aynı şekilde, bir durumsal-inceleme güvenlik duvarı Web sunucusundan gelen paketlerin içerdeki bir makinadan yapılan isteğe karşılık olup olmadığınıda kontrol edebilir. Durumsuz-filtreleme güvenlik duvarları bu tip saldırıları algılayamazlar.

Netfilter IPFW`ye karşı
Eski IPFW ile Netfilter arasındaki en büyük fark Netfilter`ın durumsal-paket-inceleme içeriyor olması. Ve güvenlik duvarı kullanıcıları için büyük bir değişiklikde Netfilter`ın güvenlik duvarı kurallarının yönetimi için iptables kullanıyor olması. Sistem yöneticileri için iyi bir haber uyumluluk modülünün olması, böylece ipchains kuralları iptables ile kullanılabiliyor.

iptables ile ipchains arasında önemli farklar var. ipchains tarafından kullanılan kurallar zincirleri yerine, hedefi gösteren zincirleri içeren tablolar (tables) geldi. Hedef, bir güvenlik duvarı aksiyonunu temsil ediyor: bir pakedi reddet, yönlendir, kabul et veya logla. Tablolar ile, aynı paket için çoklu hedefler kullanabilirsiniz. Örneğin, bir pakedi loglayıp yönlendirebilir veya loglayıp reddedebilirsiniz.
Netfilter`daki bir diğer özellik ise Ağ adres çevriminin (Network Address Translation – NAT) gelişmiş kullanımı. IPFW`de olduğu gibi NAT`ı bir hedef olarak uygulamaktansa Netfilter hem gelen gemde giden NAT fonksiyonları ile daha iyi entegre olan yeni bir NAT modülü sağlıyor. Gelen NAT (Inbound NAT-INAT) tüm ağın tek bir IP adresini paylaşabilmesini sağlıyor, Gİden NAT (Destination NAT-DNAT) ağ içinden gelen paketleri direk hedefe değilde önce -örneğin proxy sunucuya- yönlendiriyor.

Netfilter ayrıca tek bir kaynaktan gelebilecek SYN paketlerinin sayısınıda sınırlayabiliyor. Böylece SYN-flood DoS saldırılarına karşı bir koruma sağlıyor. Paket filreleme güvenlik duvarlarını aşmak için bozuk TCP başlıkları kullanan gizli (stealth) taramaları (örneğin port tarama aracı nmap) algılayabiliyor.

Linux güvenlik duvarı kullanıcıları Netfilter`in durumsal-paket-inceleme fonksiyonlarını hevesle bekliyorlardı. Linux Firewalls yazarı Zeigler Netfilter ve iptables bu konudaki olumlu görüşlerini şöyle belirtiyor: ‘durum ve NAT modüllerinin sunduğu özellikler çok büyük bir kazanç ve herkes mümkün olduğunca çabuk geçiş yapacaktır.’ Fakat Zeigler aynı zamanda birde uyarıda bulunuyor: ‘Öğrenilmesi gereken çok şey var, bir iki günde yapmayı hayal etmeyin.’

Eskisini mi kullanacaksınız, yenisine mi geçecekmisiniz?
Geçtiğimiz yıllardaki yönetici fonksiyonlarının evrimini gözönünde bulundurursak, Linux güvenlik duvarları daha güvenli hale geldimi? Evet ve Hayır.

Evet çünkü her yeni sürümle ve özellikle bug`lar düzeltildi. Hayır çünkü her yeni yazılım yeni riskleri ortaya çıkarır.

Case Western üniversitesi doktora yapan ve bir ağ güvenliği uzmanı olan Jose Nazario ‘Linux kernel`inin fixlediklerinden daha çok bug içerenler sunduğu uzun ve denenmiş bir tarihi vardır.’ diyor. ‘Birşeyi fixlemek isterken başka değerli bir şeyi bozuyor olmanız mümkün.’

Geçtiğimiz yıllarda Linux kernel modüllerinde birkaç ciddi güvenlik açığı bulundu. En son olarak Nisan ayında rapor edilen, Netfilter modülünün FTP trafiğini işlemesiyle ilgili olandı. FTP istemci ile sunucu arasında iki bağlantı seti gerektirdiğinden diğer protokollerden biraz farklı. Birincisi istemciden sunucuya kontrol bağlantısı, ikincisi sunucudan istemciye bilgi-transfer bağlantısı. (Tüm FTP bağlantıları bu şekilde çalışmayabilir fakat bu protokol tarafından orjinal metoddur).

Kaynak :  : Information Security Magazine

NFS

05 May
2009

Network File System (NFS) servisi file server olarak bilinen; bir bilgisayarların bir server bilgisayar üzerindeki dizinlere erişmesini sağlayan network servisidir. NFS sayesinde bir server üzerindeki dosya ve dizinlere diğer bilgisayarlar (clients) erişebilirler.

 Konfigürasyon

 NFS servisinin konfigürasyonunda üç dosya kullanılır.

 /etc/exports

/etc/hosts.allow

/etc/hosts.deny

 /etc/exports dosyası server üzerinde paylaştırılan dizinleri belirtir:

 Sözdizimi:

 <dizin> <bilgisayar1> seçenekler  ..

 dizin: paylaştırılacak dizin.

 bilgisayar: Bilgisayar adı (fqdn) ya da IP adresi.

 Seçenekler:

 

Seçenek Açıklama
ro Dizinin read-only olarak paylaştırılmasını sağlar.
rw Dizinin read ve write olarak paylaştırılmasını sağlar.
no_root_squash Client bilgisayardaki root kullanıcı izinlerinin server üzerinde de geçerli olması.
no_subtree_check Alt dizinlere erişimde yapılan kontrollerin performans için yapılmaması.
sync Client bilgisayar üzerinde yazma (write) işleminin tamamlandığını onaylar. 

 Örnek:

 Client bilgisayarlar (paylaşımlara erişecekler):  192.168.1.1, 192.168.1.2 ve 192.168.1.3

 Server üzerindeki paylaşımlar:

  /etc/exports dosyası:

 Sözdizimi:

 <dizin>             <kimlere> <seçenekler>

 /home        *(ro,no_root_squash,no_subtree_check)

 /usr/local   192.168.1.1(ro) 192.168.1.2(ro)

/home        192.168.1.1(rw) 192.168.1.2(rw)

 Bir domain adı altında bulunan tüm bilgisayarların erişmesi için erişim yapacak bilgisayarlar yerine domain adı da kullanılabilir.

 /usr/local   *.fcholding.com

/home        192.168.1.1(rw) 192.168.1.2(rw)

 Nfs servisinin yeniden başlatılması

 Yapılan değişikliklerin hayata geçmesi için NFS servisinin yeniden başlatılması gerekir.

 # service nfs restart

 NOT: Kullanılan dağıtıma göre nfs servisinin adı farklı olabilir. Örneğin Mandriva’da nfs-server.

 # cd /etc/init.d

# nfs-server restart

 /etc/hosts.allow ve /etc/hosts.deny dosyaları

Bu iki dosya ise NFS servisini kullanacak bilgisayarların tanımlanmasını sağlar. Allow dosyasında izin verilen bilgisayarlar tanımlanır. Deny dosyasında ise erişimi istenmeyen bilgisayarlar tanımlanır.

 Client Bilgisayarın Konfigürasyonu

Server üzerinde oluşturulan paylaşımlara erişmek istene client bilgisayarların bu dizinleri mount etmesi gerekir.

 Örnek:

 # mkdir /mnt/net1

# mount -t nfs 192.168.1.200:/home /mnt/net1

 Mount işleminin sürekliliğini sağlamak için yine mount tanımlamaları /etc/fstab dosyasına eklenir.

 92.168.1.200:/home /mnt/net1   nf         rw         0          0

Linux Dosya ve Dizin Yönetimi

21 Nis
2009

Linux işletim sisteminde herşey “file” (dosya) ve “directory” (dizin) yapısı ile düzenlenmiştir. Bu nedenle sistemin işleyişinde ve konfigürasyonunda belli dizinler ve dosyalar kullanılır.

Dizin sistemi / işaretiyle belirtilen root (kök) ile başlar. Root dizin içinde kurulumun ardından şekillenen çok sayıda alt dizin yer alır.

Linux’ta Dosya Sistemi Hiyerarşisi

Linux, / (root) klasöründen başlayarak, boot işlemindeki önem sırasına göre klasörleri düzenler.

Aklınıza /(slash) işareti niye kullanılıyor diye bir soru gelebilir; bu Linux’un Unix geleneğini takip etmesindendir.

Linux directory (dizin yapısı)

Dosya İzinleri (Permissions)

16 Nis
2009

Linux işletim sisteminde; kullanıcı hesaplarıyla kullanıcıların oturum açmasını düzenledikten sonra dosya ve dizinlere erişimi için gerekli izinlerin düzenlenmesi gerekir.

Bir dosya ve dizin ilk yaratıldığında bazı iznler varsayım olarak atanır. Bu izinler genellikle okuma (read) ve çalıştırma (execute) şeklindedir.

  Read Write Execute
User

4

2

1

Group

4

2

1

Linux Dosya İzinleri:

  • Read (r) – Okuma
  • Write (w) – Yazma
  • Execute (x) – Çalıştırma

İzinler üç tür kullanıcı için verilir :

  • Dosyanın sahibi (owner)
  • Sahibinin ait olduğu grup
  • Diğer kullanıcılar

Örnek :

deneme.txt dosyası için : rwx  r–  r–

rwx : sahibi için read, write, execute izinleri

r– : grubu için read izni

r– : diğer kullanıcılar için read izni 

Sayısal Gösterim

İzinlerin düzenlenmesinde r, w, x izinleri için sayısal dğerler de kullanılır.

Sayısal

Metin Olarak

Anlamı

0

İzin yok

1

–x

Execute

2

-w-

Write

3

-wx

Write ve Execute

4

r–

Read

5

r-x

Read ve Execute

6

rw-

Read ve Write

7

rwx

Tüm İzinler

 

Örnek :

deneme.txt dosyası için : rwx r– r–

deneme.txt dosyası için :  7    4     4

  • rwx : 7
  • r– : 4
  • r– : 4

chmod komutu

chmod komutu dosya izinlerinin değiştirilmesini sağlar.

#chmod 777 dosya

#chmod 744 dosya gibi

Bu makalemizde Linux’teki izin sistemini ve hangi izne kimin sahip olduğuna değinmeye çalıştım.Linux ile ilgili konulara mümkün olduğunca fazla değinmeye çalışacağım.

LİNUX İŞLETİM SİSTEMİNDE GÜVENLİK

31 Mar
2009

Bilgisayar ağları ve özellikle İnternet, kullanıcılara büyük olanaklar verirken ciddi güvenlik sorunlarını da beraberinde getirdi. Ağa bağlı bilgisayarlarda çalışanların bu güvenlik sorunları konusunda bilgili olmaları zorunlu hale geldi. Ancak güvenlik ile kullanım kolaylığının çoğu zaman birbirleriyle çelişmesi ve kullanıcıların seçimlerini genellikle kullanım kolaylığından yana kullanmaları güvenlik önlemlerinin yerleşmesini engelledi. Bu bölüm, akademik ortamlarda yaygın olarak kullanılan Linux işletim sisteminde sistem sorumlularına güvenlik için yapabilecekleri konusunda yol göstermek ve kullanıcılara tehlikeleri tanıtmak amacıyla hazırlanmıştır. 

ŞİFRELER VE ŞİFRE SEÇİMİ
Çok kullanıcılı işletim sistemlerinde kullanıcının kimliğinin belirlenmesi büyük önem taşır. Hem sistemi kullanmaya yetkisi olmayan kişilerin sisteme girmelerinin engellenmesi, hem de sistemdeki kullanıcıların birbirlerinden ayırt edilebilmeleri için, her kullanıcıya bir şifre verilir ve sisteme giriş başta olmak üzere tüm kritik işlemlerde kullanıcıya şifresi sorulur. Şifreler, diğer kullanıcı bilgileriyle birlikte, /etc/passwd veya /etc/shadow dosyasında tutulur.
Bazı uygulamaların şifre dosyasının bazı alanlarına erişmeleri gerektiğinden şifre dosyası, sistemdeki bütün kullanıcılar tarafından okunabilecek bir dosya olmalıdır. Bu nedenle şifreler bu dosyaya açık halde değil, şifrelenerek yazılırlar.
Şifre yönteminin güvenilirliği, sistemdeki kullanıcıların şifre seçiminde gösterdikleri özene bağlıdır. Kolay akılda kalacak şifreler, çoğu zaman kolay tahmin edilebilir. Buna karşılık, zor tahmin edilebilen şifreler kullanıcıların akıllarında kalmayabileceklerinden bir yere yazmalarına ve böylece yeni tehlikeler oluşturmalarına zemin hazırlayabilir.
Şu tip şifreler kolay tahmin edilebilen şifreler sayılmaktadır:
1. Kullanıcı ile yakınlığı olan kişilerinkiler (kendisi, ailesi, arkadaşları, yakınları) başta olmak üzere bütün erkek ve kadın isimleri
2. Doğum tarihleri
3. Kullanıcı ile ilgili herhangi bir bilgi (kullanıcı adı, oda numarası, telefon numarası, arabasının plaka numarası, sosyal güvenlik numarası)
4. Klavyede belli bir düzene göre ardarda gelen harflerden oluşan şifreler (örneğin qwerty veya abcdefg gibi)
5. Anlamlı bir sözcük (bilgisayar terimleri, yer isimleri)
6. Yanlızca küçük (ya da yanlızca büyük) harflerden oluşan şifreler
7. Yukarıdakilerden birinin başına ya da sonuna bir rakam eklenerek oluşturulan şifreler
8. Yukarıdakilerin ters yazılışları

İyi bir şifre üretmek için önerilen iki yöntem vardır:

1.İki sözcüğün aralarına bir rakam ya da noktalama işareti konarak birleştirilmesi
2.Seçilen bir cümlenin sözcüklerinin baş harfleri

Tehlikeler
Şifre dosyasına erişimi olmayan bir saldırgan, hedef seçtiği bir kullanıcının şifresini deneyerek bulmak zorundadır. Olası bütün şifrelerin çokluğu göz önüne alınırsa bu tip bir saldırının etkisiz olacağı düşünülebilir. Ancak, çoğu sistemde, şifresi boş olan, kullanıcı adıyla aynı olan ya da sistem sorumlusunun geçici olarak verdiği basit şifreyi değiştir(e) meyen kullanıcıların sayısı azımsanamayacak düzeydedir. Bir tek kullanıcının bile şifresinin elde edilmesi sisteme giriş için yeterli olduğundan güvenlik açısından büyük sorunlar yaratabilir.
Saldırgan, şifre dosyasının bir kopyasını alabilirse işi oldukça kolaylaşır. Hem çok daha hızlı çalışabilir, hem de hedef sistemin sorumlusunun dikkatini çekmek tehlikesinden kurtulur. Bir saldırganın şifre dosyasını eline geçirmesi birkaç şekilde mümkün olabilir. Örneğin bir kullanıcının şifresini elde ederek sisteme girer ve dosyayı alır, bazı programlardaki hatalardan yararlanarak sisteme girmeden dosyayı elde edebilir, sistemdeki bir kullanıcı şifre dosyasını saldırgana gönderebilir veya saldırgan, sistemdeki kullanıcılardan biridir.
/etc/passwd dosyasındaki şifreleri kırmaya çalışan çeşitli yazılımlar bulunmaktadır. Bunların en etkililerinden ve en yaygın kullanılanlarından biri Crack isimli programdır. Alec E. Muffett tarafından geliştirilen Crack, sözlük saldırısı yöntemini kullanan bir şifre kırma programıdır. Giriş olarak verilen sözlüklerdeki sözcükleri şifre dosyasındaki ’salt’ bilgileriyle şifreleyerek şifre olarak kullanılıp kullanılmadıklarına bakar. Ayrıca sistemin kullanıcı bilgilerinden de olası şifreler üretmeye çalışır.
Önlemler
Şifre güvenliğinin en önemli şartı, başta sistem sorumluları olmak üzere, bütün kullanıcıların iyi şifre seçmenin önemini kavramalarıdır. Herkes, şifresinin yetkisiz birinin eline geçmesi durumunda kendisi ve diğer kullanıcılar açısından oluşan tehlikeleri anlamalıdır. Nelerin kötü şifre olduğu ve nasıl iyi şifre seçilebileceği konusunda kullanıcılar eğitilmelidir. Bu koşul gerçekleşmedikçe aşağıda sözü geçen önlemlerin çoğu da başarısız olacaktır.
1. Şifre seçiminin kullanıcıya bırakılmaması : Şifreler, sistem sorumlusu tarafından ya da rasgele şifre üreten bir program tarafından seçilerek verilir ve kullanıcılara şifrelerini değiştirme hakkı tanınmaz. Bu yöntem, iyi şifreler üretmekle birlikte, kullanıcıların akıllarında tutamayacakları şifreleri bir yere yazmalarına neden olur.
2. Şifre seçiminin kısıtlanması : Kullanıcının kötü olduğu bilinen bir şifre seçmesi engellenir.
3. Şifre dosyasının sistem sorumlusu tarafından kırılması : Sistem sorumlusu, zaman zaman, şifre dosyasını Crack tipi bir program ile tarayarak zayıf şifreleri arar. Bulduğu zayıf şifreli kullanıcıların hesaplarını kilitler.
4. Şifrelerin geçerlilik sürelerinin kısıtlanması : Yeterince sık değiştirilmeyen şifreler, kuvvetli de olsalar, saldırgana aramak için daha uzun zaman tanıdıklarından tehlike yaratırlar. Bu nedenle, şifrelerin belli bir süre sonunda geçerliliklerini yitirerek yeni bir şifre verilmesi zorunluluğu getirilebilir.
5. Gölge şifreler (shadow passwords) : Şifre dosyasının bazı alanlarının herkes tarafından okunabilir olması gerekse de, şifre alanının herkes tarafından okunabilir olması gerekmez. Bu nedenle, şifrelenmiş şifreler ancak sistem sorumlusunun okuyabileceği bir dosyaya alınabilir. Şifre dosyasındaki şifre alanına herhangi bir bilgi yazılırken (kullanıcı adı, * işareti gibi), gölge dosyasına (/etc/shadow) şifrelenmiş şifreler konur.
John F. Hough II tarafından geliştirilen Shadow Password Suite, sistemdeki şifre güvenliğini artırmaya yönelik bir pakettir. Gölge şifrelerin yanısıra, daha uzun şifreleri (16 karakter) desteklemesi ve şifrelerin geçerlilik sürelerini kısıtlaması nedeniyle sistem sorumlularının çokça kullandığı araçlar arasında yer alır.