An cás reatha: PHP2Shell. Ceadaíonn dhá leochaileacht chriticiúla PHP (CVSS 9.2) cód mailíseach gan logáil isteach. Paistí ar fáil ón 21 Deireadh Fómhair 2026.Cad atá le déanamh anois →

Nginx a chumrú go slán do PHP

Ní in Nginx atá formhór na laigí i socruithe Nginx do PHP, ach i gcúpla líne den location PHP. Seo conas a chumrú tú an tarchur chuig PHP-FPM ionas nach ritear ach na scripteanna atá uait.

Staid Am léitheoireachta: 7 nóim.Cruatú agus cumraíocht

Go achomair: Chun Nginx a chumrú go slán do PHP, ná tabhair do PHP-FPM ach scripteanna atá ann i ndáiríre, i bhfeidhmchláir Front-Controller fiú index.php amháin. Leis sin tagann Dotfiles blocáilte ar nós .git agus .env, freastalaí réamhshocraithe d'óstainmneacha anaithnide, teorainneacha méide cuí agus security.limit_extensions = .php sa linn. Ní chosnaíonn sé sin in aghaidh leochaileachtaí i PHP féin, ach cuireann sé teorainn leis an méid is féidir a rith tar éis earráide.

Tá na línte is contúirtí sa location PHP

Ó PHP2Shell seiceálann go leor foirne a leaganacha agus a linnte PHP-FPM, mar a thuairiscíonn an leathanach Nginx a chruachan le PHP-FPM, agus tar éis an nuashonraithe atosaíonn siad gach worker. Féachann dara súil ar chumraíocht Nginx féin. Is ansin a chinntear cé na comhaid a ritear mar PHP ar chor ar bith.

I go leor cumraíochtaí tá bloc a thugann gach iarratas ar .php do PHP-FPM, is cuma cá bhfuil an comhad. Má tá comhad PHP insínte i bhfillteán uaslódála, ritheann an freastalaí é. Ar an gcaoi sin déantar doras cúil de earráid comhaid.

Díríonn an t-alt seo ar thaobh Nginx: cé na treoracha atá tábhachtach, conas a oibríonn ord na mbloc location agus conas a thástálann tú an toradh.

Conas a chinneann Nginx cé acu bloc a chuireann isteach

An té ar mhaith leis Nginx a chumrú go slán do PHP, caithfidh sé a fhios a bheith aige conas a roghnaítear na bloic location. De réir dhoiciméadacht Nginx téann sé mar seo:

  1. Cuireann ciorclach beacht le location = deireadh leis an gcuardach láithreach.
  2. I measc na location réimíre, cuimhnítear ar an gceann is faide a oireann. Má tá ^~ air, ní sheiceáiltear aon abairtí rialta a thuilleadh.
  3. Seiceáiltear abairtí rialta (~, ~*) in ord an chomhaid chumraíochta ar shlí eile; buann an chéad chiorclach.
  4. Mura gcomhoibríonn aon abairt rialta, tá an location réimíre cuimhnithe i bhfeidhm.

As sin leanann dhá riail phraiticiúla. Ní mór bac ar PHP i bhfillteáin uaslódála a chruthú mar réimír ^~ nó mar abairt rialta os comhair an bhloic PHP ghinearálta. Agus ní chosnaíonn gnáth-location réimíre ar nós location /uploads/, mar go sáraíonn an abairt rialta do .php í.

Bunchumraíocht shlán

Léiríonn an sampla seo a leanas bloc freastalaí d'fheidhmchlár le Front-Controller, mar is gnách i Laravel, Symfony, Shopware 6 nó i go leor forbairtí féin. Oiriúnaigh cosáin, socket agus teastais.

server {
    listen 443 ssl;
    server_name www.example.de;
    root /var/www/seite1/public;
    index index.php;

    ssl_certificate     /etc/ssl/seite1/fullchain.pem;
    ssl_certificate_key /etc/ssl/seite1/privkey.pem;

    server_tokens off;
    client_max_body_size 32m;

    # Ceadaigh Let's Encrypt agus cosáin aitheanta eile
    location ^~ /.well-known/ {
        try_files $uri =404;
    }

    # Bac comhaid agus fillteáin fholaithe (.git, .env, .htaccess)
    location ~ /\. {
        deny all;
    }

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    # Ní thugtar ach an Front-Controller do PHP-FPM
    location = /index.php {
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        fastcgi_hide_header X-Powered-By;
        fastcgi_pass unix:/run/php/seite1.sock;
    }

    # Ní ritear aon chomhad PHP eile
    location ~ \.php$ {
        return 404;
    }
}

