İnternet Sitenizin Güvenliği Nasıl Sağlanır?

Web sitenizde kullandığınız bir scriptin kod açığından faydalanılarak dosyalarınızın olduğu alana erişilebilir ve siz gerekli önlemleri almadıysanız dosyalarınızda değişiklik yapılabilir.

Bu tür problemleri önlemeye yönelik aşağıdaki adımları incelemenizi tavsiye ediyoruz.

1) Dosyalarınızın chmod değerlerini gereksiz yere yükseltmeyin;

Tüm dosyaların chmod değerini 404
Tüm klasörlerin chmod değerini 505 yapmanız yeterlidir.

Sunucu tarafından üzerine veri girilmesi gereken bir dosya için chmod değerini 604, klasörler için chmod değerini 705 yapmanız yeterlidir.

Birçok kullanıcı tarafından verilen 777 değeri güvenlik açısından çok riskli ve gereksizdir. Chmod değeri 777 olan dosya yada klasör sunucu üzerindeki tüm istemciler tarafından yazma, okuma ve değiştirme yetkisine sahiptir.

Config ve .htaccess dosyalarınızın chmod değerinin 404 olması yeterlidir.

Avantajları: Kimse sizin dosyalarınızı değiştiremez
Dezavantajları: Dosyalarınızı düzenlemek istediğinizde chmod değerlerini değiştirmeniz gerekir. Değişiklik tamamlandıktan sonra tekrar eski halinize getirebilirsiniz. Bu işlem en fazla 5 dakikanızı alacaktır. Fakat güvenlik çok daha önemlidir.

Chmod neden çok önemlidir: Hackerlar sitenizin kontrolünü eline geçirmek için bazı dosyalar yüklemek ister (spam göndermek yada dosyalarınızı değiştirmek v.b.). Sitenize bir dosya göndermek için güvenlik açığı yakalamak isterler. Eğer sitenizde bir güvenlik açığı var ise hacker sitenize ulaşabilir fakat dosya ve klasörlere yazma hakkı olmadığı için hiçbir işlem yapamaz. Saldırısı gerçekleşmez.

2) Şifrelerinizin güvenliğini sağlayın;

İyi bir şifre, harf ve rakam kombinasyonlarından oluşmalıdır. Büyük küçük harf kullanımı şifrenizin gücünü artıracaktır.

Özellikle tek bir şifreyi birçok yerde kullanmamaya özen gösterin. FTP, MySQL ve Kontrol Paneli şifrelerinizin aynı olmamasına özen gösterin. Herhangi bir nedenle MySQL şifreniz ele geçirilir ise Kontrol Panelinize giriş yapılmasını engellemiş olursunuz.

3) Sitenizin ana dizini altına (directadmin kontrol paneli olan sunucularda public_html) bir .htaccess dosyası oluşturun. Bu dosya ile bir çok yasaklama işlemini gerçekleştirebiliriz;

** Önemli Not: Bu işlemleri yaparken aşama aşama gitmenizi önermekteyiz. Bir kodu .htaccess dosyanıza ekleyin, sitenize girmeye çalışın ve bir problem yok ise diğer aşamalara geçin. Hata veren kod satırını kaldırın ve diğer satırlardan eklemeye devam edin. Bu işlemlerin hepsi tavsiye niteliğindedir. Kodlar nedeni ile sitenizde meydana gelecek stabilite sorunları için bir sorumluluğumuz bulunmamaktadır.

* Register global değerinin “on” olmasını isteyen scriptler kullanmayın. Sitenizin bulunduğu alan için register global değerini kapatın;

.htaccess dosyanıza eklemeniz gereken satır;

php_flag register_globals 0
php_flag register_globals off

* Hackerlar taradından sitenizin içeriğini tarayan otomatik örümcekleri engelleyin. Böylece 350 ye yakın zararlı örümceğin sitenizi taramasını engellemiş olursunuz;

.htaccess dosyanıza aşağıdaki içeriği eklemeniz yeterlidir.

