Суулгалтын аюулгүй байдлын зөвлөмж
From LimeSurvey Manual
Ерөнхий мэдээлэл
Бид аюулгүй байдлын асуудлыг маш нухацтай авч үздэг бөгөөд хурдан хариу арга хэмжээ авдгийг анхаарна уу. Иймд LimeSurvey-д аюулгүй байдлын аливаа асуудал илрүүлбэл манай алдааны мөрдлөгт алдааны мэдээлэл нээн бидэнд мэдэгдээрэй (алдааг ноцтой байдал эсвэл ангиллаар нь 'security' гэж тэмдэглэнэ үү).
Аюулгүй байдлын асуудал/эмзэг байдлыг мэдээлэх талаар дэлгэрэнгүй мэдээллийг манай Аюулгүй байдлын бодлогоос үзнэ үү.
Вэб серверийн хязгаарлалт
Хэрэв та apache ашиглаж байгаа бол LimeSurvey хязгаарлалт тогтоох өөр өөр htaccess файлуудыг агуулдаг. Орсон htaccess файлуудыг AllowOverride-аар зөвшөөрсөн эсэхээ шалгана уу.
Өөр вэб сервер ашиглаж байгаа эсвэл AllowOverride None ашиглахыг хүсвэл дараахыг хийх шаардлагатай:
- (заавал биш) application, protected, framework болон themes/*/views доторх бүх файлд хандах хандалтыг хаах
- хэрэглэгчийн байршуулсан файлд хандах хандалтыг хаах /upload/surveys/.*/fu_[a-z0-9]
- (заавал биш) upload директор доторх ажиллах боломжтой файлд хандах хандалтыг хаах
nginx-ийн жишээг манай Түгээмэл асуулт хариултаас олж болно.
Linux-ийн файлын зөвшөөрөл
Хэрэв та Linux сервер ашиглаж байгаа бол LimeSurvey суулгацаа хамгаалахын тулд файлын зөвшөөрлийг зохих ёсоор тохируулах шаардлагатай.
Linux/*nix-ийн файлын зөвшөөрлийн үндсэн мэдээлэл
Linux/*nix үйлдлийн систем олон хэрэглэгчтэй байдаг. Иймд таны хувийн бүртгэлээс гадна системд өөр хэрэглэгчийн бүртгэлүүд байж болох тул бусад хэрэглэгчдэд ямар зөвшөөрөл олгохдоо болгоомжтой хандах хэрэгтэй.
Супер админ хэрэглэгч учраас 'root' бүртгэл таны файлд хандах зөвшөөрлийг (таны ямар файлын зөвшөөрөл тохируулснаас үл хамааран) үргэлж авдгийг санаарай.
LimeSurvey-г ажиллуулдаг вэб сервер мөн тодорхой хэрэглэгчийн эрхээр ажилладаг. Linux дээр энэ нь ихэвчлэн 'www', 'www-data' (Debian/Ubuntu дээр), 'apache' эсвэл 'nobody' хэрэглэгч байдаг. Гэхдээ зарим хостинг компаниуд LimeSurvey-н скриптүүдийг таны хувийн хэрэглэгчээр ажиллуулах боломжтой системүүдийг (жишээ нь suexec) ашигладаг. Мэдээж вэб серверийн хэрэглэгч LimeSurvey-н файлуудыг унших эрхтэй байх ёстой. Харин LimeSurvey-н дэд директоруудын зөвхөн цөөн хэсэг нь вэб серверийн хэрэглэгчээр бичигдэх боломжтой байх ёстой.
Өөрөө удирддаг Linux системд файлын зөвшөөрөл тохируулах
Хэрэв та вэб сервер болон үйлдлийн системийн тохиргоогоо өөрөө удирдаж байгаа бол (физик серверийн эзэмшигч эсвэл root эрхтэй виртуал серверийг түрээслэгч бол) доорх зөвлөмжүүдийг авч үзэж болно.
Файлын зөвшөөрлийн тохиргоог хөнгөвчлөхийн тулд эхлээд LimeSurvey файлуудын эзэмшигч болон бүлгийг тохируулж болно. Боломжит нэг стратеги нь LimeSurvey файлуудын эзэмшигчийг өөрийн хэрэглэгчийн нэрээр, бүлгийг вэб серверийн бүлгээр тохируулах явдал юм. Ихэвчлэн энэ вэб серверийн бүлэг нь зөвхөн вэб серверийн бүртгэлийг (мөн магадгүй өөр вэбмастерийн бүртгэлийг) агуулдаг. Жишээлбэл, таны хэрэглэгчийн нэр 'myaccount', вэб серверийн хэрэглэгч 'apache' бүлгийн 'apache' бол shell хандалтаас дараах тушаалыг ашиглаж болно: $ chown -R myaccount:apache limesurvey/. Үүний дараа файл болон дэд директоруудын зөвшөөрлийг тохируулна.
Скрипт зөв ажиллахын тулд зарим директорт бичих эрх шаардлагатай:
- /limesurvey/application/config директор нь аппликейшний тохиргоог хадгалахын тулд Унших ба бичих эрхтэй байх шаардлагатай
- /limesurvey/tmp директор болон түүний дэд директорууд нь импорт/байршуулалтад ашиглагддаг тул вэб серверт зориулан Унших ба бичих эрхтэй байх ёстой
- upload/ директор болон түүний бүх дэд директорууд нь зураг, медиа файл байршуулах боломжийг олгохын тулд мөн Унших ба бичих зөвшөөрөлтэй байх ёстой
- Бусад бүх директор болон файлыг Зөвхөн унших эрхтэй болгож болно
Хостинг вэб серверт файлын зөвшөөрөл тохируулах
Хостинг орчин олон талаараа ялгаатай тул тэнд вэб аппликейшнийг хамгаалах стандарт журам боловсруулах нь нэлээд хэцүү.
Удирдлагатай серверийн тохиолдолд скрипт зөв ажиллахын тулд сервер зарим директорт бичих эрхтэй байх шаардлагатай:
- /limesurvey/tmp директор нь импорт/байршуулалтад ашиглагддаг тул вэб серверт зориулан Унших ба бичих эрхтэй байх ёстой
- upload/ директор болон түүний бүх дэд директорууд нь зураг, медиа файл байршуулах боломжийг олгохын тулд вэб серверт Унших ба бичих эрхтэй байх ёстой
- Бусад директор болон файлуудыг Зөвхөн унших эрхтэй болгох хэрэгтэй
- Вэб серверийн тохиргооноос хамаарч бичих боломжтой хавтсуудын эрхийг вэб серверт бичих боломжтой болгохын тулд chmod ашиглан 755 эсвэл 777 болгох шаардлагатай болно. Эхлээд 755-ыг турших бөгөөд ажиллахгүй бол 777 болгон 'өсгөнө'
- Мөн config.php файлын зөвшөөрлийг 750 болгон тохируулж бусад хэрэглэгчдийн унших эрхийг хасаж үзэж болно - ажиллахгүй бол 755 болгон 'өсгөнө'
Windows-ийн файлын зөвшөөрөл
Хэрэв та Windows сервер ашиглаж байгаа бол admin хавтас нь вэб серверийн процессын эзэмшигчид энэ директорт файл бичихийг зөвшөөрч байгаа эсэхийг шалгах хэрэгтэй. Бусад файлуудыг зөвхөн унших болон ажиллуулах эрхтэй болгож болно.
Аюулгүй байдлын бусад асуудал
Дараах нь зөвхөн зөвлөмж юм. LimeSurvey нь ерөнхийдөө эдгээр нэмэлт арга хэмжээгүйгээр ч маш аюулгүй. Гэхдээ хэрэв та маш нууц мэдрэмтгий өгөгдөл цуглуулж байгаа бол багахан нэмэлт хамгаалалт тус болж болно:
SSL ашиглах
Мэдрэмтгий судалгааны өгөгдөлд SSL ашиглахыг бид ерөнхийд нь зөвлөдөг. SSL-ийг ихэвчлэн вэб серверээ зөв тохируулж, SSL сертификат ашиглан идэвхжүүлдэг. Хэрэв та SSL-ийг идэвхжүүлсэн бол LimeSurvey-н ерөнхий тохиргооноос SSL-ийг үргэлж албадан ашиглуулах хэрэгтэй. Мөн config.php доторх холбогдох сонголтыг засварлан зөвхөн 'secure' күүкиг ашиглахаар тохируулж болно.
config.php файлд хандах эрх
/application/config/config.php файл нь таны мэдээллийн сангийн серверийн хэрэглэгчийн нэр болон нууц үгийг агуулдаг. Энэ нь, ялангуяа мэдээллийн санд өндөр түвшний админ эрхтэй нэвтрэх эрх ашиглаж байгаа тохиолдолд аюулгүй байдлын тодорхой эрсдэл үүсгэдэг. Ямар нэг алдааны улмаас энэ PHP файлын агуулга хэрэглэгчийн хөтөч рүү буцаагдвал таны мэдээллийн сангийн нууц үг болон бусад мэдээлэл алдагдаж болзошгүй (гэхдээ энэ нь маш бага магадлалтай нөхцөл). Эрсдэлийг багасгах хамгийн сайн арга бол зөвхөн таны LimeSurvey мэдээллийн санд л тусгай эрхтэй тусдаа нэвтрэх эрх үүсгэх явдал юм.
Энэ мэдээллийг хамгаалах өөр нэг арга бол /application/config/config.php файл доторх мэдээллийг вэбээс хандах боломжгүй санд байрлуулах явдал юм. Жишээ нь Apache хэрэглэгчдийн хувьд энэ нь htdocs (мөн public_html эсвэл www гэж нэрлэгддэг) хавтасны дээд талын хавтас юм. Үндсэндээ та config.php файлыг ашигласаар байх боловч дотор нь ЖИНХЭНЭ тохиргооны мэдээллийг агуулсан файлыг дуудах ганц мөр л байна (жишээ нь: <?php return include("/home/hostfolder/safedata/configreal.php"); ?>). /application/config/config.php файлаас бүх бодит тохиргооны мэдээллийг устгаад, /application/config/config.php файлд дурдсан нөгөө файл (configreal.php) руу буулгаарай. Энэ нөгөө файл вэбээс хандах боломжгүй санд байрлах ёстой. Ингэснээр /application/config/config.php нь мэдээллийн сангийн нууц үг гэх мэтийг агуулахгүй, зөвхөн мэдээллийн сангийн мэдээллийг АГУУЛДАГ файлын нэрийг л агуулна.
Ингэснээр /application/config/config.php файлыг дууддаг бусад бүх файлыг өөрчлөх шаардлагагүй болно, учир нь config.php нь тэдгээрийг бодит тохиргооны бүх мэдээллийг агуулсан, вэбээс хандах боломжгүй санд байрлах тохиргооны файл руу 'чиглүүлдэг'.
Мөн "admin" эсвэл "administrator" гэсэн нэрийг үндсэн хэрэглэгчээр бүү ашиглаарай. MySQL мэдээллийн сан (эсвэл LimeSurvey-г суулгасан мэдээллийн сан) руугаа орж, үндсэн хэрэглэгчийн нэр "admin"-ыг өөрт таалагдсан нэрээр (жишээ нь "admin_xyz") солиорой. Ингэснээр админы шинэ хэрэглэгчийн нэрийг таахад хамаагүй хэцүү болно. Энэ нь халдагчид нэвтрэхэд ашиглаж болох хоёр хувьсагчийн нэг гэдгийг санаарай. Админы нууц үг нь нөгөө хувьсагч юм. Иймд хоёуланг нь маш болгоомжтой сонгоорой.
Агуулгын аюулгүй байдлын бодлого (CSP)
АНХААРУУЛГА - Энд өгөгдсөн CSP нь зөвхөн жишээ бөгөөд шууд хуулж ашиглахад зориулагдаагүй. Энэ нь эхлэх цэг төдий бөгөөд та заавал өөрийн хэрэгцээнд тохируулж, сайтар шалгах ЁСТОЙ.
<IfModule mod_headers.c>
Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; base-uri 'none'; form-action 'self'; frame-ancestors 'self'; upgrade-insecure-requests" "expr=%{CONTENT_TYPE} =~ m#text\/(html|javascript)|application\/pdf|xml#i"
</IfModule>