Web Sunucunuzu Saldırılara Karşı Koruyun

M_T_Ç

Katılımcı Üye
5 Haz 2009
591
0
ADIYAMAN
Web Sunucunuzu Saldırılara Karşı Koruyun

Genel protokolleri kullanarak gerçekleşen sızma işlemlerinin tespiti için NIDS sistemleri yeterlidir.Fakat web uygulamalarının karmaşıklığı ve maruz olabileceği birçok değişik saldırıdan dolayı yanlış uyarı mesajları almadan web saldırılarının tespiti oldukça zordur.Bu özellikle SSL kullanan web uygulamaları için geçerlidir,çünkü NIDS in bu protokolde gerçekleşen trafiği şifresiz olarak okuması oldukça zordur.Bu problemleri aşmanın bir yoluda saldırı tespit sistemini doğrudan web sunucusunun üzerine gömmektir.Bu işlem tam olarak Apache ( https://tik.lat/JSeD0 ) sunucusu üzerinde çalışan mod_security (http://www.mod_security.org) uygulamasının yaptığı iştir.
Mod_security ismindende anlaşılacağı gibi Apache web sunucusunun güvenliğini istemcinin gerçekleştirdiği çeşitli istekler için çeşitli filtreler uygulayarak çalışan bir Apache modülüdür,mod_security ayrıca gelen isteklerin normalleştirilmesini sağlayan birçok düzgünlük kontrollerini yapar.Düzgün bir şekilde ayarlanmış süzgeç kuralları ile mod_security dizin gezinimi,siteler arası betik yazma saldırıları ,SQL enjeksiyonları ve hafıza taşırma açıklıklarını engeller.
Mod_security nin kurulması için kaynak kodu indirilir ve bir dizine açılır.Eğer DSO olarak kurulması istenirse apxs programından yararlanılır.İlk başta kaynak kodunda sizin kullandığınız Apache dizinine girilir ve daha sonra şu komut çalıştırılır.
# apxs -cia mod_security.c
Bu komut mod_security i derleyerek Apache programının başlangıcı sırasında bu modülü de başlangıcına eklemesi sağlanacaktır.Eğer mod_security modülünü statik olarak derlemek istiyorsanız Apache yi tekrar derlemeniz gerekmektedir.Apache 1.x sürümlerini kullanıyorsanız mod_security programını mod_security.c dosyasını src/modules/extra dizinine kopyalayarak ve apache yapılandırma betiğine şu satırları vermeniz yeterli olur.
--activate-modules=src/modules/extra/mod_security
-- enable-module=securitymod security programı kurulduğuna göre artık aktif hale getirebilirsiniz.Bunu httpd.conf dosyasına şu satırları ekleyerek yapabilirsiniz.
<IfModule mod_security.c>
SecFilterEngine On
</IfModule> Böylece web sunucunuza yapılan tüm isteklerin normalleştirme işlemi mod_security tarafından yapılmaya başlanacaktır.Ayrıca SecFilterEngine değişkenine DynamicOnly parametresini vererek sadece dinamik içeriğin mod_security tarafından işlenmesi sağlanabilir.mod_security aktif hale getirildikten sonra web sunucunuza gelen bütün trafiği kullanıcı tarafından belirtilmiş filtrelere göndermeden önce kendi üzerine alacak bu trafik üzerinde birçok kontrol işlemleri gerçekleştirecek ve en sonunda bu isteğin kabul edilip edilmeyeceğine karar verecektir.Bu normalleştirme kontrolleri sırasında mod_security programı birçok zararlı karakterleri normal hale getirecektir.Mesela // ve /./ karakterleri / ne ,Windows ta \ karakteri / karakterine dönüştürülecektir.Ek olarak URL kodlanmış karakterlerin kodları çözülecektir.Bütün bunlara ek olarak mod_security POST yöntemi ile gönderilen isteklerin içine bakacak ve bu istekler içindeki URL kodlamasın ve evrensel kodlamaların geçerliliğini denetleyecektir.
Bu satırları etkinleştirmek için şu satırlar httpd.conf dosyasına eklenir:
SecFilterScanPOST On
SecFilterCheckURLEncoding On
SecFilterCheckUnicodeEncoding On URL kodlamaları ile % karakteri ile ön eklenmiş onaltılık sayı (0-9 ve A-F arası karakterlerden oluşur) düzenine dönüştürülmüş haldeki isteklerin yapılmasına izin verir.URL kodlama işinin doğrulanması aktif hale getirildiğinde mod_security URL kodlama yapılmış karakterlerin onaltılık sayı düzeni dışında gönderilmemesini sağlar.Evrensel kod doğrulaması işlemi sırasında gelen isteklerin evrensel kodlama dışına çıkmaması garanti altına alınmış olur.Evrensel kodlama işlemi işletim sisteminiz bu kodlamayı destekliyor ve uygulamalarınız bu kodlamayı kullanıyorsa yararlı olur.
Hafıza taşırma açıklıklarından sakınmak için istekler içinde gelen karakterlerin hangi byte aralığında gelmesi gerektiği de belirtilir.Örnek olarak sadece basılabilir karakterlerin işlenmesini sağlamak için httpd.conf dosyasına şu satırlar eklenir:
SecFilterForceByteRange 32 126
Kullanıcı tarafından tanımlanmış filtreler SecFilter veya SecFilterSelective anahtar kelimeleri ile aktif hale getirilir.SecFilter ile sorgu içindeki karakterlerin taranması sağlanır.SecFilterSelective kelimesi ile web sunucu içindeki değişkenlerin taranması sağlanır.
Aşağıdaki satırlar ile bazı saldırıların engellenmesi sağlanır.
Bu satır ../ karakterini içeren isteklerin yasaklanması sağlanır:
SecFilter “\ .\ ./”Her ne kadar web sunucu ../ karakterlerini doğru olarak yorumlayıp üst dizine çıkma isteklerini değerlendirmese de web sunucu üzerindeki uygulamalar veya betikler buna izin verebilir.Bu kural ile bu istekler işlenmeden önce reddedilmiş olur.
Siteler arası betik yazma (XSS) saldırıları ile varolan sayfa içine bu sayfada olmayan HTML veya JavaScript komutları eklenip,kullanıcının gezgininin bunu çalıştırması sağlanır.Bu saldırılar ile kullanıcının oturum çerezleri (cookie) okunup,kullanıcı bilgileri üzerinde tam hak sağlanır.Bu saldırılar mod_security de JavaScript betiklerinin tamamen reddedilmesi ile engellenebilir:^3
JavaScript lerine izin verilmemesi için şöyle bir kural kullanılır:
SecFilter “<[ [ :space:] ] *script”Ayrıca HTML i ise şu şekilde yasaklayabilirsiniz:
Secfilter “<(.I \n) + >”SQL enjeksiyon saldırıları XSS saldırılarına benzer fakat saldırgan SQL sorguları içindeki bir metini,saldırganın istediği bir sorgunun çalıştırılması sağlanacak şekilde değiştirir.
SQL enjeksiyon saldırılarından kurtulmak için şu kurallar eklenir.:
SecFilter “delete [[:space:]] +from”
SecFilter “insert [[:space:]] +into”
SecFilter “select.+from”Aşağıdaki satır sessionid adı verilen bir çerezin için SQL enjeksiyonunun yapılmasını engeller.
SecFilterSelective COOKIE_sessionid “!^( I [0-9]{1,9}Ş” Eğer sesiondid çerezi mevcut ise bu çerezin sadece dokuz karakterden oluşan numaralardan olması durumunda işlenmesi sağlanır.
Aşağıdaki satır ile yapılan her istek içinde HTTP_USER_AGENT ve HTTP_HOST başlıklarının bulunması halinde isteğin yerine getirilmesi sağlanır.
SecFilterSelective “HTTP_USER_AGENT I HTTP_HOST” “^Ş”Birden fazla değişkeni aralarına karakteri koyarak aynı satırda kullanabilirsiniz.Saldırganlar genelde sunucu hakkında bilgi sahibi olmak için telnet gibi basit programları kullanırlar.Bu programlar tarayıcıların gönderdiği bazı başlıkları göndermez.Bu tarz bir istek reddedilebilir veya kayıt altına alınabilir.
Bu satır ile dosya gönderilmesi engellenmiş olur:
SecFilterSelective “HTTP_CONTENT_TYPE” multipart/form-dataBöylece dosya gönderimi sırasında kullanılan içerik tipine bakılarak yapılan istek reddedilebilir.
Aşağıdaki satır Accept başlığı olmayan isteklerin kayıt altına alınmasını sağlar.Bu kayıt altına alınan istekler daha sonra incelenebilir.
SecFilterSelective “HTTP_ACCEPT” “^Ş” log,pass
Elle yapılan isteklerde bazı başlık bilgilerinin olmadığı daha önceden söylenmişti.Bu başlıklara Keep-Alive başlığı da örnek verilebilir.Üsteki satırda dikkat edilirse log ve pass anahtar kelimeleri kullanıldı.Bu kural ile istenen karakterler ile karşılaşınca buna izin verilir ve bu olayın kaydı tutulur.Eğer yapılacak hareket tanımlanamaz ise öntanımlı hareket uygulanır.Bu öntanımlı hareket şu şekilde belirtilir.
SecFilterDefaultAction “deny,log,status:500”Üstteki şekilde bir öntanımlı hareket tanımlanırsa web sunucu belirtilen filtreye uyan istekleri reddedip,bu olayın bir kaydını tutar.Ayrıca kullanıcıyı http 500 sayfasına yönlendirir.Bu hata kodu sunucuda olan bir hatanın gerçekleştiği mesajdır.Allow hareketi pass hareketine benzer fakat bundan sonra başka filtrelerin uygulanmasını engelleyerek direk kullanıcıya izin verilmesi sağlanır.Redirect ile istemci istenen bir sayfaya gönderilir.Exec ile sunucu tarafında bir betiğin çalıştırılması sağlanır.Exec ile birden fazla kural VE operatörü ile birleştirilir.
Filtrelemeye ek olarak mod_security programı sunucuya gönderilen bütün isteklerin izlenmesini sağlayan ve bu isteklerin bir dosyaya yazılmasını sağlayan denetim işlemini gerçekleştirmesini de gerçekleştirebilir.Denetimi açmak için httpd.conf dosyasına şu satırlar eklenir:
SecAuditEngine On
SecAuditLog logs/audit_log
Bu işlem sunucuya gönderilen tüm isteklerin kayıt altında tutulmasını sağlar.Bunun bir sonucu olarak kayıt dosyası hızla şişer.Sadece bir filtreye uyan isteklerin kaydedilmesi için SecAuditEngine RelevantOnly kullanılır.Ayrıca DynamicOrRelevant kullanılarak sadece dinamik sayfaların kaydı tutulması sağlanır.
Apache de mod_security i belirli bir dizin altındaki dosyalar için aktif hale getirebilirsiniz.Bunun için <................................> direktifi altında mod_security aktif hale getirilir.
mod_security web uygulamalarınızın güvenliğinin sağlanması için oldukça başarılı bir araçtır.Fakat web uygulamalarınızı yazarken gerekli olan dikkatin mutlaka sağlanması gerekir.
ALINTI

1 TEŞEKKÜR YETER :)
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.