30 Mart 2016 Çarşamba

Özgür Yazılım ve Linux Günleri

  Bu yıl on beşincisi duzenlenen Özgür Yazılım ve Linux Günleri İstanbul Bilgi Üniversitesi Santral Kampüsü'nde 26-27 Mart tarihinde gerçekleşti.

 Ben İstanbul'a bir gün önce gitmeme rağmen sağlık sorunları nedeniyle malesef ilk gün etkinliğe katılamadım ve Kriptonlu insanlarla bu yüzden daha az zaman geçirme fırsatım oldu. Etkinliğe ikinci gün katıldım.

 İlk oturum da PisiLinux (Varol Maksutoğlu, Mehmet Sütcü)  oturumuna katıldım. PisiLinux'un ortaya çıkma sürecini ve neden bu işi yaptıklarından bahsettiler. Bu oturum da şöyle bir konuşma geçti PisiLinux geliştiricileri aralarında hiç kadın geliştiricinin olmamasından ve kadınların neden böyle şeyler yapmadığından yakındılar :) Açıkcası oturumun en çok sevdiğim kısımı bu konu üzerine dönen sohbet ortamı oldu.

 İkinci oturum da +Necdet Yücel ve +Kaan Ozdincer Yine Yeniden Özgür Yazılım oturumuna katıldım. Özgür Yazılımın temellerinden bahsedildi. Bazen Özgür Yazılım felsefesini unutup bazı şeyler için Özgürlükten vazgeçtiğimizden bahsedildi. Bence özgür yazılım felsefesini benimseyen herkesin dinlemesi gereken ve gerçekten dikkat etmesi gereken mevzulardı.



 Seminerin sonunda çok konuşmaya vakit kalmasa da Kadınlar çiçek midir? sorusu aklımda kaldı. Keşke biraz daha vaktimiz olsaydı da biz çiçek miyiz sorusunu biraz tartışsaydık :)


   Öğleden sonra iki oturuma katıldım "Django Girls Tanışma Toplantısı, Kadın Yazılımcı Tanışma Toplantısı" ve "Türkiye’de Hackathon Kültürü ve Özgür Hackathon’lar" (Halil Kaya, Fatih Kadır Akın)

   En son oturum da Konuşmacısı olduğum Çalışma Toplantısı: LibreOffice Geliştirme ve Yaygınlaştırma oturumuydu. Çanakkale ekibi olarak( +aybüke özdemir , +Berk Güreken , +Kerem Hallaç, +İrem Şendur+Burçin Akalın, +Kader Tarlan , +Gülşah Köse , +Ahmet Can KEPENEK+yeliz taneroğlu , +Feyza Yavuz )Libreoffice ile ilgili bu zamana kadar neler yaptığımızdan bahsettik. Libreoffice yaygınlaştırmak için neler yapabileceğimiz hakkında fikirleri dinledik.


  Daha önceki Özgür Yazılım ve Linux Günlerinin heyecanını ve enerjisini alamasamda yine de benim için güzel bir haftasonu oldu.







Özgürlüklerinizden vazgeçmediğiniz günlere :)

10 Şubat 2016 Çarşamba

Libreoffice Çalışmalarım


    Bir kaç yazımda da belirttiğim gibi bu yıl Libreoffice katkı vermek için çalışıyorum. Bugün de uzun zamandır blog yazısını yazmak istediğim ve kabulunu beklediğim yamamın " It has been merged to LibreOffice." yazan mailiyle uyandım :)


  Ben ilk yamam kabul edildikten sonra Libreoffice Math aracı ile ilgili çalıştım. Normalde integral işareti varsayılan bir boyuttaydı. İşlemleri çoğaldıkça integral işaretinin sabit boyutta kalması görüntü olarak biraz hoş olmuyordu. İstenilen şey integral işaretinin yazılan formüle göre kendiliğinden boyutlanmasıydı. Yaptığım değişiklik sayesinde toplam ve çarpım formülü de kendiliğinden boyutlanıyor.


  Değişiklikleri yaptım ve yamamı yolladım. Böyle yazınca çok kolay olmuş gibi geldi size de dimi? O arada kan, ter, gözyaşı olan bir kaç ay var :) Bir de jenkinsde üç platformda derlendikten sonra heyecanlı bir bekleyiş :)


