Kategori arşivi: Cloud

Cloud sistemler hakkında bilgiler, cloud hizmet veren firma karşılaştırmaları, cloud sunucular ve yapılandırma örnekleri

UFW Kullanarak CloudFlare Trafiğinin Kabul Edilmesi

Vakti zamanın’da CloudFlare kullanan bir web sitesinin yanlış yönlendirmeden doğan sızıntıyı, CloudFlare arkasında Sunucu IP’lerini açığa çıkarmak adlı makalemde açıklamış.

Genel olarak sızıntıyı nasıl çözebileceğinizden kısaca bahsetmiştim. Şimdi sıra geldi iptables ile sadece cloudflare üzerinden gelen trafiğin kabul edilmesini göstermeye.

#!/bin/sh

curl -s https://www.cloudflare.com/ips-v4 -o /tmp/cf_ips
curl -s https://www.cloudflare.com/ips-v6 >> /tmp/cf_ips

ufw allow from 94.55.146.204/32 comment 'Mertcan Home'
for cfip in `cat /tmp/cf_ips`; do ufw allow proto tcp from $cfip to any port 80,443 comment 'Cloudflare IP'; done

# Reload
ufw reload > /dev/null

Bu işlemleri yaptığınız andan itibaren makina sadece SSH bağlantısıyla size yanıt verecek onun dışında dışarıya sadece CloudFlare ile çıkış sağlanacak böylelikle IP aralıklarını tarayan botlara vb uygulamalara yanıt verilmeyeceği içinde leak imkanı kalmayacak. OSINT teknikleri ile bulunması zorlaşmış olacak.

Bunun dışında geçmişte kullanılan IP adreslerini tutan oldukça fazla yer olduğu için bu işlemlerden sonra IP değişikliği yapmanızı şiddetle öneriyorum.

CloudFlare Web Analytics Nedir? Nasıl Kullanılır?

Eylül ayında, tüm web için yeni ve ücretsiz bir Web Analytics ürününü Cloudflare yetkilileri duyurmuştu ve sadece pro hesaplar kullanabiliyordu. Bugün ise, DNS ayarlarınızı değiştirmeden herkesin kullanabileceği Web Analytics uygulamasını duyurdular.

cloudflare web analitik görseli, cloudflare web analitik nasıl kullanılır.
https://blog.cloudflare.com/privacy-first-web-analytics/

Popüler analitik araçları reklama dayalı bir iş modeli ile çalıştığını biliyoruz, bu araçları kullandığımızda kullanıcıların verilerinin reklam modellerine göre kullanılmasına göz yummuş oluyoruz, yani aslında ürün biziz. İşte bu çekincelerin olduğu günümüz şartlarında alternatif birilerinin ortaya çıkıyor olması çok güzel.

Bu noktada CloudFlare‘in geliştirdiği ücretsiz web analitik aracını kullanmaya başlayacağız. Hem ücretsiz hemde kullanıcı verilerini satmayan bir araç, yani en azından geliştiren ekip ve CEO bu şekilde söylüyor.

Nasıl Kurulur ve Kullanılır?

DNS sunucu adreslerinizi CloudFlare üzerine taşımanıza ve direk olarak DNS alt yapınızı değiştirmenize gerek yok sadece size verilen basit bir js dosyasını sitenize ekleyin yeter.

CloudFlare hesabınıza giriş yaptığınızda ana ekranda bulunan sağ menüde değişiklik olduğunu göreceksiniz, bu listenin en altında bulunan Web Analytics tıklıyorsunuz. Veya direk olarak bu linke tıklayarak kayıt oluyorsunuz.

cloudflare Web Analytics, cloudflare web analiz aracı, cloudflare analiz

Bu aşamada sizden web verilerinin izleneceği site adını soracak alan adınızı veya alt alan adınızı doğru bir şekilde girin. Burada önemli olan nokta URL şeklinde alan adınızın girilmeyecek olması.

cloudflare Web Analytics, cloudflare web analiz aracı, cloudflare analiz

