Raspberry PI ile VPN Gateway Kuruyoruz

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 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.

Farklı miniPC modelleri arasından RaspberryPI‘yi seçtim çünkü; yaygın kullanılıyor, kendine özel geliştirilmiş Raspbian adında Debian tabanlı bir işletim sistemi var ve enerji tüketimi yaklaşık 3W. Düşük enerji tüketimi ve düşük sahip olma maliyetinden dolayı, kart bilgisayarlar öğrenciler ve teknoloji meraklıları arasında yaygın kullanılıyor. Sistem gücü prototip projeler ve ev kullanımı için yeterli seviyede.

Çeşitli kaynaklarda RaspberryPI Model B‘nin 35$’dan satıldığı bilgisi var fakat Türkiye’de bu fiyatlara bulmak pek mümkün değil. Farnell distribütörü Yıldırım Elektronik  118TL fiyat veriyor, Robotistan‘da benzer fiyatlar var. Yurtdışı online satış yapan sitelerde kargo dahil 50$ civarında bulunabiliyor.

Kurulum adımları;

Adım adım RaspberryPI üzerine OpenVPN Client kurulumunu inceleyeceğiz (VPS üzerinde çalışan OpenVPN sunucu kurulumunu farklı bir yazıda paylaşmayı düşünüyorum).

RaspberryPI üzerine Raspbian‘ı kurup (raspberry.org’dan NOOBS indirilerek kolayca kuruluyor) SSH erişimini aldıktan sonra sistem güncellemelerini yapalım;

sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

Cihazın sabit IP alması önemli. Bunu DHCP sunucudan yapabileceğimiz gibi doğrudan ağ kartına tanımlayabiliriz, ağ kartına tanımlayalım;

nano /etc/network/interfaces

ilgili satırları aşağıdaki gibi değiştirelim (seçilen IP, DHCP havuzunun dışında olmalı);

iface eth0 inet static
address 192.168.2.251
netmask 255.255.255.0
gateway 192.168.2.1

Cihaza gelen paketlerin yönlendirilmesi için aşağıdaki dosyada değişikliği uygulayalım;

nano /etc/sysctl.conf

aşağıdaki satırın yorum ifadesini kaldıralım, satır yoksa ekleyelim;

net.ipv4.ip_forward = 1

değişikliği etkinleştirmek için;

sysctl -p /etc/sysctl.conf

OpenVPN’in yapılandırılması;

OpenVPN istemci yazılımını yükleyelim;

sudo apt-get install openvpn

Cihaz açılıdğında VPN bağlantısını otomatik kurması için aşağıdaki dosyayı ilgili dizine oluşturalım (uzantının .conf olması önemli);

sudo nano /etc/openvpn/vpn.conf

Örnek conf dosyası aşağıdaki gibi;

client

dev tun
proto tcp
tun-mtu 1500
remote xx.xx.xx.xx 1194

resolv-retry infinite
nobind

persist-key
persist-tun

verb 3

keepalive 10 120
comp-lzo
cipher DES-CBC

#openvpn root yetkileriyle çalıştırmamak için;
user <kullanıcı_adı>
group <grup_adı>
daemon

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

<ca>
-----BEGIN CERTIFICATE-----
.........
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
.........
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
.........
-----END PRIVATE KEY-----
</key>

Sistem açıldığında VPN bağlantısının otomatik kurulması için aşağıdaki dosyada değişiklik yapalım;

nano /etc/default/openvpn

ilgili yorum ifadesini kaldıralım yada aşağıdaki satırı ekleyelim;

AUTOSTART=all

OpenVPN yapılandırmasını tamamladık.

Iptables’ın yapılandırması;

Kolaylık ve tak-çalıştır olabilmesi için tünel ağına bir NAT tanımlayalım. Aşağıdaki komutla NAT yapılandıralım;

sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

iptables tanımlarımızın kalıcı olması için iptables-persistent kullanacağız, komutlar aşağıdaki gibi;

sudo apt-get install iptables-persistent
sudo /etc/init.d/iptables-persistent save
sudo /etc/init.d/iptables-persistent reload

Herşey yolunda gittiyse sistemi yeniden başlattığınızda sistem açılacak, VPN bağlantısı kurulacak, VPN Gateway istekleri cevaplamak için hazır hale gelecektir. Kurulum sonrası cihazımız tak-çalıştır haline geliyor. Elektrik ve ağ kablolarını bağladığınız herhangi bir yerde VPN hattı kullanılabilir (DHCP’den adres alacak şekilde ayarlanmalı ve otomatik alınan adres öğrenilmeli).

