"php.ini" yapılandırması:
"disable_functions" (Güvenlik)"disable_functions" ile serverınızda birçok fonksiyonun çalışmasınıengelleyebilirsiniz bu sayede sitenize inject edilen scriptler, shelleriçin güvenliğinizi almış olursunuz. Bu kadar fonksiyon fazla gelebilirama iyi bir güvenlik için şart.
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 dagüvenliğiniz için yeterlidir:
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ınageliyor. "Safe Mode" genelde birçok serverda "Off" durumdadır ve bu dabirçok tehlikeye davetiye çıkaran unsurlar arasında yer alır. "GüvenliModu Açık" durumuna getirmek shellerin serverımızda istedikleri gibidolaşmalarını, exploitlerin çalıştırılmasını ve komutların executeedilmelerini önler. Günümüzde "açık olan güvenlik modunu" kapalı durumagetiren scriptler mevcut fakat altta anlatılan önlemlerle bunun daönüne geçilebilir.
safe_mode = on
çalışmayan script olursa httpd.conf ve.htaccess dosyasından kullanıcıya gerekli izin verilebilir. örnekaşağıdaki gibi
php_flag safe_mode Off
"register_globals" (Güvenlik ve Performans)php.ini dosyasında bulunan "post" "get" ile gönderilen değerlerekullanıcı adlarıyla ulaşılıp ulaşılamayacağını belirtir. Session,cookie değerlerini kendi adıyla tanımlayarak birer değişken olmasınaneden olur. "Off" olarak ayarlanırsa bu gibi değerlere kenditanımladığı şekilde ulaşılamaz.
register_globals = off
çalışmayan script olursa on değerinihtaccess dosyasına koyup sadece o siteye açabilirsiniz. veya httpd.confdosyasına
php_flag register_globals on
"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. Bunlaraverilen bilgiler hiçbir kontrolden geçirilmezse kritik güvenlikaçıklarını sebep olur. (eğer safe mode açıksa ve open basedir aktif isebunun açık kalmasında hiç bir sorun yok. Kapalı kalması durumunda birçok script çalışmaz. en basit örnek olarak php nuke çalışmaz.)
allow_url_fopen = off
"display_errors" (Güvenlik)Bu seçenek sitenizin çalışmasında oluşacak bir hatayı tarayıcıyayansıtıp yansıtmayacağını belirler yani siteniz için diyelim bir forumveya portal kullanıyorsunuz ve bunların çalışması esnasında genelde"Fatal error: Call to undefined function get_header() in/home/ahmo/public_html/index.php on line 37" şeklinde benzeri hatagörülür bunların gözükmesini engellemek için bu değeri kapalı durumagetirmek gerekir zira kötü niyetli kişiler sitenizin serverda bulunantam yolunu öğrenmiş olurlar.
(Eğer safe mod açık ve open basedir aktif ise bunu kapatmanıza gerekyoktur. zira bu tür hatalar ayrıca scriptinde hata neresinde olduğunugösterdiği için host kullanıcısına sitesini düzenlemesi için büyükkolaylık sağlıyor.)
display_errors = Off
"cgi.force_redirect" (Güvenlik)Bu değer normalde "on" "1" yani açık olarak gelir ve Windowssunucularında IIS, OmniHTTPD gibi buralarda kapatılması gerekir. Kendisunucunuz için bu durum yoksa değiştirmenize gerek yoktur.
cgi.force_redirect = 0
"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.
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:
magic_quotes_runtime = Off
"magic_quotes_sybase" (Güvenlik ve Performans)Sybase-style magic quotes kullanır (Bunun yerine \' ' bununla '' kaçırır)
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
kullnıcının güvenliği için bunu kapatıyoruz.
Önerilen:
session.use_trans_sid = off
"expose_php" (Güvenlik)"expose_php" açık ise kapalı yapılması önerilir. Aksi takdirde PHP ileyaptığınız herşeyde sunucu tarafından PHP sürümü gibi bilgilergösterilir. Hackerlar hatta Lamerlar bu bilgileri severler (ne bohanlıyorlarsa sanki). Bunları engellemek için "off" konumuna getiriniz.
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. başında ";" işaretivarsa kaldırıyoruz ve değeri kapatıyoruz.
html_errors = off
"max_execution_time" (Güvenlik)Scriptinizi maksimum uygulamayı yürütme zamanı mesela kullanıcı birlinke tıkladı ve bu linkin açılması belirtilen saniyeden fazla olursasayfa sitenizin serverda bulunduğu tam yolu göstererek hata verir. Buhataların gözükmesi güvenlik açısından sakıncalıdır. 300 saniye yazanyeri istediğiniz zaman ile değiştirebilirsiniz. bana kalırsa bırakınyolu görsün çok fazla sayfa beklerse extra yğunluk demektir. direkbırakın hata versin. süreyi 30 yapalım.
max_execution_time = 30
"max_input_time" (Güvenlik)Scriptinizin aynı şekilde bir dataya ulaşmak için istek yolladığında maksimum geçen zaman 60 yapalım. fazla bile
max_input_time = 60
"allow_call_time_pass_reference" (Performans)Fonksiyonların çağrılma zamanında yaşanan uyumsuzluklarla ilgili uyarı verir.
örneğin ilk belittiğimiz yasak komutlarda hiç bir uyarı vermeden bomboş sayfa çıkarır karşıya. böyle bir durumda scripte bakmaktansa tekrarbunu açık duruma getirirsiniz hatayı gördükten sonra tekrar kapatınfonksiyonu.
allow_call_time_pass_reference = off
"enable_dl" (Güvenlik)Bu değerin "off" kapalı olması gerekir aksi halde kişilerin sistemdephp modüllerinde çalışma yapmasına olanak sağlar ve sistemde rahatdolaşmalarını sağlar güvenlik için
kesinlikle kapalı olması gerekir.
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.
track_errors = Off
"file_uploads" (Güvenlik)Eğer sunucda tek site barındırıyorsanız ve o sitede her hangi birşeysunucuya yükletilmiyorsa kapalı kalmasında yarar var. Ama çoklu sitebarındırıyorsanız. Günümüzdeki tüm siteler artık avatardır, dosya v.suploat ediyor karar sizin.
ben yine kapatın diyeyimde.
file_uploads = off
"ignore_repeated_errors" (Güvenlik ve Performans)Kapalı olursa tekrarlanan hataları loglamaz.
ignore_repeated_errors = Off
"ignore_repeated_source" (Güvenlik ve Performans)Tekrarlanan mesajlar engellendiğinde, mesaj kaynağını engeller Bu ayaraçık yapıldığında hataları loglamayacaktır farklı dosyalardan ya dakaynaklardan tekrarlanan mesajlarla.
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ındameydana gelen hatalar gözükmeyecektir. Bu değerin şiddetle "off" kapalıduruma getirilmesi önerilir.
display_startup_errors = off
"safe_mode_gid" (Güvenlik)UID - GID kontrollerini sadece UID ile yapmasına izin verir böyleceaynı grupta dosyalar bulunsa bile göremezler yani serverda bulunandiğer clientların scriptlerini v.s görmeleri engellenir.
safe_mode_gid = Off
"output_buffering = 4096" (Performans)4 KB'lik bir tampon çıktısı ayarlar "output buffer"
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.
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.
seo filan yapanlar için uygun. genlede smf, phpbb forumlarda ve sensionkoruma uyguladığınız scriptler için PHPSESSID bilgilerini url yeeklemez. başlarında
; işareti varsa kaldırın.
session.use_trans_sid = 0
session.use_only_cookies = 1
"session.auto_start"Oturum başlatmayı başlangıçta isteme
session.auto_start = 0
"session.cookie_lifetime"Cookie'nin zaman ayarı
session.cookie_lifetime = 0
"memory_limit"Scriptin tükettiği maksimum hafıza miktarı
değeri istediğinizgibi verin. 8M çokfazla bir değer. sadece kendisiteniz barınıyorsa bu değer normal. ama host ile uğraşıyorsanız 512Kyapmanız daha uygun.
memory_limit = 8M
"post_max_size"PHP'nin kabul edeceği maksimum POST data boyutu.
isteğinize bağlı 1 Mb vermek için
1M yazın
post_max_size = 256K
"upload_max_filesize"Upload edilen dosyaların maksimum boyutu
buda sizin isteğinize bağlı isterseniz
50M yapın. o zaman kullanıcı 50 Mb'a kadar dosya upload edebilir.
upload_max_filesize = 256K
"variables_order"(Ortam, GET, POST, Çerez, Sunucu) bunların işlenmedeki sıralarını belirler.
variables_order = "EGPCS"
Bu kadar ondan sonra
ctrl x y diyip kaydediyoruz ve
service httpd restart diyoruz.
Genelde çoğu fonksiyon zaten böyle dediğim değerdedir. 3-5 tanesi hariçtabi. Yeni başlayan arkadaşlar için anlattımki hangisi ne işe yararöğrenmiş olsunlar.