Perşembe, Ekim 31, 2013

cp Komutunda Durum Çubuğu

Komut satırından durum çubuğu ile kopyalama:

http://beatex.org/web/advancedcopy.html

Perşembe, Haziran 27, 2013

DNS Saldırıları

     Son günlerde DNS sık sık saldırı amacıyla kullanılmaktadır. DNS'in yaygın kullanımı, güvenlik yönünden tasarımının zayıf olması, diğer protokollere göre düşük bir trafik oluşturması ve neredeyse tüm güvenlik duvarlarından ve vekil sunucularından (proxy) geçebiliyor olması, DNS'i saldırganların ilk seçenekleri arasına sokmuştur.
     Bunun yanında, birçok kurum web trafiği gibi detaylı kayıt tutmamakta ve DNS trafik analizi gerçekleştirmemektedir. Ayrıca DNS'in kullandığı protokol sayesinde saldırgan kendini gizleyebilmektedir.
     DNS temel internet servislerinden biridir. Bundan dolayı, DNS servisinin devre dışı kalması, hizmet verdiği etki alanının (domain) devre dışı kalması demektir. Bu özelliği ile kötücül yazılım (malware) geliştiricilerinin ilgi odağı olmuş durumdadır. Kötücül yazılımlar ile birçok saldırı gerçekleştirilmektedir. Özellikle yeni nesil botnetler ve APT'ler (Advanced Persistent Threat-gelişmiş siber saldırı) karmaşık saldırılar düzenlemek için DNS'i artan bir şekilde kullanmaya başlamıştır. İki temel DNS saldırısı mevcuttur:
- İlk saldırı tipi doğrudan DNS servisini hedef almaktadır.DOS/DDOS, önbellek zehirleme (cache poisoning), cevap değiştirme (response manipulation), araya girme (man in the middle) vb.
- Diğer saldırı tipi ise DNS'i daha sofistike saldırılara için bir araç olarak kullanır. Phishing, APT ve tunneling fraud bunlardan bazılarıdır.


Aşağıda bazı DNS saldırılarının özet açıklamalarını bulabilirsiniz:

Önbellek Zehirleme

Bu saldırıda; saldırgan, DNS sorgusunu üreten kişiye sahte bir DNS cevabı gönderir ve bu bilgi DNS önbelleğinde daha önceden belirlenmiş olan süre kadar saklanır.  



Kaynak:
http://www.net-security.org/

Çarşamba, Haziran 26, 2013

Hadoop Küme (Cluster) Yapısı

Son yıllarda IT teknolojilerindeki gelişmeler ve nerdeyse her türlü cihazın veri üretmeye başlaması ile işlenecek veri miktarını patlatmıştır. Bu verinin (büyük veri) hızlı bir biçimde anlamlandırılması ve kullanılabilmesi için farklı yapılar oluşturulmuştur. Bu yapılardan biri de Hadoop Küme Yapısıdır.

Hadoop Küme Yapısı, büyük miktardaki yapılandırılmamış (unstructured) verinin saklanması ve analiz edilmesi/anlamlandırılması amacıyla oluşturulmuş özel yapıdaki bir kümedir. Bu yapı, veriyi parçalayarak küme içerisindeki tüm düğümlere dağıtır ve veri paralel işlenerek çok büyük bir işlem gücü elde edilir.
Bu yapının bazı özelliklerini aşağıda bulabiliriz:

Hadoop küme yapısı öncelikle büyük verinin analiz edilmesi/anlamlandırılması için kullanılmaktadır. Büyük veri dağıtık ve yapılandırılmamış olabilir. Bu yapı veriyi küçük parçalara böler ve her parça farklı bir düyüm tarafından işlenir. Veri parçaları tek tip yapıda değildir ve her bir parça farklı bir süreç ve farlı bir düğüm tarafından analiz edilir.


