İçeriğe atla
Secret Knock

Port knocking açıklaması

Port knocking, biri gizli bir bilgiyi bildiğini kanıtlayana kadar bir hizmeti görünmez tutar. Bu rehber, nasıl çalıştığını, yaygın iki uygulamayı — knockd ve fwknop — ve tıklatmaların uygulamada neden başarısız olduğunu açıklar.

Port knocking nasıl çalışır

Güvenlik duvarı korunan bağlantı noktasına gelen her bağlantıyı engeller; bu nedenle bir tarayıcı hiçbir şey görmez. Küçük bir artalan işlemi, güvenlik duvarına ulaşan trafiği izler. Bir kaynak adres beklenen deseni ürettiğinde, artalan işlemi bu adrese izin veren bir güvenlik duvarı kuralı ekler; genellikle kısa bir süre için.

Desen, tıklatmadır. knockd ile bu, belirli bağlantı noktalarına belirli sırada ve bir zaman sınırı içinde yapılan bağlantı denemeleri dizisidir. fwknop ile tek bir şifreli pakettir.

knockd: tıklatma dizileri

knockd bir arabirimi dinler ve bağlantı denemelerini /etc/knockd.conf içindeki dizilerle eşleştirir. Bir dizi TCP ve UDP bağlantı noktalarını karıştırabilir. Eşleştiğinde knockd bir komut çalıştırır — genellikle tıklatan adres (%IP%) için bir iptables veya nftables kuralı.

Bu örnek, tıklatan adres için SSH’i açar ve 10 saniye sonra yeniden kapatır. Güvenlik duvarınız kurulmuş bağlantıları kabul ediyorsa mevcut SSH oturumları çalışmaya devam eder.

[options]
    UseSyslog

[openSSH]
    sequence      = 7311:tcp,8822:tcp,9133:udp
    seq_timeout   = 10
    tcpflags      = syn
    start_command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    cmd_timeout   = 10
    stop_command  = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
/etc/knockd.conf — SSH’i 10 saniyeliğine aç

Kendi bağlantı noktalarınızı seçin; yayımlanmış örneklerdeki bağlantı noktalarını asla tekrar kullanmayın. tcpflags = syn, knockd’un yalnızca SYN bayrağı taşıyan paketleri — bağlantı denemesinin ilk paketini — saymasını sağlar.

fwknop: Single Packet Authorization

fwknop, diziyi şifrelenmiş (AES) ve kimliği doğrulanmış (HMAC) tek bir UDP paketiyle değiştirir. Sunucu olan fwknopd, paketi edilgen olarak yakalar, doğrular, yeniden oynatılmadığını denetler ve paketin içindeki adres için istenen bağlantı noktasını açar.

Anahtarları fwknop --key-gen ile oluşturun ve sunucunun access.conf dosyasına koyun. Secret Knock, istemci tarafını .fwknoprc dosyanızdan içe aktarır.

SOURCE              ANY
OPEN_PORTS          tcp/22
KEY_BASE64          <output of fwknop --key-gen>
HMAC_KEY_BASE64     <output of fwknop --key-gen>
FW_ACCESS_TIMEOUT   30
/etc/fwknop/access.conf — SPA anahtarıyla SSH’e izin ver

İzin verilen adres şifreli paketin içinde taşındığı için SPA, paketi gönderen adresten farklı bir adres için bağlantı noktası açabilir — başka bir yerdeki dizüstü bilgisayar için hücresel veri kullanan bir telefondan tıklattığınızda yararlıdır.

Tıklatmalar neden başarısız olur

  • IPv4 ve IPv6: tıklatma bir adres ailesi üzerinden gönderildi, SSH ise diğeri üzerinden bağlanıyor. Güvenlik duvarı, kullanmadığınız bir adres için kapıyı açtı.
  • Farklı bir genel adres: hücresel veride, operatör NAT’ı veya VPN arkasında sunucu beklediğinizden farklı bir IP görür. Tıklatmalarınızın hangi adresten geldiğini denetleyin.
  • Yeniden iletilen SYN’ler: bir TCP tıklatması yanıtlanmazsa istemcinin işletim sistemi aynı SYN’i yeniden gönderir. Testlerimizde knockd 0.8, böyle yinelenen bir SYN’de diziyi sıfırladı; bu nedenle istemci her tıklatmayı bir kez göndermeli ve denemeyi hızla durdurmalıdır.
  • Zamanlama: seq_timeout dışında veya yanlış sırada ulaşan tıklatmalar diziyi baştan başlatır.
  • Ara ağ aygıtları: bazı ağlar alışılmadık bağlantı noktalarına giden trafiği engeller veya değiştirir; bu yüzden evde çalışan bir tıklatma otel ya da ofis ağında başarısız olabilir.

Güvenli mi?

Bir knockd dizisi şifrelenmeden gönderilir; trafiğinizi izleyebilen herkes bunu yeniden oynatabilir. Bunu SSH anahtarlarının yerine değil, önünde tarayıcılardan bir hizmeti gizlemek için kullanın. fwknop SPA şifreleme, HMAC ve yeniden oynatma korumasıyla bu açığı kapatır; trafiğinizin gözlemlenebileceği durumlarda daha iyi seçimdir.

iPhone, Mac ve Apple Watch’tan tıklatma

Secret Knock, iPhone, iPad ve Mac’ten knockd dizileri ve fwknop SPA paketleri gönderir, bağlantı noktasının yanıt verdiğini denetler ve SSH uygulamanızı açar. watchOS uygulamaların ham TCP veya UDP paketleri göndermesine izin vermediğinden Apple Watch eşleştirilmiş iPhone üzerinden tıklatır; iPhone’dan uzaktayken bunu etkinleştiren sunuculara HTTP üzerinden SPA gönderebilir.

Kurulumunuza yönelik kılavuzlar

Kapıyı kapalı tutun. Tıklatmayı yanınızda taşıyın.

Secret Knock yakında iPhone, iPad, Mac ve Apple Watch için App Store’da.

Secret Knock →