İçeriğe atla
Secret Knock

Port tıklatması neden kapıyı açmaz

Bir tıklatma ya sunucuya hiç ulaşmaz, daemon’ın kabul etmediği bir biçimde ulaşır ya da kullanmadığınız bir adres için kapıyı açar. Listeyi yukarıdan aşağıya inceleyin — nedenlerin görülme sıklığına göre sıralanmıştır.

1. Kapı başka bir adres için açıldı

Güvenlik duvarı, sunucunun gördüğü kaynak adres için portu açar. IPv6 üzerinden tıklatıp ardından SSH ile IPv4 üzerinden bağlanırsanız — veya tersi olursa — kapı kullanmadığınız bir adres için açık olur. Mobil veri, operatör NAT’i ve VPN’ler de adresi değiştirir.

Secret Knock’un ana ekranda gösterdiği adresi ("… üzerinden tıklatıyorsunuz") sunucu günlüğündeki adresle karşılaştırın; farklılarsa kapı için IPv4 veya IPv6’yı sabitleyin.

2. Paketler sunucuya ulaşmıyor

Otel, ofis ve mobil ağlar bazen alışılmadık bağlantı noktalarını engeller; sunucunun önündeki bir bulut güvenlik duvarı da paketleri knockd veya fwknopd görmeden önce atar. Tıklatırken sunucudaki trafiği izleyin:

# knockd (UseSyslog): every recognised step and the command it ran
sudo journalctl -u knockd -f

# Do the packets reach the server at all? (use your interface and ports)
sudo tcpdump -ni eth0 'tcp port 7311 or tcp port 8822 or udp port 9133'

# fwknopd in the foreground with verbose output
sudo fwknopd -f -v
Sunucuda

3. Sıra yanlış biçimde ulaşıyor

  1. 1Yeniden iletilen SYN’ler: Bir TCP tıklatması yanıt almadığında, istemcinin işletim sistemi aynı SYN’i yeniden gönderir. knockd 0.8, böyle bir tekrar olduğunda sırayı sıfırlar. Secret Knock her TCP tıklatmasını tek bir SYN olarak gönderir ve denemeyi hemen durdurur; diğer istemciler bunu yapmayabilir.
  2. 2Zamanlama: Tüm adımlar sırayla ve seq_timeout içinde ulaşmalıdır. Aradaki bir yönlendirici paketleri yeniden sıralıyorsa bir adımdan önce kısa bir gecikme ekleyin.
  3. 3Protokol: Bir UDP adımı UDP olarak, bir TCP adımı TCP olarak gönderilmelidir — her adımı knockd.conf ile karşılaştırın.
  4. 4tcpflags = syn, knockd’nin SYN bayrağı olmayan TCP paketlerini yok saymasını sağlar. Bu olmadan, aynı porta yapılan bir bağlantının diğer paketleri de isabet sayılır ve sırayı bozabilir.

4. fwknop: anahtarlar, saatler ve yeniden oynatmalar

  1. 1Her iki anahtar da access.conf ile eşleşmelidir: Rijndael anahtarı ve HMAC anahtarı, aynı özetle (varsayılan olarak SHA-256).
  2. 2fwknopd, MAX_SPA_PACKET_AGE değerinden eski paketleri reddeder (varsayılan olarak 120 saniye); bu nedenle çok yanlış ayarlanmış bir cihaz saati her paketin eski görünmesine neden olur.
  3. 3Her SPA paketi yalnızca bir kez kullanılabilir; fwknopd yeniden oynatılan paketi bilerek atar.
  4. 4HTTP üzerinden tıklatırsanız, bir şeyin o portta TCP bağlantılarını kabul etmesi gerekir; aksi takdirde istek hiç gönderilmez.

5. Kapı açılıyor, ancak SSH yine de başarısız oluyor

  1. 1Kural sırası: artalan sürecinin eklediği kural, bağlantı noktasına gelen trafiği engelleyen kuraldan önce gelmelidir — iptables -A, kuralı mevcut bir DROP kuralından sonra ekler ve eklenen kuralla hiçbir zaman eşleşme olmaz.
  2. 2Pencere: cmd_timeout veya FW_ACCESS_TIMEOUT, SSH bağlanmadan önce kapıyı kapattı. Pencere içinde bağlanın; güvenlik duvarınız kurulmuş bağlantıları kabul ediyorsa mevcut oturumlar çalışmaya devam eder.
  3. 3Secret Knock’un tıklatmadan sonraki port denetimi, SSH kimlik doğrulamasından ayrı olarak portun hiç yanıt verip vermediğini gösterir.

GitHub’daki tüm örnekler → Bu sayfadaki tüm yapılandırmalar, kopyalamaya hazır: github.com/mobilcomm/secretknock-examples (kamu malı).

Sorular

Uygulamanın gerçekte ne gönderdiğini nasıl görebilirim?

Kapının geçmişi, her tıklatmayı zamanı, sonucu ve adres ailesiyle birlikte gösterir; düzenleyici de karşılaştırmak için bir bilgisayardan çalıştırabileceğiniz terminal komutu olarak aynı tıklatmayı gösterir.

Kurulumunuza yönelik kılavuzlar