Hadoop küme yapısının diğer bir avantajı da ölçeklenebilir olmasıdır. Büyük veri, adı üzerinde, çok büyüktür ve sürekli büyümeye devam etmektedir. Genellikle büyük verinin analizinden elde edilen fayda, analiz sürecinin gerçek zamanlı veya çok hızlı gerçekleştirilebildiği zaman, artmaktadır. Bu yapı analiz edilecek veri miktarının artması ile yetersiz kalabilmektedir. Ancak, Hadoop küme yapısı işlem gücü ihtiyacını karşılayabilmek için, çok hızlı bir şekilde düğüm ekleyerek genişleyebilmektedir.

Hadoop küme yapısının diğer bir özelliği de fiyatıdır. Büyük verinin analiz edilmesi, özellikle IT alyapısını bilen kişiler için ucuz olması kulağa biraz ters gelebilir. Ancak, Hadoop küme yapısı uygun maliyetli bir çözüm olduğunu kanıtlayabilir. Bunun ilk sebebi bu yapının açık kaynak kodlu olmasıdır. İsteyen herkes internetten indirerek kendi altyapısını oluşturabilir. Bir diğer sebebi, oluşturulacak altyapı için özel bir donanım gerektirmemesidir. Elinizde bulunan sıradan sunucular ile küme yapısını oluşturabilirsiniz.

Hadoop küme yapısının diğer bir avantajı da hataya karşı çok dayanıklı olmasıdır. Analiz edilen veri küçük parçalara bölündükten sonra her bir parça birden çok düğüme gönderilir. Böylece küme içerisindeki bir düğümün çökmesi analiz sürecini kesintiye uğratmamaktadır.

Ancak, büyük veriyi işlemek için oluşturulan bu yapı, her zaman kurumlar için uygun olmayabilir. Küçük veri miktarı üzerinde gerçekleştirilecek analizler, yoğun olsa bile, bu küme yapısı için uygun değildir.
Hadoop küme yapısı paralel analiz için geliştirilmiştir. Uygulamaların buna uygun olarak adapte edilmemiş olması durumunda bu küme yapısı kullanım için uygun değildir.
Hadoop küme yapısını oluşturmak, yönetmek ve destek vermek için gerekli olan bilgi birikimin elde edilmesi bu yapıyı kullanmak için gerekli olan en büyük ve önemli bileşendir.

Soru şu, gerçekten Hadoop küme yapısına ihtiyacınız var mı? Tüm parametreleri değerlendirmek ve kararınızı buna göre vermek gerekir. Ancak, veri yapınıza uysun uymasın her zaman uygulamayı indirip test yapma imkanı mevcuttur.

Kaynak:
http://searchstorage.techtarget.com/

Salı, Haziran 04, 2013

LDAP Yetkilendirmesi İçin Gerçekleştirilen İşlemler

Sunucu/İstemci hazırlandıktan sonra aşağıdaki adımlar uygulanır.

1. **SELINUX** kapatılır.

  # vi /etc/sysconfig/selinux
  :%s/SELINUX=enforcing/SELINUX=disabled/
  :wq!

2. **IPTABLES** kapatılır veya ihtiyaca göre kurallar düzenlenir.

  # service iptables stop
  # chkconfig iptables off
 
3. LDAP yetkilendirme yapabilemsi için aşağıdaki adımlar izlenir.

3.1. Yoksa **OPENLDAP-CLIENTS** ve **SSSD** paketleri yüklenir.

//NOT : SSSD CentOS 6 ile gelen ve NSCD'nin yerine geçen pakettir. Güvenli haberleşmeyi sağlar.//

  # yum install openldap-clients sssd sssd-client pam_ldap fprintd-pam oddjob
  # chkconfig --level 345 sssd on

3.2. İstemci için LDAP tanımları gerçekleştirilir.

İşlemleri komutsatırından gerçekleştirmek için;

  # authconfig
 
İşlemleri bir arayüz üzerinden gerçekleştirmek için;

  # authconfig-tui
  veya
  # authconfig-gtk

