Linux Plesk 9.5 Call to undefined function hatası

parallelsCall to undefined function get_failure_redirect_url() in /usr/local/psa/admin/auto_prepend/auth.php3 on line 179

Tarayıcınızdan Linux Plesk 9.5 web sunucunuza 8443 veya 8880 portundan panele giriş esnasında yukarıdaki gibi bir hata mesajı ile karşılaşmanız durumunda yapmanız gereken mikro güncellemeleri ( MU Micro Updates ) çalıştırmak olacaktır.

Favori ssh istemcinizle sunucuya root olarak ssh bağlantısı kurun.Komut satırında;

/usr/local/psa/admin/bin/autoinstaller –select-product-id plesk –select-release-current –reinstall-patch –install-component base

komutunu çalıştırın.Script biraz bekleyip sistemde kurulu paket bilgisini aldıktan sonra mikro güncellemeleri uygulayacak,ve sorunsuz olarak plesk arayüzüne giriş yapabiliyor olacaksınız.

Plesk 9.5 ‘in kurulabildiği her Linux distrosunda bu script bu path de olmayabilir.Sizin ihtiyacınız olan uygun versiyonda bir plesk autoinstaller dır.Bu sebeple bu scripti /root/parallels klasörü altında da bulmanız olasıdır.

Linux-Destek Hosting Paketleri

Aşağıdaki micrositede Linux hosting ,wordpress ve opencart hosting paketlerini,bayi paketlerini ve vds sunucuların özelliklerini ve fiyatlarını görebilirsiniz.

Screenshot from 2015-07-23 15:28:50

Premature end of script headers,Connection reset by peer: mod_fcgid: error reading data from FastCGI server

fb0b45015aPremature end of script headers,Connection reset by peer: mod_fcgid: error reading data from FastCGI server

Bu hatayı alıyorsanız,sorunun sebebi birden fazla olabilir.Hemen bayramlık sözleri dile getirmeden,sinirlenmeden aşağıdaki olası çözümleri deneyebilirsiniz.

1.Plesk 12 Linux sunucularda şunu deneyebilirsiniz.

SSH’dan komut satırına girin.

/usr/local/psa/admin/bin/httpdmng –reconfigure-domain alanadiniz.com

Plesk 11.5 hariç öncesi için /;usr/local/psa/admin/bin/httpdmng –reconfigure-vhost –vhost-name=alanadiniz.com

2.Websitenizin index.php dosyası zarar görmüş,içine malware kod yazılmış( yani bir nevi hacklenmiş ) olabilir.Kontrol edin.Varsa temizleyip tekrar deneyin.

3.Sistem CloudLinux ise;fastcgi server ile bağlantı kuramıyor olabilir.Konfigurasyonu yenilemek için,kullanıcıyı cagefsten çıkarıp tekrar alın.Zaten cagefsden çıkardığınızda website düzgün çalışıyorsa sorun bundan kaynaklanıyor demektir.

cagefsctl –disable ftpkullanıcısı

cagefsctl –enable ftpkullanıcısı

ilaveten klasörünü tekrar bağlamak için

cagefsctl -m ftpkullanıcısı

komutunu deneyebilirsiniz.

 

Apache fastcgi can’t apply process slot for error hatası

fb0b45015a

mod_fcgid Apache 2 webserverlarda yaygın olarak kullanılan bir modüldür.Php scriptlerini belli bir kullanıcının çalıştırmasına olanak tanır.

öntanımlı olarak belli bir limiti olan bu modülün limitleri sınıra dayandığında websiteler oldukça yavaş çalışmaya başlar,zaman zaman “500 Internal Server error” hatası alırsınız.

yapılması gereken;

Redhat ve türevlerinde;

/etc/httpd/conf.d/fcgid.conf

Debian,Ubuntu türevlerinde

/etc/apache2/mods-enabled/fcgid.conf

dosyasını açıp

FcgidMaxProcesses değerini arttırmaktır.

Daha sonra Apache web servisini yeniden başlatmalısınız.