Önceki Hali





 
Sonraki Hali





Size daha bir çok güzel haber vereceğim :) 



13 Aralık 2015 Pazar

Travel Turkey İzmir

 Bu kez alanım dışında bir etkinlik hakkında bir blog yazısı yazmış olayım. Bu hafta Truzim fuarına katılma fırsatı buldum. Ne bu truzim fuarı?
 
  Türkiye'nin turizm alanındaki en önemli buluşmalarından biridir.Bu yıl 9. kez İzmir de gerçekleşiyor. Her yıl olduğu gibi bu yıl da, dünyanın çeşitli ülkelerinden katılımcı firmalarla işbirliği yapmak için farklı turistik yerlerden tur operatörleri, seyahat acentaları ile turizm basını fuara davet ediliyor. Fuar alanında stand sahibi turizmciler bir araya gelerek profesyonal bir ortamda iş bağlantıları yapmaları ve ülkenin turizm gelirlerini artıran şözleşmelere imza atmaları hedefleniyor.
 
  Fuar alanının bir bölümünde acentalar ve oteller tanıtılırken bir bölümünde Türkiye'nin turistlik yerleri tanıtılıyor. Turistik şehirlerin meşhur yiyecekleri, kıyafeteri, zanaatları tanıtılan fuar gerçekten çok ilgi çekici.

 Genel kültürü bol ve eğlenceli bir etkinlik oldu. Turizm alanındaki insanların mutlaka gidip gezmesi gereken bir fuar olduğunu düşünüyorum.




9 Ekim 2015 Cuma

LXC (Linux Containers)

Sanallaştırma

Sanallaştırma genel olarak fiziksel makinenin ya da ağ kaynaklarının bölünerek kullanılmasıdır. Bir serverin fiziksel kaynaklarının çeşitli yazılımlarla,birden fazla işletim sistemi ve donanımlara ayrılmasıdır. Birbinden bağımsız olarak açılıp kapatılabilir ve değişik programlar çalıştırılabilir.
Sanallaştırmanın çok fazla yönü vardır:

Platformu Sanallaştırma
Kaynak Sanallaştırma
Depolama Sanallaştırma
Sanallaştırma
Masaüstü Sanallaştırma


Sanallaştırmanın faydaları:
  1. Fiziksel sunucuların sayısını azaltma
  2. Enerji tasarrufu 
  3. Sunucuları tek bir merkezden yönetebildiğin için yönetimse gücü azaltma

LXC(Linux Containers)

Linux sistemlerde kullanabileceğimiz sanallaştırma uygulamasıdır. Lxc bir sunucuda birden fazla işletim sistemini farklı sunuculardaymış gibi çalıştırıyor.


Kurulumu

sudo apt-get install lxc

container oluştururken slackware için  /usr/share/lxc/templates klasörü altında yer alan template scriptleri kullanılıyor. Ben bu dizinin altına baktığımda boştu bu yüzden lxc-template paketini indirdim.container oluştururken debootsrap(containerın dosya sistemini ayarlamak için gereklidir) ve libvirt(container yönetimi için) paketleri de gereklidir . Gerekli paketleri indirdikten sonra  container oluşturmak için aşağıdaki komutu kullanıyoruz:


sudo lxc-create -t slackware -n container_name

Arka planda çalıştırmak için:

sudo lxc-start  -n container_name -d 

Konsola bağlanmak için:

sudo lxc-console -n container_name

Durdurmak için:

sudo lxc-stop -n container_name

Network Yapılandırması

Yapılandırma için bridge_utils dnsmasq ve iptables paketleri gereklidir.

