6 Aralık 2012 Perşembe

Knockd ile Port Knock

Port Knocking olarak bilinen yöntem belirli bir port yada port grubuna belirli paketlerin sırası ile gönderilmesi ve bu paketleri bekleyen knockd servisinin daha önceden belirlenen portları açması veya kapatmasıdır.

Örnek vermek gerekirse; SSH portu dışarıdan erişimlere kapatılır. Daha sonra uygun paket kombinasyonunu gönderen sistemler için SSH portuna izin verilir.  Bu sayede doğru şekilde kapı çalmayan sistemler için SSH portu açılmaz...

Knockd servisini kurmak için aşağıdaki gibi bir komut verebiliriz.

root@gondor:~# apt-get install knockd

Daha sonra /etc/knockd.conf dosyasını aşağıdaki gibi düzenleyelim...

[options]
          logfile = /var/log/knockd.log

[allowSSH]
          sequence    = 100,200,300
          seq_timeout = 10
          command     = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
          tcpflags    = syn,fin,urg

[blockSSH]
          sequence    = 300,200
          seq_timeout = 5
          command     = /sbin/iptables -D INPUT  -s %IP% -p tcp --dport 22 -j ACCEPT
          tcpflags    = syn

Bu dosyada allowSSH kısmında 100,200,300 numaralı portlara 10 saniye içerisinde syn,fin ve urg bayrakları taşıyan paketler gönderdiğimizde tcp 22 (ssh) portuna izin verecek iptables kuralının girilmesini söylüyoruz.

blockSSH kısmında ise 300 ve 200 nolu portlara 5 sn içerisinde syn bayrağı taşıyan paketler gönderildiğinde SSH izin kuralını kaldıracaktır.

Daha sonra /etc/knockd.conf dosyası içerisinde START_KNOCKD değerini 1 yapıyoruz. KNOCKD_OPTS eğerini ise dinlemek istediğimiz ethernet kartını gösterecek şekilde değiştiriyoruz. Benim örneğimde eth1 kartı kullanıldığı için  KNOCKD_OPTS="-i eth1" şeklinde düzenledim...

# control if we start knockd at init or not
# 1 = start
# anything else = don't start
#
# PLEASE EDIT /etc/knockd.conf BEFORE ENABLING
START_KNOCKD=1

# command line options
KNOCKD_OPTS="-i eth1"

Şimdi gelelim kapıyı nasıl çalacağımza... :) Bunun için, keyfi paket üretmemizi ve bir yerlere fırlatmamızı sağlayan hping  aracını kullanabiliriz :) SSH portunun açılması SYN,FIN ve URG bayraklı paketleri sırası ile 100,200 ve 300 nolu portlara gödnermemiz gerekiyor.

root@mordor:~# hping -i eth0 -c 1 -S -F -U 192.168.100.136 -p 100
root@mordor:~# hping -i eth0 -c 1 -S -F -U 192.168.100.136 -p 200
root@mordor:~# hping -i eth0 -c 1 -S -F -U 192.168.100.136 -p 300

Bu üç komutu arka arkaya işlettiğimizde knockd kapıyı çaldığımızı fark ederek TCP 22 portunu bizim erişebilmemiz için açacaktır.

Kapıyı kapatmak istersek knockd.conf dosyasında belirttiğimiz gibi 300 ve 200 nolu portlara SYN bayrağı taşıyan paketler göndermemiz gerekir. Bunu ise aşağıdaki gibi yapabiliriz.

root@mordor:~# hping -i eth0 -c 1 -S 192.168.100.136 -p 300
root@mordor:~# hping -i eth0 -c 1 -S 192.168.100.136 -p 200

Bu iki paketin ardından knockd ssh servisine bizim için verdiği izni kaldırarak kapıyı kapatacaktır.  Kapıyı doğru şekilde çalmayı bilmeyen kimse kapının açılmasını sağlayamaz :)


5 Aralık 2012 Çarşamba

Ubuntu için Nmap Paketi Oluşturmak

Ubuntu 12.10 deposunda bulunan nmap 5.X sürümü nse scriptlerini kullanırken ve nmap --script-updatedb komutu ile güncellemek istediğinizde aşağıdakine benzer hatalar veriyordu...