RewriteEngine On
### ZARARLI ORUMCEKLER SADECE ASAGIDAKI DOSYALARA ERISEBILSIN
RewriteCond %{REQUEST_URI} !^/robots.txt
RewriteCond %{REQUEST_URI} !^/sitemap.xml
## ROBOT VE ORUMCEKLERI ENGELLEMEYE BASLAYALIM
RewriteCond %{HTTP_USER_AGENT} ^-?$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^[bcdfghjklmnpqrstvwxz\ ]{8,}|^[0-9a-z]{15,}|^[0-9A-Za-z]{19,} [OR]
RewriteCond %{HTTP_USER_AGENT} Extractor|almaden|anonymous|autoemailspider|blogsearchbot-martin|CherryPicker|Digger|DirectUpdate|Download\ Accelerator|echo\ extense|Collector|EmailWolf|flashget|frontpage|Go!Zilla|grub\ crawler|HTTPConnect|httplib|HttpProxy|HTTP\ agent|HTTrack|Indy\ Library|Jakarta\ Commons|libWeb|libwww|Microsoft\ Data|Microsoft\ URL|MJ12bot|Movable\ Type|NICErsPRO|NutchCVS|Nutscrape/|OmniExplorer|psycheclone|PussyCat|PycURL|python|QuepasaCreep|SiteMapper|Download|sucker|SurveyBot|Teleport\ Pro|Telesoft|TrackBack|Turing|TurnitinBot|vobsub|webbandit|WebCapture|webcollage|WebCopier|WebDAV|WebEmailExtractor|WebReaper|WEBsaver|WebStripper|WebZIP|widows|Wysigot|Zeus|Zeus.*Webster [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^
Sitenizde sadece istediğiniz dosya uzantılarının çalışmasını sağlayabilirsiniz. Aşağıdaki sadece bir örnektir. İçeriğini kendi isteğiniz doğrultusunda yapmanız gerekmektedir.

### SADECE INDEX.PHP DOSYASI VARSAYILAN DOSYADIR. DIGER DOSYALARI VARSAYILAN OLARAK ACMA
DirectoryIndex index.php

### DIGER DOSYA UZANTILARINA IZIN VERME

order allow,deny
deny from all

### DIGER DOSYA UZANTILARINA IZIN VERME

deny from all

### DIGER DOSYA UZANTILARINA IZIN VERME

order allow,deny
deny from all

4) Bir çok hacker aşağıdaki yöntemleri sitenizdeki açıkları tespit edebilmek için kullanacaktır.