host makinesinde ilk olarak bridge device oluşturduk(Bridge device aynı protokolü kullanan diger ağlarla ara bağlantı sağlayan bilgisayar ağ cihazıdır.)

brctl addbr br0
brctl setfd br0 0
ifconfig 192.168.100.1 netmask 255.255.255.0 promisc up

echo 1> /proc/sys/net/ipv4/ip_forward (ip_forward açıyoruz)
echo 1> /proc/sys/net/ipv4/conf/br0/proxy_arp (br0 için proxy açıyoruz)


host sisteminde nat tablosunda trafik yönelendirmesi yapıyoruz.İnternet erişimimi eth0 dan sağladığım için out device olarak onu ayarladım:

iptables -t nat -A POSTROUTING -o eth0 -j MASQERADE

dnsmasq'ın global configuration dosyasında (/etc/dnsmasq.conf)  şu satırın ekli olup olmadığını kontrol edin değilse ekleyin:

conf-dir = /etc/dnsmasq.d


Şimdi /etc/dnsmasq.d dizinin altına br0.conf  dosyası oluşturun içine aşağıdaki satırları ekleyin:

interface=br0
dhcp-range = 192.168.100.2,192.168.100.254,72h
bind-interfaces
except-interface=virbr0


/var/lib/lxc/container_name/config dosyasına aşağıdaki eklemeleri yapıyoruz:

#Network
lxc.network.type = veth
lxc.network.flags = up

#Network host side
lxc.network.link = virbr0

#Must be Unıque for each container
lxc.network.veth.pair= veth0
lxc.network.hwaddr=00:FF:AA:00:00:01

#Network container side 
lxc.network.name=eth0
lxc.network.ipv4=0.0.0.0/24

Yapılandırmaları yaptıktan sonra containerı baştan başlatabilirsiniz.


Lxc container oluştururken oluşturduğum containerdan ayar yapmadan ip adresi atamak için aşağıdaki değişiklikleri yapmanız yeterlidir:
/etc/lxc/default.conf dosyasına aşağıdaki satırları ekleyin:

lxc.network.name = eth0
lxc.network.ipv4 = 0.0.0.0/24






5 Ağustos 2015 Çarşamba

Güvenlik Duvarına Kural Ekleme

   Iptables ağ trafiğini yönlendirmek ve kurallar yazmak için kullanılan bir duvar programıdır.Bir ağ sitemi üzerinde bağlantı kurmaya çalıştığınızda kural listesinde arama yapar eğer bulamazsa varsayılan eyleme başvurur. Bir linux dağıtımına kurulu gelmediyse iptables paketini indirmelisiniz:

sudo yum install iptables

iptables da üç farklı zincir vardır: giriş ,ileri ve çıkış:

Girdi(input): Bu zincir gelen bağlantıların davranışlarını kontrol etmek için kullanılır. Örneğin bir pc sunucuya ssh çalışırsa , iptables giriş zincirinin bir kuralının ip adresi ve port ile uyuşmasını sağlayacaktır.

İleri(forward): Bu zincir aslında gelen bağlantıların yerele teslim edilmediğinde kullanılır. Eğer yönlendirme gerekmiyorsa genelde bu zincir kullanılmaz.

Çıkış(output): Bu zincir giden bağlantılar için kullanılır.Bir siteye ping atarken iptables karar vermeden önce site konusundaki kurallara bakar yani çıkış zincirini kontrol eder.

Sistemin bir kural yolu olup olmadığını kontrol etmek için:

 sudo iptables -L -v





 Görüldüğü gibi girdi zincirinde 11G bytes işlenir çıktı zincirinde ise 17G bytes.
Dikkat edilmesi gereken bir nokta da protokollerin çoğu giriş ve çıkış zincirini birlikte kullanır bu yüzden düzgün yapılandırılmalıdır.


Belirli kuralları eklemeden önce bağlantı herhangi bir kurala uymazsa varsayılan olarak ne yaptığını ayarlamalıyız. iptables genelde varsayılan olarak bağlantıları kabul etmenizi söyler:

