Yandex’e MYSQL Yedek Yükleme (PHP)

<?php

//MySQL server and database
$dbhost = ‘localhost’;
$dbuser = ‘dbkullaniciadi’;
$dbpass = ‘dbsifre’;
$dbname = ‘dbadi’;
$tables = ‘*’;

//Call the core function
backup_tables($dbhost, $dbuser, $dbpass, $dbname, $tables);

function yandexeyukle($filename)
{
$user = “ahmet@yandex.com”;
$password = “yandexsifre”;
$credentials = array($user, $password);
$filepath = ‘/home/sitename/public_html/yedek/’ . $filename;
$filesize = filesize($filepath);
$fh = fopen($filepath, ‘r’);
$remoteUrl = ‘https://webdav.yandex.com.tr/’;
$ch = curl_init($remoteUrl . $filename);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, implode(‘:’, $credentials));
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_INFILE, $fh);
curl_setopt($ch, CURLOPT_INFILESIZE, $filesize);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$response = curl_exec($ch);
fclose($fh);
}

//Core function
function backup_tables($host, $user, $pass, $dbname, $tables = ‘*’)
{
$link = mysqli_connect($host, $user, $pass, $dbname);

// Check connection
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    exit;
}

mysqli_query($link, "SET NAMES 'utf8'");

//get all of the tables
if ($tables == '*') {
    $tables = array();
    $result = mysqli_query($link, 'SHOW TABLES');
    while ($row = mysqli_fetch_row($result)) {
        $tables[] = $row[0];
    }
} else {
    $tables = is_array($tables) ? $tables : explode(',', $tables);
}

$return = '';
//cycle through
foreach ($tables as $table) {
    $result = mysqli_query($link, 'SELECT * FROM ' . $table);
    $num_fields = mysqli_num_fields($result);
    $num_rows = mysqli_num_rows($result);

    $return .= 'DROP TABLE IF EXISTS ' . $table . ';';
    $row2 = mysqli_fetch_row(mysqli_query($link, 'SHOW CREATE TABLE ' . $table));
    $return .= "\n\n" . $row2[1] . ";\n\n";
    $counter = 1;

    //Over tables
    for ($i = 0; $i < $num_fields; $i++) {   //Over rows
        while ($row = mysqli_fetch_row($result)) {
            if ($counter == 1) {
                $return .= 'INSERT INTO ' . $table . ' VALUES(';
            } else {
                $return .= '(';
            }

            //Over fields
            for ($j = 0; $j < $num_fields; $j++) {
                $row[$j] = addslashes($row[$j]);
                $row[$j] = str_replace("\n", "\\n", $row[$j]);
                if (isset($row[$j])) {
                    $return .= '"' . $row[$j] . '"';
                } else {
                    $return .= '""';
                }
                if ($j < ($num_fields - 1)) {
                    $return .= ',';
                }
            }

            if ($num_rows == $counter) {
                $return .= ");\n";
            } else {
                $return .= "),\n";
            }
            ++$counter;
        }
    }
    $return .= "\n\n\n";
}

//save file
$fileName = 'db-yedek-' . time() . '-' . (md5(implode(',', $tables))) . '.sql';
$handle = fopen($fileName, 'w+');
fwrite($handle, $return);
if (fclose($handle)) {
    echo "Done, the file name is: " . $fileName;

}


yandexeyukle($fileName);

}

CWP – Delete All Log Files

Centos Web Panel Düşük Disk Alanına Sunucularda zaman zaman tüm günlük log dosyalarını toplu silerek yer kazanım gerektiğinde aşağıdaki SSH komutuları kullanarak işlem yapabilirsiniz.

cd /root
nano deletelog.sh

Root klasörü içine deletelog.sh dosyası oluşturarak aşağıdaki komutları ekleyin ve ardından kaydedin.

 #!/bin/bash

truncate -s 0 /var/log/messages
truncate -s 0 /var/log/maillog
truncate -s 0 /var/log/*log
truncate -s 0 /usr/local/apache/logs/*bytes
truncate -s 0 /usr/local/apache/logs/*log
truncate -s 0 /usr/local/apache/domlogs/*bytes
truncate -s 0 /usr/local/apache/domlogs/*log
truncate -s 0 /opt/alt/*/usr/var/log/php-fpm.log
truncate -s 0 /usr/local/cwpsrv/logs/access_log
truncate -s 0 /usr/local/cwpsrv/logs/error_log
truncate -s 0 /var/log/cron
truncate -s 0 /var/log/secure
truncate -s 0 /var/log/cwp/services_action.log
truncate -s 0 /var/log/cwp/cwp_sslmod.log
truncate -s 0 /var/log/cwp/cwp_cron.log
truncate -s 0 /var/log/cwp/cwp_backup.log
truncate -s 0 /var/log/cwp/activity.log
truncate -s 0 /usr/local/cwpsrv/var/services/roundcube/logs/errors
truncate -s 0 /var/spool/amavisd/.razor/razor-agent.log
truncate -s 0 /usr/local/cwp/php71/var/log/php-fpm.log
truncate -s 0 /root/.acme.sh/cwp_certs/acme.sh.log
rm -rf /var/log/maillog-*
rm -rf /var/log/monit.log-*
rm -rf /var/log/spooler-*
rm -rf /var/log/messages-*
rm -rf /var/log/secure-*
rm -rf /var/log/pureftpd.log-*
rm -rf /var/log/yum.log-*
rm -rf /var/log/monit.log-*
rm -rf /var/log/cron-*
rm -rf /var/lib/clamav/tmp.*

Daha sonra dosya izinlerini çalıştırılabilir olarak ayarlayalım.

chmod 755 /root/deletelog.sh

sonrasında çalıştırdığınızda deletelog.sh dosyası içinde komutları sırasıyla yapacak ve dosyaları silecektir.

sh /root/deletelog.sh

bu işlemin otomatik olarak belirli aralıklar yapılması için cron job tanımlaya bilirsiniz.

/usr/bin/sh /root/deletelog.sh

Ayrıca bunların dışında çok yer kaplamasada cwp_stats kayıtlarını tutuyorsanız silmek isterseniz aşağıdaki komutu kullabilirsiniz

