category archive listing Category Archives: Sunucu Yönetimi

Siteye özel register_globals açma ve kapama (on ya da off yapma)


Php.ini içerisinde yer alan register_globals özelliğinin açık olması, hackerlerin php scriptlerde yer alan bazı kod açıklarından istifade etmelerine neden olur… Bu nedenle sunucu genelinde register_globals özelliği php.ini dosyasından off konumuna getirilerek kapatılmalıdır.

Kod:

register_globals = on

Eğer sunucuda register_globals bu şekilde on olarak ayarlanmışsa, çok büyük tehlike teşkil etmektedir.

- Hacker, uzaktan erişim ile çeşitli kodları siteniz üzerinde sorgulayabilir.

Örneğin sitenizin adresinde http://www.ingilizceforum.net/?aaa=2 şeklinde aaa değişkenini doğrudan $aaa olarak kullanabilir… Register_globals = Off konumunda olduğunda aynı değişken ve değere ulaşmak için $_GET[’aaa’] kullanılması gerekir… Diğer bir ifadeyle, rfi.php?aaa=zararliscript.php benzeri işleme konularak dışardan erişimle sitenizdeki açıklardan istifade edebilir… İşte bu nedenle çok büyük önem taşımaktadır….

Eğer sitenizin bulunduğu sunucuda register_globals = on olarak ayarlanmışsa ve bunu kendi dizininizde off konumuna getirmek istiyorsanız şunları uygulamanızda fayda var. FTP’ye giriş yaptıktan sonra public_html dizini içerisinde yer alan (Linux sunuculara özgü) .htaccess dosyasının içerisine şu kodu ilave ediniz:

PHP Kod:

php_flag register_globals off

Eğer bunun tam tersini yapmak istiyorsanız; yani register_globals = off olarak ayarlanan bir sunucuda register_globals özelliğini açmak istiyorsanız, sitenizin bulunduğu dizinde bunu devreye koymak için aşağıdaki kodu .htaccess içerisine eklemeniz kafidir…

PHP Kod:
php_flag register_globals on

Siteye özel safe mode kapatma yöntemi

Keywords: Joomla, safe, mode, on, off, php, güvenli, mod, açma, kapatma, linux, sunucu, whm…

R57 ve C99 gibi zararlı scriptlerin sunucuya zarar vermesini önlemek için php.ini dosyasından safe_mode = On olarak ayarlanmalıdır. Ancak safe_mode = On olduğunda bazı Joomla sitelerde çeşitli modüllerin çalışmadığını görüyoruz. Bu sorunu çözmek için sunucu genelinde php.ini dosyasında safe_mode = On yapılmalıdır. Ancak Joomla sitelerde güvenli modu kapatarak bu sorunu aşabiliriz…

SSH’ye root olarak giriş yapıyoruz; pico /usr/local/apache/conf/httpd.conf komutu ile httpd.conf dosyasını açıyoruz. CTRL+W tuşuna basıyoruz ve ilgili sitenin adresini arıyoruz: siteninadi.net gibi…

Kod:

<VirtualHost x.x.x.x>

şeklinde başlayan kod içerisinde yer alan;

Kod:

DocumentRoot /home/siteismi/public_html

biçimindeki kodun hemen altına php_admin_value safe_mode 0 kodunu yapıştırıyoruz; son olarak kodumuz aşağıdaki gibi oluyor:

Kod:

DocumentRoot /home/siteismi/public_html
php_admin_value safe_mode 0

Apache (httpd)’yi yeniden başlattıktan sonra ilgili sitede safe mode kapalı hale geliyor. Ancak sunucu genelinde güvenli mod açık olacağı için herhangi bir tehlike söz konusu olmayacaktır.

Linux için SSH Komutları

En sık kullandığımız Linux SSH komutları ve açıklamaları…
Bu komutların bir kısmı kullandığınız sunucuda işe yaramayabilir. Ancak genel olarak ele alırsak burdaki birçok komutu denemenizde fayda vardır.