Devam ettiğinizde web sitenize eklemek için bir kod verecek, verdiği bu kodu direk olarak </body> etiketinden önce ekliyoruz

cloudflare web analitik görsel, cloudflare analiz

Ardından istatistikler panelimizde 2-3 dakika geçtikten sonra gözükmeye başlayacak, detaylı bir şekilde analitik verilerinizi görebilirsiniz. Verileriniz anlık olarak güncellenecek ve istediğiniz gibi arama yapabileceksiniz.

cloudflare web analiz örnek data, web data

  1. https://blog.cloudflare.com/privacy-first-web-analytics/
  2. https://blog.cloudflare.com/free-privacy-first-analytics-for-a-better-web/

Plesk Panel’i Hetzner DNS ile Birlikte Kullanma

Hetzner DNS hizmetini geçtiğimiz aylarda yayınlamıştı. Bölge aktarım amacıyla Bind ve AXFR kullanarak DNS yönetimini Plesk üzerinden Hetzner’a bağlayıp aktarım sağlayabilirsiniz. Bunu yapabilmek için öncelikli olarak Hetzner’ın networkü üzerinde bir sunucudan DNS isteklerini yönlendirmelisiniz.

Plesk DNS Yönetimi

Öncelikle, Hetzner DNS sunucularına bölge aktarımına izin vermelisiniz ve Plesk sunucusunda DNS şablonunuzu ayarlamalısınız.

Bunu yapmak için, Plesk sunucunuz da oturum açın ve “Tools & Settings” seçin

plesk dns zone transfer ayarlaması

“General Settings” sekmesinde yer alan “DNS Template” sekmesine gidin.

plesk general settings, genel ayarlarda dns yapılandırma, plesk dns yapılandırma

Bu sayfada yer alan “Transfer Restrictions Template” seçeneğine tıklayın.

Common Allow Zone Transfer ACL, plesk zone transfer nasıl yapılır, zone transfer yapmak

Aşağıda yer alan 3 IP adresini ekleyin;

  • 193.47.99.3
  • 213.133.105.6
  • 213.239.242.238
hetzner zone transfer, hetzner dns plesk ayarı, hetznerde plesk panel dns ayarları

Ardından DNS olarak Hetzner DNS sunucularını girmemiz gerekiyor, Kayıt Türü olarak “NS” ve ad sunucusu olarak Hetzner’ın 3 ad sunucusunu gireceğiz, şu şekilde gözükecek

zone transferin son aşaması, hetzner dns tanımlama, hetzner dns sunucusu nasıl tanımlanır
  • helium.ns.hetzner.de
  • hydrogen.ns.hetzner.com
  • oxygen.ns.hetzner.com

Son olarak “DNS Template” alanında şu şekilde gözükecek.

hetzner dns

Plesk tarafında yapacağımız ayarlar bitti, şimdi Hetzner DNS paneline uğruyoruz ve alan adımızı tanımlıyoruz. Bunun için “Add new zone” tıklayın alan adınızı yazın ve “Secondary” seçeneğini seçin. “Continue” deyip ikinci aşamaya geçin.

hetzner dns

Sonraki sayfada verilen açılır menüden Plesk sunucunuzu seçin ve “Add Server” ile onaylayın daha sonra ve “Continue” deyip devam edin.

plesk panel hetzner dns, hetznerda dns yapılandırma, hetzner dns nasıl yapılandırılır.

Bundan sonra, alanın başarıyla eklendiğini ve yeşil bir şekilde “Verified” yazdığını göreceksiniz.

hetzner dns plesk ayarı, hetzner dns secondary settings, hetzner dns ayarları

Artık DNS ayarlarınızı Plesk panel üzerinden yapabilirsiniz, Hetzner DNS panelini kullanmanıza gerek yok. Eklemiş olduğunuz 3 DNS adresi de otomatik olarak Plesk üzerinde yapılan değişiklikleri çekecek ve uygulayacaktır. Alan adınızda aşağıdaki üç DNS sunucusunu kullanmanız yeterli olacaktır. Tüm verilerin doğru olduğundan emin olduktan sonra, alan adınızı kayıt şirketinizde güncelleye bilirsiniz.

