MaxSessions, MaxStartups эсвэл төхөөрөмжийн бүртгэл: аль SSH хязгаарыг сонгох вэ
MaxSessions нэг транспорт доторх сувгуудыг тоолдог, MaxStartups баталгаажаагүй гар барилтуудыг хамгаалдаг бөгөөд аль нь ч төхөөрөмжийг тоолдоггүй. Эхлээд амлалтаа шийдээрэй.
Захиалагч бүрт нэг төхөөрөмж амладаг туннелийн үйлчилгээнүүд энэ амлалтыг MaxSessions-аас ховор авдаг бөгөөд эхний тест ихэвчлэн үүнийг нотолдог. Захиалагч хоёр дахь ssh процессыг нээж, эхний сесс үргэлжлүүлэн ажиллаж, хоёр туннель хоёулаа трафик зөөдөг. Конфигурацийн сонголт бүр өөр зүйлийг тоолдог бөгөөд тэдгээрийн аль нь ч төхөөрөмжийг тоолдоггүй. Амлалтыг эхлээд нэрлэх нь тэдний хоорондын сонголтыг тодорхой болгодог.
Сонголт бүр бодитоор юу тоолдог
MaxSessions нэг баталгаажсан сүлжээний холболтын зөөдөг нээлттэй сессүүдийн тоог хязгаарладаг. Энд сесс гэдэг нь shell, exec хүсэлт, SFTP шиг дэд систем эсвэл нэг SSH транспортын дотор мультиплекслагдсан ижил төстэй суваг юм. Хоёр дахь ssh дуудлага хоёр дахь транспорт нээж, дахин баталгаажиж, өөрийн зөвшөөрлийг авдаг. Эхний холболтын сессийн тоо түүнд хамаагүй.
MaxStartups баталгаажаагүй байгаа зэрэгцээ холболтыг эхлэлийн босго, хувь, бүрэн босго хэлбэрээр хязгаарладаг. Хагас нээлттэй гар барилтын тэсрэлт баталгаажуулалтын өмнө демоны нөөцийг шавхаж чадахгүй байхын тулд бий. Клиент баталгаажмагц тэр холболт MaxStartups-ын эсрэг тоологдохоо болиод хэн нэгний сесс болно. Энэ нь хэзээ ч хэрэглэгч тутмын квот байгаагүй бөгөөд өсгөх нь захиалагчид илүү их зүйл хийх боломж олгодоггүй.
Төхөөрөмжийн бүртгэлийн дүрэм бол огт sshd сонголт биш. Энэ нь итгэмжлэл олгож, аль төхөөрөмж түүнийг хадгалж байгааг хянадаг аливаа системд хамаардаг бөгөөд энэ нь тоолуурын оронд бүртгэл, бүртгэлийн жагсаалт, цуцлалт шаардлагатай гэсэн үг. Энэ шаардлагыг sshd конфигурацид холих нь эдгээр загваруудын ихэнх нь гацах газар юм.
MaxSessions хаана квот байхаа болих вэ
Match User блок тэр хэрэглэгчид ямар конфигурацийн утгууд хамаарахыг өөрчилдөг тул үйлчилгээний бүртгэлд илүү хатуу MaxSessions тогтоох байгалийн газар юм. Хийж чадахгүй зүйл нь холболтуудын хооронд нэгтгэх бөгөөд сонголт транспорт тус бүрээр үнэлэгддэг. Хоёр транспорт тус бүр өөрийн хязгаарыг авч, хэрэглэгч эцэст нь блок зөвшөөрснөөс хоёр дахин их зүйлтэй үлддэг.
Дамжуулалт нь тусдаа гэнэтийн зүйл. TCP дамжуулалт сессийн суваг шаарддаггүй тул MaxSessions 0 нь shell болон дэд системийг хориглож, -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-ыг бууруулж хоёр дахь транспорт анзаарах болно гэж найдахгүйгээр.