Ağımızdaki trafiği kurduğumuz yeni VPN Gateway‘e yönlendirmede iki farklı yöntem uygulanabilir. Birincisi, DHCP tanımlarından Default Gateway bilgisine VPN cihazımızın IP adresi yazılabilir. İkincisi, istemcilere elle sabit IP tanımlarken Default Gateway bilgisine VPN cihazının IP adresi yazılabilir.

Kurduğumuz sistemde DNS sorguları dahil tüm trafik VPN tünelinden geçiyor. Ufak değişikliklerle ihtiyaca göre farklı modeller uygulanabilir. Bu sisteme çok benzer VPN Hotspot kurulabilir. İhtiyacım olur da kurarsam ayrı bir blog yazısında paylaşırım. Soru ve önerilerinizi bekliyorum.

Hamdi ÖZCAN – ozcan.com

30 Mayıs 2014

Posted In: gateway, lkd, raspberry pi, teknik, tr, tunnel, vpn

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.

Farklı miniPC modelleri arasından RaspberryPI‘yi seçtim çünkü; yaygın kullanılıyor, kendine özel geliştirilmiş Raspbian adında Debian tabanlı bir işletim sistemi var ve enerji tüketimi yaklaşık 3W. Düşük enerji tüketimi ve düşük sahip olma maliyetinden dolayı, kart bilgisayarlar öğrenciler ve teknoloji meraklıları arasında yaygın kullanılıyor. Sistem gücü prototip projeler ve ev kullanımı için yeterli seviyede.

Çeşitli kaynaklarda RaspberryPI Model B‘nin 35$’dan satıldığı bilgisi var fakat Türkiye’de bu fiyatlara bulmak pek mümkün değil. Farnell distribütörü Yıldırım Elektronik  118TL fiyat veriyor, Robotistan‘da benzer fiyatlar var. Yurtdışı online satış yapan sitelerde kargo dahil 50$ civarında bulunabiliyor.

Kurulum adımları;

Adım adım RaspberryPI üzerine OpenVPN Client kurulumunu inceleyeceğiz (VPS üzerinde çalışan OpenVPN sunucu kurulumunu farklı bir yazıda paylaşmayı düşünüyorum).

RaspberryPI üzerine Raspbian‘ı kurup (raspberry.org’dan NOOBS indirilerek kolayca kuruluyor) SSH erişimini aldıktan sonra sistem güncellemelerini yapalım;

sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

Cihazın sabit IP alması önemli. Bunu DHCP sunucudan yapabileceğimiz gibi doğrudan ağ kartına tanımlayabiliriz, ağ kartına tanımlayalım;

nano /etc/network/interfaces

ilgili satırları aşağıdaki gibi değiştirelim (seçilen IP, DHCP havuzunun dışında olmalı);

iface eth0 inet static
address 192.168.2.251
netmask 255.255.255.0
gateway 192.168.2.1

Cihaza gelen paketlerin yönlendirilmesi için aşağıdaki dosyada değişikliği uygulayalım;

nano /etc/sysctl.conf

aşağıdaki satırın yorum ifadesini kaldıralım, satır yoksa ekleyelim;

net.ipv4.ip_forward = 1

değişikliği etkinleştirmek için;

sysctl -p /etc/sysctl.conf

OpenVPN’in yapılandırılması;

OpenVPN istemci yazılımını yükleyelim;

sudo apt-get install openvpn

Cihaz açılıdğında VPN bağlantısını otomatik kurması için aşağıdaki dosyayı ilgili dizine oluşturalım (uzantının .conf olması önemli);

sudo nano /etc/openvpn/vpn.conf

Örnek conf dosyası aşağıdaki gibi;

client

dev tun
proto tcp
tun-mtu 1500
remote xx.xx.xx.xx 1194

resolv-retry infinite
nobind

persist-key
persist-tun

verb 3

keepalive 10 120
comp-lzo
cipher DES-CBC

#openvpn root yetkileriyle çalıştırmamak için;
user <kullanıcı_adı>
group <grup_adı>
daemon

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

<ca>
-----BEGIN CERTIFICATE-----
.........
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
.........
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
.........
-----END PRIVATE KEY-----
</key>

