Priimkite kelis „Vgin“ su skirtingais vartotojais „Nginx“

Normaliausias dalykas pasaulyje, kai turi serverį, yra galvoti apie saugumą ir daugiau saugumo, niekada negali būti pakankamai paranojiškas 😉

Kiek įprasta ir NIEKO rekomenduojama naudoti tą patį vartotoją visose duomenų bazėse, dar blogiau, jei naudojama root, o kad ir kaip neįtikėtinai gali atrodyti, yra tokių, kurie (dėl valkatos ar nežinojimo) daryk tai, aš jau kalbėjau apie tai, kodėl tau NETURĖTŲ taip elgtis kitas postasDabar atėjo laikas paaiškinti, kaip ir kodėl geriau atskirti žiniatinklio serverio apdorojimą skirtingiems vartotojams, šį kartą jis naudos nginx.

„DedicatedServer_SubImage“

Kas yra vartotojai ir interneto serveris?

Norint tai paaiškinti trumpai ir paprastai, žiniatinklio serveris („apache“, „nginx“, bet koks dalykas) turi atidaryti sistemoje vykstančius procesus, procesus, kurie ims failus iš HDD ir atkurs juos. pasiekiama kliento naršyklėje. Žiniatinklio serveris negali paprasčiausiai paimti failų ir jais manipuliuoti niekuo darydamas, tai yra, jam reikia vartotojo, kuris galų gale visa tai padarys, o tas vartotojas yra tas, apie kurį kalbu, ar supranti?

Ką reiškia atskirti keli vartotojai?

Tarkime, kad savo serveryje turime 2 svetaines, mūsų pačių projektą, kuris yra asmeninis projektas, ir dar vieną (įsivaizduokime, kad tai mūsų merginos ar brolio). Net kai prieigai prie jų naudojame atskiras duomenų bazes ir skirtingus vartotojus, galų gale abiejų svetainių failus valdo tas pats vartotojas, PHP apdorojimą visoms svetainėms valdo tas pats vartotojas (paprastai www duomenys). Tai nerekomenduojama praktika, geriau viską gerai atskirti, kaip sakoma sename posakyje, geriau saugotis nei gailėtis.

Gerai, aš suprantu, kaip man tai padaryti su „Nginx“

2000px-Nginx_logo.svg

Pirmiausia reikia atkreipti dėmesį į tai, kad „Nginx“ neturi savo modulio, kuris tvarkytų PHP apdorojimą, kaip tai daro „Apache“. „Nginx“ turime naudoti PHP-CGI arba PHP-FPM, kurie veikia taip pat gerai (arba geriau) nei „Apache“. Taigi norėdami atskirti PHP apdorojimą skirtingiems vartotojams, turėsime pakeisti eilutes PHP konfigūracijos failuose (CGI arba FPM), o ne pačią „Nginx“.

Tarkime, jūs naudojate PHP-FPMsukursime konfigūracijos failą baseinas Konkrečiai svetainei, tai yra, baseinas yra būdas atskirti PHP apdorojimą nuo PHP-FPM, tačiau mes einame dalimis.

1. Pirmiausia turime žinoti, kurį sistemos naudotoją naudosime, manysiu, kad vis dar neturime sukurtų ir gerai, sukurkime:

Visos šios komandos TURI būti vykdomos su administratoriaus teisėmis, turint tiesioginę šaknį arba naudojant sudo

adduser blog

Mes pradėsime įprastą vartotojo kūrimo procesą, įveskite slaptažodį ir kt.

Tinklaraštį rašau tik tam, kad galėčiau sekti pavyzdžiu, jog pirmoji svetainė, kurią priimsime, bus tinklaraštis, na ... kad žinotumėte kiekvieną vartotoją, su kuria svetaine yra susijusi

1. Pirmiausia eikime į /etc/php5/fpm/pool.d/:

cd /etc/php5/fpm/pool.d/

2. Dabar sukursime failą, pavadintą blog.conf:

touch blog.conf

3. Dabar mes sukursime baseino konfigūraciją, kurią naudosime „VHost“ tinklaraštyje:

Redaguokite „blog.conf“ failą naudodami „nano“ ... pavyzdžiui: sudo nanoblog.conf
[Dienoraštis] vartotojas = Dienoraštis
grupė = Dienoraštis
klausytis = / var / run / php5-fpm-Dienoraštis.kojinė klausyk.savininkas = Dienoraštis
klausyk.grupė = Dienoraštis
pm = ondemand pm.max_children = 96 chdir = /

