Weboldal keresés

18 Apache webszerver biztonsági és keményítési tippek


Az Apache webszerver az egyik legnépszerűbb és legszélesebb körben használt webszerver fájlok és webhelyek tárolására. Könnyen telepíthető és konfigurálható, hogy megfeleljen a tárhely igényeinek. Az alapértelmezett beállítások azonban nem biztonságosak ahhoz, hogy biztosítsák a webhelyének oly nagyon szükséges védelmet.

Ebben az útmutatóban megtekintünk néhány olyan Apache-szerverkeményítési tippet és trükköt, amelyek segítségével megerősítheti webszervere biztonságát.

1. Az Apache verzió és az operációs rendszer információinak elrejtése

Alapértelmezés szerint az Apache webszerver megjeleníti a verzióját, ha egy webhely rossz URL-címét böngészi. Az alábbiakban egy példa látható egy hibaoldalra, amely azt jelzi, hogy az oldal nem található a webhelyen. Az utolsó sor jelzi az Apache verziót, a gazdagép operációs rendszert, az IP-címet és a portot, amelyen hallgat.

Soha nem jó ötlet megjeleníteni a webszerver adatait, mivel ez jó ajándék lehet a hackereknek felderítő küldetésük során. A biztonsági réteg növelése és a hackerek dolgának megnehezítése érdekében ajánlatos elrejteni a webszerver adatait.

Ehhez nyissa meg az alapértelmezett Apache konfigurációs fájlt a Debian-alapú disztribúciókon.

sudo vim /etc/apache2/apache2.conf

RHEL-alapú rendszerekhez, például RHEL, Fedora, CentOS, Rocky és AlmaLinux.

sudo vim /etc/httpd/conf/httpd.conf

Adja hozzá a következő sorokat a fájl végéhez.

ServerTokens Prod
ServerSignature Off

Mentse el a változtatásokat, és indítsa újra az Apache webszervert.

sudo systemctl restart apache2   [On Debian, Ubuntu and Mint]
sudo systemctl restart httpd     [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]

Most töltse be újra a webhelyet, és ezúttal a webszerver információi nem jelennek meg.

2. Tiltsa le a címtárlistát az Apache-ban

Alapértelmezés szerint az Apache lehetővé teszi a könyvtárak listáját, és a látogatók láthatják a Dokumentumgyökér könyvtárában található fájlokat vagy könyvtárakat.

Ennek demonstrálására létrehozunk egy teszt nevű könyvtárat.

sudo mkdir -p /var/www/html/test

Ezután navigálunk a könyvtárba, és létrehozunk néhány fájlt.

cd /var/www/html/test
sudo touch app.py main.py

Most, ha elérjük a http://localhost/test URL-t, meg tudjuk tekinteni a könyvtárlistát.

A címtárlistázás letiltásához lépjen az Apache fő konfigurációs fájljába, és keresse meg a „Directory” attribútumot. Állítsa az 'Opciók' paramétert '-Indexes' értékre az ábra szerint.

<Directory /opt/apache/htdocs>
Options -Indexes
</Directory>

Töltse be újra az Apache-t, és ezúttal, amikor felkeresi az URL-t, a könyvtárak többé nem jelennek meg.

3. Az Apache rendszeres frissítése

Mindig ajánlatos az összes alkalmazást naprakészen tartani, mivel a legújabb alkalmazások hibajavításokat és biztonsági javításokat tartalmaznak, amelyek kiküszöbölik a régebbi szoftververziók mögöttes biztonsági réseit.

Ezért ajánlott rendszeresen frissíteni az alkalmazásait a legújabb verziókra.

sudo apt update && sudo apt upgrade [On Debian, Ubuntu and Mint]
sudo dnf upgrade                    [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]

4. Használja a HTTPS titkosítást az Apache-on

Az Apache alapértelmezés szerint HTTP-protokollt használ, amely gyenge és nem biztonságos protokoll, amely hajlamos a lehallgatásra. Webhelye biztonságának, és még inkább a Google keresőoptimalizálási rangsorának javítása érdekében fontolja meg webhelyének SSL-tanúsítvánnyal történő titkosítását.