Sistem açıldığında VPN bağlantısının otomatik kurulması için aşağıdaki dosyada değişiklik yapalım;

nano /etc/default/openvpn

ilgili yorum ifadesini kaldıralım yada aşağıdaki satırı ekleyelim;

AUTOSTART=all

OpenVPN yapılandırmasını tamamladık.

Iptables’ın yapılandırması;

Kolaylık ve tak-çalıştır olabilmesi için tünel ağına bir NAT tanımlayalım. Aşağıdaki komutla NAT yapılandıralım;

sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

iptables tanımlarımızın kalıcı olması için iptables-persistent kullanacağız, komutlar aşağıdaki gibi;

sudo apt-get install iptables-persistent
sudo /etc/init.d/iptables-persistent save
sudo /etc/init.d/iptables-persistent reload

Herşey yolunda gittiyse sistemi yeniden başlattığınızda sistem açılacak, VPN bağlantısı kurulacak, VPN Gateway istekleri cevaplamak için hazır hale gelecektir. Kurulum sonrası cihazımız tak-çalıştır haline geliyor. Elektrik ve ağ kablolarını bağladığınız herhangi bir yerde VPN hattı kullanılabilir (DHCP’den adres alacak şekilde ayarlanmalı ve otomatik alınan adres öğrenilmeli).

Ağımızdaki trafiği kurduğumuz yeni VPN Gateway‘e yönlendirmede iki farklı yöntem uygulanabilir. Birincisi, DHCP tanımlarından Default Gateway bilgisine VPN cihazımızın IP adresi yazılabilir. İkincisi, istemcilere elle sabit IP tanımlarken Default Gateway bilgisine VPN cihazının IP adresi yazılabilir.

Kurduğumuz sistemde DNS sorguları dahil tüm trafik VPN tünelinden geçiyor. Ufak değişikliklerle ihtiyaca göre farklı modeller uygulanabilir. Bu sisteme çok benzer VPN Hotspot kurulabilir. İhtiyacım olur da kurarsam ayrı bir blog yazısında paylaşırım. Soru ve önerilerinizi bekliyorum.

Hamdi ÖZCAN – ozcan.com

30 Mayıs 2014

Posted In: gateway, lkd, raspberry pi, teknik, tr, tunnel, vpn

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.

VRRP yapısında kullanılan önceliklendirme puanlamasında script, servis durumu veya komutların çıktıları keepalived sayesinde kullanılabiliyor. Özellikle script çıktılarının aktif cihaz seçiminde kullanılabiliyor olması büyük esneklik sağlıyor.

Keepalived‘ın loadbalance yeteneği de var. Bu yazımda loadbalance kullanımıyla ilgili bir bilgi bulunmuyor.

Yüksek erişilebilirlik sağlamak için kullanılan diğer yöntemleri referans amaçlı listeliyorum;

– Piranha
– UltraMonkey
– Heartbeat + mon + coda
– Heartbeat + ldirectord
– Heartbeat + Pacemaker

Örnek ayar dosyası ( /etc/keepalived/keepalived.conf );

global_defs {
   notification_email {
     test1@test.com
     test2@test.com
   }
   notification_email_from test@test.com
   smtp_server mail.test.com
   smtp_connect_timeout 30
}

vrrp_script chk_myscript {
  script       "/usr/local/bin/mycheckscript.sh" # exit 0 (herşey yolunda) | exit 1 (problem var)
  interval 2   # check every 2 seconds
  fall 2       # require 2 failures for KO
  rise 2       # require 2 successes for OK
}

vrrp_script chk_ping {
       script "/bin/ping -c 4 -q -I eth0 xx.xx.xx.x"
       interval 10
       fall 2
       weight 4
}

vrrp_script chk_service {
       script "killall -0 mysqld"
       interval 1
       weight 2
}

vrrp_instance VI_1 {
    state MASTER
    interface eth1
    virtual_router_id 20
    priority 101
    advert_int 1
    smtp_alert
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.121/24 dev eth0
    }
    track_script {
       chk_myscript
       chk_ping
       chk_service
    }
    
    notify /usr/local/bin/keepalivednotify.sh

    #notify_backup "script_backup.sh"
    #notify_master "script_master.sh"
    #notify_fault "script_fault.sh"
}

Sanal IP adresini görmek için;

ip addr show eth1

Örnek  notify betiği;

#!/bin/bash