rm -rf /home/*/cwp_stats/*

Linux Son Dosya ve Klasör Listesi

Linux sistemlerde bir klasör içindeki değişen klasör ve dosyaları listeler ve sıralar

find /home/abozdemir/public_html/ $1 -type f -exec stat --format '%Y :%y %n' "{}" \; | sort -nr | cut -d: -f2- | head


Son Değişen Dosya ve Dizinleri Görmek İçin

Dosya ve Klasör
find /home/abozdemir/public_html -newermt "10 day ago" -ls
find /home/abozdemir/public_html -mtime -15 -ls

Sadece Klasör
find /home/abozdemir/public_html -mtime -7 -type d -ls

50MB üzeri ve 1GB altı dosyaları listeler
find /home/abozdemir -type f -size +50M -size -1G

Büyükten Küçüğe Doğru Dosyaları listeler
du -skh * | sort -hr
du -skh /var/log/* | sort -hr


Dizin veya kelime arama
grep -rnw aranacakdizin/ -e 'aranacak kelime'



iki dosya ve dizin farklarını bulur.
diff -rq /home/abozdemir/public_html /home/bbozdemir/public_html
diff -c ilk-dosya.txt ikinci-dosya.txt
Boş klasörleri silme
find /home/abozdemir -empty -type d -delete

Centos Web Panel Gateway Timeout

Centos Webpanel kullanıyorsanız ve yüksek boyutlu dosya yüklemeleri veya göndermeleri sırasında default zaman ayarı nedeni ile gateway timeout hatası alıyorsanız öncelikli olarak Php konfigürasyon ayarlarınızı gözden geçiriniz. Php Konfigürasyon ayarlarınızı yaptığınız halde sorun devam ediyorsa aşağıdaki işlemleri Centos WebPanele giriş yaparak gerçekleştiriniz

  1. WebServers Settings
  2. WebServers Configuration Editor
  3. Apache
  4. /usr/local/apache/conf.d/vhosts/
  5. domainadiniz.com.conf ve domainadiniz.com.ssl.conf bulun ve açın
  6. <IfModule proxy_fcgi_module> satırını bulun ve
  7. timeout 600 ekleyin.
  8. Saklayın ve aynısını ssl conf dosyası için yapın.
    /usr/local/apache/conf.d/vhosts/domainadiniz.com.ssl.conf
  9. Apache yeniden başlatınız.

 

Centos Web Panel SSL Hatası

Centos Web Panel SSL sertifikası hatası alıyorsanız çözüm için aşağıdakileri sırasıyla yapınız.

Öncelikli olarak aşağıdaki komut ile host ismini öğreniyoruz.
hostname server.bozdemir.com (Örnek)
cat /etc/redhat-release (CentOS Linux release 7.6.1810 (Core) Sistemi)

yum install epel-release (sistemde yüklü bilgisi alabilirsiniz)
yum update (sistemi güncelliyoruz)
yum install certbot (Yüklüyoruz)
yum info mod_ssl openssl (kurulu olup olmadığını kontrol ediyoruz)

letsencrypt.conf dosyasına aşağıdaki gibi açıp içini düzenliyoruz.

nano /usr/local/apache/conf.d/letsencrypt.conf

Alias /.well-known/acme-challenge/ “/usr/local/apache/autossl_tmp/.well-known/acme-challenge/”
<Directory “/usr/local/apache/autossl_tmp/”>
AllowOverride None
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
</Directory>

certbot certonly –agree-tos –email a h m e t @ bozdemir.com –webroot -w /usr/local/apache/autossl_tmp/ -d server.bozdemir.com

cp /usr/local/apache/conf.d/ssl.conf /usr/local/apache/conf.d/bak.ssl.conf.orig

nano /usr/local/apache/conf.d/ssl.conf

<IfModule !ssl_module>
LoadModule ssl_module modules/mod_ssl.so
</IfModule>
Listen 443
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
Header always set Strict-Transport-Security “max-age=63072000; includeSubDomains; preload”
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off

# OCSP Stapling, only in httpd 2.3.3 and later
SSLUseStapling on
SSLStaplingCache “shmcb:logs/stapling-cache(150000)”
# Requires Apache >= 2.4.11
SSLSessionTickets Off

SSLStaplingResponderTimeout 5
SSLStaplingReturnResponderErrors off
SSLStaplingCache shmcb:/var/run/ocsp(128000)

Aşağıdaki komut ile mod_ssl ve shmcb modülleri açıyoruz.

nano /usr/local/apache/conf/httpd.conf

LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

hostname-ssl.conf dosyasını açıyoruz ve aşağıdak kodu ekliyoruz.

nano /usr/local/apache/conf.d/hostname-ssl.conf

<VirtualHost *:443>
ServerName server.bozdemir.com
ServerAdmin a h m e t@bozdemir.com
DocumentRoot /usr/local/apache/htdocs/

SSLEngine on
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCertificateFile /etc/letsencrypt/live/server.bozdemir.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/server.bozdemir.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/server.bozdemir.com/fullchain.pem
SetEnvIf User-Agent “.*MSIE.*” nokeepalive ssl-unclean-shutdown

<IfModule mod_suexec.c>
SuexecUserGroup nobody nobody
</IfModule>

<IfModule mod_suphp.c>
suPHP_UserGroup nobody nobody
suPHP_ConfigPath /home/nobody
</IfModule>

<Directory “/usr/local/apache/htdocs/”>
AllowOverride All
</Directory>

</VirtualHost>

cwpsrv.conf dosyasını açıyoruz.

nano /usr/local/cwpsrv/conf/cwpsrv.conf

Aşağıdaki satırları bulun :
ssl_certificate /etc/pki/tls/certs/hostname.crt;
ssl_certificate_key /etc/pki/tls/private/hostname.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;

Yukarıdaki Satırların başına # ekleyin ve aşağıdaki satırları ilave edin

ssl_certificate /etc/letsencrypt/live/server.bozdemir.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/server.bozdemir.com/privkey.pem;
ssl_protocols TLSv1.2;
#Apache İçin
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
#NGINX İçin
#ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;

users.conf dosyasını editliyoruz.

nano /usr/local/cwpsrv/conf.d/users.conf

Aşağıdakı Satırları bulun:
ssl_certificate /etc/pki/tls/certs/hostname.crt;
ssl_certificate_key /etc/pki/tls/private/hostname.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;

Aşağıdakileri Yapıştırın:
ssl_certificate /etc/letsencrypt/live/server.bozdemir.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/server.bozdemir.com/privkey.pem;
ssl_protocols TLSv1.2;
#Apache İçin
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
#NGINX İçin
#ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;

webmail.conf dosyasını editliyoruz.

nano /usr/local/cwpsrv/conf.d/webmail.conf

Aşağıdakı Satırları bulun:
ssl_certificate /etc/pki/tls/certs/hostname.crt;
ssl_certificate_key /etc/pki/tls/private/hostname.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;

Aşağıdakileri Yapıştırın:
ssl_certificate /etc/letsencrypt/live/server.bozdemir.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/server.bozdemir.com/privkey.pem;
ssl_protocols TLSv1.2;
#Apache İçin
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
#NGINX İçin
#ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;

Ayar işlemlerimiz tamamlandı. Artık servisleri yeniden başlatıyoruz.

/usr/local/cwpsrv/bin/cwpsrv -t
systemctl restart cwpsrv
systemctl restart httpd
systemctl status cwpsrv
systemctl status httpd

CWP Admin Panel Linkleri (by hostname)
CWP Admin Panel Link: http://server.bozdemir.com:2030
CWP Admin Panel Link: http://server.bozdemir.com:2086
CWP Admin Panel SSL Link: https://server.bozdemir.com:2031
CWP Admin Panel SSL Link: https://server.bozdemir.com:2087

CWP User Panel Linkleri (by hostname)
CWP User Panel Link: http://server.bozdemir.com:2082
CWP User Panel SSL Link: https://server.bozdemir.com:2083

Not : Başlatma sırasında emerg hatası alırsanız.
Starting cwpsrv: cwpsrv: [emerg] SL_CTX_use_PrivateKey_file(“/etc/pki/tls/private/hostname.key”) failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)

Hostname için SSL oluşturmalısınız.

/usr/local/cwpsrv/htdocs/resources/scripts/generate_hostname_ssl

cwpsrv: [warn] he “ssl” directive is deprecated, use the “listen … ssl” directive instead …i.conf:8
/usr/local/cwpsrv/conf.d/api.conf Uyarı hatası alırsanızda dikkate almaya bilirsiniz.
ssl on; satırından kaynaklıdır.

AutoSSL – Error Code: 77

Centos Web Panel üzerinde yer alan SSL Certificates sekmesinde yer alan AutoSSL Çalışmaması durumunda aşağıdaki hatayı alıyorsanız yapmanız gereken şey ca-certificates sistem yeniden yüklemeniz yeterli olacaktır.

Ancak logları inceleyerek ve yapılması gerekenler sırayla aşağıda yer almaktadır.

tail -f /root/.acme.sh/acme.sh.log

[Wed Jun 5 13:10:30 +03 2019] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 77
[Wed Jun 5 13:10:30 +03 2019] ret=’77’
[Wed Jun 5 13:10:30 +03 2019] Can not connect to https://acme-v01.api.letsencrypt.org/directory to get nonce.
[Wed Jun 5 13:10:30 +03 2019] Can not get domain new authz.
[Wed Jun 5 13:10:30 +03 2019] pid
[Wed Jun 5 13:10:30 +03 2019] No need to restore nginx, skip.
[Wed Jun 5 13:10:30 +03 2019] _clearupdns
[Wed Jun 5 13:10:30 +03 2019] skip dns.
[Wed Jun 5 13:10:30 +03 2019] _on_issue_err
[Wed Jun 5 13:10:30 +03 2019] Please check log file for more details: /root/.acme.sh/acme.sh.log

dilerseniz bu log dosyasınıda inceleye bilirsiniz. cat /var/log/cwp/cwp_sslmod.log

curl -v https://acme-v01.api.letsencrypt.org/directory

komutunu çalıştırın ve aşağıdaki gibi bağlantı hatasını alıryorsanız yeniden ca-certificates kurulum yapın.

About to connect() to acme-v01.api.letsencrypt.org port 443 (#0)
Trying 104.66.95.37…
Connected to acme-v01.api.letsencrypt.org (104.66.95.37) port 443 (#0)
Initializing NSS with certpath: sql:/etc/pki/nssdb
Closing connection 0
curl: (77) Problem with the SSL CA cert (path? access rights?)

yum reinstall ca-certificates

ardından tekrar kontrol için aşağıdaki komut ile kontrol edin. Hata yerine OK aldığınızı göreceksiniz. Ardından artık Centos-WebPanel üzerinden artık AutoSSL sertifikaları üretilebilecektir.

curl -v https://acme-v01.api.letsencrypt.org/directory

Komutu ilede SSL Oluşumu test edilebilir.
sh /root/.acme.sh/acme.sh –home /root/.acme.sh/cwp_certs –issue -d www.alanadi.com -d alanadi.com -w /usr/local/apache/autossl_tmp –debug 2

pflogsumm ile Günlük Rapor

Sunucu üzerinde e-posta gönderimi, alımı gibi işlemlerin neler olduğunu görmej istersiniz. Postfix Mail Sunucusu kullanıyor iseniz pflogsumm kurmanızı ve günlük cron tanımlayarak rapor almanızı öneririm.

Bu raporlama sayesinde, kime kaç tane posta gelmiş, kimlerden gelmiş, hangi saatler arası posta hareketliliği olmuş vb bir çok bilgi gelecektir.

pflogsumm Kurmak İçin

yum install postfix-perl-scripts.x86_64

Aşağıdaki komutu SSH üzerinden çalıştırarak sonuçları görebilirsiniz.

perl /usr/sbin/pflogsumm -e -d yesterday /var/log/maillog

Kendinize günlük rapor gelmesini istiyorsanız. postfix_report.sh dosyasının aşağıdaki gibi oluşturun, içine ilgili satırdaki kodları girin saklayarak dosyadan dıkış yapın ve ardından çalıştırma yetkisini verin. Günlük gece 00:00 raporlama için 0 0 * * * ile cronu ekleyin. cron servislerini yeniden başlatmayı unutmayın.

nano /usr/local/sbin/postfix_report.sh

#!/bin/sh
perl /usr/sbin/pflogsumm -e -d yesterday /var/log/maillog | mail -s “Postfix Mail Statistics” epostaadresiniz@domain.com
exit 0

chmod +x /usr/local/sbin/postfix_report.sh

crontab -e

0 0 * * * /usr/local/sbin/postfix_report.sh &> /dev/null

E-Posta Logları İnceleme

Sunucu üzerinde bazen illagel durumları tespit etmek istersiniz. bunun için yapmanız gereken bazı komutları aşağıda verilmektedir. Bu rapor çıktılarını inceleyerek genel bir yorum yapabilir hale gelirsiniz.

Sunucuya IMAP ve POP3 olarak bağlantı yapanları tespit etmek için.
4 Haziran Tarihinde Kim kaçkere Login olmuş.

E-Posta listesini olarak listeler, bağlantı sayıları ile birlikte
grep -i “Login: user” /var/log/dovecot-info.log |grep “Jun 04″|awk {‘print $7’}|sort|uniq -c|sort -n

IP Listesi ile birlikte görmek için
grep -i “Login: user” /var/log/dovecot-info.log |grep “Jun 04″|awk {‘print $7” “$9’}|sort|uniq -c|sort -n

Mail Log kayıtlarında SMTP Kullanarak Giriş Yapanları Tespit Etmek İçin (Web Üzerinden Bağlanma) Genellikle Spam Gönderilerin kimler tespit etmek için kullanılır.

Zaman Damgasız Sorgulama İçin
grep -i “sasl_username” /var/log/maillog |awk {‘print $9’}|sort|uniq -c|sort -n

Belirli Bir tarihi sorgulamak için
grep -i “sasl_username” /var/log/maillog |grep “Jun 4″|awk {‘print $9’}|sort|uniq -c|sort -n

Client ve Ip Adreslerini almak için
grep -i “sasl_username” /var/log/maillog |grep “Jun 4″|awk {‘print $9” “$7’}|sort|uniq -c|sort -n

Sunucu tarafından red edilen e-posta listesi
grep -i “NOQUEUE: reject:” /var/log/maillog |grep “Jun 4″|awk {‘print $10” “$21” “$22’}|sort|uniq -c|sort -n

Toplu E-Posta Çıkışını Loglardan Bulmak

Postfix Toplu E-posta Çıkış Kaynağını Bulma

Bizler ne kadar sunucuda güvenlik tedbirleri alsakta, mutlaka hepimizin başına abuse bildirim gelmektedir.

Genellikle müşterilerinizin bilgisayarlarına virus bulaşıp e-posta adresinin şifresi kaptırmış olmalarından kaynaklanır.

Her ne kadar abuse bildirimler toplu eposta çıkışımdan kaynaklı olmasada gönderilen içerik sahtekarlık ve aldatıcı e-posta olmasından dolayı acil müdehale edip gereğini yaparak abuse bildirimini sonlandırmanız gerekmektedir. Aksi taktirde sunucudaki IP adresine 24 saat sonunda Blok koyulur.

Postfix maillog kayıtları içinde size rapor edilen e-posta adresini aratınız.
bir dünya sonuç listenecektir. bizim için önemli olan ilk bulduğumuz satırdır.

cat /var/log/maillog sikayetli@postadresi.com.tr

Not : sikayet gelmemiş fakat kuyrukta çok fazla e-posta varsa hızlıca

cat /var/log/maillog | grep “sasl_method=LOGIN” 

komutu ile login olan kişileri gözden geçirerek bulmaya çalışırsınız. Örneğin bölge dışı aynı IP yada farklı IP den artarda bağlantı olunması gibi aşağıdaki örnekte görüldüğü şekli ile

Oct 18 12:15:20 server postfix/smtpd[21015]: C7CE7C5037FC5: client=unknown[13.72.68.51], sasl_method=LOGIN, sasl_username=eposta@alaadı.com

Oct 18 12:15:23 server postfix/smtpd[21015]: DC391C5037FC7: client=unknown[13.72.68.51], sasl_method=LOGIN, sasl_username=eposta@alaadı.com

Bize abuse ile postaadresi bildirildiğini düşünerek devam edelim.

Örnek :
Jun 3 02:44:21 server postfix/cleanup[12151]: 946E1C048889F: message-id=8ac9562f29d802cf404293718b63ba8f@postadresi.com.tr

gibi bir satır bulacaksınız bu satırın bir satır öncesi yada bir kaç satır öncesini dikkatli inceleyiniz.

946E1C048889F id olan client ve sasl_method değerlerini inceleyin. Aşağıdaki gibi satır bulacaksınız.

Jun 3 02:44:20 server postfix/smtpd[1144]: 946E1C048889F: client=localhost.localdomain[127.0.0.1], sasl_method=LOGIN, sasl_username=info@domain.com

sisteme legal olarak oturum açtığı info@domain.com kullanarak, illagel bir gönderimde bulunduğunu yüzlerce e-postayı kuyruğa girdiğinden anlamış olmalısınız.

yine hemen devamında kuyruğa e-posta soktuğu ve peşinden disconnect olduğunu göreceksiniz.

Jun 3 02:44:21 server postfix/qmgr[23595]: 946E1C048889F: from=sikayetli@postadresi.com.tr, size=1104752, nrcpt=500 (queue active)
Jun 3 02:44:21 server postfix/smtpd[1144]: disconnect from localhost.localdomain[127.0.0.1]

cat /var/log/maillog |grep sasl_username=info@domain.com

komutu ilede incelemeye devam edersiniz.

yine

cat /var/log/dovecot-info.log |grep info@domain.com ile bağlantı saatine dikkate alarak ip adresini tespit edebilirsiniz.

ardından sistem info@domain.com hesabını suspend etmek yada şifresini değiştirmek. Ancak müşterinize şifresini hemen vermeyin, bilgisayarını virus taramasından geçirmesini talep edin. yoksa aynı şey tekrar tekrar devam edecektir. ardından tespit ettiğimiz ip adresini güvenlik duvarından engelleyin.

Postfix IP Değiştirme (Change)

Sunucunuzda postfix kurulu ise default e-posta gönderim ip adresi Ana IP adresinizdir. Olası bir toplu e-posta çıkışı söz konusu olursa ve bu ip kara listeye girmiş ise, kara listeden çıkarmak için beklenecek vakit söz konusu değil ise hemen yapılması gereken işlem, Sunucu üzerinden gönderilecek e-postaların Farklı bir IP adres üzerinden göndermeyi ayarlamak olacaktır. Bunun için yapmanız gereken işlem

SSH ile Sunucunuza bağlanın

nano /etc/postfix/master.cf dosyasını açın ve aşağıdaki satırı 4 satırı bulun ve kaldırın.

smtp unix – – n – – smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay unix – – n – – smtp
 -o fallback_relay=

Yerine Bu Satırları Ekleyin.

smtp unix – – n – – smtp
-o smtp_bind_address=81.181.81.181-Sizin-IP-Adresiniz-Olmalı
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay unix – – n – – smtp
-o smtp_bind_address=81.181.81.181-Sizin-IP-Adresiniz-Olmalı
-o smtp_fallback_relay=

Düzenlemeyi kayıt edin ve nano edit programından çıkın.

service postfix restart

komutu ile servisi yeniden başlatın. artık yeni ip adresiniz üzerinden gönderim yapacaktır.

Not : buradaki satırları kopyalayıp yapıştırınca postfix servisi yeniden çalışmayarak bu satırlarda hata var diyebilir.

bunun için dikkat edilmesi gereken – bu işaretler arasında tab boşluğun olmmasından kaynaklanır. Bu neden bu düzenlemeyi yaparken mevcut kayıtlı satırlardan yararlanarak yapılmasını tavsiye ederim.

 

SSH Ayarları

Sunucu kurulum sonrası yapılması gereken en önemli ayarlardan biri SSH portunun değiştirilmesi ve sunucuyu erişimin belli IP ler üzerinden yapılması sağlanmaktır. Bunun yapılması sunucu güvenlik düzeyini arttırır.

İlk Önce SSH portunu değiştiriyoruz.

/etc/ssh/sshd_config 

dosyası açılarak default port 22 den çıkartılarak örneğin : Port 34380 gibi farklı bir port atanır. Bu kendinize özel belirleyebilirsiniz.

Diğer bir ayar ise herkes ssh üzerinden erişim yapmamasını sağlamaktır.

Bunun için ise /etc/hosts.allow  dosyasını açarak içine izin vermek istediğiniz ip leri yazar ve en son satırınada diğerlerine yasaklama yapmanız yeterlidir.

Örnek :

sshd : 128.118.108.108 : allow

#Evdeki Sabit IP’yi Kabul Et

sshd : 181.181.34.34 : allow

#İşteki Sabit IP ile girişi Kabul et

sshd : ALL : deny

#Herkes Yasakladı.

daha sonra SSD servisini yeniden başlatarak hizmet yeni ayarlar ile aktif etmiş olursunuz.

Postfix Komutları

Postfix mail servisi cevap vermemesi veya mail boyutunun büyük olması, spam yapılması sebebi ile mail kuyruğununda birikime neden olması ve gönderilmiş e-postaların geç gitmesi gibi sorunlarla mücadele için postfix komutları ssh üzerinde kullanılması işinizi kolaylaştıracaktır.

Kuyrukta biriken mailleri görmek için

mailq

Kuyruktaki maillerin kaç tane olduğunu ve maillerin idleri görmek için

postqueue -p

postqueue -p = mailq 

postqueue -p | tail -n 1

postqueue -p | grep -c “^[A-Z0-9]”

postqueue -p | awk ‘/^[0-9,A-F]/ {print $7}’ | sort | uniq -c | sort -n

ID lerini gördükten sonra “AB244A9” idli mailin içeriklerini okumak için

postcat -q AB244A9

Kuyrukta biriken mailleri zorla göndermek için

postfix flush veya postfix -f

Kuyruktaki mailleri silmek için

postsuper -d ALL

İletilmesi ertelenmiş mailleri silmek için

postsuper -d ALL deferred

Id sini bildiğiniz kuyrukta biriken maili silmek için

postsuper -d queue_id

Kuyruktaki bekleyen ve belirli e-postayı silmek için

mailq | tail -n +2 | grep -v ‘^ (‘ | awk ‘BEGIN { RS = “” } { if ($8 == “eposta@domainadresi.com” && $9 == “”) print $1 } ‘ | tr -d ‘!’ | postsuper -d –

bir adrese giden tüm emailleri silmek icin

mailq | tail +2 | awk ‘BEGIN { RS = “” } / user@domain.com$/ { print $1 } ‘ | tr -d ‘!’ | postsuper -d – mailq | tail -n +2 | awk ‘BEGIN { RS = “” } / user@domain.com$/ { print $1 } ‘ | tr -d ‘!’ | postsuper -d –

bir adresten gönderilen emailleri silmek icin

mailq | grep “user@domain.com” | awk ‘{ print $1}’ | postsuper -d –

E-Posta gönderini user@domainadresi.com olanları siler

postqueue -p | grep ‘^[A-Z0-9]’|grep user@domainadresi.com|cut -f1 -d’ ‘ |tr -d *|postsuper -d –

E-Posta alıcısı user@domainadresi.com olanları siler

postqueue -p | awk ‘/^[0-9,A-F].*user@domainadreesi.com / {print $1}’ | cut -d ‘!’ -f 1 | postsuper -d –

Kuyrukta olan user@domain.com ait tün postaları siler

for i in postqueue -p | grep user@domain.com | awk '{print $1}' | grep -v host | grep -v \*; do postsuper -d $i; done

Göndereni @domainadi.com olanları hepsini siler.

postqueue -p | grep ‘^[A-Z0-9]’|grep @domainadi.com|cut -f1 -d’ ‘ |tr -d *|postsuper -d –

Kuyruk ayarlarını görmek için (ayrıntılı görmek için main.cf veya master.cf)

postconf -d | grep queue

Postfix Sürümü öğrenmek için

postconf mail_version

Varsayılan Postfix ayarlarını görmek için

postconf -d

Varsayılan olmayan Postfix ayarlarını görmek için

postconf -n

Canlı Mail Loglarını görmek için

tail -f /var/log/maillog

Ayarları yeniden yüklemek için

service postfix reload

E-Posta servisini yeniden başlatmak için

service postfix restart

Raspberry SSH dan Ekli E-Posta Atmak

raspberry SSH üzerinden ek olarak e-posta gönderilmek istenirse sistemde mpack paketi yüklü olmalıdır.

sudo apt-get install ssmtp
sudo apt-get install mailutils
sudo apt-get install mpack

mpack paketi kurulur.

curl -s http://whatismijnip.nl |cut -d ” ” -f 5 > /home/pi/ip.txt
mpack -s “IP Adres Başlığı” /home/pi/ip.txt mail @ 360tr. com

örneğin http://whatismijnip.nl/ sitesinden alınan sayfa ip.txt olarak dosyaya saklanmaktadır. Ardından saklanan dosya ek olarak posta gönderilmektedir.

 

Raspberrypi Default gw

Raspberrypi veya Linux işletim sistemlerinde  hem GSM üzerinden hemde ETHERNET üzerinden internete çıkıyorsanız ve siz internete çıkışının öncelikli GSM (PPP0) üzerinden olmasını istiyorsanız GSM (PPP0) varsayılan Route Geçişiniz  GateWay adresine eklemelisiniz.

sudo route add default gw 10.64.64.64

ile ekleye bilirsiniz. böylelikle default olarak eklediğiniz gw ile nete çıkacaktır.  route -n komutu ile varsayılan gateway leri görebileceğiniz gibi traceroute google.com komutu ile takip edebilir ve ifconfig netstat -rn komutlarınıda kullanabilirsiniz.

Raspberry SSH ile SMTP E-posta Gönderme

Raspberry üzerinden SMTP ile e-posta göndermek istiyorsanız iki paketi yüklemelisiniz. Bunlar SSMTP ve MailUtils

sudo apt-get install ssmtp
sudo apt-get install mailutils

sudo nano /etc/ssmtp/ssmtp.conf
root=postmaster
mailhub=smtp.gmail.com:587
hostname=raspberrypi
AuthUser=gmailepostaniz@gmail.com
AuthPass=GmailSifreniz
FromLineOverride=YES
UseSTARTTLS=YES

echo “Merhaba E-Posta” | mail -s “Test Başlığı” mail @ 360tr. com

Not : Gmail ayarlarından düşük güvenlik aktif edilmelidir.

Raspberry Otomatik PPP0 Bağlantı

Raspberry 3G bağlantısı her seferinde sudo wvdial  komutu ile bağlanmak istemiyor ve otomatik Raspberry her açıldığında bağlanılmasını istiyorsanız aşağıdaki ayarları yapmalısınız.

/etc/network/interfaces
auto ppp0
iface ppp0 inet wvdial

ve

/etc/rc.local
sleep 60
/sbin/ifdown ppp0
/sbin/ifup ppp0

satırlarını ilgili dosyaların içine yazıp dosyayı saklayınız. sleep 60 dilerseniz kullanmaya bilirsiniz. Sistem açıldıktan 1 dakika sonra ppp0 bağlantısını kapat ver aç satırını işler.

Raspberry USB – 3G Turkcell-WIN

Raspberry USB port üzerinden 3G modem kullanmak istiyorsanız bu mümkün. Yapmanız gerekenler aşağıdaki komutlardır.

sudo apt-get install ppp
sudo apt-get install usb-modeswitch
sudo apt-get install libusb-dev
sudo apt-get install wvdial

lsusb komuutu ile USB bağlı aygıtları listeleye bilirsiniz.

sudo nano /etc/wvdial.conf

komutu ile ayar dosyası içine aşağıdakiler ekliyoruz.
[Dialer Defaults]
Init1 = ATZ
Init3 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init4 = AT+CGDCONT=1, “IP”, “mgb”
Modem = /dev/ttyUSB2
Baud = 460800
ISDN = 0
New PPPD = yes
Modem Type = Analog Modem
Phone = *99#
Username = wap
Password = wap
Stupid Mode = 1
Dial Command = ATDT

Not : mgb yerine internet yazmayınız. yazmanız durumunda hattınız üzerinden cihazınıza dışarıdan erişim sağlayamaz durumuda kullanmak zorunda kalırsınız. ttyUSB? kaçta bağlı ise o ? işareti yerine bağlı olduğu portu yazmalısınız.

sudo wvdial

komutu ile bağlantı İnternet bağlantısı sağlanır

 

Raspberrypi Kamerayı Kullanma

raspberry kendi PHP kamera yönetim yazılımını kullanmak isterseniz aşağıdaki komutları kullanarak sisteme kurabilirsiniz. Apache üzerinden php ile kamerayı yönetebilirsiniz.

git clone https://github.com/silvanmelchior/RPi_Cam_Web_Interface.git

cd RPi_Cam_Web_Interface
chmod u+x RPi_Cam_Web_Interface_Installer.sh
./RPi_Cam_Web_Interface_Installer.sh install

kurulum sonrası

./RPi_Cam_Web_Interface_Installer.sh install

tekrar giriş yapılarak configuration girilir ve ardından kamera enable edilir. Eğerki kayıt yerinin farklı bir aygıt olacaksa yine aynı yerden kayıt yolunu ayarlaya bilirsiniz. Kurulum sonrası /var/www/html yoluna kendini entegre ettiğini görecek ve böylece kamerayı dilediğiniz gibi erişebilecek ve yönete bileceksiniz.

Kamera hakkında daha ayrıntılı bilgi için aşağıdaki adresleri ziyaret edebilirsiniz.

http://elinux.org/RPi-Cam-Web-Interface
https://www.raspberrypi.org/learning/getting-started-with-picamera/

 

 

Raspberrypi Başlangıç

Raspberrypi ilk defa satın aldığınızda içinde herhangi bir yüklü sistem olmadan gelir. Siz Mini SD karta yükleyeceğiniz sistemini imaj halini internet üzerinden indirip yüklemelisiniz.

Raspberry indirmek için raspberry.org adresinden download bölümünü ziyaret etmelisiniz. İstediğiniz sistemi seçme indirme ve SD karta yükleme işlemleri bittikten sonra raspberry artık kuruluma hazırdır.

Kurulum adımlarını görebilmek için HDMI çıkışına bir monitör bağlamalısınız. Böylece kurulan paketler ve sistemin ilerleyişini gözlemlersiniz.

Kurulum tamamlanmasın ardından raspberrypi klavye, monitör, fare gibi araçlar olmadan kullanmak zorunda iseniz SSH ile bağlantı kurabilirsiniz.

SSH ile erişim sağlayabilmesi için raspberrypi nin ağ üzerinde IP almış olması gerekir. aldığı IP yi göremiyorsanız ağ üzerinde IP tarama programlarından yararlanarak bulabilirsiniz.

Kurulumlar tamamlandı ve Artık SSH ile bağlanıyoruz.

MAC, Linux kullanıyorsanız

ssh pi@IP.IP.IP.IP komutu ile Windows kullanıyorsanız PUTTY ile bağlantı kurar ve uzak erişim sağlaya bilirsiniz.

Raspberrypi varsayılan olarak aşağıdaki kullanıcı adı ve şifre ile gelir.

user : pi
passwd : raspberry

bağlantı sağladıktan sonra sisteminizi güncellemenizi mutlaka tavsiye ederim. bunları aşağıdaki komutlar ile yapabilirsiniz.

sudo apt-get update
sudo apt-get upgrade
sudo rpi-update
sudo apt-get dist-upgrade

 

chattr ile Dosya Dokunulmazlığı

Cpanel kullanıcıların zaman zaman başlarına e-posta kuyruğunun birikmesinden dolayı posta gönderilemediği şikayetlerinde bulunmaktadırlar. Sistem inceleme neticesinde birçok ayarın doğru olduğu ve kara listede olmadığın gören kullanıcıların etc/mailips dosyasının için dolu olup olmadığını kontrol etmelidirler.

İlgili dosyanın içi incelendiğinde boş olduğu görmeleri, e-posta çıkış IP’nin yazılı olmadığından sunucu üzerinden dışarıya e-posta gönderilemediğini anlaşılacaktır. Bunun için

*: 78.230.120.12

sunucu üzerinde kara listeye girmemiş  e-postanın çıkış yapacağı ip adresi yazılmalıdır. Ardından bu dosyanın tekrar Cpanel müdehalesi ile içinin boşaltılmaması için aşağıdaki komutu kullanabilirsiz.

chattr komutu linux dosya sisteminde (ext2/ext3/ext4)  dosyaya bazı özellikler katma komutudur.

Bu komut ile beraber kullanabileceğiniz parametreler. ayarlama yapmak için root olmanız gerekir.

[R] parametresi dizinleri ve içeriklerinin özelliklerini değiştirir.
[a] parametresi  yazma işlemi yetkisi var ise sadece root kullanıcısı tarafından yapılabilir. (+a, -a)
[i] parametresi dosyayı hiçbir şekilde dosya sil, değiştir, adlandır yapılmaz(+i)/yapılabilir (-i)

chattr +i /etc/mailips  komutu ile dosya kilitlenir dokunulmazlık yapılmış olur.

chattr -i /etc/mailips  komutu ile dosya kilidi kalkar ve dokunulmazlık kaldırılmış olur.

lsattr /etc/mailips komutu ile dosya özelliklerini görebilirsiniz.

FFmpeg Derleme

Sisteminizdeki Php versiyonu yükseltildiğinde veya Yeni kurulum yaptığınızda FFmpeg yüklemek isterseniz veya çalışmaması durumunda yeniden derlenmesi gerekmektedir.

bu işlem için aşağıdaki komutları sırası ile yaptığınızda derleme işlemi yapılmış olacaktır.

cd /usr/src

wget http://downloads.sourceforge.net/project/ffmpeg-php/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2?r=&ts=1365651935&use_mirror=garr

tar xjf ffmpeg-php-0.6.0.tbz2

cd ffmpeg-php-0.6.0

phpize

./configure –enable-shared –prefix=/usr

make

make install

eğerki php.ini içinde ffmpeg extensions ekli değilse ekleyeyim.

nano /usr/local/lib/php.ini

extension=ffmpeg.so

Http servisini yeniden başlatıyoruz.

/scripts/restartsrv_httpd

 

 

Linux E-Posta Kuyruğunu Temizle

Linux sunucularda e-posta sunucusunun kuyruğunda biriken e-postaları aşağıdaki komut ile silebilirsiniz.

exim -bp | awk ‘/^ *[0-9]+[mhd]/{print “exim -Mrm ” $3}’ | bash

exim -bp | exiqgrep -i | xargs exim -Mrm

exim -bp | grep ‘<‘ | awk ‘{ print $3; system(“exim -Mrm “$3)}’

Yukarıdaki 2 komut ile yapılan işlem 100.000 leri aşan posta kuyrukta var ise uzun sürecektir. bu durumda

cd /var/spool
killall -9 exim
killall -9 exim
killall -9 exim
(Exim kesin olarak sonlandırılmış olduğuna emin olunuz)
killall -9 spamd
killall -9 spamc
mv exim exim.old
mkdir -p exim/input
mkdir -p exim/msglog
mkdir -p exim/db
chown -R mailnull:mail exim
/sbin/service exim restart

bu işlemler sonrası sistem e-posta gönderme ve alma sorunları devam ediyorsa

tail -f /var/log/maillog

Komutu ile mail trafiği kontrol edilmelidir. Kontrol sonrası Error mesajları incelenir.

/var/spool/exim/input/

Klasörü altında yer alan 0-9 , a-z , A-Z arası dizinlerin olmadığını hatalar alındığı görülür bu durumda üzerine ilgili klasörler ;
mkdir /var/spool/exim/input/0
mkdir /var/spool/exim/input/1
mkdir /var/spool/exim/input/2

gibi dizinler açılır.

cd /var/spool
chown -R mailnull:mail exim

tekrar dizin yetkilendirilir.

Bu işlemlerin sonunda  SMTP Hatası: [421] Unexpected failure, please try later

şeklinde hata alırsanız.

Cpanel Giriş yapınız.

Home  »  Service Configuration »  Exim Configuration Manager

geliniz.

Önce Backup sekmesinden yedek alınız.

Ardından Reset Sekmesinden

Reset cPanel & WHM Exim configuration files, one option at a time, until the installed Exim configuration is valid

Seçerek reset işlemini yapınız.  artık düzelecektir.

Bir durum daha meydan gelmiş olabilir.

E-posta attığınız halde gitmiyor ise ve geriye size bloklandı mesajı gibi bir hata dönüyor ise.

/etc/mailips dosyasına temiz bir size ait yeni IP adresi giriniz.

cpanellogd Durdurma ve İşlemi Sonlandırma

Cpanel Günlük olarak bant genişliği hesabı yapmaktadır. bazı durumlarda sunucuya çok yük bindirmekte ve diskin yavaş çalışmasına neden olarak sunucuyu ağırlaştırmaktadır. bu durunda aşağıdaki işlemleri yaparak çalışan süreçleri durdura bilirsiniz.

touch /etc/cpanellogddisable
killall -9 cpanellogd
mv /usr/local/cpanel/cpanellogd /usr/local/cpanel/cpanellogd.bak
mv /usr/local/cpanel/libexec/cpanellogd /usr/local/cpanel/libexec/cpanellogd.bak
chkconfig –del bandmin
/usr/local/bandmin/bandminstop

Site Erişim Logları Yedekleme

Her bir site erişimleri sistem tarafından loglanır.

Bu loglar yüksek ziyaret alan sitelerde GB’ları aşan dosya boyutuna ulaşır.

belirli zamanlarda bu logların yedeklenerek başka ortama almak gerekebilir.

Ayrıca T.C. Kanunları geri loglar’da belirli bir süre saklansı gerekmektedir.

Cpanel yüklü Linux işletim sisteminde aşağıdaki komut ile Logları sıkıştırarak
yedekleye bilirsiniz.

bu komutlar ile logların bulunduğu ilgili dizine giriyoruz.

domlogs dizini tar komutu ile sıkıştırılır.

daha sonra yedeklenen log dosyalarına ihtiyaç kalmadığı için silinir.

web sunucusu yeniden başlatılmaktadır.

cd /usr/local/apache
tar -cf domlogs-XX-XX-2013.tar.gz domlogs
rm -rf /usr/local/apache/domlogs/*
/etc/init.d/httpd restart

 

Sunucu Shell Access Erişim Listesini Görmek

Linux İşletim sisteminde  root ve mysql gibi kullanıcıların dışında işin ehli olmayan shell erişimi olması oldukça tehlikeli olabilir.

mümkün olduğu kadar hiç bir standart web kullanıcısına user’a shell yetkisini Cpanel paket oluştururken vermeyiniz.

gözden kaçması, dikkat edilmeden verilmiş kullanıcılar olabilir.

bunun için aşağıdaki komutu kullanarak bu yetkiye sahip kullanıcıları görebilirsiniz.

cat /etc/passwd |grep “/bin/bash”

listenilen kullanıcıları cpanel’e gelerek modify account sekmesinden

Shell Access erişimini çeltiğini kaldırınız.

 

Linux Antivirüs Kurma ve Tarama

Linux İşlem istemi üzerine antivirus kurma ve tarama yapmak için  aşağıdaki komutları sırası ile yapınız.

 

wget http://files.avast.com/files/linux/avast4workstation-1.3.0.tar.gz

tar -xvf avast4workstation-1.3.0.tar.gz

cd avast4workstation-1.3.0

cd bin/

./avast-update

./avast /home –report=/root/avast.txt

 

home  ve alt dizinlerini tarar.

sonuçları görmek için daha sonra edit ederek bakabilirsiniz.

Shell, Door, Agent gibi scriptler tehlikeli olduğundan zaman geçirmeden siliniz.

 

İki Linux Sunucu arası uzaktan bir birine erişim

Elimizde Elma ve Armut birer sunucu olsun.

Elma Sunucusu : 77.88.12.149
Armut Sunucusu : 77.33.16.148

Öncelikli olarak elma sunucusu içine SSH ile bağlantı kurulur.

Sunucu içinde sshfs yüklü değilse yüklenmeldir.

  • apt-get install sshfs

Yükleme sonrası

  • mkdir /mnt/otherserver/

komutu ile mnt dizini altına diğer sunucu için dizin açtım. (otherserver)

  • sshfs root@77.33.16.148:/ /mnt/otherserver/

Komutunu kullandım ve root şifre isteyecektir.
şifreyi girerek sunucusunu mnt/otherserver/ dizine bağladım.

artık /mnt/otherserver eriştiğinizde diğer sunucuya erişmiş olacaksınız.

bu işlem böyle sunucu yeniden başlayıncaya kadar kalır.

yeniden başlayınca otomatik gelsin istenirse

  • /etc/fstab

içine

  • sshfs#root@77.33.16.148:/ /mnt/otherserver/ fuse defaults 0 0

tanımlanmalıdır.

erişimi kaldırmak içinde

  • # umount /mnt/otherserver/

komutu kullanılır.

 

 

Linux – Dosya Bulma ve Silme İşlemleri

Linux find komutu ile dosya değiştirme veya oluşturma tarihine göre dosyaları listeleyebiliriz.

Aşağıdaki komut ile home dizini altında tüm php dosyalarının içinde aranacak_kelime geçen dosyaları bulur ve dosya.txt içine kayıt ederi.

find /home/ -name “*.php” | xargs grep -l “aranacak_kelime” > dosya.txt

 

Aşağıdaki konut images dizininde 2 gün içinde php dosya uzantılarında işlem olmuş dosyaların listesini verir.

find /home/domainusername/public_html/images/ -iname ‘*.php’ -type f -mtime -2 -exec ls -lh {} \; | awk ‘{ print $9 “: ” $5 }’

 

Aşağıdaki konut images dizininde zaman sınırlaması olmaksızın php dosya uzantılarında işlem olmuş dosyaların listesini verir.

find /home/domainusername/public_html/images/ -iname ‘*.php’ -type f -exec ls -lh {} \; | awk ‘{ print $9 “: ” $5 }’

 

Aşağıdaki komut ise 14 gün içinde public_html dizini altında php dosyalarında değişiklik olmuş ise veya oluşturulmuş ise a.txt dosyasına kayıt eder.

find /home/domainusername/public_html/ -iname ‘*.php’ -type f -mtime -14 -exec ls -lh {} \; | awk ‘{ print $9 “: ” $5 }’ > a.txt

 

Aşağıdaki komut ise images dizinideki tüm php dosyalarını siler.

find /home/domainusername/public_html/images/ -iname ‘*.php’ -print -exec rm -rf {} \;

 

Aşağıdaki komut ise images dizinindeki 2 gün içinde (-mtime -2) sayesinde oluşan veya değiştirilen tüm php dosyalarını siler.

find /home/domainusername/public_html/images/ -iname ‘*.php’ -mtime -2 -print -exec rm -rf {} \;

 

[ERROR] Can not open directory for URI: /!

[ERROR] Can not open directory for URI: /!

Proudly Served by LiteSpeed Web Server at www.????????????????.com Port 80

Böyle bir hata alıyorsanız.

Muhtemelen yedekten bir paket kurulumu yaptınız veya farklı bir sunucudan LITESPEED kullanılan sunucuya hostunuzu taşıdınığızda karşılaşılmaktadır. bu çok nadir görülür.

Bunun Sebibi

public_html 

Dizininin Grup Sahini NoBody olmamasından kaynaklanır.

Çözüm için Sunucu Sahibine ulaşıp Bu dizinin Grup Sahibi bilgilerini değiştirmesini istemelisiniz.

 

Apache Devreden Çıkarıp Litespeed Devreye Almak

Linux Sunucularda kullanılan Litespeed Web Sunucusu sunucu yeniden başladığında veya Linux Sunucu Kernel güncellemesi yapıldığında devrede olan Litespeed’in devre dışı olduğu ve Apache’nin aktif olduğunu gördüğümüzde Aşağıdaki komutları kullanarak Apache devre dışı bırakmış ve Litespeed devreye almış oluruz.

CODE :

killall -9 httpd

cd /tmp/

rm -rf sess*

/etc/init.d/lsws start

Linux’ten Windows Dizinine Erişim

Windows Sunucuda Paylaşıma açılan bir dizine Linux Sunucu üzerinden erişim için aşağıdaki komutları kullana bilirsiniz.

Command : 

mount -t cifs -o username=KullanıcıAdı,password=Şifre //IP.ADRESI/path /home/user/path

/etc/fstab

Dosyasına aşağıdaki satırı ekleyiniz.

//IP.ADRESI/ShareDizin /home/user/mountdizini cifs username=KullanıcıAdı,password=Şifre,_netdev 0 0

Not : Windows Sunucu üzerinde açacağınız kullanıcı için yetkileri mutlaka gözden geçiriniz.
Paylaşım açılacak dizin için sade açtığınız Kullanıcıyı yetkili (Okuma-Yazma) veriniz.
Diğer Kullanıcıları kaldırınız.

Litespeed Şifre Sıfırlama [SSH]

Linux sunucunuz da Litespeed Web Sunucusunu kullanıyorsanız ve uzun süre Litespeed (7080) paneline girmemiş ve şifrenizi hatırlamıyorsanız Şifre değiştirme işlemi için aşağıdaki dizinde bulunan komutu çalıştırabilirsiniz.

Bu komutu kullandığınız da ilk olarak kullanıcı adı istemektedir. Koymak istediğiniz kullanıcı adını belirtiniz.

devamında yeni şifrenizi iki defa isteyecektir. bu işlem ardından şifreniz değişmiş olacaktır.

code :
#cd /usr/local/lsws/admin/misc
#./admpass.sh

 

Memcached Başlatma [SSH]

Herhangi bir şekilde sunucuda memcached durmuş ise aşağıdaki hataya benzer bir hata  alıyor olacaksınız.

bu hatanın giderilmesi için yine aşağıdaki komutu kullanabilirsiniz.

Could not connect to memcache server

 

Memcached Start Commad  – Memcached Başlatma Komutu

/usr/local/bin/memcached -u nobody -d -m 128 -l 127.0.0.1 -p 11211

 

Manuel FTP Hesabı Açma [SSH]

Manuel FTP Hesabı Açma
Plesk Panel Yüklü bir LinuX sunucuya SSH bağlantısı ile manuel FTP hesabı açmak için aşağıdaki adımları sırasıyla uygulaya bilirsiniz.
1. Adım FTP Kullanıcı ve yetkili olacağı dizini ayarlıyoruz.
/usr/sbin/useradd -d /var/www/vhosts/alanadi.com/dizin -s /bin/false FTP_USER_NAME (Yeni Ftp Kullanıcı Adı)

2. Kullanıcı modunu belirliyoruz.
/usr/sbin/usermod -G psacln FTP_USER_NAME

3. Yazma Yetkilerini Ayarlıyoruz.
chmod 755 /var/www/vhosts/alanadi.com/dizin

4. Kullanıcıya Sahipliğini ayarlıyoruz.
chown FTP_USER_NAME:psacln /var/www/vhosts/alanadi.com/dizin

5. Oluşan Ftp Kullanıcısına şifre atıyoruz.
passwd FTP_USER_NAME

Linux Sunucu Ana IP Değiştirme [SSH]

Sistemde

78.159.99.162 Ana IP olduğunu ve bu Ip nin bloklandığını veya kara listeye girdiğini düşünelim.

Bu IP yerine Kara listede olmayan ve bloklanmamış bir IP olduğunu varsaydığımız IP 78.159.99.53 olsun.
Bunların dışında dilerseniz, Sistemde Tanımlı IP lere ifconfig veya Hosting Panel paketlerinden Bakıbilirsiniz.
Yine dilerseniz. http://www.mxtoolbox.com/ adresinde Ip’nin Temiz Listesinde Olup olmadığı kontrol edebilirsiniz.
1.
ifconfig konutu ile 78.159.99.53 IP nin hangi adı kullandığını tespit ediyoruz. örneğin ifcfg-eth0:16 olduğunu tespit ettik.
2.
cd /et/sysconfig/network-scripts/ dizinindende conf dosyalarınıda görebilirsiniz.
3.
mv ifcfg-eth0 ifcfg-eth0:20 diyerek eth0 -> eth0:20 olarak geçici olacak taşıyoruz.
4.
mv ifcfg-eth0:16 ifcfg-eth0 şeklinde yapıyoruz. 16 ‘yı da > eth0 alıyoruz.
5.
nano ifcfg-eth0 veya herhangi text editorla dosyayı açıp için aşağıdaki gibi düzenliyoruz. DEVICE ile yerini ayarlıyoruz.
DEVICE=”eth0″
IPADDR=”78.159.99.53″
NETMASK=”255.255.255.0″
BROADCAST=78.159.99.255
NETWORK=78.159.99.0
BOOTPROTO=none
TYPE=Ethernet
ONPARENT=yes
6.
mv ifcfg-eth0:20 ifcfg-eth16 komutu ile geçici olarak 20 ye aldığımızı 16 ya koyuyoruz.
7.
nano ifcfg-eth0:16 veya herhangi text editorla dosyayı açıp için aşağıdaki gibi düzenliyoruz. bloklanmiş IP’yi ana IP’den alıp Device ile yeni yerini ayarlıyoruz. örneğin 16’ya
DEVICE=eth0:16
IPADDR=78.159.99.162
NETMASK=255.255.255.0
BOOTPROTO=none
TYPE=Ethernet
ONPARENT=yes
8.
/etc/init.d/network restart ile network servislerini yeniden başlatıyoruz.

9. Aşağıdaki dizinde eğer daha önce ayarlanmış IP ler için dosyalar oluşturulmuşsa örneğin ifcfg-eth0, ifcfg-eth0:1, ifcfg-eth0:2 … gibi bu dosyalarında almak istediğiniz IP yi eth0 yazar, eth0 dakini aldığınız örneğin eth0:12 ye edit ederseniz yukarıdaki işlmeleri yapmadan da hızlıca yapabilirsiniz.
/et/sysconfig/network-scripts/
Not : bu işlemleri yaptıktan sonra bir kaç kez kontrol ediniz. herhangi bir sorun olması halinde ek ip lerden sunucuya ulaşabilirsiniz.

MySQL İşlem Listesi Görmek

MySQL veritabanı kullanıyorsanız ve çok fazla MYSQL Veritabanınız varsa zaman zaman RAM ve CPU’da yüklennme görürüz.

Sistem kaynaklarını en çok MYSQL servislerini harcadığını gördüğümüzde yapmaanız gereken işlem MYSQL kim daha çok meşgul ediyorsa onu bulmak olacaktır.

Bu İşlem İçin

mysql -uadmin -sifreniz

şeklinde mysql’e giriş yapıyoruz.

sonra aşağıdaki komutu kullanmamız yeterlidir.

show processlist;

Cpanel Domain Oluşturma Hatası

Cpanel’de
Sorry, that domain is already setup (remove it from httpd.conf);


hatası alırsanız yapmanız gereken en hızlı çözüm  ‘http.conf’ dosyasını bulmak (usr/local/apache/conf) ve içinde oluşturmaya çalıştığımız alan adını aramak olmalıdır. Bulduğumuzda ilgili yerleri (muhtemelen 2 yer) silmek olacaktır.

Böylelikle bu hatadan kurtularak alan adını oluşturabilirsiniz.

 

Bu hatayı vermesinin sebebi genelde aha önceden oluşturulmaya çalışırken yarım kalmasından kaynaklı olmaktadır.

Dilerseniz

/scripts/rebuildhttpdconf

komutu ile de yeniden derleme yapabilirsiniz.

Cpanel Servisleri Resetleme

cPanel tercih eden Sunucu sahibi müşterilerimiz için SSH tan servisleri resetleme komutları aşağıda yer almaktadır.

Apache yeniden başlatma : /scripts/restartsrv httpd

cPanel yeniden başlatma : /etc/rc.d/init.d/cpanel restart

MySQL Servisini yeniden başlatma : /scripts/restartsrv mysql

DNS(BIND) Resetleme : /scripts/restartsrv named

Exim(mail) Resetleme : /scripts/restartsrv exim

FTP Resetleme : service xinetd restart

Dosya İzinleri Toplu Değiştirme [SSH]

Aşağıdaki komutlar için SSH Bağlantısı gerekmektedir.

SSH ile bağlantı kurarak aşağadaki komutlar ile toplu işlem ile dosya ve dizinlere yetki verebilir veya alabilirsiniz.

Standart olarak örneğin Dosyalarda 644 Dizinlerde 755 verebilirsiniz.
find /var/vhosts/www/bozdemir.com/httpsdocs/ -type f -exec chmod 644 {} \; -print
(Belli bir dizin ve alt dizinler içinde “f” parametresi ile Sadece Dosyalara 644 Yetkisi)
find . -type f -exec chmod 644 {} \; -print
(Bulunduğunuz Dizin ve Alt Dizinlerde “f” parametresi ile Sadece Dosyalara 644 Yetkisi)
find /var/vhosts/www/bozdemir.com/httpsdocs/ -type d -exec chmod 755 {} \; -print
(Belli bir dizin ve alt dizinler içinde “d” parametre ile Sadece Dizinlere 755 Yetkisi)
find . -type d -exec chmod 755 {} \; -print
(Bulunduğunuz Dizin ve Alt Dizinlerde “d” parametre ile Sadece Dizinlere 755 Yetkisi)

Cpanel’e SSL Sertifika Yükleme

CPanel Kontrol Panele giriş yapınız.

1. Security menüsü altındaki SSL/TLS Manager sekmesine tıklayınız.

2. Private Keys (KEY) , Certificate Signing Requests (CSR), Certificates (CRT)
oluşan 3 başlık göreceksiniz.
buradan

1. sırada olan Private Keys (KEY) hemen altında yer alan Generate, view, upload, or delete your private keys. tıklayın
En allta Generate a New Key yer alan Host bölümüne gelerek Host : www.alanadınız.com yazıp Generate Basınız.

Not : SSL bölgesi “www.alanadınız.com” şeklinde olması için www yazmayı unutmayınız. sonra tekrar önceki sayfaya dönünüz.

3. Bu sefer 2. Seçenek ile Certificate Signing Requests (CSR) altında yer alan

Generate, view, or delete SSL certificate signing requests. tıklayın.

Açılan sayfada Generate a New Certificate Signing Request Host : www.alanadınız.com

altında yer alan ülke, bölge, şehir, Firma vb alanları doldurunuz ve Generate basınız.
Oluşan CSR Yi satın almak istediğiniz SSL sertifika merkezine doğrulatın ve satın alma işlemini tamamlayınız.

Not : Doğrulama İşlemi Yapmadan SSL satın almayınız. Hatalı bir Sertifika kodu üretilerek alınmiş Sertifika iadesi yoktur.

4. Oluşan CSR ile satın aldığınız CRT metnini Certificates (CRT) altındaki yazıya
Generate, view, upload, or delete SSL certificates. tıklayınız.

Gelen sayfada Paste the CRT below: altında yer alan kutuya CRT kodunuzu yapiştırıp Generate tuşuna basınız.

5. SSL/TLS Manager de en altta yer alan SSL Installer bölümüne giriniz.
www.alanadınız.com seçiniz ve en allta CA sekmesinede SSL’i Satın aldığınız yerden gelen CA kodunu yapiştırınız ve Install Certificate tuşuna basınız.

tüm işlemler tamamlanmıştır. artık sertifikanızı https://www.alanadınız.com şeklinde bakarak kontrol edebilirsiniz.

Cpanel SSH tan Yedeği Yükleme

Yedeği gürü yüklemek için öncelikle

yedek dosyanız sunucunuzun /home dizini altına kopyalanmalıdır.

kullanıcıadı.tar.gz şeklindeki halini

/scripts/restorepkg kullanıcıadı

komutu ile tüm herşeyi restore edecektir.

nadirde olsa MYSQL de kullanıcı adı var yedek yüklenemez gibi mesaj alırsanız.

/scripts/restorepkg –force –override –skipres kullanıcıadı

yaparak çıkacak hataları göz ardı eder ve üzerine yazarak devam edecektir.

bu komut sonrası eksik kalan bir şeylerin olup olmadığını siteye bakarak kontrol edilmelidir.

Bul/Değiştir – Find/Replace [SSH]

Linux Sunucu üzerinde txt dosyalarında arama yaparak bulunan kelimenin değiştirilmesini aşağıdaki konut ile sağlaya bilirsiniz.

find . -name “*.txt” | xargs sed -i .old -e “s/bulunacakkelime/yerineyazilacakkelime/g”

Örnek : Tüm DB uzantılı dosyalarının içinde 81.81.81.81 ip adresine sahip olduğu  düşünülerek, bunlar bulunup yerine 34.34.34.34 ip adresi yazacaktır.

Bu komut genelde sunucular arası host taşıma sırasın da  DNS kayıtların tümü gelmediğinde veya doğru şekilde taşınmamış olduğunda sistem üzerinden manuel taşınarak ip değişikliği yapılarak çözüm şekillerinden biridir. Önceki sunucudaki /var/named/ dizini altındaki dosyalar yeni sunucuya atılır ve ardından bu işlem yapılır. DNS Sunucu yeniden başlatılır.

find . -name “*.db” | xargs sed -i *.db -e “s/81.81.81.81/34.34.34.34/g”

Mysql Türkçe Karakter Sorunu

MYSQL veritabanınızı yüklerken versiyon farklılıklarından dolayı karakter seti hataları alabilirsiniz.

Bu problemi çözmek için .sql dosyanızı bir text programı ile açıp aşağıdaki değişiklikleri yapın.

Veritabanınızda

“MyISAM DEFAULT CHARSET=latin5” “MyISAM DEFAULT CHARSET=utf8” gibi satırlar görebilirsiniz.

Bu satırlarda “MyISAM DEFAULT CHARSET=latin5” yazan alanı “MyISAM” olarak değiştiriniz.

Daha sonra sorunsuz bir şekilde veritabanınızı yükleyebilirsiniz.

Not: Bu işlemi yapmadan önce yedek almanızı öneriyoruz.