Raspberry PI ile VPN Gateway Kuruyoruz (VPN Router)

RaspberryPI VPN Gateway

Kaliteli ve hesaplı VPS (virtual private server) hizmetlerinin çoğalması kişisel projelere ivme kattı. Bir süredir aklımda olan VPN Gateway (VPN Router) projem, Raspberry PI ve DigitalOcean VPS sayesinde hayat buldu. Site-to-site VPN modeli ile çalışacak bu yapı ile uzak sunucu üzerindeki veriye daha güvenli erişim sağlanabilecek (ör. otorite imzalı SSL olamayan sayfalara parola girişi). Ayrıca bu yapıda uzak sunucunun üzerinden İnternet erişimi de sağlanabiliyor.

Ücretli/ücretsiz VPN servis sağlayıcılar nedendir bilinmez, hissedilir şekilde yavaş çalışıyorlar. Yıllardır Avrupa konumlu kullandığım VPS‘ler üzerinden geçirdiğim gündelik İnternet trafiğinde yavaşlama hissetmedim. Şahsi tecrübem 100ms paket gecikmesinin üstüne çıkılmadığı sürece hızda yavaşlama hissedilmeyeceği yönünde. (daha&helliip;)


Keepalived ile IP Failover

Keepalived VRRP protokolünü kullanarak yüksek erişilebilirlik (high-availability) gereksinimlerinden IP sanallaştırmayı sağlıyor. Ağ uzmanlarının ağ geçidi (gateway) yedekliliği için kullandıkları VRRP, linux sistemlerde de harika sonuç veriyor. Keepalived, IP failover yeteneğini ikiden daha fazla sunucu için sağlayacak yeteneğe sahip. Ayrıca birden çok VRRP grubu oluşturarak birden çok sanal IP adresinin farklı sunucular üzerine atanması sağlanabiliyor, bu sayede yük dağıtmak mümkün.

Diğer failover sistemlerinden farklı olarak VRRP‘de sunucular birbirlerini multicast trafik ile izliyorlar. Bu multicast adres (224.0.0.18) Internet Assigned Numbers Authority (IANA) in kayıtlı standart multicast adreslerinden. (daha&helliip;)


DNSSEC Nedir?

DNSSECDNSSEC sayısal verinin dijital imza ile doğrulanmasına dayanan, bilişim güvenliğini tamamlayan teknolojilerdendir. DNS sisteminin güvenlik eksiklerini tamamlamak için geliştirilmiştir. DNSSEC doğrulamasının yapılabilmesi için kök alandan son alan adına kadar tüm basamakların DNSSEC uyumlu olması gerekmektedir. Kökün imzalanmış olması, güven zincirinin ön şartıdır (.tr henüz DNSSEC uyumlu değil). DNSSEC mekanizmasında trafik kriptolanmaz, ziyaret edilen alan adının işaret ettiği IP adreslerinin doğruluğu kanıtlanır.

DNSSEC son kullanıcının kullandığı alan adının doğru web sayfasına veya servislere karşılık gelen IP adresine ait olduğunu güvence altına alır. Bu Internet’in tüm güvenlik problemlerini çözmez fakat kritik bir bölümün güvenliğini kontrol altına alır. SSL (https) gibi diğer teknolojilerle birlikte kullanıldığında güvenliği iyileştirilmiş bir platform sağlar. (daha&helliip;)


SSH nasıl 2-faktörlü doğrulama ile korunur? (Two-Factor Authentication)

authenticatorBu yazımda, Ubuntu SSH bağlantılarımızda Google Authenticator PAM modülü ile nasıl 2-faktörlü (2-step verification) hesap doğurlaması yapılır bunu inceleyeceğiz.

