rsync de farklı ssh portu kullanımı

rsync -avz -e “ssh -p hedef ssh server port numarası” kullanıcıadı@uzaksunucuip:/uzaktaki/klasör/ /lokal/sunucunuzdaki klasör/

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

Linux iptables ile ultrasurf engelleme

Pfsense kurup networkünü yönetmekte olduğum müşterimin bir gün bana çılgıncasına “ultrasurf diye bişey bulmuşlar her yere giriyorlarrrrrrr!” şeklinde asabi haykırışı akabinde pfsense’de nasıl ultrasurf engellenir diye araştırmaya koyuldum.Gece saat 3.Sonuç yok.Zaten forum.pfsense’deki kullanıcılarda uyumakta.Ben çaresiz!

Bu google’ın büyük işler yaptığını kabul ediyorum ama yine de pek sevemiyorum.Ancak google veya “arama motoru” olmasaydı bu işler nasıl hallolurdu bilemiyorum.

Ararken tararken kısa bir ipucu buldum.http://pere.bocairent.net/?p=57

Yazının tarihini görünce ultrasurf’çülerin bu işi değiştirmiş olduğunu düşündüm.Müşterimin networkunda bir pc ye wireshark kurdum.Aynı pc de ultrasurf’ü çalıştırdım.Tahmin ettiğim gibi hex kodu değişmişti.

Ağ geçidi olarak çalışan pfsense ‘e snort kurdum.Hex kodunu kullanarak uygun bir kural yazdım.Evet.Kural match!Fekat?

Çok da uğraştığımı söyleyemem ama snort kuralı tanıdığı halde drop etmiyor.Hay bin kunduz!Döndük Baba Ocağına!

Sonuç olarak ağ geçidine bir de linux ekleyerek bu iş çözüldü.Hem de tek bir iptables satırıyla…

iptables -I FORWARD -m tcp -p tcp –dport 443 -m string –to 256 –hex-string ‘|16030000610100005d0300|’ –algo bm -j DROP

 

Not: Bu çözüm indirdiğiniz ultrasurf paketine göre değişebilir.Benim güncel olarak denediğim u1301.exe.Sanyorum 13.01 versiyonu.Yukarıdaki linke bakarsanız wiresharkta dikkat çekilmiş SSL Handshake esnasındaki paketindekin içeriğine göre iptablestaki hex satırını değiştirebilirsiniz.

Not2: Bu metallica ve more beer da neyin nesi diyenlere..yazıyı yazarken bira içiyordum.aklıma öylesine geliverdi.

Not3: Kopyala yapıştır olmasaydı sysadmin nasıl olunurdu?

Android sevmeyenlere ucuz yollu netbook ve ubuntu dönüşümü

Toshibanın ürettiği(*) ve sessiz sedasız üretimden kaldırılan AC100 modeli aslında güçlü Nvidia TEGRA2 altyapısıyla ideal bir netbook bence.Ultra hafif,ultra ince,standart HDMI,sdcard ve USB (in,out) bağlantıları da mevcut.Adaptör belki birazda küçük ve hafif olabilirdi.Diğer takıldığım nokta ise monitorun alt kısmındaki boşluk.

Sonuç olarak bir iki küçük kusuru dışında gayet güzel bir cihaz.Ancak Android 2.2 (3-4 olsa ne farkederdi sanki?) bu cihazın üretimden kaldırılma sebebi bence.Kimse bu cihazı bu işletim sistemiyle dokunmatik olmayan bir ekranla kullanamazdı.Bence Toshiba burada büyük bir hata yapmış.Hatayı düzeltenler ise Ubuntu – Tegra geliştiricileri olmuş.

Sözün kısası eğer bu cihaz elinizde varsa veya almayı düşünüyorsanız aşağıdaki linkteki aşamaları geçerek gerçek bir pcye dönüşümünü gerçekleştirebilirsiniz.

https://wiki.ubuntu.com/ARM/TEGRA/AC100

ARM_TEGRA_AC100 – Yukarıdaki yazının text versiyonu

Kurulumu tamamladıktan sonra bilmeniz ve yapmanız gerekenler.

1.HDMI-out ‘da sorun var.Görüntü aktarılamıyor.HDMI 1.3-1.4 uyumsuzluğu veya başka bir sorun olabilir.Bu özelliği istiyorsanız biraz araştırmanız lazım.Gerçek şu ki cihazı biran önce sahibine teslim etmem gerektiğinden bunu araştırma/uygulama fırsatı bulamadım.