sudo iptables -L | grep policy



Eğer varsayılan olarak böyle değilse yani siz bir değişiklik yapmışsanız bu varsayılan olarak bağlantıyı kabul et yapılır:

iptables --policy INPUT ACCEPT
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD ACCEPT


Eğer sadece el ile bağlanılmasına izin vermek istiyorsunuz o zaman varsayılanı değiştirmeniz gerekecektir. Ama bu çok hassas bilgiler içeren sunucular için yararlı olacaktır:

iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP

Üç tane temel yanıt vardır.

Accept -> Hepsi bağlansın.




Drop -> Bağlantıyı bırak,hiç olmamış gibi davran.




Reject->Bağlantıya izin verme ama hatayı gönder.




       Belirli adresleri , adres aralıklarını ve bağlantı noktalarını engellemek, izin vermek için kural tanımlayabilirsiniz. iptables kuralları zincirin en üstünden başlar ve uyan bir kural bulana kadar hepsinin üstünden geçer. Listenin istediğiniz bir yerine kural koymak istiyorsanız:

iptables -I [zincir ][sıra]

Zincire kural eklemek için iptables -A parametresi kullanılır.

Tek ip adresi için kural:

iptables -A INPUT -s  18.18.18.18  -j DROP

ip adresi aralığı için kural :

iptables -A INPUT -s 18.18.18.0/24  -j DROP  
iptables -A INPUT -s 18.18.18.0/255.255.255.0 -j DROP

Bağlantıya özel port verme

 iptables -A INPUT -p tcp --dport ssh -s  18.18.18.18  -j DROP
  
Siz herhangi bir protokol veya port numarası ile "ssh" değiştirebilirsiniz.
-p tcp iptablesın hangi kısmı protokolle bağlantı kuracağını söyler. TCP yerine UDP kullanan bir protokol engellenseydi o zaman tcp yerine udp yazılcaktı.

Herhangi bir ip adresine gelen ssh bağlantılarını engellemek için :

iptables -A INPUT -p tcp --dport ssh  -j DROP

iptables -L listeleme -v ile paket ve veri byte bilgisi -n ile konak protokol ve ağlar sayı olarak listelenir.

Eklediğiniz özel kuralları -D parametresiyle silebilirsiniz:

iptables -D INPUT -p tcp --dport ssh -s  18.18.18.18  -j DROP

Tüm kuralları temizlemek için iptables -F komutu kullanılır.

Yaptığımız değişiklikleri kaydetmek için(Dağıtıma göre değişiklik gösterebilir.):

Ubuntu:      sudo /sbin/iptables-save
Redhat ya da Centos:      /sbin/service iptables save
Ya da:       /etc/init.d/iptables save





3 Ağustos 2015 Pazartesi

NTP(NETWORK TIME PROTOCOL)

      Bilgisayardaki zaman sapmalarını engellemek için kullanılan bir protokoldur. Saati sürekli güncel tutmak için güvenli bir kaynaktan senkronize eder. UTC zamanı referans olarak alınır. Ulaşılabilir bir kaç kaynağı kontrol eder ve zaman sapması en az olanı otomatik olarak seçer.

UTC zamanını referans olarak kullanır.
UTC zamanını referans olarak kullanır.
UTC zamanını referans olarak kullanır.
UTC zamanını referans olarak kullanır.
UTC zamanını referans olarak kullanır.
    Ntp 123 port'u kullanır. Dağıtımına göre yapılandırma dosyası /etc/ntp.conf ve /etc/xntp.conf olarak değişiklik gösterir.İki tip ip adresi vardır biri saat ayarı istenen sunucu ip diğeri sahte ip (Birincisi asıl sunucu ikincisi yedek sunucu).

NTP Çalışma Modları