Kullanıcı adı ve şifrelerin güvenliğini sağlamak bilişim uzmanları için bile zaman zaman pek mümkün olmuyor. Ele geçirilen sunucu sistemlerinde kayıtlı binlerce hesap tek seferde çalınabiliyor. Zararlı yazılım yüklü bilgisayarlardan giriş yapmak, kötü niyetli yazılımlara hesap bilgilerini girmeniz hesabınızın çalınması ile sonuçlanabilir. İşin kötü tarafı, yıllarca hesabınızın çalındığından haberdar olmadan hesabınızı kullanmaya devam ediyor olabilirsiniz.

Hesap güvenliğimizi bir adım ileri götürerek SSH bağlantılarımıza 2 adımlı giriş nasıl entegre edilir inceleyelim;

Google Authenticator uygulamasını akıllı telefonunuza yükledikten sonra yapılacak basit bir aktivasyon işleminin ardından, ssh bağlantısı kurarken önce doğrulama kodunu telefonunuzdan öğrenerek kullanmanız gerekecek. DİKKAT; Authenticator hangi kullanıcı için aktif edildiyse sonraki işlemlerde sadece o kullanıcı SSH ile erişim sağlayabilir. (daha&helliip;)


Uzak Windows sistemlerin işlem listesi nasıl alınır?

Uzak Windows sistemlerin üzerinde çalışan işlem listesini almak için içsel gelen “tasklist” komutu kullanılabilir. Bir domain ortamında değilseniz, kullanıcı adı ve parolayı komut satırından yazarak uzak sistemdeki liste çekilebilir. (tasklist /?)

Komut satırını yönetici yetkileri ile başlattıktan sonra bir domain ortamındaysanız aşağıdaki komut ile listeyi çekebilirsiniz;

tasklist /s SERVER_NAME

Listede bulunan işlemlerden istediğinizi kapatmak için iki farklı yöntem uygulanabilir;

taskkill /s hostname /PID 1234 /PID 5678
taskkill /s hostname /IM notepad.exe

/t parametresi kullanılarak tüm işlem ağacı sonlandırılabilir.

Uzak sistemde yeni bir işlem başlatma için farklı yöntemler var. Bunlardan birisi Sysinternals’ın geliştirdiği PsExec aracını kullanmak.


Bir SYN-FLOOD Hikayesi

Syn FloodYönetmekte olduğum bir sisteme sürekli olarak SYN paketleri gönderildiğini farketmemin üzerine çalışmalara başladım. Paketlerin gönderilme hızı değişkenlik gösteriyordu; çoğunlukla 1 paket/saniye hızında seyreden trafik zaman zaman saniyede 100 SYN paketi geçiyordu. Yavaş ulaşan paketler gerçek IP’lerden gelirken, hızlı gönderilenler değiştirilmiş kaynak IP sine (IP Spoofing) sahipti -ulaşan paketlerin TTL Time To Live değerlerindeki farklılıktan bunu tespit etmek mümkün-.

Evvelce etkinleştirdiğim SYNCookie özelliği sayesinde kaynak israfı çok artmıyor, sistemim cevap veremez hale gelmiyordu. (yoğun bir saldırıda SYNCookie CPU kullanımını sature edebilir)

netstat -ant|grep SYN_REC

SYNCookie özelliği sayesinde yukarıdaki komutu çalıştırdığımda SYN_REC durumunda bağlantı görmüyordum. Fakat SYNCookie gelen her SYN paketine SYN+ACK cevabı dönüyordu. Bunun önüne geçmeliydim. SYNCookie önlemine ek olarak, aynı IP’den gelen çok fazla SYN paketi olduğunda, bu IP lere SYN+ACK cevabı dönülmeyerek kara listeye alınmasının uygun olacağına karar verdim. (daha&helliip;)


Hızlandırılmış PING

Ping komutunun alışılagelmiş hızı içinizi baymaya başladıysa;

Linux tabanlı sistemlerde -i parametresi ile hız arttırılabiliyor. 0.2 saniyeden daha hızlı olsun istiyorsanız root yetkilerini kullanmanız gerekiyor.

sudo ping -i 0.1 localhost

Windows tabanlı sistemlerde üçüncü parti uygulamalar kullanılması gerekiyor. hrPING hızlı ping atabilme yeteneğine sahip.