dėmesį: Tai, ką aš juos pažymiu raudonai, turi modifikuoti, priklausomai nuo anksčiau sukurto vartotojo. Pvz., Jei jie sukuria kitą „VHost“ su kitu vartotoju (forume), tada vietoj dienoraščio tiesiog įdėkite forumą į kiekvieną iš eilučių, ar tai suprantama?

4. Kai bus sukonfigūruotas naujas baseinas (ką tik sukurtą ir redaguotą failą „blog.conf“), eilė liepti „Nginx VHost“ naudoti šiai svetainei kitą kojinę. Bus naudojama kojinė, kurią mes anksčiau deklaravome (/var/run/php5-fpm-blog.sock). Redaguokime „Nginx VHost“ ir PHP apdorojimo dalyje nurodome naudoti tas kojines. Pavyzdžiui:

vieta ~ \ .php $ {if (! -f $ request_filename) {grąžinti 404; }
fastcgi_pass unix: / var / run / php5-fpm-Dienoraštis.kojinė;
įtraukti fastcgi_params; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; fastcgi_read_timeout 300; }

Kaip matote, nurodau, kad PHP apdorojimas to VHost (šios eilutės yra, pavyzdžiui, / etc / nginx / sites-enabled / vhost-blog) darykite tai su kojinėmis, esančiomis aplanke /var/run/php5-fpm-blog.sock ... kurią anksčiau sukūrėme redaguodami /etc/php5/fpm/pool.d/blog.conf ... yra tai nesuprato?

5. Kai tai bus padaryta, mes iš naujo paleisime abi paslaugas (php5-fpm ir nginx) ir voila, pamatysime, kad tos svetainės (vhost) apdorojimą NEGALI atlikti www-data ar root ar kas nors panašus, bet vartotojas, kurį mes anksčiau apibrėžta.

Čia aš jums parodysiu a išvestį ps aux | grep fpm viename iš mano mazgo serverių:

ps aux | grep fpm ebook 586 0.0 0.0 349360 1204? S kovo 30 d., 0:00 php-fpm: pool ebook ebook 589 0.0 0.0 349360 1204? S kovo 30 d., 0:00 php-fpm: pool ebook www 608 0.0 0.2 350084 5008? S Mar30 0:00 php-fpm: baseinas www www 609 0.0 0.2 350600 5048 30? S kovo 0 d., 00:3 php-fpm: pool www tv611 0.0 0.0 349360 1204 30? S kovo 0 d., 00:3 php-fpm: pool tv3 tv615 0.0 0.0 349360 1204 30? S kovo 0 d., 00:3, php-fpm: pool tv1818 magazine 1.7 1.7 437576 36396 09? S 55:0 46:2264 php-fpm: žurnalo žurnalas „baseinas“ 1.9 1.7 437332 35884 10? S 15:0 26:2338 php-fpm: baseino žurnalo mokinys 4.3 1.0 428992 22196 10? S 18:0 53:2413 php-fpm: baseino mokinio žurnalas 1.8 1.7 437764 36152 10? S 22:0 18:2754 php-fpm: baseinas žarnos žurnalas 3.5 1.3 356724 27164 10? S 38:0 00:5624 php-fpm: baseino žarnos cgr 0.0 1.0 365168 22696 28? S balandžio 0 d., 16:7900 php-fpm: baseinas cgr mokinys 0.3 2.5 457052 52444 25? Balandžio 20 d. 23:11021 php-fpm: baseino mokinio mokinys 0.4 2.5 458316 52864 28? Balandžio 5 d. 57:11254 php-fpm: baseino mokinio cgr 0.0 1.0 363152 21708 28? S balandžio 0 d. 12:13184 php-fpm: baseinas cgr cgr 0.0 1.0 362872 21360 28? Balandžio 0 d., 08:XNUMX, php-fpm: pool cgr

Kaip matote ... atskirti PHP apdorojimą vartotojams naudojant „Nginx + PHP-FPM“ yra tikrai lengva, ten matote, kad yra keli telkiniai, nes yra keli vartotojai.

Išvados

