V tem članku najdete nekaj nasvetov in trikov za izboljšanje konfiguracije spletnega strežnika Apache in izboljšanje splošne varnosti.
Neprivilegirani uporabniški račun
Namen nekorenskega ali neprivilegiranega uporabniškega računa je uporabniku omejiti nepotreben dostop do nekaterih nalog v sistemu. V kontekstu spletnega strežnika Apache to pomeni, da bi moral delovati v omejenem okolju z le potrebnimi dovoljenji. Apache privzeto deluje s privilegiji računa demona. Ustvarite lahko ločen nekorenski uporabniški račun, da se izognete grožnjam v primeru varnostnih ranljivosti.
Poleg tega, če imata apache2 in MySQL isti uporabniški poverilnici, bo katera koli težava v procesu enkratne storitve vplivala na drugo. Če želite spremeniti pravice uporabnika in skupine za spletni strežnik, pojdite na / etc / apache2, odprite datoteko envvars in nastavite uporabnika in skupino na novega neprivilegiranega uporabnika računa, recimo »apache« in shranite datoteko.
ubuntu @ ubuntu ~: $ sudo vim / etc / apache2 / envvars... odreži ..
izvoz APACHE_RUN_USER = apache
izvoz APACHE_RUN_GROUP = apache
... odreži ..
Z naslednjim ukazom lahko tudi spremenite lastništvo namestitvenega imenika na novega nekorenskega uporabnika.
ubuntu @ ubuntu ~: $ sudo chown -R apache: apache / etc / apache2Za shranjevanje sprememb izdajte naslednji ukaz:
ubuntu @ ubuntu ~: $ sudo service apache2 restart
Redno posodabljajte Apache
Apache je znan po tem, da zagotavlja varno platformo z zelo zaskrbljeno skupnostjo razvijalcev, ki se redko sooča z kakršnimi koli varnostnimi napakami. Kljub temu je normalno, da težave odkrijemo po sprostitvi programske opreme. Zato je nujno, da spletni strežnik redno posodablja, da izkoristi najnovejše varnostne funkcije. Priporočljivo je tudi, da upoštevate sezname obvestil strežnika Apache, da se sproti obveščate o novih obvestilih, izdajah in varnostnih posodobitvah razvojne skupnosti Apache.
Če želite posodobiti svoj apache s pomočjo apt, vnesite naslednje:
ubuntu @ ubuntu ~: posodobitev $ sudo apt-getubuntu @ ubuntu ~: $ sudo apt-get nadgradnja
Onemogoči podpis strežnika
Privzeta konfiguracija strežnika Apache razkriva veliko podrobnosti o strežniku in njegovih nastavitvah. Na primer, omogočeni direktivi ServerSignature in ServerTokens v / etc / apache2 / apache2.conf datoteki HTTP Response dodajte dodatno glavo, ki razkrije potencialno občutljive podatke. Te informacije vključujejo podrobnosti o nastavitvah strežnika, kot sta različica strežnika in OS za gostovanje, ki lahko napadalcu pomagajo pri izvidniškem procesu. Te direktive lahko onemogočite z urejanjem apache2.conf preko vim / nano in dodajte naslednjo direktivo:
ubuntu @ ubuntu ~: $ sudo vim / etc / apache2 / apache2.conf... odreži ..
ServerSignature Off
... odreži ..
ServerTokens Prod
... odreži ..
Znova zaženite Apache, da posodobite spremembe.
Onemogoči sezname imenikov strežnikov
Seznam imenikov prikazuje vso vsebino, shranjeno v korenski mapi ali podimenikih. Datoteke imenikov lahko vključujejo občutljive podatke, ki niso namenjeni javnemu prikazu, na primer skripte PHP, konfiguracijske datoteke, datoteke z gesli, dnevniki itd.
Če želite zavrniti seznam imenikov, spremenite konfiguracijsko datoteko strežnika Apache z urejanjem apache2.conf datoteka kot:
... odreži ..
Možnosti -Indeksi
... odreži ..
ALI
... odreži ..Možnosti - Indeksi
... odreži ..
To direktivo lahko dodate tudi v .htaccess datoteka glavnega imenika spletnega mesta.
Zaščitite sistemske nastavitve
The .Datoteka htaccess je priročna in zmogljiva funkcija, ki omogoča konfiguracijo zunaj glavnega apache2.conf. V primerih, ko lahko uporabnik naloži datoteke na strežnik, lahko napadalec to izkoristi, da naloži svoje “.htaccess ”z zlonamernimi konfiguracijami. Če torej ne uporabljate te funkcije, lahko onemogočite .htaccess direktiva, tj.e.:
ubuntu @ ubuntu ~: $ sudo vim / etc / apache2 / apache2.conf... odreži ..
#AccessFileName .htaccess
... odreži ..
ALI
Onemogoči .htaccess, razen posebej omogočenih imenikov z urejanjem apache2.conf datoteko in pretvorbo direktive AllowOverRide v None;
... odreži ..
AllowOverride Brez
... odreži ..
Zaščitite imenike z overjanjem
Uporabniške poverilnice lahko ustvarite za zaščito vseh ali nekaterih imenikov s pomočjo pripomočka htpasswd. Pojdite v mapo strežnika in z naslednjim ukazom ustvarite datoteko .htpasswd za shranjevanje zgoščenih gesel za poverilnice, dodeljene recimo uporabniku z imenom dev.
[zaščiteno po e-pošti] ~: $ sudo htpasswd -c / etc / apache2 / -htpasswd devZgornji ukaz bo zahteval novo geslo in potrditev gesla. Mačko si lahko ogledate ./ htpasswd, da preveri zgoščenost shranjenih uporabniških poverilnic.
Zdaj lahko samodejno nastavite konfiguracijsko datoteko v imeniku vaše_spletne strani, ki ga želite zaščititi s spreminjanjem datoteke .datoteka htaccess. Za omogočanje preverjanja pristnosti uporabite naslednje ukaze in direktive:
ubuntu @ ubuntu ~: $ sudo nano / var / www / your_website /.htaccess... odreži ..
AuthType Basic
AuthName "Dodaj poziv za pogovorno okno"
AuthUserFile / etc / apache2 / uporabniško_ime / ime_domene /.htpasswd
Zahtevaj veljavnega uporabnika
... odreži ..
Ne pozabite dodati poti po svoji.
Zaženite potrebne module
Privzeta konfiguracija Apache vključuje omogočene module, ki jih morda niti ne potrebujete. Ti vnaprej nameščeni moduli odpirajo vrata varnostnim vprašanjem Apache, ki že obstajajo ali pa obstajajo v prihodnosti. Če želite onemogočiti vse te module, morate najprej razumeti, kateri moduli so potrebni za nemoteno delovanje vašega spletnega strežnika. V ta namen si oglejte dokumentacijo modula apache, ki zajema vse razpoložljive module.
Nato z naslednjim ukazom ugotovite, kateri moduli se izvajajo na vašem strežniku.
[e-pošta zaščitena] ~: $ sudo ls / etc / apache2 / mods-enabledApache ima zmogljiv ukaz a2dismod za onemogočanje modula. Preprečuje nalaganje modula in vas pri onemogočanju modula opozori, da lahko dejanje negativno vpliva na vaš strežnik.
[email protected] ~: $ sudo a2dismod module_nameModul lahko onemogočite tudi s komentarjem v vrstici LoadModule.
Preprečite počasen napad Lorisa in DoS
Privzeta namestitev strežnika Apache ga prisili, da predolgo čaka na zahteve strank, kar strežnik podvrže počasnim napadom Loris in DoS. Apache2.konfiguracijska datoteka conf vsebuje direktivo, s katero lahko časovno omejitev znižate na nekaj sekund, da preprečite tovrstne napade, tj.e.:
ubuntu @ ubuntu ~: $ sudo vim / etc / apache2 / apache2.confČasovna omejitev 60
Poleg tega ima novi strežnik Apache priročen modul mod_reqtimeout, ki zagotavlja direktivo RequestReadTimeout za zaščito strežnika pred nezakonitimi zahtevami. Ta direktiva vsebuje nekaj zapletenih konfiguracij, tako da lahko preberete povezane informacije, ki so na voljo na strani z dokumentacijo.
Onemogočite nepotrebne zahteve HTTP
Neomejene zahteve HTTP / HTTPS lahko vodijo tudi do nizke zmogljivosti strežnika ali napada DoS. Prejemanje zahtev HTTP na imenik lahko omejite z uporabo funkcije LimitRequestBody na manj kot 100K. Če želite na primer ustvariti direktivo za mapo / var / www / your_website, lahko pod AllowOverride All, i, dodate direktivo LimitRequestBody.e.:
... odreži ..Možnosti -Indeksi
AllowOverride All
LimitRequestBody 995367
... odreži ..
Opomba: Ne pozabite znova zagnati Apache po uveljavljenih spremembah, da ga ustrezno posodobite.
Zaključek
Privzeta namestitev strežnika Apache lahko zagotovi veliko občutljivih informacij za pomoč napadalcem v napadu. Medtem obstaja še veliko drugih načinov (ki niso navedeni zgoraj), da zaščitite tudi spletni strežnik Apache. Nadaljujte z raziskovanjem in sprotnim obveščanjem o novih direktivah in modulih za nadaljnjo zaščito strežnika.