Ezzel átváltja az alapértelmezett HTTP-protokollt a HTTPS-re, ezáltal megnehezíti a szerverről oda-vissza küldött kommunikáció elfogását és megfejtését.

Nézze meg, hogyan védheti meg az Apache webszervert a Titkosítsuk az SSL-t használatával Linuxon.

  • Az Apache biztonságossá tétele a Let’s Encrypt SSL-tanúsítvánnyal az RHEL-en
  • Az Apache biztonságossá tétele az ingyenes Let’s Encrypt SSL-tanúsítvánnyal Ubuntu és Debian rendszeren

5. Engedélyezze a HTTP Strict Transport Security (HSTS) szolgáltatást az Apache számára

Webhelyének TLS/SSL tanúsítvánnyal történő titkosítása mellett fontolja meg a HSTS webes biztonsági mechanizmus megvalósítását a HTTPS mellett.

A HTTP Strict Transport Security (HSTS) egy olyan házirend-mechanizmus, amely megvédi a webhelyeket a köztes támadásoktól és a cookie-k eltérítésétől. Ez akkor fordul elő, ha a támadók a HTTPS protokollt nem biztonságos HTTP protokollra állítják vissza.

A HSTS lehetővé teszi a webszerver számára, hogy szigorúan kijelentse, hogy a webböngészők csak HTTPS-en keresztül léphetnek kapcsolatba vele, és soha nem a HTTP-protokollon keresztül.

A HSTS engedélyezéséhez győződjön meg arról, hogy webhelye HTTPS fut, és rendelkezik érvényes TLS/SSL tanúsítvánnyal.

Ezután engedélyezze az Apache fejlécmodulját:

sudo a2enmod headers

Ezután töltse be újra az Apache-t a módosítások alkalmazásához.

sudo systemctl restart apache2

Ezután nyissa meg a domain virtuális gazdagép konfigurációs fájlját.

sudo vim /etc/apache2/sites-available/mydomain.conf

Ezután adja hozzá ezt a sort a blokkhoz:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

Ez a következőképpen néz ki.

<VirtualHost *:443>
        # .....
        # ....
        Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</VirtualHost>

A max-age paraméter arra utasítja a böngészőket, hogy a következő egy évben csak HTTPS használatával érjék el webhelyét (31536000=1 év).

Végül indítsa újra az Apache-t, hogy a HSTS szabályzat érvénybe lépjen.

sudo systemctl restart apache2

6. Engedélyezze a HTTP/2-t az Apache-on

2015-ben megjelent a HTTP/2, amely a HTTP-protokoll új verziója, amely számos olyan problémát igyekszik kezelni vagy megoldani, amelyeket a HTTP/1.1 készítői nem láttak előre.

Noha a HTTP/1.1 még mindig széles körben használatos, teljesítményproblémákkal jár, amelyek a böngészőből érkező több kérés feldolgozásához több TCP-kapcsolat használatával kapcsolatosak, ami nagy erőforrás-ráfordításhoz vezet az ügyféloldalon, ami a hálózati teljesítmény csökkenéséhez vezet.

Az alkalmazások bonyolultságának és funkcionalitásának növekedésével a HTTP/2 azért jött létre, hogy megoldja a HTTP/1.1 hiányosságait, amelyek magukban foglalják a hosszú HTTP-fejléceket, a lassú weboldalak betöltési sebességét és az általános teljesítményt. degradáció.

A HTTP/2 nagyobb védelmet és adatvédelmet biztosít, mint elődje. Ugyanilyen fontos a megnövelt teljesítmény a multiplexelt adatfolyamok használatával. A HTTP/2 segítségével egyetlen TCP-kapcsolat biztosítja a hatékony sávszélesség-kihasználást, még akkor is, ha több adatfolyamot továbbít.

Nézze meg, hogyan engedélyezheti a HTTP/2-t az Apache webszerveren a következővel:

  • A HTTP/2 engedélyezése az Ubuntu Apache-ban