Kalbant apie serverius, jūs niekada nebūna pakankamai paranojiškas ... saugumas nėra kažkas, su kuo žaisti, tuo labiau mes visada stengiamės pagerinti savo serverių ir jų paslaugų saugumą, tuo mažesnė tikimybė, kad būsime išsigandę (sėkmingų) bandymas nulaužti ar kažkas panašaus 😉


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   dunteris sakė

    Gaara, dabartiniais laikais šie dalykai turėtų būti kiek įmanoma automatizuoti, rekomenduoju išbandyti „Ansible“. Be agento jums reikia tik pitono nuotoliniame pagrindiniame kompiuteryje, labai paprasta sukonfigūruoti, yaml failus, „Jinja“ šablonus.

    https://github.com/ansible/ansible-examples/tree/master/wordpress-nginx

    1.    KZKG ^ Gaara sakė

      Pažiūrėkime, tai ne visada taikoma tik „WordPress“ svetainėms, ir ... haha ​​gal Ansible spustelėja volao, bet aš norėčiau tiksliai žinoti, kaip viskas veikia serveryje, net jei turiu praleisti 1 minutę kurdamas naujas kojines ir naujas „VHost“ 😀

      1.    dunteris sakė

        Naudodamiesi „Ansible“ jūs viską automatizuojate, darote praktiškai viską, ko norite. Šio metodo pranašumas yra tas, kad jūs apibendrinate praktiką ir tada vykdote savo nuožiūra, įsivaizduokite, kad turite labai apkrautą svetainę ir norite balansuoti tarp programų serverių, šie turite sukonfigūruoti visiškai tą patį, jūs negalite praleisti žingsnio ar padaryti nieko kito viename iš jų, ar galite įsivaizduoti, kaip procedūrą atlikti žingsnis po žingsnio 4 kartus? Su „Ansible“ taip paprasta, kaip pridėti prieglobos serverio vardą prie inventoriaus failo ir „Voilá !!“

        http://www.ansible.com/how-ansible-works

      2.    dunteris sakė

        Apgailestaujame dėl „Ansible“ kulto, tačiau tai yra viena iš šių technologijų, kurias atrandate ir norite, kad visi ją naudotųsi dabar, nes ji yra tokia šauni ir praktiška, panašu, kaip atrandant „NGINX“ ir norite, kad visi draugai iškart paliktų „Apache“.

        https://speakerdeck.com/slok/ansible-all-the-things

  2.   Mstaaravinas sakė
  3.   Puvimas87 sakė

    Esu (arba mokausi) kūrėjas ir su NGIX turėjau daug problemų konfigūruodamas „nginx + php-fpm“. Aš žinau, kad „archlinux distro“ nėra geriausia, kad jį būtų galima naudoti kaip serverį, tačiau kiekvieną kartą, kai atnaujinau „ngix“ ar „php“ versiją, viskas visada sugedo, todėl atsisakiau bandymo lol ... Šiandien aš lieku su klasikiniu „Apache +“ PHP, bet pažiūrėsiu, ar dar kartą apeisiu NGIX ... galbūt virtualioje mašinoje

    1.    dunteris sakė

      Mentalitetas šiek tiek keičiasi, „nginx“ aptarnauja statinį turinį ir yra atvirkštinis proxy php-fpm, kuris valdo tikrąjį PHP, turite pradėti dalimis ir pasiekti diegimą žingsnis po žingsnio, ieškoti diegimo vadovo sistema, su kuria dirbate, kiekviena turi savo detales, nurodydama visuomenės, statinius, išteklius ir kt.

  4.   Anoniminis sakė

    Padarykite bendruomenei didelį palankumą atsisakyti žodžio „šeimininkas“, kurio nėra. Dieve, ar taip sunku pasakyti „šeimininkas“?

  5.   Nori sakė

    Sveikinimai, sekdamas jūsų pavyzdžiu, norėčiau sužinoti, ar telkinį būtų galima sukurti tik „WordPress backen“, tai yra, wp-administratoriui kuriant naują lizdą gaunamiems ryšiams su užpakaline dalimi

    vieta / wp-admin {
    šaknis /var/www/yoursite.com/wp-admin;
    indeksas index.php index.html index.htm;
    vieta ~ ^ / wp-admin /(.+. php) $ {
    try_files $ uri = 404;
    šaknis /var/www/yoursite.com/wp-admin;
    įtraukti / etc / nginx / fastcgi_params;

    fastcgi_pass server unix:/run/php5-fpm2.sock;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_buffer_size 128k;
    fastcgi_buffers 256 4k;
    fastcgi_busy_buffers_size 256k;
    fastcgi_temp_file_write_size 256k;
    fastcgi_read_timeout 1240;
    }
    location ~* ^/wp-admin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
    root /var/www/tusitio.com/wp-admin/;
    }
    }