komutları kullanılır. Açılan arayüz üzerinden LDAP yetkilendirme biçimi seçilir. LDAP sunucu bilgileri, TLS bağlantı bilgileri ve CA sertifikanın yüklenmesi sağlanır. Sertifika arayüzden yüklenebildiği gibi elle de ilgili konuma konulabilir. Sertifikayı almak için;

  # wget http://SUNUCU_ADI/ca_cert.pem
 
komutu işletilir. Sertifika **/etc/openldap/cacerts** dizinine kopyalanır/konur. Sertifikanın özeti hesaplanarak bir bağlantı/kısa yol oluşturulur.

  # openssl x509 -hash -noout -in ca_cert.pem
  # ln -s ca_cert.pem 26826123.0
 
Bu işlemler;

  /etc/ldap.conf (bu dosya yoksa /etc/openldap/ldap.conf dosyası)
  /etc/pam_ldap.conf
  /etc/sysconfig/authconfig
  /etc/sssd/sssd.conf
  /etc/pam.d/system-auth

dosyalarını güncellemektedir. Sorun oluşması durumunda ayrıca;

  /etc/nsswitch.conf
 
dosyası da incelenmelidir.

Eğer yoksa, aşağıdaki dosyalara **session     optional      pam_oddjob_mkhomedir.so** satırı eklenmelidir.

  /etc/pam.d/system-auth
  /etc/pam.d/password-auth

3.3. LDAP bağlantısının kontrolü için

  ldapsearch -x -b 'ou=People,dc=sea,dc=net' '(ObjectClass=*)'

komutu işletilebilir.

4. SSH servisinde root erişimi kapatılır. **PermitRootLogin** parametresi **no** olarak ayarlanır.

  # vi /etc/sshd/sshd_config
  PermitRootLogin no

5. **SUDOERS** dosyası düzenlenir.

  # visudo
     Cmnd_Alias FORBIDDEN = /usr/sbin/visudo, /bin/su 
     %User   ALL=(ALL)       ALL

Eklenen bu satır ile **User** grubuna ait olan tüm kullanıcılar tüm makinelerden tüm komutları şifresini girerek çalıştırabilmektedir.

6. DNS sunucusuna erişemediği durumda sorun yaşanmaması için;

  # vi /etc/hosts
  172.16.0.203 venus.sea.net venus
 
satırı eklenmesi gerekir.

 

Pazartesi, Ocak 07, 2013

GIT Sürüm Kontrol Uygulaması

GIT Sürüm Kontrol Yapısı Oluşturmak

1. İlgili paketler sunucu ve istemci tarafında kurulur:

# yum install git gitweb git-gui gitk

2. GIT için ön tanımlar /etc/gitconfig ~/.gitconfig veya PROJE/.gitconfig dosyalarında tutulmaktadır. Dosyaları oluşturmak için;

# git config --global user.name "Ad SOYAD"

# git config --global user.email KULLANICI@ETKI_ALANI
# git config --global core.editor vim
# git config --global color.status auto
# git config --global color.brunch auto
# git config --global color.interactive auto
# git config --global color.diff auto

komutları kullanılabilir.Daha çok parametre için;

# git help config

komutu kullanılabilir. Dosyadaki parametreleri görüntilemek için;

# git config --list

komutu kullanılabilir.Sadece belli bir parametreyi görüntülemek için;

# git config user.name

komutu kullanılabilir.


3. GIT'i kullanmak için öncelikle mevcut projenin GIT sistemine dahil edilmesi gerekir. Bunun için projenin/dosyaların bulunduğu dizine gidilerek;

# git init

komutu çalıştırılır. Bu komut dizin içerisinde .git isminde gizli bir dizin oluşturur. Bundan sonra bu projedeki dosya ve dizinleri GIT'e eklemek gerekir. Bunun için;

# git add DOSYA_ADI
# git add *.txt
# git add .