# $1 = "GROUP"|"INSTANCE"
# $2 = name of group or instance
# $3 = target state of transition
#     ("MASTER"|"BACKUP"|"FAULT")
TYPE=$1
NAME=$2
STATE=$3

case $STATE in
"MASTER") /etc/init.d/apache2 start
          exit 0
          ;;
"BACKUP") /etc/init.d/apache2 stop
          exit 0
          ;;
"FAULT")  /etc/init.d/apache2 stop
          exit 0
          ;;
*)        echo "unknown state"
          exit 1
          ;;
esac

Hamdi ÖZCAN – ozcan.com

28 Mayıs 2014

Posted In: failover, ip, ip failover, keepalived, lkd, teknik, tr, vrrp

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.

VRRP yapısında kullanılan önceliklendirme puanlamasında script, servis durumu veya komutların çıktıları keepalived sayesinde kullanılabiliyor. Özellikle script çıktılarının aktif cihaz seçiminde kullanılabiliyor olması büyük esneklik sağlıyor.

Keepalived‘ın loadbalance yeteneği de var. Bu yazımda loadbalance kullanımıyla ilgili bir bilgi bulunmuyor.

Yüksek erişilebilirlik sağlamak için kullanılan diğer yöntemleri referans amaçlı listeliyorum;

– Piranha
– UltraMonkey
– Heartbeat + mon + coda
– Heartbeat + ldirectord
– Heartbeat + Pacemaker

Örnek ayar dosyası ( /etc/keepalived/keepalived.conf );

global_defs {
   notification_email {
     test1@test.com
     test2@test.com
   }
   notification_email_from test@test.com
   smtp_server mail.test.com
   smtp_connect_timeout 30
}

vrrp_script chk_myscript {
  script       "/usr/local/bin/mycheckscript.sh" # exit 0 (herşey yolunda) | exit 1 (problem var)
  interval 2   # check every 2 seconds
  fall 2       # require 2 failures for KO
  rise 2       # require 2 successes for OK
}

vrrp_script chk_ping {
       script "/bin/ping -c 4 -q -I eth0 xx.xx.xx.x"
       interval 10
       fall 2
       weight 4
}

vrrp_script chk_service {
       script "killall -0 mysqld"
       interval 1
       weight 2
}

vrrp_instance VI_1 {
    state MASTER
    interface eth1
    virtual_router_id 20
    priority 101
    advert_int 1
    smtp_alert
    nopreempt
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.121/24 dev eth0
    }
    track_script {
       chk_myscript
       chk_ping
       chk_service
    }
    
    notify /usr/local/bin/keepalivednotify.sh

    #notify_backup "script_backup.sh"
    #notify_master "script_master.sh"
    #notify_fault "script_fault.sh"
}

Sanal IP adresini görmek için;

ip addr show eth1

Örnek  notify betiği;

#!/bin/bash

# $1 = "GROUP"|"INSTANCE"
# $2 = name of group or instance
# $3 = target state of transition
#     ("MASTER"|"BACKUP"|"FAULT")
TYPE=$1
NAME=$2
STATE=$3

case $STATE in
"MASTER") /etc/init.d/apache2 start
          exit 0
          ;;
"BACKUP") /etc/init.d/apache2 stop
          exit 0
          ;;
"FAULT")  /etc/init.d/apache2 stop
          exit 0
          ;;
*)        echo "unknown state"
          exit 1
          ;;
esac

Hamdi ÖZCAN – ozcan.com

28 Mayıs 2014

Posted In: failover, ip, ip failover, keepalived, lkd, teknik, tr, vrrp

Linux Kernel Geliştiriciliği İçin Bir Fırsat Daha! – Eudyptula-Challenge

Bir süredir Linux Kernel'a nasıl devam edebilirim diye düşünüyordum. Opw'ye katıldığım zamanlar Coccinelle, Sparse ve checkpatch.pl ile yama gönderdim. Bunun dışında smatch var ama smatch ile test yaparak aldığımız hataları çözmek biraz kafa karıştırıcı. Belki bir süre bir şeyler okumuş olmayı gerektiriyor.

Linux Kernel ile ilgili temel kavramlar var. Rcu'lar, birkaç fonksiyon, birkaç makro bunların hepsini okuyup yama göndermeye devam etmeliyim diye düşünmüştüm. Çekirdekle ilgili şeyleri okuduğumuzda hemen anlamak zor aslında oldukça zor gibi. Hatta insanlar bloglarında "artık çekirdek kodlarını anlayabiliyorum!" şeklinde yazılar paylaşıyorlar :) Bu şekilde ne yapsam diye düşünürken geçtiğimiz ay burada eudyptula-challenge sürecini gördüm.