İstemci Mod: Sunucu diğer sunucuları kontrol eder.Sunuyu istemci modda yapılandırmak için NTP yapılandırmasında kontrol edilecek sunucuların adı ve ip adreslerinin bulunduğu bir sunucu cümlesi olmalıdır.

Broadcast ve multicat:  NTP paketlerini dinler. Yapılandırma dosyasında "Broadcast yes" "multicast yes"  cümleciğini içermelidir.


NTP Kurulması

# yum install ntp ntpdate ntp-doc

İşletim sistemi  açılırken servisin başlaması için :

#chkconfig ntpd on

Servisi başlatmak için:

#service ntpd start ya da /etc/init.d/ntpd start 

Servisi durdurmak için:

#service ntpd stop

Servisi yeniden başlatmak için:

#service ntpd restart


Yapılandırması

ntp yapılandırma dosyasını açıyoruz:

#vim /etc/ntp.conf 

Sunucu adreslerine pool.ntp.org dan bakabilirsiniz. Biz Türkiye de olduğumuz için aşağıdaki satırları conf dosyasına ekliyoruz:

server 0.tr.pool.ntp.org
server 1.tr.pool.ntp.org
server 2.tr.pool.ntp.org
server 3.tr.pool.ntp.org

Herkesin sunucu üzerinde değişiklik yapmasını ve sunucu durumunu sorgulaması engeller:

restrict default kod nomadify notrap nopeer noquery

Hizmet verilcek kullanıcılara izin tanımlama (aslında bu tanımlama zaten yapılandırma dosyasında var):

restrict 127.0.0.1
restrict ::1



pgrep ntpd komutu ile ntp servisinin çalışıp çalışmadığını görebilirsiniz. Ekrana işlem numarasını vermelidir.



NTP Zaman Sapması Kontrolü

ntpstat ağ zaman eşitleme durumu gösterir.  
Senkronize olduğu tespit edilirse ,yaklaşık zaman doğruluğunu bildirir.

Çıktısı şu şekilde olacaktır:

synchronised to NTP server (149.20.54.20) at stratum 3 
time correct to within 42 ms
polling server every 1024 s



Centos Timezone Yapılandırması

/usr/share/zoneinfo/ altında zaman dilimini seçeceğiniz ülkelerin listesi vardır. Burdan olduğunuz ülkeyi seçiyorsunuz . Timezone değiştirmek için daha genel bir dosyaya bağlıyoruz:

"ln -sf /usr/share/zoneinfo/Turkey  /etc/localtime"

"date" komutu ile de kontrolunuzu yapabilirsiniz.








2 Ağustos 2015 Pazar

Nedir bu ifconfig ?

        Ağ ara birim yapılandırması için ifconfig kullanılır. ifconfig parametre verilmeden kullanılırsa sistemde çalışan tüm ağ arabirimlerini gösterir.









MTU -> Her ip paketinin maksimum boyutunu belirtir.

Scope -> interface 'in faliyet alanıdır.

metric ->Önceliği belirtir. Örneğin iki tane ethernet kartınız varsa önce hangisinden paket gönderimi yapılcağını seçebilirsiniz.

Link encap: Ethernet  ->  Arayüz ethernetle ilgili cihaz olduğunu gösterir.

Hwaddr -> Bu üretilen her Ethernet kartı için benzersiz olan donanım adresidir.

inet addr-> Makine ip adresidir.

inet6 addr ->IPv6 ya göre ip adresidir.

Bcast -> Yayın adresini gösterir.

Mask -> İp adresinde hangi bitlerin sabit olacağını gösterir.

RX packets ,TX packets -> Sırasıyla alınan ve iletilen paketlerin toplam sayısını gösterir.

collisions -> İdeal değer sıfırdır. Sıfırdan büyükse bu paketlerin ağınızda geçme sırasında çarpışması anlamına gelir.

txqueuelen -> Bu, cihazın iletim kuyruk uzunluğunu ifade eder. 

RX bytes , TX bytes ->  Ethernet arabiriminin her iki durumdada geçtiği toplam veri miktarını gösterir.