ancak bu hafta içinde surekli msn den ve ticketlardan bize sunucu guvenliği hakkında sorular geliyor bizde yetismekte biraz sıkıntı yasıyoruz onun için arkadaslar Burada Size Sunucu Guvenliği Hakkında Biraz Bilgi Vereceğim
× Sitenizin ftp sifreni kesinlikle sadece harf veya rakalardan olusan bir sifre olarak belirlemeyin.örnegin sadece " bilomemo " gibi bir sifre cabuk kirirabiLir bir niteliktedir ancak " b12eh34n54n46de " kirilmasi daha zor hatta imkansizdir. Ftp sifrenizi harf ve rakamlardan olusan bir kombinasyondan seciniz.
× Sitenizin guvenligin de en önemli noktalardan biriside hosting firmanizdir." Gece kondu" diye tabir edilen firmalardan hosting almayiniz.Cunku o hostinfin ele gecirilmesi durumunda sizin sitenizde zarar görebilir.Tabi kaliteli firmalar da fiyatlar yuksektir ama unutulmamalidir ki Ucuzdur vardir illeti , pahalidir vardir kerameti sözu gibi..
× Domain ( alan adi ) kayitlarinizi kesinlikle kendiniz yapiniz.Firmanin sizi dolandirmasi gibi durumLarda en azindan domaininiz sizde kalir.Eger hostin? firmasindan alirsaniz bile kesinlikle domaininiz sifresini alin ve ilk maddedeki gibi karisik bir sifre kuLLaniniz.
× Sitenizde bazi hazir asp,php,cgi scriptleri kullaniyorsaniz db ( database ) adini kesinlikle degistirin.
ornegin Snitz Forum uygulamasinda db adi " snitz_forum_base.mdb " Siz bunu 12312124master.mdb" olarak degistirin.Her ne kdr server sided ( sunucu tarafli ) diLLerde db downLoad ediLemesede siz önleminizi alin.
× Kullandiginiz asp,php,cgi scriptlerine dikkat edin.Bende sitemde bazi asp scriptleri kullaniyordum ancak bir ara kodLara söyle bir baktigimda 2.cil bir admin var oLdugunu fark ettim. scripti yapan arkada$ aklinca scriptinde acik buLundurmus...Mumkun oLdugunca böyle seylere dikkat edin. Böyle bir durumda masum bir uygulamadan sitenize girilmesi kötu sonucLar dogurabiLir.
× Cok önemli olan bilgiLerinin web serverinizde tutuyorsaniz mutlaka firmanizla görusup sifre dizinler kullanin.Önemli bilgilerinizin 3. sahislarin eline gecmesi durumunda kötu sonuclar olusabilir. Eger hostin? firmaniz sifre klasörlere izin vermiyorsa bir asp , php sifreleme scripti ile koruma kurmaya calisin.
× Sitenizin webden yönetim paneli varsa bu sifreyide zor bir sifre secin zira brute force yontemi baya yaygin bir hal aldi.
× Sunucunuzun web server uygulamalarini surekli guncel tutmaya özen gosterin cunku gun gectikce sistemlerde aciklar bulunmak ve bunlar affedilmez sonuclara yol acmakta.Eger bir hosting firmasindan host kullaniyorsaniz firmaniza bu tur konuLarla ilgili mail atiniz.Tabi hic bir yazilim hic bir zaman kusursuz olamaz ama en azindan bug`i bulunana kadar guvenlidir.
× Baskalari tarafindan size gonderilen bazi asp ,php vs vs scriptleri sunucunuza kesinlikle yuklemeyik.Mesela bir asp scripti sunucunuzdaki tum dosyalara silme , duzenleme vs vs gibi isLemle yaptirma olanagi saglayabiliyor.
× Ftp sunucunuzda anomizer logine kesinlikle izin vermeyiniz.Ozellikle WinNT yada Win2000 sunucu kullaniyorsaniz.
× Ftp sunucunuzda cok iyi tanimadiginiz kisilere user ( kullanici ) eklemeyiniz.Cunku guvenlik sorunlari nedeniyle erisim verdiginiz kLasörun bir ust seviyesine erisim saglanabilir ve dosyalariniz silinme tehlikesiyle karsi karsiya gelebilir.
× Cafelerden ve kendi makinaniz disindaki pcLerden ftpnize vs vs seylerinize girmyiniz.Cunku o pcde keylogger gibi uygulamalar bulunabilir ve sifreleriniz siz istemediginiz halde 3.sahislarin eline gecebilir.Ozellike CuteFTP programi ile baska PClerden kesinlikle hostunuza baglanmayiniz.Cunku CuteFTP ftp sifrelerini tutuyor ve sizden sonra programi kullanan sahis rahatlikla hostunuza girebilir.
× Sitenizdeki forum vs vs uygulamalarin sifrelerini ve sitenizin sifrelerini farkli seciniz.Size söyle örnek vereyim.Su cok bilinen "snitz forum"larda acik ile eglence olsun diye bir foruma daldim sonra sitenin adini username olarak forumdaki passida pass olarak girdim ve birde baktim ki ftp bagLandi .Bu yuzden sitenizin ustundeki uygulamalarin sifrelerini farkli seciniz.
× Php nuke ve post nuke gibi uygulamalarda verilen CHMOD lari tam olarak uygulayin cunku daha sonradan guvenlik sorunlari olusacaktir CHMOD sunucularda yazma , okuma vs vs gibi oznitelikler atar.
Bu kadar önLemi tam anLamiyla uyguladiktan sonra zaten sunucunuz yeteri kadar guvenli hal alacaktir..
SUNUCU LİNUX İSE :
Merhaba arkadaşlar;
Linux sunucularda genelde hack girişimleri ufak kodcuklardan oluşan list path’ler ile yapılmaktadır.Yani zamanında zehir nasıl asp de dizinler arası görüntüleme yazma işlemleri yapıyorsa linuxtada php olan r57,c99 gibi bir çok shell adı verilen kod parçacıkları vardır.Bu kodcuklar atıldıkları sunucuda safe mod durumunu gösterir ve kullanıcı komutuna göre dizinler arası gezinme yapar şimdi ise bizim amacımız bu list path scriptini engellemek.
Linux sunucularda php.ini isminde bir dosya mevcuttur bu dosyamızda belirli düzenlemeleri yaparsak sunucumuz azda olsa güvenli hale gelir ancak kesinlikle güvenlidir diyemeyiz en güvenli sunucu fişi çekik sunucudur
“/usr/local/Zend/etc/” veya “/usr/local/lib/” dizinler altında gördüğümüz php.ini dosyamızı acıyoruz.
“disable_functions” la sunucu üzerine çalışan birçok değişik scriptin çalışmasını engelleyebilirsiniz engellecek genel fonksiyonlar şunlardır;
disable_functions = foreach, glob, openbasedir, posix_getpwuid, f_open, system,dl, array_compare, array_user_key_compare, passthru, cat, exec, popen, proc_close, proc_get_status, proc_nice, proc_open, escapeshellcmd, escapeshellarg, show_source, posix_mkfifo, ini_restore, mysql_list_dbs, get_current_user, getmyuid, pconnect, link, symlink, fin, passthruexec, fileread, shell_exec, pcntl_exec, ini_alter, parse_ini_file, leak, apache_child_terminate, chown, posix_kill, posix_setpgid, posix_setsid, posix_setuid, proc_terminate, syslog, allow_url_fopen, fpassthru, execute, shell, curl_exec, chgrp, stream_select, passthru, socket_select, socket_create, socket_create_listen, socket_create_pair, socket_listen, socket_accept, socket_bind, socket_strerror, pcntl_fork, pcntl_signal, pcntl_waitpid, pcntl_wexitstatus, pcntl_wifexited, pcntl_wifsignaled, pcntl_wifstopped, pcntl_wstopsig, pcntl_wtermsig, openlog, apache_get_modules, apache_get_version, apache_getenv, apache_note, apache_setenv, virtual
“register_globals” (Güvenlik ve Performans)
php.ini dosyasında bulunan “post” “get” ile gönderilen değerlere kullanıcı adlarıyla ulaşılıp ulaşılamayacağını belirtir. Session, cookie değerlerini kendi adıyla tanımlayarak birer değişken olmasına neden olur. “Off” olarak ayarlanırsa bu gibi değerlere kendi tanımladığı şekilde ulaşılamaz.
Önerilen:
CODE:
1.
register_globals = off
————————-
“allow_url_fopen” (Güvenlik)
“allow_url_fopen” default olarak “açık” şeklinde gelir ve bunun “on” açık olması “file_get_contents()”, “include()”, “require()” fonksiyonlar uzaktaki dosyaları da işlemesine olanak tanır. Bunlara verilen bilgiler hiçbir kontrolden geçirilmezse kritik güvenlik açıklarını sebep olur.
Önerilen:
CODE:
1.
allow_url_fopen = off
Evet şimdi can alıcı noktalardan birindeyiz.Remote file include olayına kökünden çözüm kod yazarken nekadar hata yapsakta dışarıdan script çalıştıramayacağız.Bu ayarı yapınca php scriptlerdeki döviz kuru havadurumu gibi scriptlerdede sorun oluşacaktır.
Bunun için ” allow_url_include = off ”
yapıyoruz..
“open_basedir” (Güvenlik)
Burada belirttiğiniz bir dizin haricindeki dosyaları veya klasörleri görmeleri olanaksızdır yani sitenizde sadece dosyalar dizininin görüntülenmesini istiyorsanız böyle yapılır
CODE:
1.
/home/vhosts/site.com/public_html/dosyalar/
veya hem dosyalar hem de resimlerin bulunduğu yerin gözükmesi için de böyle
CODE:
1.
/home/vhosts/site.com/public_html/resimler:/home/vhosts/site.com/public_html/dosyalar/
bunlar haricindeki yerlerin görünmesi imkansızdır.
Önerilen:
CODE:
1.
open_basedir = /home/vhosts/site.com/public_html/resimler:/home/vhosts/site.com/public_html/dosyalar/
/resimler ve /dosyalar yazan yere görünmesini istediğiniz dizinleri belirtin.
————————-
“safe_mode_exec_dir” (Güvenlik)
Safe Mode açıkken bunu yaparsanız sadece belirttiğiniz dizinde işlem yapılmasına izin verirsiniz. Safe Mode kapalıyken burada belirttiğiniz dizinlerin dışında hiçbir dizinde işlem yapılamaz. “/home/vhosts/site.com/public_html/” yazan yere kendi dizininizi yazabilirsiniz. Böylece, diyelim “/etc” v.s dizininden herhangi birşey çalıştırmasına izin vermezsiniz.
Önerilen:
CODE:
1.
safe_mode_exec_dir = “/home/vhosts/site.com/public_html/”
“Safe Mode” yani “Güvenli Mod” açıkken yapılması tavsiye edilmez. Çünkü “safe mode” burada belirttiğiniz dizinde etkisiz kalacaktır. Güvenli Mod’un açık olması o dizinde işe yaramayacaktır. Güvenlik için, “Safe Mod” yani “Güvenli Mod” “off” kapalıyken kullanılması daha uygundur.
————————-
“aspi_tags” (Güvenlik)
ASP Style < % % > taglarına izin verilip verilmeyeceği belirlenir, kapalı duruma getirilmesi önerilir.
Önerilen:
CODE:
1.
asp_tags = Off
————————-
“session.hash_function” (Güvenlik)
Oturumlar için Hash Fonksiyonu
0: MD5 (128 bits)
1: SHA-1 (160 bits)
Önerilen:
CODE:
1.
session.hash_function = 0
————————-
“session.hash_bits_per_character” (Güvenlik)
Hash çevirirken her karakterde kaç bit saklansın
4 bits: 0-9, a-f
5 bits: 0-9, a-v
6 bits: 0-9, a-z, A-Z, “-”, “,”
Önerilen:
CODE:
1.
session.hash_bits_per_character = 5
————————-
“expose_php” (Güvenlik)
“expose_php” açık ise kapalı yapılması önerilir. Aksi takdirde PHP ile yaptığınız herşeyde sunucu tarafından PHP sürümü gibi bilgiler gösterilir. Hackerlar hatta Lamerlar bu bilgileri severler. Bunları engellemek için “off” konumuna getiriniz.
Önerilen:
CODE:
1.
expose_php = Off
————————-
“html_errors” (Güvenlik)
Bu değerin açık olması durumunda PHP tıklanabilir hata mesajları üretecektir. Kapalı olması güvenlik için önerilir.
Önerilen:
CODE:
1.
html_errors = off
————————-
“max_execution_time” (Güvenlik)
Scriptinizi maksimum uygulamayı yürütme zamanı mesela kullanıcı bir linke tıkladı ve bu linkin açılması belirtilen saniyeden fazla olursa sayfa sitenizin serverda bulunduğu tam yolu göstererek hata verir. Bu hataların gözükmesi güvenlik açısından sakıncalıdır. 300 saniye yazan yeri istediğiniz zaman ile değiştirebilirsiniz.
Önerilen:
CODE:
1.
max_execution_time = 300
————————-
“max_input_time” (Güvenlik)
Scriptinizin aynı şekilde bir dataya ulaşmak için istek yolladığında maksimum geçen zaman
Önerilen:
CODE:
1.
max_input_time = 300
————————-
“ServerSignature” (Güvenlik ve Performans)
“ServerSignature” sitenizde bulunmayan bir dosyanın bakılması durumunda bu sayfanın altında serverla ilgili bir bilgi yer alır ve bu da performansı düşürür ayrıca kötü niyetli kişiler serverla ilgili bir bilgi öğrenmiş olurlar.
Önerilen:
CODE:
1.
ServerSignature = Off
————————-
“UseCanonicalName” (Performans)
Bu ayarın açık olması Apache self-referencing URL oluşturduğunda Server ismi ve porttan oluşan bir çözülmüş isim kullanır.
Önerilen:
CODE:
1.
UseCanonicalName = Off
————————-
“HostnameLookups” (Performans)
“HostnameLookups” açık olması performansın düşmesine neden olur. IP numarası DNS sunucusundan bakılarak adres öğrenilir buda performansı düşürür.
Önerilen:
CODE:
1.
HostnameLookups = Off
————————-
“ExtendedStatus” (Performans)
Serverın durumunu öğrenmek için server-status kullanılıyorsa Apache her an bu işlemcinin çağrılabileceğini beklediği için hazır bekler ve her an sistem saatini öğrenmesi gerekir bu da performansı düşürür.
Önerilen:
CODE:
1.
ExtendedStatus = off
————————-
“register_long_arrays” (Güvenlik ve Performans)
Bu değerin “on” açık olması durumunda sisteminizde her script çalışmayacaktır install v.s yapmakta hatalarla karşılaşabilirsiniz ama iyi bir güvenlik ve performans için “off” duruma getirilir.
Önerilen:
CODE:
1.
register_long_arrays = Off
————————-
“allow_call_time_pass_reference” (Performans)
Fonksiyonların çağrılma zamanında yaşanan uyumsuzluklarla ilgili uyarı verir.
Önerilen:
CODE:
1.
allow_call_time_pass_reference = off
————————-
“enable_dl” (Güvenlik)
Bu değerin “off” kapalı olması gerekir aksi halde kişilerin sistemde php modüllerinde çalışma yapmasına olanak sağlar ve sistemde rahat dolaşmalarını sağlar güvenlik için kapalı olması gerekir.
Önerilen:
CODE:
1.
enable_dl = off
————————-
“track_errors” (Güvenlik ve Performans)
Sürücülerde meydana gelen hatalarda yetki verildiği taktirde hata mesajı errormsg olarak değişkende gösterilir.
Önerilen:
CODE:
1.
track_errors = Off
————————-
“file_uploads” (Güvenlik)
Açık olursa eğer sunucuda dosya yüklenmesine izin verilmiş olur ve bu da ciddi bir güvenlik açığına neden olur eğer kullandığınız scriptden herhangi bir dosya yüklemeniz gerekmiyorsa mutlaka kapalı duruma getiriniz. Bu sayede sitenize herhangi bir shell, script inject edise bile kesinlikle dosya yüklenmesine izin vermez.
Önerilen:
CODE:
1.
file_uploads = off
————————-
“ignore_repeated_errors” (Güvenlik ve Performans)
Açık olursa tekrarlanan hataları loglamaz.
Önerilen:
CODE:
1.
ignore_repeated_errors = Off
————————-
“ignore_repeated_source” (Güvenlik ve Performans)
Tekrarlanan mesajlar engellendiğinde, mesaj kaynağını engeller Bu ayar açık yapıldığında hataları loglamayacaktır farklı dosyalardan ya da kaynaklardan tekrarlanan mesajlarla.
Önerilen:
CODE:
1.
ignore_repeated_source = Off
————————-
“display_startup_errors” (Güvenlik ve Performans)
“display_errors” değeri “on” açık olsa bile, Php’nin çalışma sırasında meydana gelen hatalar gözükmeyecektir. Bu değerin şiddetle “off” kapalı duruma getirilmesi önerilir.
Önerilen:
CODE:
1.
display_startup_errors = off
————————-
“safe_mode_gid” (Güvenlik)
UID - GID kontrollerini sadece UID ile yapmasına izin verir böylece aynı grupta dosyalar bulunsa bile göremezler yani serverda bulunan diğer clientların scriptlerini v.s görmeleri engellenir.
Önerilen:
CODE:
1.
safe_mode_gid = Off
————————-
“output_buffering = 4096″ (Performans)
4 KB’lik bir tampon çıktısı ayarlar “output buffer”
Önerilen:
CODE:
1.
output_buffering = 4096
————————-
“register_argc_argv” (Performans)
Kapalı olursa gereksiz ARGV ve ARGC kayıtlarını önler. PHP nin ARGV ve ARGC değişkenlerini bildirip bildirmemesini anlatır.
Önerilen:
CODE:
1.
register_argc_argv = Off
————————-
“php_value session.use_trans_sid - php_value session.use_only_cookies”
Bu şekilde ayarlanması URL’deki PHPSESSID bilgilerini kaldırır.
Önerilen:
CODE:
1.
php_value session.use_trans_sid = 0
2.
php_value session.use_only_cookies = 1
————————-
“session.auto_start”
Oturum başlatmayı başlangıçta isteme
Önerilen:
CODE:
1.
session.auto_start = 0
————————-
“session.cookie_lifetime”
Cookie’nin zaman ayarı
Önerilen:
CODE:
1.
session.cookie_lifetime = 0
————————-
“memory_limit”
Scriptin tükettiği maksimum hafıza miktarı
Önerilen:
CODE:
1.
memory_limit = 40M
————————-
“post_max_size”
PHP’nin kabul edeceği maksimum POST data boyutu
Önerilen:
CODE:
1.
post_max_size = 256K
————————-
“upload_max_filesize”
Upload edilen dosyaların maksimum boyutu
Önerilen:
CODE:
1.
upload_max_filesize = 256K
————————-
“upload_tmp_dir”
Temporary klasörü HTTP’den gelen dosyalar, ayarlanmazsa default klasörü kullanacaktır.
Önerilen:
CODE:
1.
upload_tmp_dir = /path/to/www/belirlediginiz-dizin
————————-
“variables_order”
(Ortam, GET, POST, Çerez, Sunucu) bunların işlenmedeki sıralarını belirler.
Önerilen:
CODE:
1.
variables_order = “EGPCS”
Üstte belirttiğim kodları “php.ini” dosyanıza alt alta ekleyebilirsiniz.Daha önce sunucumda php.ini yukarıdakine yakın sayılabilirdi.
Hoşcakalın