gibi komutlar ile dosya GIT'e dahil edilir. Sürüm kontrolü yapılacak dosyalar eklendikten sonra, işlem onaylanır (COMMIT).

# git commit -m 'İlk sürüm'

GIT Sunucusu Hazırlamak

1. Daha önce hazırlanan GIT projesinin sunucu versiyonunu hazırlamak gerekir bunun için;

# git clone --bare PROJE_ADI PROJE_ADI.git

Bu komut çalışma dizini (.git) olmayan bir proje hazırlar. Bu işlemin ikinci adımda oluşturulan kullanıcı ile gerçekleştirilmesi uygun olacaktır.

2. Projelere erişmek için farklı kullanıcılar kullanılabileceği gibi tek bir kullanıcı (GITUSER) da kullanılabilir. Farklı kullanıcılar kullanılması durumunda, erişim izinleri ile ilgili düzenleme yapılması gerekiyor. Özellikle objects dizinine aynı gruptaki kullanıcılara yazma hakkı verilmesi gerekir. Bir diğer çözüm ise umask ile oluşturulacak dosyaların 002 hakkı ile oluşturulmasını sağlamaktır.
Burada GITUSER oluşturulacak ve sunucu erişimi bu kullanıcı ile ve SSH protokolü ile gerçekleştirilecektir.

# useradd gituser
# passwd gituser
# usermod -s /usr/bin/git-shell gituser

3. Kullanıcı ve proje oluşturulduktan sonra aşağıdaki örnek işlemler takip edilerek bir sunucu projesi hazırlanır.

NOT : config dosyasının daha önceden düzenlenmiş olması önerilmektedir. Böylece değişikliklerin kimin tarafından yapıldığı takibi gerçekleştirilebilir.

gituser$ mkdir prj01
gituser$ cd prj01
gituser/prj01$ echo test > t.txt
gituser/prj01$ git add .
gituser/prj01$ git commit -m 'ilk sürüm'
gituser/prj01$ cd ..
gituser$git clone --bare prj01 prj01.git


4. Başka bir bilgisayardan oluşturulan projenin değiştirilmesi için öncelikle projenin bir kolonunu almak gerekir;

user$ git clone gituser@SUNUCU_ADI:/PROJE_DIZINI/prj01.git
*****

user$ cd prj01
user/prj01$ echo test > t2.txt
user/prj01$ git add .
user/prj01$ git commit -m 'ilk sürüm t2.txt'
user/prj01$ git push

NOT : Son komut .git dizinindeki config dosyasında tanımlanan değerler kullanılarak işletilir. Aslında;
user/prj01$ git push origin master
komutu çalıştırılmaktadır.
origin : Projenin kaynağı
master : Projenin hangi dalı (branch) olduğunu belirtir.

GIT Sunucusuna SSH Üzerinden Anahtar İle Erişmek

1. Erişmek istediğimiz istemcide aşağıdaki komut çalıştırılarak bir anahtar çifti oluşturulur;

user$ ssh-keygent -t rsa -b 2048 -C "KULLANICI ADI"

Oluşan id_rsa ve id_rsa.pub dosyaları .ssh dizininde oluşur. Id_rsa dosyasının hakları;

user/.ssh$chmod 600 id_rsa

olacak şekilde düzenlenir.

2. Oluşturulan açık anahtar (id_rsa.pub) sunucuya kopyalanır;

user/.ssh$scp id_rsa.pub gituser@SUNUCU_ADI:/home/gituser/.ssh/

3. Kopyalanan açık anahtar .ssh dizininde bulunan/oluşturulan authorized_keys dosyasına kopyalanır.
user/.ssh$cat id_rsa.pub >> authorized_keys


4. 3. ve 4. adımlar yerine;

  user/.ssh$ ssh-copy-id gituser@SUNUCU

komutu da kullanılabilir.


5. Bu işlem sonrası sunucuya GITUSER kullanıcısı ile erişmek için şifre girilmesine gerek kalmayacaktır.