7. Korlátozza a hozzáférést az érzékeny könyvtárakhoz az Apache-ban

Egy másik biztonsági intézkedés, amelyet megtehet, az, hogy korlátozza a hozzáférést az olyan könyvtárakhoz, amelyek érzékeny információkat, például felhasználói adatokat, naplókat és konfigurációs fájlokat tartalmazhatnak.

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html

    # Other virtual host settings

    <Directory /var/www/html/sensitive_directory>
        Require all denied
    </Directory>
</VirtualHost>

A fenti konfigurációban a Require all denied megtagadja a hozzáférést mindenkitől, aki megpróbál hozzáférni a /sensitive_directory mappában található fájlokhoz.

Mentse el a változtatásokat, és lépjen ki a fájlból. Ezután indítsa újra az Apache-t, hogy a változások életbe lépjenek.

8. Tiltsa le a ServerSignature direktívát az Apache-ban

Az Apache konfigurációs fájljában található ServerSignature direktíva láblécet fűz a szerver által generált dokumentumokhoz, amelyek információkat tartalmaznak a webszerver konfigurációjáról, például a verzióról és az operációs rendszerről, amelyen az fut. Ha rosszindulatú szereplők elé tárja a webszerver döntő fontosságú részleteit, jelentősen megnő a támadás esélye.

Az ilyen információk megjelenésének elkerülése érdekében le kell tiltania ezt az utasítást az Apache konfigurációs fájljában:

ServerSignature Off

Mentse el a módosításokat, és indítsa újra az Apache programot, hogy a módosítások életbe lépjenek.

sudo systemctl restart apache2

9. Állítsa a „ServerTokens” direktívát „Prod” értékre

A „ServerTokens” direktíva szabályozza, hogy a szerver milyen információkat küldjön, beleértve az Apache verziót (fő- és mellékverzió), az operációs rendszert és a futó webszerver típusát.

A legkevesebb információ, amelyet nyilvánosságra szeretne hozni, az az, hogy a webszerver Apache. Minden más csak potenciális támadásoknak tenné ki szerverét. Ezért javasoljuk, hogy az Apache konfigurációs fájljában a „ServerTokens” direktívát „prod” értékre állítsa.

ServerTokens Off

Mint mindig, mentse a változtatásokat, és feltétlenül indítsa újra az Apache-ot.

10. Biztonságos Apache a Fail2ban segítségével

A Fail2ban egy nyílt forráskódú behatolásgátló alkalmazás, amely megvédi a Linux rendszereket a külső fenyegetésektől, beleértve a DoS-t és a brute force támadásokat. Úgy működik, hogy folyamatosan figyeli a rendszernaplókat a rosszindulatú tevékenységek után, és letiltja azokat a gazdagépeket, amelyek megfelelnek a támadási viselkedést utánzó mintáknak.

A Fail2ban konfigurálható úgy, hogy megvédje az Apache-t a DoS támadásoktól az Apache naplóinak folyamatos figyelésével a sikertelen bejelentkezési kísérletek után, és ideiglenesen letiltja a sértő IP-címeket.

Nézze meg, hogyan telepítheti a Fail2ban programot Linuxon a következő használatával:

  • A Fail2ban használata a Linux-szerver biztonságához

11. Tiltsa le a szükségtelen modulokat

Az Apache modulok egyszerűen a webszerver funkcionalitásának bővítése érdekében betöltött programok. A modulok által kibővített funkciók közé tartozik az alapvető hitelesítés, a tartalom gyorsítótárazása, a titkosítás, a biztonság stb.

Mindig ajánlott letiltani az összes jelenleg nem használt modult, hogy minimalizálja a támadás áldozatává válásának esélyét.

Az összes engedélyezett modul megtekintéséhez futtassa a parancsot

apache2ctl -M

Ha ellenőrizni szeretné, hogy egy adott modul engedélyezve van-e, például az újraíró modul, futtassa a parancsot.

apache2ctl -M | grep rewrite