hydrogen.ns.hetzner.com.213.133.100.982a01:4f8:0:1::add:1098
oxygen.ns.hetzner.com.88.198.229.1922a01:4f8:0:1::add:2992
helium.ns.hetzner.de.193.47.99.52001:67c:192c::add:5

Hetzner Cloud Sunucu Üzerine Plesk Panel Nasıl Kurulur?

Öncelikle, Hetzner Bulut Konsolu\’na giriş yapın veya kaydolun, kaydolmak isterseniz referansım dan faydalanın ve 20 Euro tutarındaki kupon hesabınıza otomatik olarak tanımlansın.

Bir proje seçin, ardından Server ve ardından Add Server ye tıklayın. Sonraki sayfada, size uygun olan konumu seçebilirsiniz ben tercihen Nuremberg seçiyorum ama diğer konumlarda hiç fena değil.

Şimdi sıra işletim sistemi tercihine geldi bunun için Plesk tarafından desteklenen resmi bir ISO\’ya ihtiyacınız olacak. En son yazılım gereksinimlerinin tümü Plesk sürüm notlarında yer alıyor, kurulum için bunlardan bir tanesini seçebilirsiniz. Ben her zaman Debian 10 seçiyorum.

hetzner

Ardından Type alanından sunucunun türünü seçin. Bu, Standart(CX serisi veya CPX serisi AMD) veya Özel(CCX) olabilir. Plesk donanım gereksinimlerine bağlı olarak her ikisinden birini seçebilirsiniz.

hetzner

Özelleştirme ihtiyacı duymuyorsanız Volume, Network, Additional features ve SSH Key alanlarını dokunmadan olduğu gibi bırakabilirsiniz.

Name için doğrudan ana bilgisayar adını girmenizi tavsiye ederim FQDN destekli olmasına özen gösterin, örneğin: mars.mertcangokgoz.com.

Ardından Create & Buy Now tıklayın. Yaklaşık 20 saniye sonra, Hetzner\’den sunucunuzun çalışır durumda olduğunu belirten bir e-posta alacaksınız SSH bağlantı bilgileriniz yer alacak. SSH Key tanımlaması yaptıysanız bu e-postayı almayacağınızı hatırlatırım.

Plesk Kurulumu

Zaten kayıtlı bir alan alanınız varsa ve bir DNS sunucusuna bağlıysa, IP\’yi verilen alana yönlendirmelisiniz. Hetzner\’dan aldığınız e-postayı açın ve mesajda bulunan kimlik bilgileriyle verilen IP\’ye bağlanın. İlk girişte şifrenizi güvenlik sebebiyle değiştirmeniz gerekecek.

Bunları yaptıktan hemen sonra aşağıdaki işlemi gerçekleştirin.

