# Apache droša konfigurēšana PHP

> Apache PHP droša konfigurēšana: PHP-FPM caur mod_proxy_fcgi, AllowOverride None, ServerTokens, TraceEnable un LimitRequestBody pareizi iestatīt un pārbaudīt.

Avots: https://phpsos.de/lv/blog/apache-fuer-php-absichern/  
Aktuāls uz: 25.10.2026  
Pakalpojuma sniedzējs: PHP SOS, PHP ārkārtas palīdzība un serveru drošība. Tūlītēja palīdzība pa WhatsApp: https://wa.me/491736494914?text=Sveiki%2C%20PHP%20SOS%2C%20mums%20nepiecie%C5%A1ama%20pal%C4%ABdz%C4%ABba%20ar%20m%C5%ABsu%20PHP%20serveri.%20Uz%C5%86%C4%93mums%3A%20%E2%80%A6%20Vietne%3A%20%E2%80%A6

**Īsi sakot:** Lai Apache droši konfigurētu PHP, pieslēdziet PHP caur PHP-FPM un `mod_proxy_fcgi`, izslēdziet `.htaccess` ar `AllowOverride None` un iestatiet `ServerTokens Prod`, `ServerSignature Off`, `TraceEnable Off` un `Options -Indexes`. `LimitRequestBody` pielāgojiet PHP robežām, nevajadzīgos moduļus izslēdziet. Konfigurācija neaizstāj PHP atjauninājumu, bet ievērojami samazina uzbrukuma virsmu.

## Apache pēc PHP2Shell: vairāk nekā pārstartēšana