A modul letiltásához futtassa a következő parancsot:

sudo a2dismod rewrite 

12. Használja a mod_security és a mod_evasive modulokat az Apache biztonságossá tételéhez

Engedélyezheti a mod_security és a mod_evasive modulokat, hogy megvédje az Apache-t a brute force vagy DDoS támadások ellen.

  • A mod_security modul webalkalmazás-tűzfalként (WAF) működik, és blokkolja a gyanús és nem kívánt forgalmat webhelyére.
  • A mod_evasive modul megvédi szerverét a brutális erőszaktól és a szolgáltatásmegtagadási támadásoktól (DoS).

Tudjon meg többet az Apache védelméről a mod_security és a mod_evasive modulokkal.

13. Korlátozott nem kívánt szolgáltatások az Apache-ban

Az Apache biztonságosabbá tétele érdekében fontolja meg bizonyos szolgáltatások letiltását, például a szimbolikus hivatkozásokat és a CGI-végrehajtást, ha erre jelenleg nincs szükség. Alapértelmezés szerint az Apache szimbolikus linkeket követ, ezt a funkciót, valamint az -Includes funkciót és a CGI-t egy sorban kikapcsolhatjuk.

Ehhez adja hozzá a "-ExecCGI -FollowSymLinks -Includes" sort az "Options" direktívához a "Könyvtár" szakaszban.

<Directory /your/website/directory>
Options -ExecCGI -FollowSymLinks -Includes
</Directory>

Ezt címtár szinten is el lehet érni. Például itt kikapcsoljuk az Includes és a Cgi-fájlok végrehajtását a „/var/www/html/mydomain1” könyvtárban.

<Directory "/var/www/html/mydomain1">
	Options -Includes -ExecCGI
</Directory>

Mentse el a változtatásokat, és indítsa újra az Apache-t.

14. Fájlfeltöltési méret korlátozása az Apache-ban

A webszerver biztonságának másik módja az, hogy korlátozza az ügyféltől a webszervernek küldött HTTP-kérés törzsének teljes méretét. Beállíthatja kiszolgálónként, könyvtáronként, fájlonként vagy helyenkénti kontextusban.

Ha például engedélyezni szeretné a fájlfeltöltést egy adott könyvtárba, mondja ki a /var/www/domain.com/wp-uploads könyvtárat, és korlátozza a feltöltött fájl méretét 4M-re.=4194304Bájt, adja hozzá a következő direktívát az Apache konfigurációs fájljához vagy a .htaccess fájlhoz.

<Directory "/var/www/domain.com/wp-uploads">
	LimitRequestBody  4194304
</Directory>

Mentse el a változtatásokat, és ne felejtse el újraindítani az Apache-t.

Beállíthatja kiszolgálónként, könyvtáronként, fájlonként vagy helyenkénti kontextusban. Az irányelv kivédi az abnormális ügyfélkérések viselkedését, amely néha a szolgáltatásmegtagadási (DoS) támadások egyik formája lehet.

15. Engedélyezze a naplózást az Apache-ban

A naplózás minden részletet biztosít az ügyfélkérésekről és minden egyéb, a webszerver teljesítményével kapcsolatos információt. Ez hasznos információkkal szolgál arra az esetre, ha valami rosszul sülne el. Az Apache naplók engedélyezése, különösen a virtuális gazdagép fájljaiban, lehetővé teszi a probléma pontos meghatározását abban az esetben, ha valami baj van a webszerverrel.

A naplózás engedélyezéséhez tartalmaznia kell a mod_log_config modult, amely két fő naplózási direktívát biztosít.

  • ErrorLog – Megadja a hibanaplófájl elérési útját.
  • CustomLog – naplófájlt hoz létre és formáz.

Ezeket az attribútumokat használhatja egy virtuális gazdagép fájlban a virtuális gazdagép szakaszban a naplózás engedélyezéséhez.

<VirtualHost 172.16.25.125:443>
        ServerName example.com
        DocumentRoot /var/www/html/example/
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

