Bu makalemde sizlere tcp istekleri ile sunucu içerisinde komut çalıştırmayı anlatacağım. Bu uygulamanın çalışma mantığı belirteceğiniz portlara sırasıyla istek gönderildiği takdirde sunucudan herhangi bir komutu çalıştırabiliyor olmanızdır. Bir kaç örnek vermeden önce knockd uygulamasını yum ile kuralım.

Yol 1:
yum install knockd

Yol 2:
wget http://pkgs.repoforge.org/knock/knock-0.5-1.rf.src.rpm
rpm -Uvh knock-0.5-1.rf.src.rpm


Kurulum tamamlandıktan sonra /etc/default/knockd dosyasında hangi ethernet arayüzü dinlenecekse ayarlayalım. Belirttiğim dosyayı aşağıdaki ile değiştirmeniz yeterli olacaktır.

# otomatik başlaması için değeri 1 veriyoruz
START_KNOCKD=1
# Hangi arayüz dinlenecekse eth0 arayuzunu degistiriyoruz.Default eth0
KNOCKD_OPTS="-i eth0"


Kurulumu tamamladık şimdi servisi service knockd start komutu ile başlatalım ve örneklere geçelim.

Örnek 1 :
Amacımız;
sırasıyla 7777 4444 6589 portlarına istek geldiğinde httpd(apache) servisini kapatmak
Sırasıyla 9988 2365 9874 portlarına istek geldiğinde ise httpd(apache) servisini çalıştırmak

Bu işlem için /etc/knockd.conf dosyasını aşağıdaki gibi değiştirelim.

[options]
UseSyslog
[stopHTTPD]
sequence = 7777:tcp,4444:tcp,6589:tcp
seq_timeout = 10
command = /etc/init.d/httpd stop
tcpflags = syn
[startHTTPD]
sequence = 9988:tcp,2365:tcp,9874:tcp
seq_timeout = 10
command = /etc/init.d/httpd start
tcpflags = syn


Örnek 2 :
Sırasıyla 9685 ve 6987 portlarına istek geldiğinde mysql portunu dışarıya kapatmak
Sırasıyla 9999 ve 8888 portlarına istek geldiğinde mysql portunu dışarıya açmak

Bu işlem için /etc/knockd.conf dosyasını aşağıdaki gibi değiştirelim.

[options]
UseSyslog
[blockMYSQLport]
sequence = 9865:tcp,6987:tcp
seq_timeout = 10
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 3306 -j DROP
tcpflags = syn
[unblockMYSQLport]
sequence = 9999:tcp,8888:tcp
seq_timeout = 10
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 3306 -j ACCEPT
tcpflags = syn


Şimdi gelelim uygulamayı çalıştırmaya. Aynı uygulamayı farklı bir makinaya kuralım ve ilk örneği aşağıdaki komutlarla uygulayalım.

knock -v IP.AD.RE.SI 7777 4444 6589 (Bu komutla httpd'yi durdurduk)
knock -v IP.AD.RE.SI 9988 2365 9874 (Bu komutla da httpd'yi başlattık)


Edit : Kendi blogumdan alıntıdır. Lütfen sizde alıntı yapacaksanız http://sahinozgoren.com veya http://wmaraci.com adresini kaynak gösteriniz.