MaxSessions, MaxStartups aŭ registrado: kiun SSH-limon elekti
MaxSessions kalkulas kanalojn en unu transporto, MaxStartups gardas neaŭtentigitajn manpremojn, kaj neniu el ili kalkulas aparatojn. Unue difinu la promeson.
Tunelaj servoj, kiuj promesas unu aparaton por abonanto, malofte ricevas tiun promeson de MaxSessions, kaj la unua testo kutime pruvas tion. La abonanto malfermas duan ssh-procezon, la unua sesio daŭre funkcias, kaj ambaŭ tuneloj portas trafikon. Ĉiu agorda opcio kalkulas malsaman aferon, kaj neniu el ili kalkulas aparatojn. Unue nomi la promeson igas la elekton inter ili evidenta.
Kion ĉiu opcio fakte kalkulas
MaxSessions limigas la nombron de malfermitaj sesioj portataj de unu aŭtentigita reta konekto. Sesio ĉi tie signifas ŝelon, peton exec, subsistemon kiel SFTP, aŭ similan kanalon multobligitan ene de unu SSH-transporto. Dua alvoko de ssh malfermas duan transporton, denove aŭtentigas kaj ricevas sian propran permeson. La sesiokalkulo de la unua konekto estas senrilata por ĝi.
MaxStartups limigas samtempajn konektojn, kiuj ankoraŭ ne aŭtentiĝis, esprimitaj kiel komenca sojlo, rapideco kaj plena sojlo. Ĝi ekzistas por ke eksplodo de duonmalfermitaj manpremoj ne povu elĉerpi la rimedojn de la demono antaŭ aŭtentigo. Kiam kliento aŭtentiĝas, tiu konekto ĉesas kalkuli kontraŭ MaxStartups kaj fariĝas ies sesio. Ĝi neniam estis kvoto por uzanto, kaj plialtigi ĝin ne permesas al abonanto fari pli.
Regulo pri aparata registrado tute ne estas sshd-opcio. Ĝi apartenas al iu ajn sistemo, kiu eldonas akreditaĵojn kaj spuras, kiu aparato tenas ilin, kio signifas, ke ĝi bezonas registradon, inventaron kaj revokadon anstataŭ nombrilon. Miksi tiun postulon en la sshd-agordon estas la loko, kie plej multaj el tiuj dezajnoj haltas.
Kie MaxSessions ĉesas esti kvoto
Bloko Match User ŝanĝas, kiuj agordaj valoroj validas por tiu uzanto, do ĝi estas la natura loko por fiksi pli striktan MaxSessions por servokonto. Kion ĝi ne povas, estas agregi trans konektoj, ĉar la opcio estas taksata por transporto. Du transportoj ricevas ĉiu sian limon, kaj la uzanto finas kun duoble pli ol la bloko permesas.
Plusendado estas aparta surprizo. TCP-plusendado ne bezonas sesian kanalon, do MaxSessions 0 povas malpermesi ŝelojn kaj subsistemojn dum ĝi ankoraŭ permesas tunelojn -L kaj -R. Servo, kiu nur plusendas kaj konsideras la sesiokalkulon sia tunela kvoto, mezuras nenion. Tiu konduto estas dokumentita en la OpenSSH-servila agorda referenco, kaj indas legi ĝin antaŭ ol dezajni ĉirkaŭ opcia nomo.
Eligu la efikan agordon anstataŭ la dosieron, kiun vi pensas estas ŝargita. Enkludoj kaj drop-in-dosierujoj kutime signifas, ke la valoro en efiko ne estas la valoro, kiun vi redaktis.
MaxStartups protektas la demonon, ne la abonanton
La triparta formo de MaxStartups priskribas, kiom da neaŭtentigitaj konektoj povas ekzisti antaŭ ol la demono komencas forĵeti procenton de novaj. Ĝia defaŭlta formo ekzistas ĉar neaŭtentigita SSH-konekto estas malmultekosta malfermi kaj multekosta teni. Tio estas rimedprotekta regilo por la servilo, kaj ĝi validas por ĉiuj samtempe.
Plialtigi ĝin dum ensaluta ŝtormo interŝanĝas demonan protekton kontraŭ eniro, kio kelkfoje estas la ĝusta interŝanĝo kaj ĉiam intenca. Ĝi faras nenion por la abonanto, kiu volas duan tunelon, ĉar la unua tunelo jam estas aŭtentigita. Konfuzi la du kondukas al ŝanĝo, kiu riparas la malĝustan simptomon kaj samtempe malfortigas la servilon.
Kiam ensalutoj estas rifuzataj en eksplodoj, rigardu en la demona protokolo la mesaĝon antaŭ aŭtentigo antaŭ ol tuŝi ajnan el la du opcioj. La mesaĝo nomas, kiu gardanto ekfunkciis, kaj la gardantoj ne estas interŝanĝeblaj.
Loko por uzanto bezonas dividatan staton
Vera politiko de unu aktiva transporto bezonas rezervon tenatan ie ekster sshd. La enira paŝo devas atome postuli la lokon de la konto, liberigi ĝin kiam la konekto fermiĝas, lasi ĝin eksvalidiĝi kiam kliento malaperas sen fermi, kaj decidi ĉu nova provo estas rifuzata aŭ anstataŭigas la malnovan. Tiu lasta decido estas produkta decido, ne teknika detalo, ĉar anstataŭigo de aktiva tunelo malkonektas iun.
La rezervo ankaŭ devas esti dividata de ĉiu servilo, kiu akceptas la konton. Du gastigantoj kun sendependaj lokaj nombriloj plenumas du apartajn limojn, kaj abonanto, kiu rekonektas tra la alia pordego, ricevas duan lokon senpage. Kio ajn konservas la staton bezonas sian propran fiaskokonduton, ĉar neatingebla konservejo ne rajtas ŝlosi ĉiujn abonantojn.
Por promeso de unu aparato, eldonu apartan akreditaĵon por ĉiu registrita aparato kaj kontrolu registradon kaj revokadon en tiu tavolo. Kopiita privata ŝlosilo ankoraŭ aŭtentiĝas de ie ajn, do eldoni unu ŝlosilon por uzanto ne estas pruvo pri tio, kiom da maŝinoj tenas ĝin.
Kontrolu la politikon per du realaj konektoj
Skribu la akceptajn testojn kiel komandojn antaŭ ol skribi la politikon. La kvin kazoj estas dua transporto malfermita dum la unua estas aktiva, pluraj kanaloj ene de unu transporto, kliento, kiu nur plusendas pordojn, rekonekto post perdita ligilo, kaj la sama konto alvenanta al alia pordego.
Unue legu la efikajn limojn, poste malfermu la konektojn, kiujn la politiko devus rifuzi. Ambaŭ duonoj de tiu testo gravas, kaj neniu anstataŭas la alian.
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]Rulu la tunelan komandon dufoje en du terminaloj kaj kalkulu la establitajn konektojn sur pordo 22. Se ambaŭ portas trafikon dum via politiko asertas unu aktivan transporton, la politiko estas dokumentado anstataŭ plenumado. Riparu tiun mankon en la enira tavolo, ne malaltigante MaxSessions kaj esperante, ke la dua transporto rimarkos.