RADIUS-ыг OpenVPN-д холбох: залгаас уу, скрипт дэгээ юу?
Хуучин RADIUS залгаас нь эмхэтгэсэн серверийн бүтээцэдээ хавсарсан байдаг. Үүнийг auth-user-pass-verify дэгээ орлуулдаг боловч итгэлийг таны скрипт рүү шилжүүлдэг.
Залгаас нь одоогийн бүтээцээс хуучин сэдвүүдэд одоо ч санал болгогддог бөгөөд өчигдөр эмхэтгэсэн сервер дээр ачаалах үед бүтэлгүйтдэг. Энэ нь замаар засагдах тохиргооны алдаа биш. Залгаас болон скрипт дэгээ ижил асуудлыг өөр өөр түвшинд шийддэг бөгөөд нэгээс нөгөөд шилжих нь юу суулгах, юу серверийн эрхтэй ажиллах, амжилтгүй нэвтрэлт танд үнэндээ юу хэлж байгааг өөрчилдөг.
Домог: залгаас нь дэмжигдсэн зам
Залгаас нь OpenVPN процесс руу ачаалагддаг хуваалцсан объект тул тухайн процессын санал болгодог интерфейстэй тохирох ёстой. Бүтээцүүд өөрчлөгдөж, багцлалт өөрчлөгддөг, хуучин интерфейст зориулж эмхэтгэсэн сан ачаалахаас шууд татгалздаг. Серверийн тохиргоонд юу ч энэ зөрүүг нөхөж чадахгүй тул «зүгээр л radiusplugin суулгаарай» гэсэн зөвлөгөө асахгүй серверээр төгсдөг.
Скрипт дэгээ харин процессын гадна байрладаг. OpenVPN програм ажиллуулж, түүнд нэвтрэх мэдээллийг өгч, шийдвэрийг буцааж уншдаг. Яг энэ тусгаарлалт нь шинэчлэлтийг даван туулах боломж олгодог бөгөөд залгаас хэзээ ч байгаагүй байдлаар таны хариуцлага болгодог.
Аль ч арга өөрийн бүтцээрээ илүү аюулгүй биш. Нэг нь демоны дотор гадны код ажиллуулдаг; нөгөө нь таны кодыг түүний хажууд, нэвтрэх мэдээллийг гартаа барьж ажиллуулдаг. Зөв асуулт нь эдгээр хоёр эрсдэлийн алийг нь та үнэхээр удирдаж чадах вэ гэдэг.
Залгаас юуг холбосон бэ
Залгаас нь RADIUS хост, хамтын нууц, дахин оролдлогын тоо, хугацааны хязгаар бүхий өөрийн тохиргооны файлтай байсан бөгөөд серверийн тохиргоо түүнийг нэг мөрөөр дурддаг байсан. Нэвтрэх мэдээллийн боловсруулалт серверийн процесс дотор үлдсэн, өөрөөр хэлбэл нууц үг администраторын хамгаалах ёстой процессын хил хязгаарыг хэзээ ч давж байгаагүй.
Үнэ нь холболт байв. OpenVPN-ийн шинэчлэл бүр нийцэхгүй интерфейсийн эрсдэлтэй байсан бөгөөд багцыг дахин бүтээдэг түгээлт бүр цаашид тохирохгүй сан үйлдвэрлэх эрсдэлтэй байв. Ийм зүйл тохиолдоход алдаа чанга бөгөөд даруй илэрдэг бөгөөд энэ нь загварын цорын ганц өршөөл.
Хэрэв ийм залгаас таны бүтээцэд ачаалагдсан хэвээр бол энэ нь жижиг үйл ажиллагааны гадаргуу байж болно. Алийн интерфейст зориулж бүтээгдсэнийг баталгаажуулж, туршсан бүтээцэдээ бэхэлж, аливаа шинэчлэлтийг ердийн багцын шинэчлэл биш, бүрэн нэвтрэлтийн шалгалт шаардсан өөрчлөлт гэж үзээрэй.
Скрипт дэгээ үнэндээ юунд итгэдэг вэ
Дэгээг auth-user-pass-verify болон хүргэх механизмаар тохируулдаг: орчны хувьсагч эсвэл түр файл. Орчны хэлбэрт OpenVPN script-security 3-ыг шаарддаг бөгөөд энэ нь скриптүүдэд нууц үг ил болгохыг зөвшөөрдөг баримтжуулсан түвшин юм. Энэ түвшин нь өгөгдмөлийг санаатайгаар сулруулах бөгөөд үндэслэл хавсаргасан зөвшөөрөл гэж үзэх ёстой.
Скриптийн хүрсэн бүхэн тэр итгэлийг өвлөнө. Энэ нь root-ийн өмч байх, бүлэг эсвэл бусдад бичигдэхгүй байх, абсолют замтай байх, итгэмжлэгдээгүй утга shell-д хүрэх газаргүй байх ёстой. Хувьсагч бүрийг хашилтад хийж, гэнэтийн тэмдэгтүүдийг татгалзаж, өгөгдсөн хэрэглэгчийн нэрээс хэзээ ч команд бүү бүтээ. Нэвтрэх оролдлого бүрт root-оор ажилладаг скрипт яг тэр дөрвөн шинж чанарын улмаас нэг удаагийн хяналтад үнэ цэнэтэй.
ls -l /usr/local/sbin/radius-auth.sh
stat -c '%U %a' /usr/local/sbin/radius-auth.sh
Файлаар хүргэх хэлбэр нь орчны өв залгамжлын асуудлаас зайлсхийж, хязгаарлагдмал эрхтэй түр файлаар дамжуулан скриптэд нэвтрэх мэдээллийг өгдөг. Хэрэв таны клиент үүнийг дэмждэг бол энэ нь ихэвчлэн илүү сайн өгөгдмөл боловч алдаа гарвал цэвэрлэх өөр нэг объект нэмдэг.
Гарах кодууд нээлттэй бүтэлгүйтэх эсэхийг шийддэг
Скриптийн гарах төлөв нь шийдвэр: тэг хүлээн авна, тэг бус татгалзана. Асуудал үүсгэдэг загвар нь RADIUS хариултад тодорхой хүлээн авах токен байгаа үед л хүлээн авч, бусад бүх зүйлд алдаа буцаадаг shell скрипт бөгөөд энэ нь гурван өөр үйл явдлыг нэг хариултад нэгтгэдэг. Буруу нууц үг, хүрэх боломжгүй сервер, гажигтай хариулт бүгд ижил татгалзал болно.
Дэгээ зөвхөн хүлээн авах эсвэл татгалзахыг буцааж чадсан ч эдгээр тохиолдлыг скриптэд тусгаарлаарай. Backend-ийн үр дүнг тусад нь бүртгэж, хугацааны хязгаар, тээврийн алдааны талаар анхааруулж, үйлчилгээ зогссоны улмаас эсвэл хэрэглэгчид буруу бичсэний улмаас нэвтрэлт бүтэлгүйтэж байгааг мониторингт тодорхой болго.
Хоёр дадал үлдсэнийг ухаалаг байлгадаг. Хэрэв RADIUS бол эрх мэдэл, нууц үг шалгадаг цорын ганц газар байх ёстой, учир нь сүүдэр хүснэгт нэг асуултад хоёр хариулт үүсгэдэг бөгөөд хоёр дахь нь хэн ч ажигладаггүй халдлагын гадаргуу юм. Мөн дэгээ дахин оролдлого бүрт дахин дуудагдана гэдгийг санаарай, тиймээс удаан скрипт тэвчээргүй клиенттэй хослоход RADIUS талд саатал эсвэл бодлого нэмэхгүй бол нууц үг таамаглах өсгөгч болно.
Сертификат алга болоход юунаас татгалзах вэ
Энэ хэлбэрийн олон байршуулалт клиентийн сертификатын шалгалтыг бүрэн унтрааж, хэрэглэгчийн нэр, нууц үгийг клиентийн бүх шаардлага болгон үлдээдэг. Тэр тохиргоотойгоор алга болох нь сертификатод суурилсан таних тэмдэг юм. Суваг шифрлэгдсэн хэвээр байх боловч клиентийг нэрлэх цорын ганц зүйл нь RADIUS-ийн шийдвэр. Өмнө нь сертификатын субъектод тулгуурлаж байсан доод урсгалын бүхэн одоо хэрэглэгчийн нэрэнд тулгуурлах ёстой.
Хяналтын сувгийн хамгаалалтыг байранд нь үлдээж, баталгаажаагүй түнш гар барилтыг судлах эсвэл үерлэх боломжгүй болго, хэрэглэгч тус бүрийн тохиргоо нийтлэг нэрээс хамаардаг үед username-as-common-name ашигла. Удирдлагатай гарцууд үүнийг ихэвчлэн өөрөөр шийддэг, сертификатын баталгаажуулалтыг RADIUS-тай EAP-TLS ярьдаг гарц дээр дуусгадаг бөгөөд тэр тохиолдолд эдгээр серверийн заавар аль нь ч хамаарахгүй. Хөрш бүтээгдэхүүний биш, өөрийн платформын баримтжуулсан загварыг хуулбарла. Чухал зааварууд хангалттай ялгаатай тул тэдгээрийг холих нь задлан шинжилэгдээд дараа нь хэнийг ч баталгаажуулдаггүй тохиргоо үүсгэдэг.