Bu sürece başlamak için "little at eudyptula-challenge.orgadresine e-posta gönderip katılmak istediğimizi belirtmek yeterli. Peki bu süreç nasıl işliyor? E-posta yoluyla uzaktan bir çalışma gerçekleştiriliyor. Tüm e-postalarımızı otomatikleştirilmiş betikler cevaplıyor. Geliştiriciler ile etkileşim içinde bir çalışma değil. Eğer betiğe parse edemeyeceği ya da nasıl çalışıyorsa uygun bir cevap döndüremeyeceği bir soru ya da yapmamızı istediği dışında bir cevap atarsak bu betik e-postamızı geliştiricilere yönlendiriyor. Geliştiriciler ise birkaç gün içinde cevaplıyorlar ancak mümkün olduğunca geliştiricileri bu süreçle uğraşmak zorunda bırakmadan cevaplar göndermeliyiz.

Bu süreç 20 tane görevden oluşuyor. Temel "Hello World" driverından karmaşık driverlar yazmaya kadar ilerliyor. Gönderdiğimiz cevapları html, base64 gibi formatlarda göndermemeliyiz, çünkü betik parse edemiyor. Bir de genelde dosya eki şeklinde göndermemiz gerekiyor. Tarayıcıdan gmail'den göndermek problem oluşturur diye mutt kullanarak cevap atıyorum.

Bense henüz 5. görevdeyim :) Betik biraz yavaş cevap atıyor, şu an bu sürece 4000+ başvuran var. Bir saat içerisinde cevap attığım göreve bir hafta sonra "Bu görevi geçtiniz." e-postası aldım. Bu yüzden süreç biraz yavaş ilerliyor. Bir de bu süreçte yaptıklarımızı github, blog gibi bir yerlerde yazmamalıyız. Çünkü diğer başvuranlar "kopyala-yapıştır" yapmasınlar diye betik bize en başta belirtiyor ve bize bir id veriyor, cevapları bu id ile gönderiyoruz. Çekirdek için çok fazla yazılmış belge var, 3.10 sürümünde Documentation dizini çekirdek deposunun %4'ünü oluşturuyordu. Bu kadar belge arasından kaybolmadan çalışabilmek biraz zor. Belki bunu görebilmek için bir yerlere yazmayın diyorlar.

Aslında bu muhteşem bir fırsat. Tüm görevleri tamamlayamasak bile bir sürü şey öğrenmiş oluruz. İlk dört süreç aşırı temel. 5. süreçte usb driverları ile ilgili işler yapmak gerekiyor. Sonrasını henüz görmedim :).

Çekirdek geliştiricileri de kendini bu işe verebilecek yeni insanlar arıyorlar. Gerçekten çok büyük bir emek gerektiriyor. Ben meslek olarak değil ama sevdiğim ve kendimi geliştirmek için bir fırsat olarak gördüğüm için başvurdum.

Bu süreçte bir süre kısıtlaması ve acele yok. İstediğiniz zaman görevi tamamlayıp cevabı betiğe gönderebilirsiniz. Ortada bir challenge da yok. Sadece görevleri tamamladıkça cevap atmak ve yeni görevi beklemek yeterli.

Eudyptula-challenge'ın resmi sayfasına buradan ulaşabilirsiniz.

19 Mayıs 2014

Posted In: coccinelle, eudyptula challenge, Gezegen, kernel, linux, mutt, Özgür yazılım, sparse

Running Tomcat with Eclipse on Ubuntu 13.04

If you installed Tomcat 7 from Application Center Ubuntu 13.04. You didn’t create Server in Eclipse. To fix the error ‘Cannot create a server using the selected type’ or ‘Could not load the Tomcat server configuration at /usr/share/tomcat7/conf. The configuration may be corrupt or incomplete /usr/share/tomcat7/conf/catalina.policy (No such file or directory)’ error. That which your Tomcat installation directory has not necessary folders. You can do below commands

