~ Sitenizi, 5 Dakikada
Hacklenmeye Karşı Koruyun, Güvenli Hale Getirin ~
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/" , "/usr/local/lib/" altında bulunur
"php.ini" dosyasını açarak düzenleyebilirsiniz veya "httpd.conf"
dosyasının doğru yapılandırılmasıyla da olur. 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. 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. Ama scriptin
çalışmasını engelleyen değerleri iptal ederseniz script tekrar doğru
şekilde çalışacaktır***
Ş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.
Hacklenmeye Karşı Koruyun, Güvenli Hale Getirin ~
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/" , "/usr/local/lib/" altında bulunur
"php.ini" dosyasını açarak düzenleyebilirsiniz veya "httpd.conf"
dosyasının doğru yapılandırılmasıyla da olur. 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. 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. Ama scriptin
çalışmasını engelleyen değerleri iptal ederseniz script tekrar doğru
şekilde çalışacaktır***
Ş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:
PHP- Kodu:
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
PHP- Kodu:
[center][/center]
Eğer bu kadar fonsiyonu devre dışı bırakmak fazla
geldiyse alttaki gibi de ayarlayabilirsiniz bu da güvenliğiniz için
yeterlidir:
PHP- Kodu:geldiyse alttaki gibi de ayarlayabilirsiniz bu da güvenliğiniz için
yeterlidir:
PHP- Kodu:
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
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
[center][/center]
-------------------------
PHP- Kodu:"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:
PHP- Kodu:
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:
PHP- Kodu:
register_globals
= off
"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:
PHP- Kodu:
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:
PHP- Kodu:
register_globals
= off
[center][/center]
-------------------------
PHP- Kodu:"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:
PHP- Kodu:
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:
PHP- Kodu:
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:
[php]]display_errors = Off /PHP]
-------------------------
"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:
PHP- Kodu:
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:
PHP- Kodu:
magic_quotes_gpc
= off
"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:
PHP- Kodu:
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:
PHP- Kodu:
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:
[php]]display_errors = Off /PHP]
-------------------------
"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:
PHP- Kodu:
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:
PHP- Kodu:
magic_quotes_gpc
= off
[center][/center]
-------------------------
PHP- Kodu:"magic_quotes_runtime"
(Güvenlik ve Performans)
Magic quotes çalışma sürecinde data oluşturur,
SQL'den exec()'den, vb.
Önerilen:
PHP- Kodu:
magic_quotes_runtime
= Off
-------------------------
"magic_quotes_sybase" (Güvenlik
ve Performans)
Sybase-style magic quotes kullanır (Bunun yerine
\' ' bununla '' kaçırır)
Önerilen:
PHP- Kodu:
magic_quotes_sybase
= Off
(Güvenlik ve Performans)
Magic quotes çalışma sürecinde data oluşturur,
SQL'den exec()'den, vb.
Önerilen:
PHP- Kodu:
magic_quotes_runtime
= Off
-------------------------
"magic_quotes_sybase" (Güvenlik
ve Performans)
Sybase-style magic quotes kullanır (Bunun yerine
\' ' bununla '' kaçırır)
Önerilen:
PHP- Kodu:
magic_quotes_sybase
= Off
[center][/center]
-------------------------
"session.use_trans_sid"
(Güvenlik)
Bu ayarı dikkatli ayarlayın, kullanıcı emaile
aktif oturum ID'si içeren URL gönderebilir
Önerilen:
PHP- Kodu:
session.use_trans_sid = off
Kaynak: eno7
(Güvenlik)
Bu ayarı dikkatli ayarlayın, kullanıcı emaile
aktif oturum ID'si içeren URL gönderebilir
Önerilen:
PHP- Kodu:
session.use_trans_sid = off
Kaynak: eno7