Azok az alagútszolgáltatások, amelyek előfizetőnként egy eszközt ígérnek, ritkán kapják meg ezt az ígéretet a MaxSessionstől, és az első teszt általában ezt bizonyítja. Az előfizető második ssh-folyamatot nyit, az első munkamenet tovább fut, és mindkét alagút forgalmat hordoz. Minden konfigurációs beállítás mást számol, és egyik sem számol eszközöket. Az ígéret elsőként való megnevezése teszi nyilvánvalóvá a köztük lévő választást.

Mit számol valójában az egyes beállítások

A MaxSessions az egy hitelesített hálózati kapcsolat által hordozott nyitott munkamenetek számát korlátozza. A munkamenet itt shellt, exec kérést, SFTP-hez hasonló alrendszert vagy hasonló, egy SSH-transzporton belül multiplexelt csatornát jelent. Egy második ssh-hívás második transzportot nyit, újra hitelesít, és saját engedélyt kap. Az első kapcsolat munkamenetszáma számára irreleváns.

A MaxStartups a még nem hitelesített egyidejű kapcsolatokat korlátozza, kezdő küszöbként, arányként és teljes küszöbként kifejezve. Azért létezik, hogy a félig nyitott kézfogások rohama ne tudja kimeríteni a démon hitelesítés előtti erőforrásait. Amint egy kliens hitelesít, az a kapcsolat megszűnik a MaxStartups ellen számolni, és valaki munkamenetévé válik. Soha nem volt felhasználónkénti kvóta, és emelése nem engedi az előfizetőnek, hogy többet tegyen.

Az eszközregisztrációs szabály egyáltalán nem sshd-beállítás. Az ahhoz a rendszerhez tartozik, amely hitelesítő adatokat ad ki és nyomon követi, melyik eszköz tartja azokat, ami azt jelenti, hogy regisztrációra, leltárra és visszavonásra van szüksége számláló helyett. Ennek a követelménynek az sshd-konfigurációba keverése az a pont, ahol a legtöbb ilyen tervezés elakad.

Ahol a MaxSessions megszűnik kvótának lenni

A Match User blokk megváltoztatja, mely konfigurációs értékek vonatkoznak arra a felhasználóra, így ez a természetes hely a szigorúbb MaxSessions beállítására szolgáltatási fiókhoz. Amit nem tud, az a kapcsolatok közötti összesítés, mert a beállítást transzportonként értékelik. Két transzport külön-külön kap saját korlátot, és a felhasználónak végül kétszer annyi jut, mint amit a blokk enged.

A továbbítás külön meglepetés. A TCP-továbbításhoz nem kell munkamenet-csatorna, így a MaxSessions 0 megtilthatja a shelleket és alrendszereket, miközben továbbra is engedélyezi a -L és -R alagutakat. Egy szolgáltatás, amely csak továbbít, és a munkamenetek számát az alagút-kvótájaként kezeli, semmit sem mér. Ezt a viselkedést az OpenSSH-kiszolgáló konfigurációs referenciája dokumentálja, és érdemes elolvasni, mielőtt egy beállításnév köré tervezünk.

Az effektív konfigurációt írja ki, ne azt a fájlt, amelyről azt hiszi, hogy betöltődött. A beágyazások és a drop-in könyvtárak gyakran azt jelentik, hogy az érvényes érték nem az, amelyet szerkesztett.

A MaxStartups a démont védi, nem az előfizetőt

A MaxStartups háromrészes formája leírja, hány nem hitelesített kapcsolat létezhet, mielőtt a démon elkezdi eldobni az újak egy százalékát. Alapértelmezett formája azért létezik, mert egy nem hitelesített SSH-kapcsolatot olcsó megnyitni és drága fenntartani. Ez egy erőforrás-védelmi kontroll a kiszolgáló számára, és egyszerre mindenkire vonatkozik.

Bejelentkezési vihar alatt történő emelése a démon védelmét belépésre cseréli, ami néha a helyes csere, és mindig szándékos. Semmit sem tesz azért az előfizetőért, aki második alagutat akar, mert az első alagút már hitelesített. A kettő összekeverése olyan változáshoz vezet, amely a rossz tünetet javítja, és egyben gyengíti a kiszolgálót.

Amikor a bejelentkezéseket sorozatokban utasítják el, nézze meg a démon naplójában a hitelesítés előtti üzenetet, mielőtt bármelyik beállításhoz nyúl. Az üzenet megnevezi, melyik őr lépett fel, és az őrök nem felcserélhetők.

A felhasználónkénti helyhez megosztott állapot kell

Egy valódi, egy aktív transzportra vonatkozó szabályzatnak sshd-n kívül tartott foglalásra van szüksége. A belépési lépésnek atomikusan le kell foglalnia a fiók helyét, fel kell szabadítania a kapcsolat bezárásakor, le kell járatnia, amikor egy kliens bezárás nélkül eltűnik, és el kell döntenie, hogy egy új kísérlet elutasításra kerül-e, vagy lecseréli a régit. Ez az utolsó döntés termékdöntés, nem technikai részlet, mert egy aktív alagút lecserélése valakit leválaszt.

A foglalást minden olyan kiszolgálónak meg kell osztania, amely elfogadja a fiókot. Két, független helyi számlálóval rendelkező gép két külön korlátot érvényesít, és az előfizető, aki a másik átjárón keresztül kapcsolódik újra, ingyen kap egy második helyet. Bármi is tárolja az állapotot, saját hiba-viselkedésre van szüksége, mert egy elérhetetlen tároló nem zárhat ki minden előfizetőt.

Egyeszközös ígéret esetén adjon ki külön hitelesítő adatot minden regisztrált eszközhöz, és azon a rétegen szabályozza a regisztrációt és a visszavonást. Egy másolt privát kulcs továbbra is hitelesít bárhonnan, így az egy felhasználónkénti kulcs kiadása nem bizonyíték arra, hány gép tartja.

Ellenőrizze a szabályzatot két valódi kapcsolattal

Írja meg az elfogadási teszteket parancsokként, mielőtt megírja a szabályzatot. Az öt eset: a második transzport megnyitása az első aktív állapotában, több csatorna egy transzporton belül, csak portokat továbbító kliens, újracsatlakozás egy megszakadt kapcsolat után, és ugyanaz a fiók egy másik átjárón megérkezve.

Először olvassa el az effektív korlátokat, majd nyissa meg azokat a kapcsolatokat, amelyeket a szabályzatnak el kellene utasítania. A teszt mindkét fele számít, és egyik sem helyettesíti a másikat.

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]

Futtassa az alagútparancsot kétszer két terminálban, és számolja meg a 22-es porton létrejött kapcsolatokat. Ha mindkettő forgalmat hordoz, miközben a szabályzat egy aktív transzportot állít, a szabályzat dokumentáció, nem érvényesítés. Javítsa ezt a rést a belépési rétegben, ne a MaxSessions csökkentésével és abban bízva, hogy a második transzport észreveszi.

Kapcsolódó cikkek