A {APACHE_LOG_DIR} direktíva a Debian rendszerekben /var/log/apache2 útvonalként van definiálva.

16. Futtassa az Apache-t külön felhasználóként és csoportként

Az Apache külön felhasználóként és csoportként való futtatása általános biztonsági gyakorlat. Ezzel elszigetelheti a webszerver folyamatát a többi rendszerfolyamattól, és minimalizálhatja a lehetséges károkat, ha a webszerver sérül.

Először is létre kell hoznia egy új felhasználót és csoportot kifejezetten az Apache számára.

sudo groupadd apachegroup
sudo useradd -g apachegroup apacheuser

Ezután szerkesztenie kell az Apache konfigurációs fájlt az új felhasználó és csoport megadásához.

User apacheuser
Group apachegroup

Mivel módosítja az Apache által futtatott felhasználót és csoportot, előfordulhat, hogy frissítenie kell a webes könyvtárak és fájlok tulajdonjogát annak biztosítása érdekében, hogy az Apache továbbra is tudja olvasni őket.

sudo chown -R apacheuser:apachegroup /var/www/html

A módosítások végrehajtása után indítsa újra az Apache-t az alkalmazáshoz:

sudo systemctl restart httpd      # For RHEL/CentOS
sudo systemctl restart apache2    # For Debian/Ubuntu

17. Védje a DDOS támadásokat és megkeményedést

Nos, igaz, hogy nem tudja teljes mértékben megvédeni webhelyét a DDoS-támadásoktól. Íme azonban néhány irányelv, amelyek segíthetnek enyhíteni és kezelni ezeket.

  • Időtúllépés – Ez az utasítás lehetővé teszi annak megadását, hogy a szerver mennyi ideig várjon bizonyos események befejeződésére, mielőtt hibát adna vissza. Az alapértelmezett érték 300 másodperc. A DDoS-támadásokra érzékeny webhelyek esetében ajánlatos ezt az értéket alacsonyan tartani. A megfelelő beállítás azonban nagyban függ a webhelyére érkező kérések természetétől. Megjegyzés: Az alacsony időtúllépés problémákat okozhat egyes CGI-szkripteknél.
  • MaxClients – Ez az irányelv korlátozza az egyidejűleg kiszolgálható kapcsolatok számát. A korlátot meghaladó új kapcsolatok sorba kerülnek. A Prefork és a Worker MPM változatban is elérhető. Az alapértelmezett érték 256.
  • KeepAliveTimeout – Ez az utasítás azt az időtartamot határozza meg, ameddig a szerver vár egy következő kérésre, mielőtt lezárná a kapcsolatot. Az alapértelmezett érték 5 másodperc.
  • LimitRequestFields – Ez az irányelv korlátozza az ügyfelek által elfogadott HTTP-kérés fejlécmezőinek számát. Az alapértelmezett érték 100. Ha DDoS-támadások a HTTP-kérés fejléceinek túlzott száma miatt következnek be, javasoljuk, hogy csökkentse ezt az értéket.
  • LimitRequestFieldSize – Ez az irányelv méretkorlátot állít be a HTTP-kérés fejlécéhez.

18. Végezzen rendszeres sebezhetőségi vizsgálatokat

A webszerver védelmének másik módja a rendszeres biztonsági rés-ellenőrző tesztek elvégzése. Ez segít azonosítani a potenciális biztonsági réseket, amelyeket a hackerek kihasználhatnak érzékeny fájlokhoz való hozzáférésre vagy rosszindulatú programok beszúrására.

A sérülékenység-ellenőrző eszközök a nem biztonságos konfigurációs beállítások kimutatásában és a megfelelőség ellenőrzésében is segítenek. A népszerű sebezhetőség-ellenőrző eszközök közé tartozik az Acutenix, a Nessus, a Nexpose, a Sucuri és még sok más.

Következtetés

Íme néhány az Apache keményítési tippjei közül, amelyeket implementálhat a webszerveren, hogy extra védelmet biztosítson, és távol tartsa a behatolásokat.