hrping -s 100 -t localhost

Artık ping komutundan nasıl performans alınacağını biliyorsunuz, hızlı vızıldamalar.


Ubuntu – Mekanik HDD’leri uyutalım (spin-down)

hddİşletim sistemlerimizi SSD disklerde çalıştırmaya başlasak da, yüksek kapasite için mekanik HDD’ler bir şekilde sistemlerimizde halen bulunuyor. Mekanik disklerin kullanılmadıkları zamanlarda yaptığı gürültüyü kesmek için Linux sistemlerde HDPHARM aracı kullanılabilir. Taşınabilir bir sistemi kullanıyorsanız batarya süresinde de hatırı sayılır iyileşme sağlayacaktır.

hdparm -S 100 /dev/disk/by-uuid/3C1862H318626BB8

Yukarıdaki örnekte UUID si tanımlanmış disk okuma veya yazma yapmadığında, 100*5=500saniye (9dakika) sonra uyku moduna geçecek. Aşağıdaki satırı cron’a ekleyerek her açılışta çalışmasını sağlayabilirsiniz.

@reboot /sbin/hdparm -q -S 100 /dev/disk/by-uuid/3C1862H318626BB8


SSH tünel ile bağlantı güvenliği (SSH Tunnel)

SSH ile bağlantımızı tünelleyerek, istediğimiz noktalar arasında ağ trafiğini kriptolu geçirebiliriz. Bu yöntem hangi durumlar için kullanılabilir;

sshtunnel

• Güvensiz bir İnternet bağlantısı kullandığımız konumlarda bağlantı güvenliğimizi arttırmak
• Ağ filtrelerine takılmamak (ağ filtrelerini aşmak, varsa “kullanım politikası sözleşmenize” aykırı olabilir)
• NAT arkasından gerçek dünyaya soket açmak (NAT arkasından dışarıya servis vermek)
• İnternet çıkışını farklı ülkelere taşıyarak testler yapmak
• Sistemlere uzaktan erişim için bir zıplama noktası oluşturmak (VPN alternatifi)

SSH Tunnel in 3 farklı tipi bulunuyor, bunlar;

• Yerel port yönlendirme (Local port forwarding)
• Uzak port yönlendirme (Remote port forwarding | Reverse Tunnelling)
• Dinamik port yönlendirme (Dynamic port forwarding) (daha&helliip;)


IIS Application Pool, Event Id 5059

IIS 7 kullandığım bir sistemde DefaultAppPool servisi çalışır çalışmaz duruyordu. Event Viewer’de görüntülenen açıklama şu şekildeydi;

EventId 5059:
“Application pool DefaultAppPool has been disabled. Windows Process Activation Service (WAS) encountered a failure when it started a worker process to serve the application pool.”

Bu hatanın nedenlerini inceledikten sonra, sorunun AppPool’a tanımladığım kullanıcı hesabının değişen şifresinden kaynaklandığını tespit ettim. Parola değişim süresi dolduğunda şifremi değiştirmiştim fakat problemin  bir ay sonra ilk yeniden başlatmada yaşanması neden-sonuç ilişkisi kurmamı zorlaştırdı.

AppPool için tanımlanan kullanıcı adı ve parolayı güncelleyip servisi yeniden başlattığınızda sorun çözülecektir.

Doğru bir yapılandırmada SQL ve AppPool için farklı bir kullanıcı tanımlanması ve bu kullanıcıların parolalarının zaman aşımına uğramaması gerekiyor. Tabi bunu yapmadıysanız ve bu satırları okuyorsanız umarım yardımcı olmuştur.

Yaşadığım hatada işleri zorlaştıran IIS’in kullanıcı düşmanı LOG sistemine de dikkat çekmek istiyorum. Problemin nedenini bir satırda yazmak çok zor olmasa gerek. Bir LOG sistemi NE, NEDEN, NE ZAMAN sorularına yanıt vermiyorsa kullanıcı dostu olmaktan uzak olacaktır.