Starting Nmap 5.21 ( http://nmap.org ) at 2011-02-22 12:08 CET
NSE: Updating rule database.
NSE: error while updating Script Database:
[string "local nse = ......"]:17: /usr/share/nmap/scripts//citrix-brute-
xml.nse:35: module 'citrixxml' not found:
        no field package.preload['citrixxml']
        no file './citrixxml.lua'
        no file '/usr/local/share/lua/5.1/citrixxml.lua'
        no file '/usr/local/share/lua/5.1/citrixxml/init.lua'
        no file '/usr/local/lib/lua/5.1/citrixxml.lua'
        no file '/usr/local/lib/lua/5.1/citrixxml/init.lua'
        no file '/usr/share/lua/5.1/citrixxml.lua'
        no file '/usr/share/lua/5.1/citrixxml/init.lua'
        no file '/usr/share/nmap/nselib/citrixxml.lua'
        no file './citrixxml.so'
        no file '/usr/local/lib/lua/5.1/citrixxml.so'

Depoları kurcalamak çözüm olmadığında kendi nmap'imizi kendimiz derleyip paket yapalım diye düşündük. Sonrasında olaylar aşağıdaki gibi gelişti :)

Öncelikle aşağıdaki komutla nmap 6.25 paketini nmap.org sitesinden indirdik.

root@mordor:~# wget http://nmap.org/dist/nmap-6.25.tar.bz2

İndirdiğimiz arşiv dosyasını açalım ve açılan dizine geçelim.

root@mordor:~# tar jxvf nmap-6.25.tar.bz2
root@mordor:~# cd nmap-6.25/


4 Aralık 2012 Salı

DD ile Disk İmajı Almak ve Mount Etmek...

Bir sabit diskin imajını linux/unix/windows sistemlerde dd aracını kullanarak alabilirsiniz. dd alt seviyede kopyalama yaptığından dosya sistemi ve dosyalarla ilgilenmeksizin sabit diskin en başından itibaren bit bit tüm diski boş alanlarda dahil olmak üzere kopyalar...

Örneğin /dev/sdb olarak görülen diskin imajını almak istersek şöyle bir komut verebiliriz.

harun@mordor:~# dd if=/dev/sdb of=/root/disk.img bs=8M

Bu komut /dev/sdb aygıtını 8 MB boyunda bloklar halinde okuyup disk.img dosyası içerisine yazacaktır.

İmaj içerisindeki disk bölümlerine erişmek istersek ne yapmak gerekir? İlk olarak fdisk komutunu kullanarak disk.img dosyası içerisindeki disk bölümlerini listeleyelim.

harun@mordor:~# fdisk -l disk.img 

Disk disk.img: 320.1 GB, 320071851520 bytes
255 heads, 63 sectors/track, 38913 cylinders, total 625140335 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0009AAAA

   Device Boot      Start         End      Blocks   Id  System
disk.img1   *        2048      206847      102400    7  HPFS/NTFS/exFAT
disk.img2          206848   625139711   312466432    7  HPFS/NTFS/exFAT

disk.img dosyası içerisinde 206848 sektörden başlayan disk bölümünü mount etmek için bir loop aygıtı oluştualım. Bunun için aşağıdaki gibi bir komut kullanabiliriz.

harun@mordor:~#losetup /dev/loop0 disk.img -o $(( 206848 * 512 ))

Daha sonra /dev/loop0 aygıtının dosya türünü aşağıdaki komutla "special-files" olarak belirleyelim...

harun@mordor:~# file -s /dev/loop0 
/dev/loop0: x86 boot sector, code offset 0x52, OEM-ID "NTFS    ", sectors/cluster 8, reserved sectors 0, Media descriptor 0xf8, heads 240, hidden sectors 206848, dos < 4.0 BootSector (0x80)

Daha sonra ise /dev/loop0 aygıtı ile temsil edilen disk imajımızı salt okunur olarak /mnt dizini altına bağlayalım...

harun@mordor:~# mount /dev/loop0  /mnt/ -o ro
Disk imajımız artık /mnt dizinine bağlandığına göre  /mnt dizini altına dosyalarımıza ulaşabiliriz.

3 Aralık 2012 Pazartesi

Sudo Yetkisi Vermek ve Hesap Kilitlemek

Linux sistemlerde normal bir kullanıcının sudo komutu aracılığı ile geçici olarak yönetici yetkileri alması ve yönetici yetkileri ile komut çalıştırabilmesi için sudo komutu kullanılır.

Normal şartlar altında kimin hangi komutu sudo ile çalıştırabileceği /etc/sudoers dosyası içerisinde tanımlanır. Ancak ubuntu kullanıyorsanız kullanıcınızı aşağıdaki komutla sudo grubuna ekleyebilirsiniz...
root@mordor:/# adduser hakan sudo

Bu komut hakan kullanıcısını sudo grubuna ekleyecektir. Bu komuttan sonra ise hakan kullanıcısı istediği zaman sudo komutunu kullanabilir...

Hesabını kilitlemek istediğiniz bir kullanıcınız var ise passwd komutu yardımı ile hesabı kilitleyebilirsiniz.

root@mordor:/# passwd destek -l

Hesabı tekrar aktif etmek için ise aşağıdaki komut kullanılabilir.

root@mordor:/# passwd destek -u

Linksys X2000 Wireless İstemciler Arası İletişim Sorunu

Elinizin altına bir adet Linksys X2000 wireless modem var ise ve siz bu modemi kullanmak zorunda kalmışsanız kablosuz ağa dahil olan istemcilerin bir birlerine erişemediklerini göreceksiniz...

Uzunca bir cebelleşmeden sonra sorunun X2000 cihazında olduğunu keşfedip arayüzüne bağlanacak ve çözüm arayacaksınız. Ancak arayüzdeki seçeneklerin hiç birisi derdinize derman olmayacak...

Bu sorunu çözmek için arayüzde görünmeyen ama arkada bir yerlerde duran bazı ayar sayfalarına ulaşmanız gerekecek...

Öncelikle modeminizin IP adresini en sevdiğiniz web tarayıcınıza yazın ve şifrenizle giriş yapın. Daha sonra ise http://10.0.0.254/Wireless_Advanced.asp sayfasını ziyaret edin.Benim modemim 10.0.0.254, siz kendi IP adresinizi yazmalısınız :)

Daha sonra açılan sayfada "AP Yalıtımı / AP Isolation" ayarını "Devreden Çıkarıldı /Disabled" olarak değiştirin ve ayarları kaydedin.. Artık kablosuz istemcileriniz bir birine rahatlıkla erişebilirler.