Abunəçi başına bir cihaz vəd edən tunnel xidmətləri bu vədi MaxSessions-dan nadir hallarda alır və ilk sınaq bunu adətən sübut edir. Abunəçi ikinci bir ssh prosesi açır, birinci sessiya işləməyə davam edir və hər iki tunnel trafiki daşıyır. Hər konfiqurasiya seçimi fərqli bir şeyi sayır və heç biri cihazları saymır. Əvvəlcə vədi adlandırmaq onların arasındakı seçimi aşkar edir.

Hər seçim əslində nəyi sayır

MaxSessions bir autentifikasiya edilmiş şəbəkə bağlantısının daşıdığı açıq sessiyaların sayını məhdudlaşdırır. Burada sessiya shell, exec sorğusu, SFTP kimi alt sistem və ya tək bir SSH transportu daxilində multiplekslənmiş bənzər kanal deməkdir. İkinci ssh çağırışı ikinci transport açır, yenidən autentifikasiya olur və öz icazəsini alır. Birinci bağlantının sessiya sayı onun üçün əhəmiyyətsizdir.

MaxStartups hələ autentifikasiya olunmamış eyni vaxtlı bağlantıları məhdudlaşdırır və başlanğıc həddi, temp və tam hədd kimi ifadə olunur. O, yarım-açıq handshake-lərin partlamasının daemonun autentifikasiyadan əvvəlki resurslarını tükəndirə bilməməsi üçün mövcuddur. Müştəri autentifikasiya etdikdən sonra həmin bağlantı MaxStartups-a qarşı sayılmağı dayandırır və kiminsə sessiyasına çevrilir. O, heç vaxt istifadəçi başına kvota olmayıb və onu artırmaq abunəçiyə daha çox şey etməyə imkan vermir.

Cihaz qeydiyyatı qaydası heç də sshd seçimi deyil. O, etimad məlumatlarını verən və hansı cihazın onları saxladığını izləyən hansı sistemə aid olur, yəni sayğac yerinə qeydiyyat, inventar və ləğvetmə tələb edir. Bu tələbi sshd konfiqurasiyasına qarışdırmaq bu dizaynların çoxunun dayandığı yerdir.

MaxSessions hansı nöqtədə kvota olmaqdan çıxır

Match User bloku hansı konfiqurasiya dəyərlərinin həmin istifadəçiyə tətbiq olunduğunu dəyişir, buna görə də xidmət hesabı üçün daha sərt MaxSessions təyin etməyin təbii yeridir. Edə bilmədiyi şey bağlantılar arasında birləşdirməkdir, çünki seçim hər transport üzrə qiymətləndirilir. İki transportun hər biri öz limitini alır və istifadəçi blokun icazə verdiyinin iki qatı ilə qalır.

Yönləndirmə ayrı bir sürprizdir. TCP yönləndirmə sessiya kanalı tələb etmir, buna görə MaxSessions 0 shell və alt sistemləri qadağan edə bilər, eyni zamanda -L və -R tunellərinə icazə verir. Sessiya sayını öz tunnel kvotası kimi qəbul edən yalnız-yönləndirmə xidməti heç bir şey ölçmür. Bu davranış OpenSSH server konfiqurasiyası arayışında sənədləşdirilib və seçim adı ətrafında dizayn etməzdən əvvəl oxumağa dəyər.

Yükləndiyini düşündüyünüz faylı deyil, effektiv konfiqurasiyanı çıxarın. Daxiletmələr və drop-in qovluqları adətən qüvvədə olan dəyərin redaktə etdiyiniz dəyər olmadığını bildirir.

MaxStartups abunəçini deyil, daemonu qoruyur

MaxStartups-un üç hissəli forması daemon yeni bağlantıların müəyyən faizini atmağa başlamazdan əvvəl nə qədər autentifikasiya olunmamış bağlantının mövcud ola biləcəyini təsvir edir. Onun standart forması ona görə mövcuddur ki, autentifikasiya olunmamış SSH bağlantısı açmaq üçün ucuz, saxlamaq üçün bahadır. Bu, server üçün resurs qoruma nəzarətidir və hamıya eyni vaxtda tətbiq olunur.

Giriş fırtınası zamanı onu artırmaq daemon qorumasını qəbulla dəyişir, bu bəzən düzgün mübadilədir və həmişə qəsdən edilən mübadilədir. İkinci tunnel istəyən abunəçi üçün heç nə etmir, çünki birinci tunnel artıq autentifikasiya olunub. İkisini qarışdırmaq yanlış simptomu düzəldən və eyni zamanda serveri zəiflədən dəyişikliyə gətirib çıxarır.

Girişlər partlayışlarla rədd edildikdə, hər iki seçimə toxunmazdan əvvəl daemon jurnalında autentifikasiyadan əvvəlki mesaja baxın. Mesaj hansı qoruyucunun işə düşdüyünü bildirir və qoruyucular bir-birini əvəz etmir.

İstifadəçi başına slot paylaşılan vəziyyət tələb edir

Həqiqi bir-aktiv-transport siyasəti sshd xaricində bir yerdə saxlanılan rezervasiya tələb edir. Qəbul addımı hesabın slotunu atomik olaraq iddia etməli, bağlantı bağlandıqda onu azad etməli, müştəri bağlamadan yox olduqda vaxtını bitirməli və yeni cəhdin rədd edilib-edilməyəcəyinə və ya köhnəni əvəz edib-etməyəcəyinə qərar verməlidir. Bu son qərar məhsul qərarıdır, texniki xırdalıq deyil, çünki aktiv tunnelin əvəz edilməsi kiminsə bağlantısını kəsir.

Rezervasiya həm də hesabı qəbul edən hər server tərəfindən paylaşılmalıdır. Müstəqil yerli sayğacları olan iki host iki ayrı limit tətbiq edir və digər şlüz vasitəsilə yenidən qoşulan abunəçi pulsuz ikinci slot alır. Vəziyyəti saxlayan hər şeyin öz uğursuzluq davranışı olmalıdır, çünki əlçatmaz anbar bütün abunəçiləri bloklamamalıdır.

Bir-cihaz vədi üçün hər qeydiyyatdan keçmiş cihaza ayrı etimad məlumatı verin və qeydiyyatı və ləğvetməni həmin qatda idarə edin. Kopyalanmış fərdi açar hələ də istənilən yerdən autentifikasiya edir, buna görə istifadəçi başına bir açar vermək onu neçə maşının saxladığına dair sübut deyil.

Siyasəti iki real bağlantı ilə yoxlayın

Siyasəti yazmazdan əvvəl qəbul testlərini əmrlər kimi yazın. Beş hal bunlardır: birincisi aktiv ikən açılan ikinci transport, bir transport daxilində çoxsaylı kanallar, yalnız portları yönləndirən müştəri, əlaqə qopduqdan sonra yenidən qoşulma və eyni hesabın başqa şlüzə gəlməsi.

Əvvəlcə effektiv limitləri oxuyun, sonra siyasətin rədd etməli olduğu bağlantıları açın. Bu testin hər iki yarısı vacibdir və heç biri digərinin əvəzi deyil.

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]

Tunnel əmrini iki terminalda iki dəfə işə salın və 22 portunda qurulmuş bağlantıları sayın. Əgər siyasətiniz bir aktiv transport iddia edərkən hər ikisi trafik daşıyırsa, siyasət tətbiq deyil, sənədləşdirmədir. Bu boşluğu qəbul qatında düzəldin, MaxSessions-u aşağı salıb ikinci transportun bunu fərq edəcəyinə ümid etməklə deyil.

Əlaqəli məqalələr