Abone başına bir cihaz vaat eden tünel hizmetleri bu vaadi MaxSessions'tan nadiren alır ve ilk test bunu genellikle kanıtlar. Abone ikinci bir ssh süreci açar, ilk oturum çalışmaya devam eder ve iki tünel de trafik taşır. Her yapılandırma seçeneği farklı bir şeyi sayar ve hiçbiri cihazları saymaz. Vaadi önce adlandırmak, aralarındaki seçimi açık hale getiren şeydir.

Her seçenek gerçekte neyi sayar

MaxSessions, kimliği doğrulanmış tek bir ağ bağlantısının taşıdığı açık oturum sayısını sınırlar. Burada oturum; bir kabuk, bir exec isteği, SFTP gibi bir alt sistem veya tek bir SSH taşıması içinde çoğullanmış benzer bir kanal anlamına gelir. İkinci ssh çağrısı ikinci bir taşıma açar, yeniden kimlik doğrular ve kendi iznini alır. İlk bağlantının oturum sayısı onun için önemsizdir.

MaxStartups, henüz kimliği doğrulanmamış eşzamanlı bağlantıları başlangıç eşiği, oran ve tam eşik olarak sınırlar. Yarı açık el sıkışma patlamasının kimlik doğrulamadan önce daemonun kaynaklarını tüketememesi için vardır. Bir istemci kimlik doğruladığında o bağlantı MaxStartups'a karşı sayılmayı bırakır ve birinin oturumu olur. Hiçbir zaman kullanıcı başına kota değildi ve artırılması abonenin daha fazlasını yapmasına izin vermez.

Cihaz kaydı kuralı hiç de sshd seçeneği değildir. Bu, kimlik bilgilerini veren ve hangi cihazın bunları tuttuğunu izleyen herhangi bir sisteme aittir, bu da sayaç yerine kayıt, envanter ve iptal gerektirdiği anlamına gelir. Bu gereksinimi sshd yapılandırmasına karıştırmak, bu tasarımların çoğunun takıldığı yerdir.

MaxSessions nerede kota olmaktan çıkar

Match User bloğu o kullanıcıya hangi yapılandırma değerlerinin uygulanacağını değiştirir, bu yüzden hizmet hesabı için daha sıkı bir MaxSessions ayarlamak için doğal yerdir. Yapamadığı şey bağlantılar arasında toplamak, çünkü seçenek taşıma başına değerlendirilir. İki taşıma kendi sınırını alır ve kullanıcı sonunda bloğun izin verdiğinin iki katına sahip olur.

Yönlendirme ayrı bir sürprizdir. TCP yönlendirmesi oturum kanalı gerektirmez, bu yüzden MaxSessions 0 kabukları ve alt sistemleri yasaklarken -L ve -R tünellerine izin vermeye devam edebilir. Yalnızca yönlendirme yapan ve oturum sayısını tünel kotası olarak gören bir hizmet hiçbir şey ölçmez. Bu davranış OpenSSH sunucu yapılandırma başvurusunda belgelenmiştir ve bir seçenek adı etrafında tasarım yapmadan önce okumaya değer.

Yüklendiğini düşündüğünüz dosya yerine etkin yapılandırmayı dökün. İçe aktarmalar ve drop-in dizinleri genellikle geçerli değerin düzenlediğiniz değer olmadığı anlamına gelir.

MaxStartups daemonu korur, aboneyi değil

MaxStartups'ın üç parçalı biçimi, daemon yeni bağlantıların bir yüzdesini düşürmeye başlamadan önce kaç doğrulanmamış bağlantının var olabileceğini açıklar. Varsayılan biçimi vardır çünkü doğrulanmamış bir SSH bağlantısı açmak ucuz, tutmak pahalıdır. Bu, sunucu için bir kaynak koruma denetimidir ve aynı anda herkes için geçerlidir.

Giriş fırtınası sırasında artırmak, daemon korumasını kabulle değiştirir; bu bazen doğru takas ve her zaman bilinçli bir takastır. İkinci tünel isteyen abone için hiçbir şey yapmaz, çünkü ilk tünel zaten doğrulanmıştır. İkisini karıştırmak, yanlış belirtiyi düzelten ve aynı zamanda sunucuyu zayıflatan bir değişikliğe götürür.

Girişler dalgalar halinde reddedildiğinde, iki seçeneğe de dokunmadan önce daemon günlüğünde kimlik doğrulama öncesi mesaja bakın. Mesaj hangi muhafızın tetiklendiğini adlandırır ve muhafızlar birbirinin yerine geçmez.

Kullanıcı başına yuva ortak durum gerektirir

Gerçek bir tek etkin taşıma politikası sshd dışında bir yerde tutulan bir rezervasyon gerektirir. Kabul adımı hesabın yuvasını atomik olarak talep etmeli, bağlantı kapandığında serbest bırakmalı, istemci kapatmadan kaybolduğunda süresini bitirmeli ve yeni denemenin reddedileceğine mi yoksa eskiyi değiştireceğine mi karar vermelidir. Bu son karar bir ürün kararıdır, teknik ayrıntı değil, çünkü etkin bir tüneli değiştirmek birinin bağlantısını keser.

Rezervasyonu hesabı kabul eden her sunucu da paylaşmalıdır. Bağımsız yerel sayaçları olan iki ana bilgisayar iki ayrı sınır uygular ve diğer ağ geçidinden yeniden bağlanan abone ikinci yuvayı ücretsiz alır. Durumu ne saklıyorsa kendi hata davranışına ihtiyaç duyar, çünkü erişilemeyen bir depo tüm aboneleri kilitlememelidir.

Tek cihaz vaadi için, kayıtlı her cihaz için ayrı kimlik bilgisi verin ve kayıt ile iptali o katmanda kontrol edin. Kopyalanmış özel anahtar hâlâ her yerden kimlik doğrular, bu yüzden kullanıcı başına bir anahtar vermek kaç makinenin onu tuttuğunun kanıtı değildir.

Politikayı iki gerçek bağlantıyla doğrulayın

Politikayı yazmadan önce kabul testlerini komut olarak yazın. Beş durum: birincisi etkinken açılan ikinci taşıma, tek taşıma içinde birden çok kanal, yalnızca bağlantı noktalarını yönlendiren istemci, bağlantı koptuktan sonra yeniden bağlanma ve aynı hesabın başka bir ağ geçidine ulaşması.

Önce etkin sınırları okuyun, sonra politikanın reddetmesi gereken bağlantıları açın. Bu testin iki yarısı da önemlidir ve hiçbiri diğerinin yerini tutmaz.

sshd -T | grep -iE "maxsessions|maxstartups|allowtcpforwarding|permitopen"
ss -tn state established '( sport = :22 )' | head
ssh -N -L 8080:127.0.0.1:80 [email protected]

Tünel komutunu iki terminalde iki kez çalıştırın ve 22 numaralı bağlantı noktasında kurulan bağlantıları sayın. Politikanız bir etkin taşıma iddia ederken ikisi de trafik taşıyorsa, politika belgedir, uygulama değil. Bu boşluğu kabul katmanında düzeltin, MaxSessions'ı düşürüp ikinci taşımanın fark edeceğini umarak değil.

İlgili makaleler