ls Dizinde bulunan tüm dosyaları listelemeye yarar.
ls -a Gizli dosyalar ve dizinler dahil herşeyi listeler.
ls -l Bütün dosyaları boyut ve tarihini göstererek listeler.
cp Dosyayı kopyalar.
mv Bir dosyayı başka bir dizine taşımanızı sağlar yada dosya adını değiştirir.
mkdir Yeni bir dizin oluşturmanızı sağlar.
rmdir Belirtilen dizini silmenizi sağlar.
rm Dosya silmenizi sağlar.
rm -rf Dizin silmenizi sağlar.
cd Belirtilen dizine geçmenizi sağlar.
cd .. Bir üst dizine geçmenizi sağlar.
cd ~ En üst dizine çıkmanızı sağlar.
pwd O anda bulunduğunuz dizini görüntüler.
pico Belirtilen dosyayı text editör ile düzenlemenizi sağlar.
ftp Belirtilen siteye FTP bağlantısı sağlar.
lynx Belirtilen siteyi görüntüler.
df Harddisk istatistiklerini gösterir.
quota Disk kullanımınızı gösterir.
uname İşletim sisteiminin durumunu gösterir.
whoami Kendi bilgilerinizi gösterir.
who Sunucuya bağlı olanları gösterir.
last Hesabınıza yapılan en son bağlantıyı gösterir.
whereis Belirtilen dosyanın nerede olduğunu gösterir.
mail Postalarınızı kontrol eder.
ps -x Sizin çalıştırdığınız işlemleri gösterir.
ps -a Sunucuda çalıştırılan tüm işlemleri gösterir.
ps -ux Çalıştırılan işlemlerin CPU/RAM kullanımıyla gösterir.
kill Pid numarası verilen işlemi durdurur.
killall Belirtilen program türündeki tüm işlemleri durdurur.
whatis Belirtilen komutun açıklamasını verir.
man Komut hakkında yardım görüntüler
passwd Shell hesabınıza girerken kullandığınız şifreyi değiştirmenizi sağlar.
tar -zxpf Uzantısı tar.gz olan sıkıştırılmış dosyaları açar.
tar -xpf Uzantısı .tar olan dosyaları açar.
gunzip Uzantısı .gz olan dosları açar.
reboot Sunucuyu yeniden başlatır.
service mysqld restart mysql yeniden başlatır.
service httpd restart Apache’yi yeniden başlatır.
service httpd stop Apache’yi durdurarak sitelere ulaşımı kapatır.
apf -d ipadresi Verilen IP adresini yasaklar.
service apf restart Apf’ye restart atar.
netstat -n Sunucuya bağlanan IP’leri gösterir.
netstat -a Sunucuya bağlanan reseller IP’lerini gösterir (Proxy kullanmanız fark etmez her zaman gercek çıkış IP’si görünür)
pico SSH’de metin editörü ile dosya içeriğini görme ve düzenlemeye yarar.
top Sistem CPU kullanımını gösterir. CPU kullanımını güncel bir şekilde gösteriyor; hangi sitenin veya işlemin sunucuyu yorduğunu anlayabiliyoruz.

uptime Uptime Durumu

IP YASAKLAMA

IP yasaklama:
iptables -A INPUT -s IPADRESİ -j DROP

ip yasağını kaldırma:
iptables -X INPUT -s IPADRESİ -j DROP

zip dosyasını açma:
unzip dosya.zip

tar.gz açma
tar -zxvf dosya.tar.gz

gzip açma
gunzip dosya.tar.gz

SSH ile SQL yedek almak

SSH’den MySQL yedek almanın ve mevcut yedeği yüklemenin kolay yolu…

Boyutu 60 MB’den fazla olan veritabanları için bu yöntemi kullanmakta fayda vardır…

—–

SSH Secure Shell 3.2.9 (kendi kullandığım program) veya alternatif bir programla sunucuya SSH bağlantı yapınız.

Alttaki komutta kırmızı yerleri alacağınız yedeğe göre düzenleyin.

mysqldump --opt -Q -u veritabanıkullanıcıadı-p veritabanıadı > /home/hesap/dizin/yedek.sql

Enter tuşuna bastığınızda veritabanı şifresini isteyecektir. Şifreyi bilmiyorsanız conf.php, config.php veya configuration.php dosyalarını kontrol ediniz.

Şifreyi de yazdıktan sonra Enter’a bastığınızda yedek alınacak ve karşınıza boş bir konsol gelecektir. FTP girişi yaparak ilgili dizini kontrol edebilirsiniz…

—–

Örnek verecek olursak;

Diyelim ki ingilizceforum.net sitesinin yedeğini alıyoruz; veritabanı bilgilerinin şu şekilde olduğunu varsayalım:

Veritabanı adı: forum_db
Veritabanı kullanıcı adı: forum_user
Veritabanı şifresi: 123456
Yedeğin kaydedileceği dizin: /home/forum/public_html/yedek.sql

Yukarıdaki bilgiler baz alındığında komut aynen şöyle olmalıdır.

mysqldump --opt -Q -u forum_user -p forum_db > /home/forum/public_html/yedek.sql

Enter’a tıkladığımızda şifre isteyecek:
Password: 123456

Ve birkaç saniye içinde…

Yedeğimiz alındı…

Son olarak /public_html/ dizinine girerek yedeği bilgisayarımıza indirebiliriz…

—–

Yedeğin yüklenmesi…

Diyelim ki bir aksilik oldu ve site göçtü. O zaman biraz önceki yedeği geri yükleyelim. Komut aynen şu şekilde olur:

mysql -u forum_user -p forum_db < /home/forum/public_html/yedek.sql

Ve birkaç saniye içinde…

Yedeğimiz yüklendi…

—–

Normalde sıkıştırılmış gZip olarak boyutu 60 MB’den yüksek olan veritabanları phpMyAdmin ile yüklenirken sorun çıkarmaktadır. Bu nedenle büyük sitelerin SSH yolu ile yedek almasında ve yüklemesinde fayda vardır. Aksi halde bu durum büyük sitelerin yöneticilerine sorun çıkarabilmektedir.

Not: Bu komutları uygulayabilmek için Server Yöneticisi olmanız gerekir.. Normal site sahipleri SSH protokolünü kullanamazlar…


Bu sitede yayınlanan tüm yazılar İlyas Canbay tarafından kaleme alınmıştır. İzinsiz yayınlanamaz. Her hakkı saklıdır.