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 :)


Hiç yorum yok:

Yorum Gönder