Apache uzturētāji 2026. gada oktobrī atradās īpašā spiedienā. PHP komanda mod_php risku novērtē kā augstāko, jo tur exploit tika demonstrēts, vēl pirms tiek izpildīts lietojumprogrammas kods. Akūtos soļus, tātad ielāpošanu un pilnu pārstartēšanu, apraksta lapa [Kāpēc mod_php nes augstāko risku](https://phpsos.de/lv/php2shell/mod-php-risiko/).

Pēc ielāpa paliek jautājums, cik laba ir pati Apache konfigurācija. Izaugušie serveri bieži nes iestatījumus no daudziem gadiem: direktoriju sarakstus, atvērtas `.htaccess` tiesības, moduļus, kurus neviens vairs nevajag. Katrs no tiem var vēlāku kļūdu padarīt lielāku, nekā tai vajadzētu būt.

Šis raksts apraksta vieglu, drošu pamata konfigurāciju Apache 2.4 ar PHP-FPM. Piemēros izmantoti Debian un Ubuntu ceļi; RHEL saimē faili atrodas zem `/etc/httpd/`.

## PHP pieslēgšana caur PHP-FPM mod_php vietā

Ar PHP-FPM PHP darbojas savos procesos, atsevišķi no tīmekļa servera. Apache pieprasījumus nodod tālāk caur `mod_proxy_fcgi`. Saskaņā ar Apache dokumentāciju pieslēgumam ar `SetHandler` ir priekšrocība salīdzinājumā ar `ProxyPassMatch`: Apache vispirms pats piešķir pieprasījumu failam failu sistēmā un tikai tad nodod PHP-FPM.

```apache
<FilesMatch "\.php$">
    SetHandler "proxy:unix:/run/php/seite1.sock|fcgi://localhost/"
</FilesMatch>
```

Moduļus Debian un Ubuntu aktivizējat ar `a2enmod proxy_fcgi`. Kas pāriet no mod_php, tas deaktivizē PHP moduli un pēc tam pāriet no Prefork uz Event MPM. Fona informāciju par veco darbības režīmu izskaidro [mod_php skaidrojums: PHP Apache procesā](https://phpsos.de/lv/php/mod-php-erklaert/).

PHP-FPM pusē `security.limit_extensions = .php` pieder katrā pūlā. Saskaņā ar PHP rokasgrāmatu FPM citādi izpilda arī `.phar` failus.

## Apache PHP droša konfigurēšana: kodola opcijas

Daži iestatījumi attiecas uz visu serveri un pieder savā konfigurācijas failā, piemēram, `/etc/apache2/conf-available/haertung.conf`, aktivizētā ar `a2enconf haertung`.

```apache
# Saīsināt versiju norādes (iespējams tikai visā serverī)
ServerTokens Prod
ServerSignature Off

# Izslēgt TRACE metodi
TraceEnable Off

# Principā neko neatļaut, vietnēm atļaut mērķtiecīgi
<Directory />
    Options None
    AllowOverride None
    Require all denied
</Directory>
```

Turpmākā tabula ierindo svarīgākās opcijas. Noklusējuma vērtības un ietekme ņemtas no Apache dokumentācijas.

| Direktīva | Noklusējums | Ieteikums | Kāpēc |
|---|---|---|---|
| `ServerTokens` | `Full` | `Prod` | `Server` galvene min tikai „Apache" |
| `ServerSignature` | `Off` | `Off` | nekādas versijas rindiņas zem kļūdu lapām |
| `TraceEnable` | `on` | `Off` | TRACE tiek noraidīts ar 405 |
| `Options` | `FollowSymlinks` | `-Indexes`, simboliskās saites tikai pēc īpašnieka | nekādu direktoriju sarakstu |
| `AllowOverride` | `None` | `None` | `.htaccess` netiek izvērtēts |
| `LimitRequestBody` | 1 GiB (kopš 2.4.54) | atbilstoši `post_max_size` | lielus pieprasījumus noraidīt agrīni |

Svarīgi par `AllowOverride`: daudzi distributīvi un CMS pamācības tīmekļa saknei iestata `AllowOverride All`. Tad katrs `.htaccess` fails var mainīt Rewrite noteikumus, handleri un mod_php gadījumā pat PHP iestatījumus. Uzbrucējs ar rakstīšanas tiesībām augšupielāžu mapē tur var novietot savu `.htaccess`. Ar `AllowOverride None` šis ceļš ir slēgts.

## VirtualHost kā veidne

Turpmākais VirtualHost savieno punktus vienai vietnei. Sertifikātu ceļus, socket un direktorijas pielāgojiet. `mod_ssl` un `mod_headers` jābūt aktīviem.

```apache
<VirtualHost *:443>
    ServerName www.example.de
    DocumentRoot /var/www/seite1/public

    SSLEngine on
    SSLCertificateFile    /etc/ssl/seite1/fullchain.pem
    SSLCertificateKeyFile /etc/ssl/seite1/privkey.pem

    <Directory /var/www/seite1/public>
        Options -Indexes +SymLinksIfOwnerMatch
        AllowOverride None
        Require all granted
    </Directory>

    <FilesMatch "\.php$">
        SetHandler "proxy:unix:/run/php/seite1.sock|fcgi://localhost/"
    </FilesMatch>

    # Bloķēt versiju pārvaldību un vides failus
    <DirectoryMatch "/\.(git|svn|hg)">
        Require all denied
    </DirectoryMatch>
    <FilesMatch "^\.env">
        Require all denied
    </FilesMatch>

    # 32 MiB, atbilstoši post_max_size = 32M
    LimitRequestBody 33554432

    Header unset X-Powered-By
    Header always unset X-Powered-By
</VirtualHost>
```

Dubultais `Header unset` nav nejaušība. Saskaņā ar Apache dokumentāciju galvenes no `mod_proxy_fcgi` nonāk citā iekšējā tabulā nekā paša servera galvenes; ar abiem variantiem jūs pārtverat abus gadījumus. Citas galvenes, kas aktīvi aizsargā apmeklētājus, apraksta ceļvedis [Vietņu drošības galvenes](https://phpsos.de/lv/ratgeber/sicherheits-header/).

Augšupielāžu un kešatmiņas mapēm papildus vajadzīga izpildes bloķēšana. Kā atrast un nobloķēt visas rakstāmās mapes, rakstīts sadaļā [PHP izpildes aizliegšana augšupielāžu mapēs](https://phpsos.de/lv/blog/php-in-uploads-verbieten/).

## Moduļu sakārtošana un rezultāta pārbaude

Katrs ielādēts modulis ir kods, kas reaģē uz pieprasījumiem. Pārbaudiet, kuri moduļi ir aktīvi, un izslēdziet to, ko nevajag. Tipiski kandidāti ir `autoindex`, `status` bez piekļuves ierobežojuma, `cgi` un `userdir`.

```bash
# Parādīt aktīvos moduļus
apachectl -M | sort
# Piemērs Debian/Ubuntu: izslēgt direktoriju sarakstu moduli
sudo a2dismod autoindex
# Pārbaudīt konfigurāciju un tikai tad pārlādēt
sudo apachectl configtest && sudo systemctl reload apache2
# Tests no ārpuses: TRACE jāatgriež 405, .git 403
curl -s -o /dev/null -w "%{http_code}\n" -X TRACE https://www.example.de/
curl -s -o /dev/null -w "%{http_code}\n" https://www.example.de/.git/HEAD
```

Īpašu uzmanību pelna `mod_status`. Statusa lapa rāda darbojošos pieprasījumus ar adresēm un izsauktajiem ceļiem. Ja tā vajadzīga, piekļuvi ierobežojiet ar `Require ip` uz saviem pārvaldības tīkliem. Tas pats attiecas uz PHP-FPM statusa lapām, kas padarītas sasniedzamas caur Apache.

> **Svarīgi:**
> `AllowOverride` nemainiet bez sagatavošanās. Vispirms pārņemiet noteikumus no visiem `.htaccess` failiem VirtualHost un testējiet vietni uz kopijas. Citādi pāradresācijas un skaistie URL pēc pārlādes vairs nedarbosies.

Kā papildu slānis pirms lietojumprogrammas var būt noderīga sava Web Application Firewall; ievadu apraksta [ModSecurity un OWASP Core Rule Set lietošana](https://phpsos.de/lv/blog/modsecurity-owasp-crs/).

## Secinājums: kārtība pārspēj atsevišķu pasākumu

Droša Apache konfigurācija PHP sastāv no dažiem, labi saprastiem elementiem. PHP darbojas caur PHP-FPM atsevišķi no tīmekļa servera, `.htaccess` netiek izvērtēts, versiju norādes un TRACE ir izslēgti, izmēra robežas atbilst PHP, un rakstāmās mapes neizpilda skriptus. Neviens no šiem punktiem pats par sevi nav iespaidīgs. Kopā tie nodrošina, ka kļūda vienā vietā nenoved uzreiz pie servera pārņemšanas.

Vadībai un projektu vadītājiem gandrīz svarīgāka ir otra īpašība: sakārtota konfigurācija ir izsekojama. Ja visi noteikumi atrodas VirtualHost, nevis izkaisīti desmitos `.htaccess` failu, nākamās kritiskās ievainojamības gadījumā var ātri pārbaudīt, kura vietne kā pieslēgta. Tādā situācijā kā 2026. gada oktobrī tas ietaupa tieši to laiku, kas ir izšķirošs.

Pāreju tomēr plānojiet mierīgi un ar testa vidi. Pārsteidzīga pāreja no mod_php uz PHP-FPM īsi pirms nedēļas nogales rada drīzāk jaunas problēmas, nekā atrisina.

## Kā PHP SOS palīdz konkrēti?

- **Pārbaudīt esošo stāvokli:** mēs nolasām visu Apache konfigurāciju, visus aktīvos moduļus un visus `.htaccess` failus.
- **Plānot pāreju:** kur vēl darbojas mod_php, mēs sagatavojam pāreju uz PHP-FPM ar saviem pūliem katrai vietnei.
- **Nostiprināt konfigurāciju:** mēs iestatām kodola opcijas, pārņemam `.htaccess` noteikumus VirtualHost un bloķējam rakstāmās mapes.
- **Testēt un dokumentēt:** pēc katras izmaiņas mēs pārbaudām vietnes no ārpuses un fiksējam stāvokli [serveru nostiprināšanas](https://phpsos.de/lv/leistungen/server-haertung/) ietvaros.


## Biežāk uzdotie jautājumi

**Vai man vēl vajadzētu izmantot mod_php?**  
Jauniem uzstādījumiem mēs iesakām PHP-FPM caur mod_proxy_fcgi. PHP komanda risku no PHP2Shell mod_php gadījumā novērtē kā augstāko. Ar PHP-FPM PHP darbojas atsevišķi no tīmekļa servera, ar saviem lietotājiem katrai vietnei un savām robežām.

**Kāpēc AllowOverride None, ja mans CMS vajag .htaccess?**  
Failu .htaccess var izveidot ikviens, kam atļauts rakstīt tīmekļa saknē, arī ielikts kods. Ar AllowOverride None Apache šādus failus neizvērtē. Sava CMS noteikumus jūs tad vienreiz pārņemat VirtualHost. Tā ir zināma piepūle, bet konfigurāciju dara izsekojamu un ātrāku.

**Vai ServerTokens varu iestatīt katrai vietnei atšķirīgi?**  
Nē. Saskaņā ar Apache dokumentāciju ServerTokens attiecas uz visu serveri un to nevar mainīt katram VirtualHost. Tas vienlaikus vada versijas norādi zem kļūdu lapām, ko ieslēdz ServerSignature.

**Kāda ir LimitRequestBody noklusējuma vērtība?**  
Kopš Apache 2.4.54 noklusējums ir 1 GiB, versijā 2.4.53 un vecākās tas bija neierobežots. Iestatiet vērtību atbilstoši jūsu PHP konfigurācijas post_max_size, lai pārāk lieli pieprasījumi tiktu noraidīti jau tīmekļa serverī.

## Avoti

- [Apache: kodola funkcijas (core)](https://httpd.apache.org/docs/2.4/mod/core.html)
- [Apache: mod_proxy_fcgi](https://httpd.apache.org/docs/2.4/mod/mod_proxy_fcgi.html)
- [Apache: mod_headers](https://httpd.apache.org/docs/2.4/mod/mod_headers.html)
- [php.net: drošības paziņojumi](https://www.php.net/)