sh <(curl https://autoinstall.plesk.com/one-click-installer || wget -O - https://autoinstall.plesk.com/one-click-installer)

Bu komut, sunucunuza Plesk\'i indirecek ve çalıştıracak. Artık setup dosyasındaki seçenekleri değiştirebilir veya sadece varsayılan ayarları kullanabilirsiniz. Kurulum sunucu özelliklerinize bağlı olarak yaklaşık 15 dakika sürecek. Kurulum tamamlandıktan sonra aşağıdaki gibi bir mesaj göreceksiniz.


                                   Congratulations!

        The installation has been finished. Plesk is now running on your server.

        To complete the configuration process, browse either of URLs:
          * 
          * 

        Use the username 'admin' to log in. To log in as 'admin', use the 'plesk login' command.
        You can also log in as 'root' using your 'root' password.

        Use the 'plesk' command to manage the server. Run 'plesk help' for more info.

        Use the following commands to start and stop the Plesk web interface:
        'service psa start' and 'service psa stop' respectively.

        If you would like to migrate your subscriptions from other hosting panel
        or older Plesk version to this server, please check out our assistance
        options: https://www.plesk.com/professional-services/

The changes were applied successfully.

Şimdi, size verdiği URL ile kurulumu tamamlayın. Zaten bir lisansınız varsa, bunu tahsis edilen alana yapıştırabilirsiniz. Sadece Plesk\'i test etmek istiyorsanız, o sayfadaki Tam özellikli bir deneme lisansıyla devam et seçeneğini seçin.

hetzner

Unutmayın ki Hetzner bulut sunucuları için Plesk lisansı sunmamaktadır. Robot üzerinden satın alabilir veya dışarıdan tedarik edebilirsiniz. Enter Plesk ile devam ediyorsunuz ve kurulum işleminin sonuçlanmasını bekliyoruz.

plesk

Kurulum başarılı bir şekilde tamamlandı, artık Plesk kontrol panelini istediğiniz gibi kullanmakta özgürsünüz.

hetzner

Hetzner Sunucularda Statik IP Nasıl Yapılandırılır?

Benden destek istenen bir noktada çok fazla gelen sorulardan bir tanesini yanıtlamak istiyorum. Özellikle Hetzner Cloud makinelerinde DHCP üzerinden IP aldığını ancak kuracakları uygulamaların Statik IP üzerinde çalıştığını bahsediyorlar. Normal şartlar altında MAC adresine tanımlı olduğu için IP adresleri Hetzner üzerinde değişmez.

Dedicated’de kullansanız MAC değiştirmediğiniz sürece(ki değiştirdiğiniz an makine kapatılır) aynı IP adresi alınır. ESXi gibi sanallaştırma uygulamaları kurduğunuz zaman sub mac tanımlaması yapsanız bile ana makina IP’si değişmez.

Sabitleme aşamasında /etc/network/interfaces dosyası içerisini aşağıdaki gibi değiştirmeniz gerekiyor. Bu noktada size verilen ip adresini tanımlamalısınız.

root@main:/etc/network# cat interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5)

# Include files from /etc/network/interfaces.d:
#source /etc/network/interfaces.d/*
auto eth0
iface eth0 inet static
        address <ip_address>
        netmask 255.255.255.255
        gateway 172.31.1.1
        pointopoint 172.31.1.1
        dns-nameservers 185.12.64.1 185.12.64.2


iface eth0 inet6 static
        address <subnet>
        netmask 64
        gateway fe80::1

# The loopback network interface
auto lo
iface lo inet loopback
ShellScript

Ardından kayıt edip çıkış yapın, sunucuyu yeniden başlattığınızda tekrar DHCP olarak yapılandırdığını göreceksiniz bunu iptal etmek için touch /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg diyorsunuz ve içerisine aşağıdakini ekliyorsunuz.

root@main:/etc/network# cat /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
network:
  config: disabled
ShellScript

Otomatik yapılandırma dosyasını interfaces.d içerisinde yer aldığını ve kalıcı olarak silmeyi unutmayın.

Amazon S3 Üzerinde CORS Ayarları Nasıl Yapılır?

Amazon S3 Üzerinden push CDN kullanan ve CloudFront tarafında içerik dağıtımı sağlandığında fontların dağıtımında CORS hatası alabilirsiniz. Bu olağan ve herkesin karşılaştığı bir durum olmakla birlikte sitenizin içerisinde yer alan ikonların gözükmemesine ve yazı tipi sorunlarına sebep olur.

Bu durumun çözümü CloudFront tarafında yapılmayacak olup, dosyaların sunulduğu S3 üzerinde aşağıdaki gerekli yapılandırmayı eklemeniz gerekmektedir.

Origin’e göre gerekli kural setlerini tanımlamanız bu sorununuzun ortadan kaldırılması için yeterlidir. Dosyaların alındığı ve işlem yapıldığı ana origini aşağıdaki gibi tanımlamayı unutmayın.

<CORSConfiguration>
 <CORSRule>
   <AllowedOrigin>https://mertcangokgoz.com</AllowedOrigin>

   <AllowedMethod>PUT</AllowedMethod>
   <AllowedMethod>POST</AllowedMethod>
   <AllowedHeader>*</AllowedHeader>
 </CORSRule>
 <CORSRule>
   <AllowedOrigin>*</AllowedOrigin>
   <AllowedMethod>GET</AllowedMethod>
 </CORSRule>
</CORSConfiguration>

Ardından ziyaretçiler için bütün kaynaklardan gelen istekleri kabul etmeniz sorununuzun kalıcı olarak çözümü olacaktır.

CloudFlare Workers Kullanarak Harici Cronjob İşlerinin Yapılması

CloudFlare geçtiğimiz günlerde workers üzerinden zamanlanmış işleri yapmaya imkan tanıyan özelliğini Introducing Cron Triggers for Cloudflare Workers adıyla duyurdu. Bu özellik sayesinde yapılması gereken zamanlanmış işleri CloudFlare üzerinden gerçekleştirebiliyoruz.

Wordpress’te özellikle insanların başını ağrıtan dahili cronjob ile anlatacağım nasıl kullanılacağını bu özelliğin, normal şartlar altında wordpress’de sayfaya birisi girdiği anda varsa cronjob işlemleri tetiklenir, yönetici sayfası veya yazılar fark etmeksizin bu özellik çalışır.

Peki bu servis ücretli mi? Tabii ki de hayır

Ana sayfada sağda “Workers” alanına giriş yaparak bu süreci çok basit bir şekilde başlatabilirsiniz.

cloudflare workers giris, cloudflare cronjob trigger

Hemen “Create Worker” diyoruz.

cloudflare create worker, cloudflare worker oluşturma

Size kocaman bir alanda solda javascript kod yazabileceğiniz bir alan sağda ise bunun ön izlemesi olacak, soldaki alana aşağıdaki kodumuzu giriyoruz, zamanlanmış görevi oluşturuyoruz. Kendinize göre bunu düzenlemeyi unutmayın.

addEventListener("scheduled", event =>; {
  event.waitUntil(handleScheduled(event))
})

async function handleScheduled(event) {
  await fetch("https://mertcangokgoz.com/wp-cron.php?doing_wp_cron")
}

Şu şekilde gözükecek

cloudflare worker deploy, worker deployment

Ardından “Save and Deploy” tuşuna basıyorsunuz ve güzelce workerınız kullanıma hazır oluyor. Ardından workerımızın alanına geri geliyoruz. Sıra zamanlanmış triggerimizi ayarlamaya geldi. Workerın altında yer alan “Triggers” alanına geçiş yapıyoruz.

cloudflare cron trigger, zamanlanmış workerlar, cloudflare trigger

“Add Cron Trigger” diyoruz ve artık normal cronjob ayarlar gibi ne kadar zaman aralıkla çalışacağını seçiyoruz, ben wordpress’te bu örneği anlattığım için 5 dakikalık aralar ile çalışmasını istiyorum.

trigger ayarlama, cronjob zamanlama, cloudflare cronjob settings

Kaydettiğimiz andan itibaren worker belirlenen sürelerde ayağa kalkacak ve işini yapıp kapanacak. Başınıza iş olacak bütün cronjob işlerini bu şekilde yapabilirsiniz.

Wordpress WP Cron Nasıl Kapatılır?

Tüm bu işlemlerden sonra mümkünse Wordpress’in kendi özelliklerinden bir tanesi olan WP Cron kapatmanızdır. Bu sayede artık Cronjob işleri kullanıcıların sayfa gezintilerinde değil yukarıda belirlediğimiz aralıklarla çalışacak. Cron ile ilgili sorunlarınızın pek çoğunuda bu şekilde çözüme kavuşturabilirsiniz.

define('DISABLE_WP_CRON', true); 

CloudFlare Arkasındaki Sitelerde “cert-url” Hatasının Çözümü

CloudFlare kullanan bir web sitesinde AMP aktif ettiniz ve karşınıza Google Webmaster aracında aşağıdaki gibi bir hata geldi

İmzalı değişim "cert-url" tarafından başvuruda bulunulan sertifika zinciri ayrıştırılamıyor.

Hatanın görünümü şu şekilde consolda bulunuyor.

cloudflare cert-url hatası, google webmaster tools cert-url error

Erken fark etmek ve çözmek önemli, yoksa AMP sayfalarına erişim kesiliyor. Bunun çözümü CloudFlare üzerinde aşağıdaki ayarın kapatılması oluyor.

cloudflare amp real url kapatma, cloudflare amp sorunu, amp cert-url çözümü

Bu Real URL kapatıldıktan hemen sonra google webmaster araçlarına gidip doğrulama işleminizi başlayabilirsiniz. Hata kalıcı olarak çözülmüş olacak.

Amazon S3 + Django Versiyonlu Statik Dosya Barındırma

Django üzerinde tutulan statik dosyaları versiyonlu bir şekilde tutmak ve Amazon S3 üzerinde barındırmak isteyen arkadaşlarımız bu kodu kullanabilirler. Normalde Django versiyonlanmış Asset desteklemekte ancak direk S3 desteği bulunmamaktadır, bu iş için böyle bir kod işinizi çokça görecektir.

import hashlib
import threading

from django import template
from django.conf import settings
from django.contrib.staticfiles.storage import staticfiles_storage

class UrlCache(object):
    _md5_sum = {}
    _lock = threading.Lock()

    @classmethod
    def get_md5(cls, file):
        try:
            return cls._md5_sum[file]
        except KeyError:
            with cls._lock:
                try:
                    md5 = cls.calc_md5(file)[:8]
                    value = '%s%s?v=%s' % (settings.STATIC_URL, file, md5)
                except OSError:
                    value = settings.STATIC_URL + file
                cls._md5_sum[file] = value
                return value

    @classmethod
    def calc_md5(cls, file_path):
        with staticfiles_storage.open(file_path, 'rb') as fh:
            m = hashlib.md5()
            while True:
                data = fh.read(8192)
                if not data:
                    break
                m.update(data)
            return m.hexdigest()


@register.simple_tag
def md5url(value):
    return UrlCache.get_md5(value)

Kullanabilmek amacıyla STATIC_ROOT tanımlaması yapmayı unutmayınız.

Django’da Amazon S3 Üzerinde Tutulan Private Dosyaların Sunulması

Herkesten sakladığınız ve sadece erişim isteği isteyen kullanıcıların dosyalara erişmesini sağlamak istiyorsanız ve bu isteğinizi Amazon üzerinde bulunan S3 bucketınızda yapacaksanız derdinizin çözümü burada,

  • AWS S3 de tutulan dosyalar private olarak geçmelidir.
  • Amazon S3 API anahtarınızda s3:GetObject yetkisi mutlaka bulunmalıdır.
  • django-storages Kullanılıyorsa ve dosyalar onun üzerinden sisteme yükleniyorsa, imza hatası alınmaması için mutlaka AWS_S3_SIGNATURE_VERSION = 's3v4' ve AWS_S3_ADDRESSING_STYLE = 'path' parametreleri settings.py dosyasına eklenmelidir.
import boto3
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import View
from django.http import HttpResponseRedirect

class AwsS3UrlGenerator(LoginRequiredMixin, View):
    def get(self, *args, **kwargs):
        s3_client = boto3.client(
            "s3",
            aws_access_key_id="",
            aws_secret_access_key="",
            region_name="eu-west-1",
            config=Config(
                s3={"addressing_style": "path"}, signature_version="s3v4"
            ),
        )
        try:
            presigned_url = s3_client.generate_presigned_url(
                "get_object",
                Params={
                    "Bucket": "bucket-name",
                    "Key": str(self.request.GET["p"]),
                },
                ExpiresIn=300,
                HttpMethod="GET",
            )
        except ClientError as e:
            return None

        return HttpResponseRedirect(presigned_url)