debian ve ubuntu için : service apache2 restart

redhat ve centos 6.x için /etc/init.d/httpd restart veya service httpd restart

7.x versiyonları için systemctl httpd restart (geriye dönük uyumluluk için  service httpd restart komutu da 7.x versiyonlarda çalışmaktadır.)

Linux “Ghost” Uzaktan Kod Çalıştırma Güvenlik Açığı

tux18727 Ocakta haberi duyurulan ve ciddi risk taşıyan GNU C Library (glibc) zaafiyetinden faydalanarak sunucunun kontrolü kötü niyetli kişiler tarafından ele geçirilebiliyor.

Söz konusu açık, glibc 2.18 öncesi versiyonları etkiliyor.2.18 ve sonrasında şu anda böyle bir risk bulunmadığı ifade ediliyor.

Pek çok linux dağıtımı var ancak genel olarak hepsi ya Redhat ya da Debian türevi.Ubuntu’ya da sayacak olursak hemen hemen her linux sunucu bu tehdit altında.

Aşağıdaki adreslerde ,konuyla ilgili açıklama ve güncelleme için gerekli bilgiler yer alıyor.

Ubuntu

http://www.ubuntu.com/usn/usn-2485-1/

Debian

https://www.debian.org/security/2015/dsa-3142

Redhat

https://access.redhat.com/security/cve/CVE-2015-0235

 

Web Sunucu Güvenliği İpuçları-II

Php destekli bir apache web sunucunda kapatılması gerekli php fonksiyonları

mail,system, dl, array_compare, array_user_key_compare, passthru, cat, 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, exec, fileread, shell_exec, pcntl_exec, leak, apache_child_terminate, chown, posix_kill, posix_setpgid, posix_setsid, posix_setuid, proc_terminate, syslog, fpassthru, execute, shell, 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, eval, allow_url_fopen, pconnect, p_connect,posix_getpwuid,fileowner,symlink,readlink

Linux Pleskte dns zone dosyalarını yeniden oluşturma

Plesk 9.x versiyonunda dns zone dosyalarını tekrar oluşturma scripti

#!/bin/sh

ADMIN_PASS=`cat /etc/psa/.psa.shadow`
MYSQL_BIN_D=`grep MYSQL_BIN_D /etc/psa/psa.conf | awk ‘{print $2}’`
PRODUCT_ROOT_D=`grep PRODUCT_ROOT_D /etc/psa/psa.conf | awk ‘{print $2}’`
mysql=”${MYSQL_BIN_D}/mysql -N -uadmin -p${ADMIN_PASS} psa”

query=”select name from domains;”
domains=`echo $query | $mysql `

for i in ${domains}; do
echo “echo $i”
$PRODUCT_ROOT_D/admin/sbin/dnsmng update $i
done

horde sevmeyenlere linux plesk 9.5 afterlogic webmail lite kurulumu

sunucunuza ssh üzerinden login olun.psa-horde paketinin kurulu olduğu dizine geçin;

cd /usr/share/psa-horde/

Bu dizine afterlogic webmail lite uygulamasını indirin;

wget http://www.afterlogic.com/download/webmail_php.zip

Sıkıştırılmış dosyayı açın;

unzip webmail_php.zip

dizinin içine girin;

cd webmail

bu aşamada webmail için gerekli mysql veritabanını oluşturuyoruz;

mysqladmin -uadmin create alwebmaildb -p$(cat /etc/psa/.psa.shadow)

mysql -uadmin -p$(cat /etc/psa/.psa.shadow)

bu komutla mysql konsola girdikten sonra aşağıdaki cümleleri sırasıyla yazın.

CREATE USER ‘afterlogic’@’localhost’ IDENTIFIED BY ‘sizinşifreniz’;

GRANT USAGE ON * . * TO ‘afterlogic’@’localhost’ IDENTIFIED BY ‘sizinşifreniz’ WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

GRANT ALL PRIVILEGES ON `afterlogic` . * TO ‘afterlogic’@’localhost’;