cd ~/workspace/.metadata/.plugins/org.eclipse.core.runtime/.settings/
rm org.eclipse.jst.server.tomcat.core.prefs
rm org.eclipse.wst.server.core.prefs
cd /usr/share/tomcat7
sudo service tomcat7 stop
sudo update-rc.d tomcat7 disable
sudo ln -s /var/lib/tomcat7/conf conf
sudo ln -s /etc/tomcat7/policy.d/03catalina.policy conf/catalina.policy
sudo ln -s /var/log/tomcat7 log
sudo chmod -R 777 /usr/share/tomcat7/conf
sudo ln -s /var/lib/tomcat7/common common
sudo ln -s /var/lib/tomcat7/server server
sudo ln -s /var/lib/tomcat7/shared shared

quotation from: http://linux.mjnet.eu/post/1319/tomcat-7-ubuntu-13-04-and-eclipse-kepler-problem-to-run/

14 Mayıs 2014

Posted In: eclipse, kepler, tomcat, tomcat7, ubuntu, ubuntu 13.10

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.

DNSSEC yapısı, KSK “Key Signing Key” (uzun süreli anahtar) ve ZSK “Zone Signing Key” (kısa süreli anahtar) olmak üzere iki anahtar çiftinden oluşur. Yeterli süre ve veri toplanarak kriptografik anahtarlar çözümlenebilir. DNSSEC‘de asimetrik veya açık anahtar kriptografisi kullanılmaktadır ve saldırganlar kaba kuvvet saldırısı ile anahtarları imzalayan anahtar çiftinin gizli yarısını ele geçirilebilir. DNSSEC bu tür saldırılara karşı sistemi güçlendirmek için rutin DNS kayıtlarını imzalarken ZSK anahtar çiftini, imzaları doğrularken KSK anahtar çiftini kullanır. ZSK düzenli olarak değiştirilerek saldırılara karşı sistem güçlendirilir. KSK anahtar çifti daha uzun aralıklarla yenilenir (güncel uygulamada yıldar bir). KSK ZSK‘yı, ZSK DNS kayıtlarını imzalar. KSK sadece alan adındaki DNS kayıtlarını doğrulamak için gereklidir. KSK‘nın bir örneği DS “Delegation Signer” kaydı biçiminde bir üst alan adına kaydedilir. Üst alan adı, alt alandan gelen DS kayıtlarını kendi ZSK‘sı ile imzalar.

DNSSEC açık anahtar altyapısı (Certificate Authority) ICANN bünyesinde barındırıyor. Fakat KSK‘ları imzalayan kök sertifikalar gönüllü katılımcılar tarafından yönetiliyor. Küresel kabul için kök anahtarların yönetiminin kimde olduğu önemli bir nokta. ICANN katılımcıların kimler olacağına müdahale etmiyormuş ve ticari kararların bu seçimi etkilememesi gerektiğine inanmaktaymış.

PKI altyapısını kullanan sistemlerde yaşanan güvenli anahtar değiş tokuşu problemine, DNSSEC çözüm sağlayabilecek yetenekte. Yakın gelecekte kriptolu e-posta gönderimi gibi konularda standart haline geleceğini düşünüyorum. Bu konuda “Şifreli e-posta neden yaygınlaşmıyor?” yazım ilginizi çekebilir.

ozcan.com NS suncularını, bu yazıyı yazdığım tarihte DNSSEC uyumlu hale getirdim. BURAYA tıklayarak, kontrol aracını deneyebilirsiniz (hatalı sonuç verebiliyor, sayfayı yenilemek gerekebilir birkaç kez).

Hamdi ÖZCAN – ozcan.com

14 Mayıs 2014

Posted In: dnssec, güvenlik, icann, ksk, lkd, pki, security, teknik, tr, zsk

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.

DNSSEC yapısı, KSK “Key Signing Key” (uzun süreli anahtar) ve ZSK “Zone Signing Key” (kısa süreli anahtar) olmak üzere iki anahtar çiftinden oluşur. Yeterli miktarda veri toplanarak kriptografik anahtarlar çözümlenebilir, bu yüzden DNS kayıtları otomatik olarak belirli aralıklarla yeniden imzalanır. DNSSEC‘de asimetrik veya açık anahtar kriptografisi kullanılmaktadır ve saldırganlar kaba kuvvet saldırısı ile anahtarları imzalayan anahtar çiftinin gizli yarısını ele geçirilebilir. DNSSEC bu tür saldırılara karşı sistemi güçlendirmek için rutin DNS kayıtlarını imzalarken ZSK anahtar çiftini, imzaları doğrularken KSK anahtar çiftini kullanır. ZSK düzenli olarak değiştirilerek saldırılara karşı sistem güçlendirilir. KSK anahtar çifti daha uzun aralıklarla yenilenir (güncel uygulamada yıldar bir). KSK ZSK‘yı, ZSK DNS kayıtlarını imzalar. KSK sadece alan adındaki DNS kayıtlarını doğrulamak için gereklidir. KSK‘nın bir örneği DS “Delegation Signer” kaydı biçiminde bir üst alan adına kaydedilir. Üst alan adı, alt alandan gelen DS kayıtlarını kendi ZSK‘sı ile imzalar.

