Sayfayı Yazdır | Pencereyi Kapat

Sitenizi 5 Dakikada Hacklenmeye Karþý Koruyun

Nereden Yazdırıldığı: Bilginin Adresi
Kategori: Bilgisayar Güvenliði / Computer Security
Forum Adı: Güvenlik / Security Makaleleri
Forum Tanımlaması: Bilgisayarýnýzý Her Türlü Saldýrýya Karþý Korumak Ýçin Yapmanýz Gerekenler
URL: https://www.bilgineferi.com/forum/forum_posts.asp?TID=7965
Tarih: 07-07-2024 Saat 04:30


Konu: Sitenizi 5 Dakikada Hacklenmeye Karþý Koruyun
Mesajı Yazan: megabros
Konu: Sitenizi 5 Dakikada Hacklenmeye Karþý Koruyun
Mesaj Tarihi: 23-08-2009 Saat 23:59

Sitenizi, 5 Dakikada Hacklenmeye Karþý Koruyun

Son zamanlarda “RFI” (Remote File Include) tarzý yöntemlerle birçok hack olayý yaþanýyor birçok kiþi bunlarýn önlemini almakta çaresiz kalýyor ve bu yüzden gerek itibarlarýndan gerekse sitelerinden oluyorlar. “RFI” açýklarýný engelleyemeyenler için bir döküman yazmaya karar verdim. Bu sayede “RFI” açýðýnýz olsa bile en az zararla hatta “0″ zararla nasýl kurtulacaðýnýzý anlatacaðým. Bu ayarlar sayesinde hem güvenliðinizi hem de performansýnýzý artýrmýþ olacaksýnýz.

“php.ini” yapýlandýrmasýna geçmeden önce sunucumuzda bulunan klasör ve dosya izinlerini “chmod” doðru þekilde ayarlayalým. Genelde FTP programlarýnda dosya yada klasör üzerine “sað click” yapýlýp yada “file” seçeneðinden “Change Attributes ya da Properties / CHMOD” seçeneklerinden düzenleriz burada “permissions” altýnda yani izinler altýnda önerilenleri girmek en uygunudur.

Klasörler için: 755

Dosyalar için: 644

Ýzinleri bu þekilde ayarlamanýz güvenlik için ilk adýmý atmanýza yardýmcý olur.

“php.ini” yapýlandýrmasý:

Eðer server admini iseniz yani root yetkilere sahipseniz bu ayarlarý serverda bulunan tüm siteler için yapabilirsiniz genellikle “/usr/local/Zend/etc/” altýnda bulunan “php.ini” dosyasýný açarak düzenleyebilirsiniz ve daha sonra apache”ye restart atmanýz gerekmektedir.

Root deðilseniz sadece kendi siteniz için yapmanýz gerekiyorsa kök dizininizde (public_html) bir “php.ini” dosyasý oluþturarak veya varolan “php.ini” dosyasýnýn içerisine altta verdiðim kodlarý ekleyerek güvenliðinizi saðlayabilirsiniz. Bu iþlemler “httpd.conf” dosyanýzýn doðru yapýlandýrýlmasýyla da mümkündür. Fakat sitenizle ayný serverda bulunan diðer sitelerden kaynaklanan açýklardan yararlanan kiþiler root olmayý baþarýrlarsa burada anlatýlanlar yetersiz kalýr, root olmayý baþaramazlarsa ve sitenizin þifrelerini kaptýrmazsanýz güvendesinizdir.

***Altta anlattýðým bilgiler iyi bir güvenlik için yapýlmasý gerekenler olduðundan dolayý bunlarý uyguladýktan sonra bazý scriptlerinizin çalýþmasý engellenmiþ olabilir.***

Þimdi gelelim “php.ini” yapýlandýrmasýna:

“disable_functions” (Güvenlik)

“disable_functions” ile serverýnýzda birçok fonksiyonun çalýþmasýný engelleyebilirsiniz bu sayede sitenize inject edilen scriptler, sheller için güvenliðinizi almýþ olursunuz. Bu kadar fonksiyon fazla gelebilir ama iyi bir güvenlik için þart. Bu kadar sayýda devre dýþý býrakýlan fonksiyonlar ilk defa “eno7.org” adresinde verilmiþtir.

Önerilen:

CODE:

1.

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

Eðer bu kadar fonsiyonu devre dýþý býrakmak fazla geldiyse alttaki gibi de ayarlayabilirsiniz bu da güvenliðiniz için yeterlidir:

CODE:

1.

disable_functions = glob, posix_getpwuid, array_compare, array_user_key_compare, ini_restore, exec, proc_get_status, proc_nice, proc_open, allow_url_fopen, fin, pconnect, system, dl, passthruexec, shell_exec, proc_close, proc_get_status, chown, chgrp, escapeshellcmd, escapeshellarg, fileread, passthru, popen,curl_exec, shell, execute