2.Yeni kurulumda Turkish-Sundeadkeys seçmiş olmama rağmen sistem her açılışta bunu unutuyordu.Problemi gidermenin çeşitli yolları mevcut.Ben taskbara keyboard layout appleti ekledim.Klavyeyi TRQ yaptım ve sorun çözüldü.

3.İşletim sistemini kurduktan sonra yukarıdaki linkteki sayfada belirtildiği gibi mutlaka Nvidia Tegra sürücüsünü aktif hale getirin.

4.Flash kurmaya çalışmak bence gereksiz olacaktır.Ama illa istiyorum derseniz chromium (google chrome) veya firefox için eklentiler mevcut.

5.Sistemi kullanmaya başladıktan sonra güncelleme ve sürüm yükseltme işlemleri bir miktar riskli olabilir.Güncelleme yapmadan önce mutlaka uyumluğu konusunda araştırma yapın.Elinizdeki işletim sistemi tamamiyle deneyseldir.Sanıyorum kararlı sürümü hiçbir zaman olmayacak.

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’);
?>

Postfix mail sunucusunda günlük gönderim limiti uygulaması

Cluebringer v2.1

Quata modülü sayesinde ,postfix mail sunucusunda e-mail kullanıcılarının günlük gönderim limitlerini kontrol edebileceğiniz,web arayüzünden ayarları yapabildiğiniz açık kaynak kodlu yazılım.

Detaylı bilgi ve kurulum dökümanı için http://www.policyd.org/

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” <[email protected]>’;
//—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

 

Joomla ve WordPress Hosting

En basit haliyle uyum problemleri ya bileşen eksikliğinden ya da dosya sistemi üzerine yazma haklarından ortaya çıkar.Bu sadece hazır scriptlere mahsus bir durum da değildir esasında.Joomla’nız,  wordpress’iniz ya da elinizdeki varolan ve kullanmak istediğiniz herhangi bir yazılım ,eğer hosting alanında dosya oluşturabiliyor veya silebiliyorsa,kullandığı tüm bileşenler serverda destekleniyorsa güzel güzel çalışır.

Bu uyumluluğun var olup olmadığını anlamanın iki basit yolu vardır.

Konu php bileşenleri ise;örneğin php-xml php-mbstring gibi,

Satın aldığınız hostinginizde phpinfo.php adıyla bir dosya oluşturun.ismin önemi yok.uzantısı php olsun yeter.ve içine şunları yazın

<?php
phpinfo();
?>

Daha sonra alanadınızla birlikte bu dosyanın tam yolunu tarayıcınızın adres satırına yazarak çağırın.Karşınıza tam da şu şekilde bir ekran gelecektir.(Eğer phpinfo() fonksiyonu birşekilde kapatılmamışsa!)

Karşınıza gelen bu upuzun sayfada sırasıyla hangi php bileşenlerin yüklü olduğunu görebilir,kullanmak istediğiniz scriptin gereksinimleriyle karşılaştırabilirsiniz.

Eğer konu yazma izinleri ile ilgili ise aynı dosyada üçüncü satıra dikkat etmenizi tavsiye ederim.Örneğimizde,bu satırda CGI/FastCGI yazmaktadır.Burada sadece CGI,Apache2 Handler,ISAPI extension hatta php/FPM de yazabilirdi.

Apache2 Handler yazıyorsa başınız yazma izinleriyle dertte demektir.Dosyaları webden yüklemeniz için yazma izinlerini ve dosya sahipliklerini değiştirtmek zorunda kalacaksınız.Daha sonra da bu dosyaları silmek istediğinizde hosting firmanıza telefon veya çağrı açmak zorunda kalacaksınız.ISAPI’ de de aynı durum sözkonusu.

Bu tip sorunlarla karşılaşmamak için barındırma hizmeti satın almadan önce firmayla görüşüp hangi hosting kontrol paneli kullandıklarını sormanızda fayda var.Plesk ise php/fastcgi,cpanel ise phpsuexec,directadmin ise suphp kullanıp kullanmadıklarını sorun.Alacağınız yanıt evet ise joomla veya wordpress bu bakımdan sorunsuz çalışabilir manasına gelecektir.