DNSSEC açık anahtar altyapısı (Certificate Authority) ICANN bünyesinde barındırıyor. Fakat KSK‘ları imzalayan kök sertifikalar gönüllü katılımcılar tarafından yönetiliyor. Küresel kabul için kök anahtarların yönetiminin kimde olduğu önemli bir nokta. ICANN katılımcıların kimler olacağına müdahale etmiyormuş ve ticari kararların bu seçimi etkilememesi gerektiğine inanmaktaymış.

PKI altyapısını kullanan sistemlerde yaşanan güvenli anahtar değiş tokuşu problemine, DNSSEC çözüm sağlayabilecek yetenekte. Yakın gelecekte kriptolu e-posta gönderimi gibi konularda standart haline geleceğini düşünüyorum. Bu konuda “Şifreli e-posta neden yaygınlaşmıyor?” yazım ilginizi çekebilir.

ozcan.com NS suncularını, bu yazıyı yazdığım tarihte DNSSEC uyumlu hale getirdim. BURAYA tıklayarak, kontrol aracını deneyebilirsiniz (hatalı sonuç verebiliyor, sayfayı yenilemek gerekebilir birkaç kez).

Hamdi ÖZCAN – ozcan.com

14 Mayıs 2014

Posted In: dnssec, güvenlik, icann, ksk, lkd, pki, security, teknik, tr, zsk

Eskişehir Devfest Student Etkinliği

Geçtiğimiz hafta Eskişehir Anadolu Üniversitesi'nde Devfest Student etkinliği düzenlendi. Etkinliğe ben, Aybüke, Gülşah ve Necdet hoca birlikte katıldık.

Etkinlikte Aybüke ve Gülşah Opw sürecinden bahsettiler. Ben de Ruby & Gtk3 ile masaüstü uygulamalar yazmaktan bahsettim. 3 Mayıs'ta İstanbul ve Denizli'de de başka etkinlikler düzenlediğinden katılım oldukça azdı. Etkinlikte yaptığım konuşmanın sunumuna buradan ulaşabilirsiniz.

Sunum sonrası elbette şehri gezdik :). Üst dönemlerden Serhat Ersel bize şehri gezdirdi. Serhat'ı daha önceden okuduğum eğlenceli blog yazılarından ve tweetlerinden tanıyordum, aynı zamanda Serhat da öğrenciyken Necdet hoca ile çalışıyormuş.

Eskişehir birçok heykel barındıran, hareketli bir şehir ve aynı zamanda başka şehirlerden gezmeye gelen insanlarla dolup taşıyor diyebilirim. Gerçekten de gezilip görülmesi gereken bir şehir. Şehirde bizi misafir ettiğinden Serhat'a teşekkürler.

9 Mayıs 2014

Posted In: devfest student, eskişehir, Gezegen, Özgür yazılım, sunum

Kdenlive X.264 Desteği, Ubuntu

Ubuntu üzerine KDENLIVE ilk yüklendiğinde, düzenlenen görüntüleri H.264 biçiminde kaydetmek mümkün olmuyor. libx264 yüklenmiş olsa dahi “output format not supported” hatası alınıyor.

Görüntü kaydını H.264 biçiminde kaydetmek için aşağıdaki adımların tamamlanması yeterli;

sudo apt-get install libavcodec-extra-53
sudo rm ~/.kde/share/config/kdenliverc.txt

kdenliverc.txt dosyası silindiğinde ilk kurulum sihirbazı yeniden çalışıyor ve yüklenen libx264 kullanılabiliyor.

 

9 Mayıs 2014

Posted In: H.264, kdenlive, libx264, lkd, nl, teknik, tr, ubuntu, x264

Twitter Auto Publish Powered By : XYZScripts.com