MaxSessions, MaxStartups или регистрација уређаја: који SSH лимит изабрати
MaxSessions броји канале у једном транспорту, MaxStartups штити неаутентификована руковања, и ниједно не броји уређаје. Прво одредите обећање.
Тунелске услуге које обећавају један уређај по претплатнику ретко добијају то обећање од MaxSessions, и први тест то обично докаже. Претплатник отвара други ssh процес, прва сесија наставља да ради, и оба тунела преносе саобраћај. Свака опција конфигурације броји нешто друго, и ниједна од њих не броји уређаје. Именовање обећања прво је оно што избор међу њима чини очигледним.
Шта свака опција заправо броји
MaxSessions ограничава број отворених сесија које преноси једна аутентификована мрежна веза. Сесија овде значи шкољку, exec захтев, подсистем као SFTP или сличан канал мултиплексиран у једном SSH транспорту. Други позив ssh отвара други транспорт, поново се аутентификује и добија сопствену дозволу. Број сесија прве везе је за њега небитан.
MaxStartups ограничава истовремене везе које још нису аутентификоване, изражене као почетни праг, стопа и пуни праг. Постоји да би налет полуотворених руковања могао да исцрпи ресурсе демона пре аутентификације. Када се клијент аутентификује, та веза престаје да се броји против MaxStartups и постаје нечија сесија. То никада није био квота по кориснику, и његово подизање не дозвољава претплатнику да ради више.
Правило регистрације уређаја уопште није sshd опција. Оно припада било ком систему који издаје акредитиве и прати који уређај их чува, што значи да су му потребни регистрација, инвентар и опозив уместо бројача. Мешање тог захтева у sshd конфигурацију је место где већина оваквих пројеката заглави.
Где MaxSessions престаје да буде квота
Блок Match User мења које се конфигурационе вредности примењују на тог корисника, па је то природно место за строжи MaxSessions за сервисни налог. Оно што не може је да агрегира кроз везе, јер се опција процењује по транспорту. Два транспорта добијају сваки свој лимит, и корисник на крају има дупло више од онога што блок дозвољава.
Преусмеравање је засебно изненађење. TCP преусмеравање не захтева канал сесије, па MaxSessions 0 може да забрани шкољке и подсистеме и да и даље дозволи -L и -R тунеле. Услуга која само преусмерава и број сесија сматра својом тунелском квотом не мери ништа. То понашање је документовано у референци конфигурације сервера OpenSSH, и вреди га прочитати пре пројектовања око имена опције.
Испишите ефективну конфигурацију, а не датотеку за коју мислите да је учитана. Укључивања и drop-in директоријуми често значе да вредност која важи није вредност коју сте уредили.
MaxStartups штити демон, а не претплатника
Троделни облик MaxStartups описује колико неаутентификованих веза може постојати пре него што демон почне да одбацује проценат нових. Његов подразумевани облик постоји зато што је неаутентификовану SSH везу јефтино отворити, а скупо одржавати. То је контрола заштите ресурса за сервер, и примењује се на све одједном.
Подизање током олује пријава мења заштиту демона за пријем, што је понекад исправна размена и увек намерна. Не чини ништа за претплатника који жели други тунел, јер је први тунел већ аутентификован. Мешање двоје води промени која поправља погрешан симптом и истовремено слаби сервер.
Када се пријаве одбијају у налетима, погледајте у дневнику демона поруку пре аутентификације пре него што дотакнете било коју опцију. Порука именује који је чувар реаговао, и чувари нису заменљиви.
Слот по кориснику захтева заједничко стање
Истинска политика једног активног транспорта захтева резервацију која се држи негде изван sshd. Корак пријема мора атомски да заузме слот налога, да га ослободи када се веза затвори, да га пусти да истекне када клијент нестане без затварања, и да одлучи да ли се нови покушај одбија или замењује стари. Та последња одлука је одлука производа, а не технички детаљ, јер замена активног тунела некога искључује.
Резервацију мора да дели и сваки сервер који прихвата налог. Два домаћина са независним локалним бројачима примењују два одвојена лимита, и претплатник који се поново повеже кроз други портал добија други слот бесплатно. Шта год чува стање, потребно му је сопствено понашање при отказу, јер недоступно складиште не сме да закључа све претплатнике.
За обећање једног уређаја, издајте засебне акредитиве за сваки регистровани уређај и контролишите регистрацију и опозив на том слоју. Копирани приватни кључ се и даље аутентификује са било ког места, па издавање једног кључа по кориснику није доказ колико машина га чува.
Проверите политику са две стварне везе
Напишите пријемне тестове као команде пре него што напишете политику. Пет случајева су други транспорт отворен док је први активан, више канала у једном транспорту, клијент који само преусмерава портове, поновно повезивање после прекида везе, и исти налог који стиже на други портал.
Прво прочитајте ефективне лимите, затим отворите везе које политика треба да одбије. Обе половине тог теста су важне, и ниједна не замењује другу.
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]Покрените команду тунела двапут у два терминала и избројте успостављене везе на порту 22. Ако обе преносе саобраћај док ваша политика тврди један активан транспорт, политика је документација, а не спровођење. Поправите ту празнину у слоју пријема, а не смањењем MaxSessions и надом да ће други транспорт то приметити.