Ubuntu Server ortamlarında SSH erişimini güvence altına almak, sistem yöneticilerinin öncelikli görevlerinden biridir.
Ubuntu Server ortamlarında SSH erişimini güvence altına almak, sistem yöneticilerinin öncelikli görevlerinden biridir. Geleneksel yöntemlerde SSH servisi varsayılan 22 numaralı portta sürekli açık tutulduğundan, tarama araçları tarafından kolayca tespit edilebilir ve brute-force saldırılarına maruz kalabilir. Port knocking tekniği, bu sorunu çözmek için etkili bir yaklaşımdır. Bu yöntemle, belirli bir port sırasına (knock sequence) göre bağlantı denemeleri yapıldığında yalnızca o zaman SSH portu geçici olarak açılır. Bu makalede, Ubuntu Server üzerinde knockd aracı kullanılarak port knocking’in nasıl uygulanacağını adım adım inceleyeceğiz. Bu uygulama, sunucunuzun güvenliğini önemli ölçüde artırırken, erişim prosedürlerini disiplinli hale getirir.
Port knocking, kapalı portlara belirli bir sırayla bağlantı girişimlerinin (knock) yapılmasıyla tetiklenen bir erişim kontrol mekanizmasıdır. Örneğin, 7000, 8000 ve 9000 numaralı portlara sırasıyla TCP bağlantısı denendiğinde, sunucu bu diziyi tanır ve iptables kurallarıyla SSH portunu (22) belirli bir süre için açar. Bu süre sonunda port otomatik kapanır. Knockd daemon’u, bu knocking trafiğini dinler ve firewall kurallarını dinamik olarak yönetir. Bu yaklaşım, port taramalarını etkisiz kılar çünkü SSH portu varsayılan olarak kapalıdır ve yalnızca doğru sekansla erişilebilir hale gelir.
Avantajları arasında, ek donanım gerektirmemesi, düşük kaynak tüketimi ve mevcut iptables altyapısıyla sorunsuz entegrasyon yer alır. Dezavantajı ise, knocking sekansını unutma durumunda erişim kaybı riskidir; bu nedenle yedek erişim yöntemleri (örneğin fiziksel konsol) düşünülmelidir. Uygulamada, sekansı karmaşık tutmak (rastgele portlar ve protokol karışımı) güvenliği maksimize eder. Bu teknik, özellikle kamu kurumları veya kurumsal sunucularda standart bir güvenlik katmanı olarak benimsenir.
Ubuntu Server 20.04 veya 22.04 gibi LTS sürümlerinde knockd aracını yüklemek için öncelikle paket listesini güncelleyin. Terminalde şu komutları sırayla çalıştırın: sudo apt update ardından sudo apt install knockd. Bu işlem, knockd daemon’unu ve yardımcı knock istemci aracını sisteminize entegre eder. iptables-persistent paketi de önerilir ki firewall kuralları yeniden başlatmalarda kalıcı olsun: sudo apt install iptables-persistent. Yükleme sonrası, knockd servisi varsayılan olarak durdurulmuş halde bulunur ve manuel yapılandırma gerektirir. Bu adım, yaklaşık 5-10 MB disk alanı kullanır ve saniyeler içinde tamamlanır.
/etc/knockd.conf dosyasını sudo yetkisiyle düzenleyin: sudo nano /etc/knockd.conf. Örnek bir konfigürasyon şu şekildedir:
[options]
UseSyslog
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 30
command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
Burada, 7000-8000-9000 sırası knocking’i tanımlar, 30 saniye timeout ile sınırlanır ve doğru IP’den SSH trafiğine izin verir. command satırında %IP% değişkeni, knocking yapan IP’yi otomatik ekler. Benzer şekilde [closeSSH] bölümüyle portu kapatabilirsiniz: command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT. Değişiklikleri kaydedip çıkın. Bu konfig, esnek olup sekansı ihtiyaçlara göre özelleştirilebilir; örnekte TCP SYN paketleri kullanılır ki gizlilik artsın.
Knockd servisini etkinleştirin: sudo systemctl enable knockd ve sudo systemctl start knockd. Durumunu kontrol edin: sudo systemctl status knockd. Başarılıysa active (running) görünür. Varsayılan SSH portunu kapatmak için iptables ile: sudo iptables -A INPUT -p tcp --dport 22 -j DROP ve kalıcı hale getirin: sudo netfilter-persistent save. Bu kurallar yeniden başlatmada korunur. Yapılandırma sonrası logları /var/log/syslog’ta izleyin; knocking denemeleri burada kaydedilir. Toplam işlem 10 dakikadan az sürer ve sunucuyu hemen korumaya alır.
Sistemi test etmek için başka bir makineden knock aracını kullanın: knock 7000 8000 9000. Ardından ssh kullanıcı@ip ile bağlanmayı deneyin; başarılı olursa 30 saniye pencere açılır. Nmap ile tarama yapın: nmap -p 22 ip, port kapalı görünmelidir. Sorun gidermede, sekans timeout’unu artırın veya logları inceleyin. İleri düzeyde, fail2ban ile knocking denemelerini banlayın veya birden fazla sekans tanımlayın (örneğin admin ve user için ayrı).
Güvenlik entegrasyonu için, knocking’i VPN veya iki faktörlü kimlik doğrulamayla birleştirin. Performans açısından, yüksek trafikli sunucularda sekansı kısaltın. Düzenli yedekleme ve konfigürasyon denetimi, kesintisiz erişimi sağlar. Bu yöntemle, SSH saldırılarını %90’ın üzerinde azaltabilirsiniz; pratikte loglarda belirgin düşüş gözlenir.
Sonuç olarak, Ubuntu Server’da SSH port knocking uygulamak, katmanlı savunma stratejisinin vazgeçilmez bir parçasıdır. Adım adım izlenen bu rehberle, sunucunuzu profesyonel standartlarda koruyabilirsiniz. Düzenli güncellemeler ve testlerle sistemi optimize edin; böylece kurumsal güvenliğinizi pekiştirin.