### XSS FILTRELEMESI, HTTP YONLENDIRME ISTEKLERI, base64_encode DENEMELERI, PHO DEGISKENLERININ DENENMESI, SQL ENJEKSIYON DENEMELERI
RewriteEngine On
RewriteCond %{REQUEST_METHOD} (GET|POST) [NC]
RewriteCond %{QUERY_STRING} ^(.*)(%3C|<)/?script(.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)(%3D|=)?javascript(%3A|:)(.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)document\.location\.href(.*)$ [OR]
RewriteCond %{QUERY_STRING} ^(.*)(%3D|=)http(%3A|:)(/|%2F){2}(.*)$ [NC,OR] ## BU KURALA DIKKAT EDIN. GERCEK YONLENDIRMELERINIZI BOZABILIR. https://www.siteadi.com/index.php?r=https://www.google.com.tr
RewriteCond %{QUERY_STRING} ^(.*)base64_encode(.*)$ [OR]
RewriteCond %{QUERY_STRING} ^(.*)GLOBALS(=|[|%[0-9A-Z]{0,2})(.*)$ [OR]
RewriteCond %{QUERY_STRING} ^(.*)_REQUEST(=|[|%[0-9A-Z]{0,2})(.*)$ [OR]
RewriteCond %{QUERY_STRING} ^(.*)(SELECT|INSERT|DELETE|CHAR\(|UPDATE|REPLACE|LIMIT)(.*)$

5) Bir hacker sitenizin bulunduğu alana girmiş ise sitenize müdahale edebilmek için bir script kullanmak isteyecektir. Aşağıdaki işlemler güvenlik seviyenizi üst düzeye çıkaracaktır. Fakat bu işlem blog, forum, cms, galeri ve wiki tarzı sitelerin çalışmasını engelleyebilmektedir. – 5. satırdaki “loginftp” değerini ftp kullanıcı adınız ile değiştiriniz. –

## PHP ILE DERLENMIS SHELLERIN CALISMASINI ENGELLEYELIM
RewriteEngine On
RewriteCond %{REQUEST_URI} .*((php|my)?shell|remview.*|phpremoteview.*|sshphp.*|pcom|nstview.*|c99|r57|webadmin.*|phpget.*|phpwriter.*|fileditor.*|locus7.*|storm7.*)\.(p?s?x?htm?l?|txt|aspx?|cfml?|cgi|pl|php[3-9]{0,1}|jsp?|sql|xml) [NC,OR]
RewriteCond %{REQUEST_METHOD} (GET|POST) [NC]
RewriteCond %{QUERY_STRING} ^(.*)=/home(.+)?/loginftp/(.*)$ [OR]
RewriteCond %{QUERY_STRING} ^work_dir=.*$ [OR]
RewriteCond %{QUERY_STRING} ^command=.*&output.*$ [OR]
RewriteCond %{QUERY_STRING} ^nts_[a-z0-9_]{0,10}=.*$ [OR]
RewriteCond %{QUERY_STRING} ^(.*)cmd=.*$ [OR] ## BU KURALA DIKKAT EDIN SITENIZIN CALISMASINI ENGELLEYEBILIR##
RewriteCond %{QUERY_STRING} ^c=(t|setup|codes)$ [OR]
RewriteCond %{QUERY_STRING} ^act=((about|cmd|selfremove|chbd|trojan|backc|massbrowsersploit|exploits|grablogins|upload.*)|((chmod|f)&f=.*))$ [OR]
RewriteCond %{QUERY_STRING} ^act=(ls|search|fsbuff|encoder|tools|processes|ftpquickbrute|security|sql|eval|update|feedback|cmd|gofile|mkfile)&d=.*$ [OR]
RewriteCond %{QUERY_STRING} ^&?c=(l?v?i?&d=|v&fnot=|setup&ref=|l&r=|d&d=|tree&d|t&d=|e&d=|i&d=|codes|md5crack).*$ [OR]
RewriteCond %{QUERY_STRING} ^(.*)([-_a-z]{1,15})=(ls|cd|cat|rm|mv|vim|chmod|chdir|mkdir|rmdir|pwd|clear|whoami|uname|tar|zip|unzip|tar|gzip|gunzip|grep|more|ln|umask|telnet|ssh|ftp|head|tail|which|mkmode|touch|logname|edit_file|search_text|find_text|php_eval|download_file|ftp_file_down|ftp_file_up|ftp_brute|mail_file|mysql|mysql_dump|db_query)([^a-zA-Z0-9].+)*$ [OR]
RewriteCond %{QUERY_STRING} ^(.*)(wget|shell_exec|passthru|system|exec|popen|proc_open)(.*)$

6) Şifreli kodlar kullanmanız en güvenli yöntemdir. Önemli dosyalarınızı yada şifrelerinizin bulunduğu dosyaları şifreleyebilirsiniz. Tüm sunucularımızda Zend ve Ioncube encoder kuruludur. Şifreli dosyalarınız sunucularımızda problemsiz olarak çalışacaktır.

Örneğin configuration.php dosyanızda mysql bilgilerinizin bulunduğunu düşünelim;

//** MySQL settings **// / / MySQL settings ** ** / /
$db_server = “mysql5*” ; $ db_server = “mysql5*”;
$db_name = “nombasesql” ; $ db_name = “veritabani_adi”;
$db_username = “loginsql” ; $ db_username = “kullanici_adi”;
$db_password = “motdepasse” ; $ db_password = “sifre”;
?>

Burada dikkat etmeniz gereken arasında kalan içeriği seçip şifrelemenizdir. Buradaki içeriği https://www.btt-scripts.com/demo/encrypt/ adresindeki online script sayesinde şifreleyebilirsiniz.

Şifreleme işlemi bittikten sonra tırnak işaretleri ” arasında kalan alana şifrelenmiş içeriğinizi yazın;

eval( gzuncompress ( gzinflate ( base64_decode ( ‘AXEAjv942tPX19JS8K0MDvRRKE4tKcnMSy9W0NLS1+flUklJii9OLSpLLVJQULBVUMqtLC7MMdU1VLKGyOUl5qYqKEDk8vJzkxKLU4EKYLKlQK1gFUDZnPz0zDwkuYLE4uLy/KIUsKn5JSmpIIFUkCwAmYgq2g==’ ))));
?>

Bu sayede bir hacker dosyanıza ulaşsa bile içeriği şifrelenmiş olduğu için şifrelerinizi çalamayacaktır.

configuration.php dosyanızın chmod değerini 404 yapabileceğinizi bir kez daha hatırlatmak istiyoruz.