Réitíonn $realpath_root naisc shiombalacha. Tá sé sin tábhachtach in imscarthaí le siombalach athraitheach chuig an eisiúint reatha, ionas go bhfeiceann PHP-FPM agus OPcache an cosán ceart. Tabhair faoi deara freisin: de réir dhoiciméadacht Nginx ní oidhrítear treoracha fastcgi_param ó leibhéil níos airde ach amháin mura bhfuil aon cheann dá gcuid féin ar an leibhéal reatha. Dá bhrí sin baineann include fastcgi_params; leis an mbloc céanna.

Tá roinnt pointí iontrála ag CMS clasaiceacha ar nós WordPress, TYPO3 nó Contao. Ansin cuireann tú location PHP ginearálta in ionad an bhloic Front-Controller nach dtugann ach comhaid atá ann (try_files $uri =404;), agus blocálann tú rith i ngach fillteán inscríofa. Conas a éiríonn leis sin, tá sé ag Rith PHP i bhfillteáin uaslódála a thoirmeasc.

An dara cosaint i PHP-FPM

Cinneann Nginx cad a thugtar ar aghaidh, cinneann PHP-FPM cad a ritheann sé. De réir lámhleabhar PHP ritheann PHP-FPM comhaid .php agus .phar de réir réamhshocraithe agus molann sé féin é a theorannú go .php. Gabhann sé sin earráidí cumraíochta sa fhreastalaí gréasáin.

; sa linn, m.sh. /etc/php/8.3/fpm/pool.d/seite1.conf
security.limit_extensions = .php
listen = /run/php/seite1.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660

Ba cheart don socket a bheith inrochtana d'Nginx amháin. Níor cheart poirt FPM sa líonra, mar shampla 9000, a oscailt go seachtrach. Conas a thaispeánann an freastalaí ar fad na poirt is gá amháin, déanann Balla dóiteáin do fhreastalaithe gréasáin: ná hosclaíodh ach poirt is gá cur síos air.

Óstainmneacha anaithnide agus lascanna eile

Gan freastalaí réamhshocraithe dá chuid féin freagraíonn Nginx d'iarratais ar óstainmneacha anaithnide leis an gcéad bhloc freastalaí a oireann. Éiríonn scanadh uathoibrithe nach labhraíonn ach leis an seoladh IP díreach i d'fheidhmchlár ansin. Cuireann freastalaí réamhshocraithe dá chuid féin deireadh le hiarratais den sórt sin gan freagra.

server {
    listen 80 default_server;
    listen 443 ssl default_server;
    server_name _;
    ssl_reject_handshake on;
    return 444;
}

Pointí eile atá tar éis a bheith tairbheach:

Lasc Moladh Cuspóir
server_tokens off gan uimhir leagain i gceanntásca agus ar leathanaigh earráide
client_max_body_size ag teacht le post_max_size iarratais mhóra a dhiúltú go luath
autoindex as (réamhshocrú) gan liostaí eolaire
fastcgi_hide_header X-Powered-By gan leagan PHP go seachtrach
Leathanaigh stádais pm.status_path go hinmheánach amháin gan sonraí oibríochta go poiblí
Comhaid chúltaca .sql, .zip, .bak sa webroot a bhac nó a bhaint gan bunachair sonraí a íoslódáil

Tá tuilleadh faoi fhaisnéis leagain san alt expose_php agus ceanntásca Server.

Baineann lasc eile leis na modhanna HTTP incheadaithe. Níl de dhíth ar fhormhór na suíomhanna gréasáin ach GET, HEAD agus POST. Le limit_except is féidir modhanna eile a dhiúltú i location; de réir dhoiciméadacht Nginx cuireann scaoileadh GET HEAD ar fáil go huathoibríoch freisin. Seiceáil roimh ré an n-úsáideann comhéadain d'fheidhmchláir PUT nó DELETE, mar go ndéanann REST-APIanna go minic.

Tástáil sula n-athluchtaíonn tú

Seiceálann tú gach athrú ar dtús le nginx -t agus ní athluchtaíonn tú Nginx ach ansin. Ina dhiaidh sin déanann tú tástáil ar an iompar ón taobh amuigh le gnáthiarratais ar d'fhearann féin:

sudo nginx -t && sudo systemctl reload nginx
# Táthar ag súil le: 403 nó 404
curl -s -o /dev/null -w "%{http_code}\n" https://www.example.de/.git/HEAD
curl -s -o /dev/null -w "%{http_code}\n" https://www.example.de/.env
# Táthar ag súil le: 404, mar nach ritear ach an Front-Controller
curl -s -o /dev/null -w "%{http_code}\n" https://www.example.de/info.php
# Cé na bloic a thugann do PHP-FPM?
sudo nginx -T 2>/dev/null | grep -nE "location|fastcgi_pass"

Sábháil aschur iomlán nginx -T le dáta roimh gach athrú mór. Tá an chumraíocht éifeachtach iomlán ann, na comhaid ionchuimsithe go léir san áireamh. Má théann rud éigin mícheart tar éis athraithe, léiríonn an chomparáid láithreach cad atá difriúil. Ag an gcéad leochaileacht chriticiúil eile tá bunús iontaofa agat don chuntas stoic freisin, gan comhaid a chur le chéile ar dtús.

Leid

Athraigh an chumraíocht ar dtús ar thimpeallacht thástála nó ar chóip den bhloc freastalaí. Ní thugtar faoi deara pointe iontrála dearmadta, mar shampla glaoch ar ais íocaíochta, go dtí go dtagann orduithe chun bheith in easnamh.

Conas a chabhraíonn PHP SOS go nithiúil?

  • An chumraíocht a léamh: Measaimid cumraíocht iomlán Nginx le nginx -T agus ceangailimid gach tarchur PHP lena shuíomh gréasáin agus a linn.
  • Pointí iontrála a shocrú: Le d'fhorbróirí socraímid cé na scripteanna a gcaithfear a rith, agus blocálaimid an chuid eile.
  • Cur i bhfeidhm agus tástáil: Oiriúnaímid bloic freastalaí agus linnte, seiceálaimid le nginx -t agus déanaimid tástáil ar fhoirmeacha, ar bhealaí íocaíochta agus ar uaslódálacha.
  • Cosaint bhuan: Bíonn an chumraíocht mar chuid dár gcruachan freastalaí agus de dhoiciméadacht do fhreastalaí.

Ceisteanna coitianta

An gcaithfear Nginx a atosú tar éis nuashonraithe PHP?

Don phaiste PHP ní gá, mar nach bhfuil PHP in Nginx. Caithfidh gach seirbhís PHP-FPM atosú. Má athraíonn tú cumraíocht Nginx ag an am céanna, seiceáil í roimh ré le nginx -t agus ansin athluchtaigh Nginx.

Cén fáth nach dtugtar ach index.php do PHP?

Tá pointe iontrála amháin ag go leor feidhmchlár nua-aimseartha, an Front-Controller. Mura dtugtar ach an comhad sin do PHP-FPM, ní féidir comhad PHP insínte in áit eile a rith tríd an mbrabhsálaí. I gcórais le go leor pointí iontrála ní féidir an patrún seo.

Cad a thugann security.limit_extensions i PHP-FPM?

Socraíonn an socrú cé na hiarmhíreanna comhad a ritheann PHP-FPM mar script. De réir lámhleabhar PHP is é .php .phar an réamhshocrú; moltar teorainn a chur le .php. Gabhann sé sin earráidí i gcumraíocht an fhreastalaí gréasáin, ach ní chuireann sé ina n-ionad iad.

An cosaint iad rialacha Nginx in aghaidh PHP2Shell?

Ní hea. Tá PHP2Shell san ateangaire PHP agus ní dhúntar é ach leis an nuashonrú go leagan ceartaithe agus atosú gach worker. Laghdaíonn cumraíocht Nginx shlán an dromchla ionsaithe agus cuireann sí teorainn leis an damáiste tar éis briste isteach.

Foinsí

Teagmháil láithreach

Cuireann gach uair an chloig leis. Scríobh chugainn anois.

Déan cur síos gearr ar an gcóras, leagan PHP agus an rud a thug tú faoi deara. Cuirfimid scéala chugat, soiléireoimid an cás agus oibreoimid go cianda go dtí go mbeidh an teagmhas dúnta agus doiciméadaithe.

Cabhair láithreach