MaxSessions, MaxStartups vai laiteregisteröinti: mikä SSH-raja valita
MaxSessions laskee kanavat yhdessä transportissa, MaxStartups suojaa tunnistamattomia kättelyitä, eikä kumpikaan laske laitteita. Päätä lupaus ensin.
Tunnelipalvelut, jotka lupaavat yhden laitteen tilaajaa kohti, saavat tämän lupauksen harvoin MaxSessionsilta, ja ensimmäinen testi yleensä todistaa sen. Tilaaja avaa toisen ssh-prosessin, ensimmäinen istunto jatkaa toimintaansa ja molemmat tunnelit kuljettavat liikennettä. Jokainen asetusvaihtoehto laskee eri asiaa, eikä mikään niistä laske laitteita. Lupauksen nimeäminen ensin tekee niiden välisen valinnan ilmeiseksi.
Mitä kukin asetus todella laskee
MaxSessions rajoittaa yhden todennetun verkkoyhteyden kuljettamien avoimien istuntojen määrää. Istunto tarkoittaa tässä komentotulkkia, exec-pyyntöä, SFTP:n kaltaista alijärjestelmää tai vastaavaa kanavaa, joka multipleksoidaan yhden SSH-transportin sisään. Toinen ssh-kutsu avaa toisen transportin, todenna uudelleen ja saa oman kiintiönsä. Ensimmäisen yhteyden istuntomäärä on sille merkityksetön.
MaxStartups rajoittaa samanaikaisia yhteyksiä, joita ei ole vielä todennettu, ilmaistuna aloituskynnyksenä, nopeutena ja täytenä kynnyksenä. Se on olemassa, jotta puoliavoimien kättelyiden ryöppy ei voi tyhjentää daemonin resursseja ennen todennusta. Kun asiakas todennetaan, kyseinen yhteys lakkaa laskemasta MaxStartupsia vastaan ja muuttuu jonkun istunnoksi. Se ei koskaan ollut käyttäjäkohtainen kiintiö, eikä sen nostaminen anna tilaajan tehdä enempää.
Laitteen rekisteröintisääntö ei ole lainkaan sshd-asetus. Se kuuluu järjestelmälle, joka myöntää tunnistetiedot ja seuraa, millä laitteella ne ovat, eli se tarvitsee rekisteröinnin, luettelon ja peruutuksen laskurin sijaan. Tämän vaatimuksen sekoittaminen sshd-asetuksiin on kohta, johon useimmat tällaiset suunnitelmat pysähtyvät.
Missä MaxSessions lakkaa olemasta kiintiö
Match User -lohko muuttaa sitä, mitkä asetusarvot koskevat kyseistä käyttäjää, joten se on luonteva paikka asettaa tiukempi MaxSessions palvelutilille. Se mitä se ei voi tehdä, on yhdistää yhteyksien yli, koska asetus arvioidaan transportkohtaisesti. Kaksi transporttia saavat kumpikin oman rajansa, ja käyttäjälle jää kaksinkertainen määrä siihen, mitä lohko sallii.
Edelleenohjaus on erillinen yllätys. TCP-edelleenohjaus ei tarvitse istuntokanavaa, joten MaxSessions 0 voi kieltää komentotulkit ja alijärjestelmät samalla kun se yhä sallii -L- ja -R-tunnelit. Palvelu, joka vain ohjaa edelleen ja pitää istuntomäärää tunnelikiintiönään, ei mittaa yhtään mitään. Tämä käyttäytyminen on dokumentoitu OpenSSH-palvelimen asetusviitteessä, ja se kannattaa lukea ennen kuin suunnittelee asetuksen nimen ympärille.
Tulosta tehokas asetus sen sijaan, että luottaisit tiedostoon, jonka luulet latautuneen. Sisällytykset ja drop-in-hakemistot tarkoittavat usein, että voimassa oleva arvo ei ole se, jota muokkasit.
MaxStartups suojaa daemonia, ei tilaajaa
MaxStartupsin kolmiosainen muoto kuvaa, kuinka monta todentamatonta yhteyttä voi olla olemassa ennen kuin daemon alkaa pudottaa prosenttiosuuden uusista. Sen oletusmuoto on olemassa siksi, että todentamaton SSH-yhteys on halpa avata ja kallis pitää. Se on palvelimen resurssiensuojauskeino, ja se koskee kaikkia yhtä aikaa.
Sen nostaminen kirjautumismyrskyn aikana vaihtaa daemonin suojauksen pääsyyn, mikä joskus on oikea vaihtokauppa ja aina tarkoituksellinen. Se ei tee mitään tilaajalle, joka haluaa toisen tunnelin, koska ensimmäinen tunneli on jo todennettu. Näiden kahden sekoittaminen johtaa muutokseen, joka korjaa väärän oireen ja heikentää palvelinta samaan aikaan.
Kun kirjautumisia hylätään ryöppyinä, katso daemonin lokista todennusta edeltävä viesti ennen kuin kosket kumpaakaan asetukseen. Viesti nimeää, mikä vartija laukesi, eivätkä vartijat ole keskenään vaihdettavissa.
Käyttäjäkohtainen paikka tarvitsee jaetun tilan
Aito yhden aktiivisen transportin käytäntö vaatii varauksen, jota pidetään jossain sshd:n ulkopuolella. Pääsyvaiheen on atomisesti varattava tilin paikka, vapautettava se, kun yhteys sulkeutuu, päätettävä se, kun asiakas katoaa sulkematta, ja päätettävä, hylätäänkö uusi yritys vai korvataanko vanha. Tuo viimeinen päätös on tuotepäätös, ei tekninen yksityiskohta, koska aktiivisen tunnelin korvaaminen katkaisee jonkun.
Varauksen on oltava myös jokaisen tilin hyväksyvän palvelimen yhteinen. Kaksi isäntää, joilla on riippumattomat paikalliset laskurit, toteuttavat kaksi erillistä rajaa, ja tilaaja, joka yhdistää uudelleen toisen yhdyskäytävän kautta, saa toisen paikan ilmaiseksi. Mikä tahansa tilan tallentava tarvitsee oman vikatilakäyttäytymisensä, koska saavuttamaton varasto ei saa lukita kaikkia tilaajia ulos.
Yhden laitteen lupaukselle myönnä erillinen tunnistetieto jokaiselle rekisteröidylle laitteelle ja valvo rekisteröintiä ja peruutusta sillä tasolla. Kopioitu yksityinen avain todentaa edelleen mistä tahansa, joten yhden avaimen myöntäminen käyttäjää kohti ei ole todiste siitä, kuinka moni kone pitää sitä.
Tarkista käytäntö kahdella oikealla yhteydellä
Kirjoita hyväksymistestit komentoina ennen kuin kirjoitat käytännön. Viisi tapausta ovat toinen transport, joka avataan ensimmäisen ollessa aktiivinen, useita kanavia yhdessä transportissa, asiakas joka vain ohjaa portteja edelleen, uudelleenyhdistäminen linkin katkettua ja sama tili saapumassa toiselle yhdyskäytävälle.
Lue ensin tehokkaat rajat ja avaa sitten yhteydet, jotka käytännön pitäisi hylätä. Testin molemmat puoliskot ovat tärkeitä, eikä kumpikaan korvaa toista.
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]Aja tunnelikomento kahdesti kahdessa päätteessä ja laske porttiin 22 muodostetut yhteydet. Jos molemmat kuljettavat liikennettä, kun käytäntösi väittää yhtä aktiivista transporttia, käytäntö on dokumentaatiota eikä valvontaa. Korjaa tämä aukko pääsykerroksessa, älä laskemalla MaxSessionsia ja toivomalla, että toinen transport huomaa sen.