FLUSH PRIVILEGES;

mysqlden çıktıktan sonra (quit yazarak veya ctrl+c),kurulumda sorun çıkmaması için ufak bir dosya hatasını gideriyoruz;

cd /usr/share/psa-horde/webmail/install/steps/
chmod 644 root compatibility.php

diğer gerekli yazma izinleri (webmailin bulunduğu alanda php scriptlerini Apache çalıştırıyorsa;

cd /usr/share/psa-horde/webmail/
chown apache.apache data/ -R

Browserınızın adres satırına kurulum url adresi olarak aşağıdaki satıra kendi alanadınızın adını yazın.

http://webmail.sizinalanadiniz.com/webmail/install/

web tabanlı kurulum.sırasıyla aşağıdaki aşamaları geçin;

  • klasörlere yazma izinleri,çeşitli php modul kontrolü vs vs
  • webmail veritabanı oluşturulması için sql bilgileri girişi (yukarıda oluşturmuştuk..
  • smtp /pop / imap test
  • mailadm yönetici şifre oluşturma

aşamaları tamamladıktan sonra kurulum sizden install dizinini silmenizi isteyecektir;

 

cd /usr/share/psa-horde/webmail/

rm -rf install/

artık horde webmaili kullanmayacaksanız index.php nin adını değiştirip,yeni index.php nizi oluşturun.

cd /usr/share/psa-horde/

mv index.php index.old.horde

içine şunları yazın.

nano index.php

<?php
header(‘Location: ./webmail/index.php’);
?>

Mail formlardan gönderilen e-maillerin izlenmesi ve kontrolü

Web sayfalarının bir çoğunda mail form kullanılıyor.Bu scriptlerde bulunabilecek bir açık sunucunuz üzerinden onbinlerce spam gönderimine sebep ve sizin karalistelere girmenize sebep olabilir.Aşağıda kurulumu anlatılan script form maillerden gönderilen her mailin logunu yazmakta ve sizin belirteceğiniz alıcı sayısına göre maili engellemektedir.Scriptin bir kısmı anonim alıntıdır,ilaveler bulunmaktadır.

Öncelikle php betiğinin çalışması için gerekli paketleri sistemimize kuruyoruz.Redhat,Centos kullanıyorsanız şu komutla ilgili paketleri kurabilirsiniz;

yum install php-pear-Auth-SASL.noarch php-pear-Mail.noarch php-pear-Mail-Mime.noarch php-pear-Net-SMTP.noarch php-pear-Net-Socket.noarch

Kurulum bittikten sonra aşağıdaki scripti fmmgw.php adıyla sisteminizde uygun bir yere veya /usr/local/bin altına kopyalayın.

#!/usr/bin/php
<?php
ini_set(‘include_path’, ‘/usr/share/pear’);
//—CONFIG
$config = array(
‘host’ => ‘localhost’,
‘port’ => 25,
‘auth’ => FALSE,
);
$logDir      = ‘/var/log’;
$logFile     = ‘mail_proxy.log’;
$failPrefix  = ‘fail_’;
$EOL         = “\n”; // change to \r\n if you send broken mail
$defaultFrom = ‘”hostadresiniz.alanadiniz.com Webserver” <fmmgw@alanadiniz.com>’;
//—END CONFIG

if (!$log = fopen(“{$logDir}/{$logFile}”, ‘a’)) {
die(“ERROR: cannot open log file!\n”);
}

require(‘Mail.php’); // PEAR::Mail
if (PEAR::isError($Mailer = Mail::factory(‘SMTP’, $config))) {
fwrite($log, ts() . “Failed to create PEAR::Mail object\n”);
fclose($log);
die();
}

// get headers/body
$stdin = fopen(‘php://stdin’, ‘r’);
$in = ”;
while (!feof($stdin)) {
$in .= fread($stdin, 1024); // read 1kB at a time
}

list ($headers, $body) = explode(“$EOL$EOL”, $in, 2);

$recipients = array();
$headers = explode($EOL, $headers);
$mailHdrs = array();
$lastHdr = false;
$recipFields = array(‘to’,’cc’,’bcc’);
foreach ($headers AS $h) {
if (!preg_match(‘/^[a-z]/i’, $h)) {
if ($lastHdr) {
$lastHdr .= “\n$h”;
}
// skip this line, doesn’t start with a letter
continue;
}
list($field, $val) = explode(‘: ‘, $h, 2);
if (isset($mailHdrs[$field])) {
$mailHdrs[$field] = (array) $mailHdrs[$field];
$mailHdrs[$field][] = $val;
} else {
$mailHdrs[$field] = $val;
}
if (in_array(strtolower($field), $recipFields)) {
if (preg_match_all(‘/[^ ;,]+@[^ ;,]+/’, $val, $m)) {
$recipients = array_merge($recipients, $m[0]);;
}
}
}
if (!isset($mailHdrs[‘From’])) {
$mailHdrs[‘From’] = $defaultFrom;
}

$recipients = array_unique($recipients); // remove dupes

if(count($recipients)>2) die(“HATA”);

// send
if (PEAR::isError($send = $Mailer->send($recipients, $mailHdrs, $body))) {
$fn = uniqid($failPrefix);
file_put_contents(“{$logDir}/{$fn}”, $in);
fwrite($log, ts() .”Error sending mail: $fn (“. $send->getMessage() .”)\n”);
$ret = 1; // fail
} else {
fwrite($log, ts() .”Mail sent “. count($recipients) .” recipients.\n”);
$ret = 0; // success
}
fclose($log);
return $ret;

//////////////////////////////

function ts()
{
return ‘[‘. date(‘y.m.d H:i:s’) .’] ‘;
}

?>

Log dosyanızı elle oluşturun

touch /var/log/mail_proxy.log

Son olarak php.ini dosyanızda ilgili alanı şu şekilde değiştirin.

sed -i -e ‘s:;sendmail_path = /usr/sbin/sendmail -t -i:sendmail_path = /usr/local/bin/fmmgw.php:g’ php.ini

veya nano,vi gibi bir editor ile php.ini dosyanızda

sendmail_path

satırını bulup karşısına

/usr/local/bin/fmmgw.php

yazarak dosyanızı kaydedin.

Apache web servisini resetleyin.

Gönderilen mailleri anlık izlemek için

tail -f /var/log/mail_proxy.log

yazıp inceleyebilirsiniz.

Plesk Linux Sunucularda büyük log dosyalarını bulmak

Kontrol edilmediğinde siz hiç farkına varmadan sunucunun disk alanını bitirebilecek log dosyaları oluşabilir.Örneğin plesk hosting panelde tüm vhostların error log dosyalarını şu şekilde sıralatabilirsiniz

Selection_013

Farklı sistem veya ispconfig,cpanel,directadmin gibi farklı yazılımların kurulu olduğu sunucularda dosya yolları farklılık gösterebilir.Yukarıda verdiğimiz örnek 9.x serisi Linux için olan Plesk sürümleri için geçerlidir.

Komut şu şekilde;

find /var/www/vhosts/*/statistics/logs/error_log -exec ls -la {} \; | awk ‘{print $5 $9}’ | sort -n

Eğer tüm error log ları silmek isterseniz yine yukarıdaki sisteme göre şöyle bir söz dizimi işinize yarayacaktır.

find /var/www/vhosts/*/statistics/logs/error_log -exec rm {} \;

Güncel Not:

Plesk 12.x ve Onyx de log dosyaları hem statistics/logs hem de webdizini/logs altında görünmektedir.Bu dosyalar dosya sisteminden hard (sembolik) link ile bağlanmıştır.Yani aslında aynı dosyadır.Bu durumda komutu şu şekilde uygulayabilirsiniz;

find /var/www/vhosts/logs/error_log -exec ls -la {} \; | awk ‘{print $5 $9}’ | sort -n