————————-

“safe_mode” (Güvenlik)

“Safe Mode” adýndan da anlaþýlacaðý gibi “Güvenli Mod” anlamýna geliyor. “Safe Mode” genelde birçok serverda “Off” durumdadýr ve bu da birçok tehlikeye davetiye çýkaran unsurlar arasýnda yer alýr. “Güvenli Modu Açýk” durumuna getirmek shellerin serverýmýzda istedikleri gibi dolaþmalarýný, exploitlerin çalýþtýrýlmasýný ve komutlarýn execute edilmelerini önler. Günümüzde “açýk olan güvenlik modunu” kapalý duruma getiren scriptler mevcut fakat altta anlatýlan önlemlerle bunun da önüne geçilebilir.

Önerilen:

CODE:

1.

safe_mode = on

————————-

“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

————————-

“allow_url_include” (Güvenlik)

Bu deðer kapalý yapýldýðýnda “require” ve “include” ile uzaktan dosya çaðýrýlmasý engellenmiþ olur ve bu sayede büyük bir tehlikeden kurtulmuþ olursunuz.

Önerilen:

CODE:

1.

allow_url_include = off

————————-

“display_errors” (Güvenlik)

Bu seçenek sitenizin çalýþmasýnda oluþacak bir hatayý tarayýcýya yansýtýp yansýtmayacaðýný belirler yani siteniz için diyelim bir forum veya portal kullanýyorsunuz ve bunlarýn çalýþmasý esnasýnda genelde “Fatal error: Call to undefined function get_header() in /home/vhosts/site.com/index.php on line 37″ þeklinde benzeri hata görülür bunlarýn gözükmesini engellemek için bu deðeri kapalý duruma getirmek gerekir zira kötü niyetli kiþiler sitenizin serverda bulunan tam yolunu öðrenmiþ olurlar.

Önerilen:

CODE:

1.

display_errors = Off

————————-

“cgi.force_redirect” (Güvenlik)

Bu deðer normalde “on” olarak gelir ve Windows sunucularýnda IIS, OmniHTTPD gibi buralarda kapatýlmasý gerekir. Kendi sunucunuz için bu durum yoksa deðiþtirmenize gerek yoktur.

Önerilen:

CODE:

1.

cgi.force_redirect = on

————————-

“magic_quotes_gpc” (Güvenlik ve Performans)

Magic Quotes iþlemi GET/POST yöntemiyle gelen Cookie datasýný otomatikmen PHP script”e kaçýrýr. Önerilen bu deðerin kapalý olmasýdýr.

Önerilen:

CODE:

1.

magic_quotes_gpc = off

————————-

“magic_quotes_runtime” (Güvenlik ve Performans)

Magic quotes çalýþma sürecinde data oluþturur, SQL”den exec()”den, vb.

Önerilen:

CODE:

1.

magic_quotes_runtime = Off

————————-

“magic_quotes_sybase” (Güvenlik ve Performans)

Sybase-style magic quotes kullanýr (Bunun yerine \” ” bununla “” kaçýrýr)

CODE:

1.

magic_quotes_sybase = Off

————————-

“session.use_trans_sid” (Güvenlik)

Bu ayarý dikkatli ayarlayýn, kullanýcý emaile aktif oturum ID”si içeren URL gönderebilir

Önerilen:

CODE:

1.

session.use_trans_sid = off

————————-

“open_basedir” (Güvenlik)

Burada belirttiðiniz bir dizin haricindeki dosyalarý veya klasörleri görmeleri olanaksýzdýr yani /home/vhosts/site.com/public_html/dosyalar/ sitenizde sadece dosyalar dizininin görüntülenmesini istiyorsanýz böyle yapýlýr veya hem dosyalar hemde resimlerin bulunduðu yerin gözükmesi içinde böyle /home/vhosts/site.com/public_html/resimler:

/home/vhosts/site.com/public_html/dosyalar/ bunlar haricindeki yerlerin görünmesi imkansýzdýr. /home/vhosts/site.com/public_html/resimler:

/home/vhosts/site.com/public_html/dosyalar/ yazan yere görünmesini istediðiniz dizinleri belirtin.

Önerilen:

CODE:

1.

open_basedir = “/home/vhosts/site.com/public_html/resimler:

2.

/home/vhosts/site.com/public_html/dosyalar/”

————————-

“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.

————————-

“asp_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 = 8M

————————-

“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 = /var/www/foo.bar/sessions

————————-

“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.

Saygýlar..



Sayfayı Yazdır | Pencereyi Kapat