I den här artikeln hittar du några tips och tricks för att stärka dina Apache-webbserverkonfigurationer och förbättra den allmänna säkerheten.
Icke-privilegierat användarkonto
Syftet med ett icke-root eller okontrollerat användarkonto är att begränsa användaren från onödig åtkomst till vissa uppgifter i ett system. I samband med en Apache-webbserver betyder detta att den ska fungera i en begränsad miljö med endast nödvändiga behörigheter. Som standard körs Apache med daemon-kontobehörigheter. Du kan skapa ett separat icke-root-användarkonto för att undvika hot i händelse av säkerhetsproblem.
Dessutom, om apache2 och MySQL är under samma användaruppgifter, kommer alla problem i processen med en gång tjänst att påverka den andra. För att ändra användar- och gruppbehörigheter för webbservern, gå till / etc / apache2, öppna filenvvvars och ställ in användaren och gruppen till en ny icke-privilegierad kontoanvändare, säg "apache" och spara filen.
ubuntu @ ubuntu ~: $ sudo vim / etc / apache2 / envvars... klipp ..
exportera APACHE_RUN_USER = apache
exportera APACHE_RUN_GROUP = apache
... klipp ..
Du kan också använda följande kommando för att ändra äganderätten till installationskatalogen till den nya icke-rotanvändaren.
ubuntu @ ubuntu ~: $ sudo chown -R apache: apache / etc / apache2Utfärda följande kommando för att spara ändringarna:
ubuntu @ ubuntu ~: $ sudo service apache2 starta om
Håll Apache uppdaterad
Apache är känt för att tillhandahålla en säker plattform med en mycket bekymrad utvecklargemenskap som sällan står inför säkerhetsfel. Ändå är det normalt att upptäcka problem när programvaran släpps. Därför är det viktigt att hålla webbservern uppdaterad för att använda de senaste säkerhetsfunktionerna. Det rekommenderas också att följa Apache Server Announcement Lists för att hålla dig uppdaterad om nya meddelanden, utgåvor och säkerhetsuppdateringar från Apache-utvecklingsgemenskapen.
För att uppdatera din apache med apt, skriv följande:
ubuntu @ ubuntu ~: $ sudo apt-get-uppdateringubuntu @ ubuntu ~: $ sudo apt-get uppgradering
Inaktivera serversignatur
Standardkonfigurationen för en Apache-server visar mycket information om servern och dess inställningar. Till exempel aktiverade ServerSignature- och ServerTokens-direktiv i / etc / apache2 / apache2.conf-fil lägger till en extra rubrik i HTTP-svaret som exponerar potentiellt känslig information. Denna information inkluderar serverinställningsdetaljer, såsom serverversion och hosting OS, som kan hjälpa angriparen med rekognoseringsprocessen. Du kan inaktivera dessa direktiv genom att redigera apache2.conf-fil via vim / nano och lägg till följande direktiv:
ubuntu @ ubuntu ~: $ sudo vim / etc / apache2 / apache2.konf... klipp ..
ServerSignature Av
... klipp ..
ServerTokens Prod
... klipp ..
Starta om Apache för att uppdatera ändringarna.
Inaktivera listor över serverkataloger
Kataloglistorna visar allt innehåll som sparats i rotmappen eller underkatalogerna. Katalogfilerna kan innehålla känslig information som inte är avsedd för allmän visning, såsom PHP-skript, konfigurationsfiler, filer som innehåller lösenord, loggar, etc.
För att inte tillåta katalogförteckningar, ändra konfigurationsfilen för Apache-servern genom att redigera apache2.conf-fil som:
... klipp ..
Alternativ -index
... klipp ..
ELLER
... klipp ..Alternativ -indexer
... klipp ..
Du kan också lägga till detta direktiv i .htaccess-filen i din huvudsakliga webbkatalog.
Skydda systeminställningar
De .htaccess-filen är en bekväm och kraftfull funktion som gör det möjligt att konfigurera utanför huvud-apache2.conf-fil. Men i fall där en användare kan ladda upp filer till servern kan detta utnyttjas av en angripare för att ladda upp sin egen “.htaccess ”-fil med skadliga konfigurationer. Så om du inte använder den här funktionen kan du inaktivera .htaccess-direktivet, i.e.:
ubuntu @ ubuntu ~: $ sudo vim / etc / apache2 / apache2.konf... klipp ..
#AccessFileName .htaccess
... klipp ..
ELLER
Inaktivera .htaccess-fil utom de specifikt aktiverade katalogerna genom att redigera apache2.conf-fil och vänder AllowOverRide-direktivet till None;
... klipp ..
AllowOverride None
... klipp ..
Säkra kataloger med autentisering
Du kan skapa användaruppgifter för att skydda alla eller några av katalogerna med hjälp av htpasswd-verktyget. Gå till din servermapp och använd följande kommando för att skapa en .htpasswd-fil för att lagra lösenordshash för de referenser som tilldelats till exempel en användare som heter dev.
[e-postskyddad] ~: $ sudo htpasswd -c / etc / apache2 / -htpasswd devOvanstående kommando kommer att be om det nya lösenordet och lösenordsbekräftelsen. Du kan se katten ./ htpasswd-fil för att kontrollera hash för de lagrade användaruppgifterna.
Nu kan du automatiskt ställa in konfigurationsfilen i katalogen your_website som du behöver skydda genom att ändra .htaccess-fil. Använd följande kommando och direktiv för att aktivera autentisering:
ubuntu @ ubuntu ~: $ sudo nano / var / www / din_webbplats /.htaccess... klipp ..
AuthType Basic
AuthName "Lägg till dialogrutan"
AuthUserFile / etc / apache2 / user_name / domain_name /.htpasswd
Kräver giltig användare
... klipp ..
Kom ihåg att lägga till sökvägen enligt din.
Kör nödvändiga moduler
Standard Apache-konfigurationen innehåller aktiverade moduler som du kanske inte ens behöver. Dessa förinstallerade moduler öppnar dörrar för Apache-säkerhetsproblem som redan finns eller kan finnas i framtiden. För att inaktivera alla dessa moduler måste du först förstå vilka moduler som krävs för att din webbserver ska fungera väl. För detta ändamål, kolla in apache-modulens dokumentation som täcker alla tillgängliga moduler.
Använd sedan följande kommando för att ta reda på vilka moduler som körs på din server.
[e-postskyddad] ~: $ sudo ls / etc / apache2 / mods-enabledApache levereras med det kraftfulla a2dismod-kommandot för att inaktivera modulen. Det förhindrar att modulen laddas och uppmanar dig med en varning när du inaktiverar modulen om att åtgärden kan påverka din server negativt.
[e-postskyddad] ~: $ sudo a2dismod module_nameDu kan också inaktivera modulen genom att kommentera i LoadModule-raden.
Förhindra långsam Loris och DoS Attack
Standardinstallationen av en Apache-server tvingar den att vänta på förfrågningar från klienter för länge, vilket utsätter servern för långsamma Loris- och DoS-attacker. Apache2.conf konfigurationsfil ger ett direktiv som du kan använda för att sänka timeoutvärdet till några sekunder för att förhindra dessa typer av attacker, i.e.:
ubuntu @ ubuntu ~: $ sudo vim / etc / apache2 / apache2.konfTimeout 60
Dessutom kommer den nya Apache-servern med en praktisk modul mod_reqtimeout som tillhandahåller ett direktiv RequestReadTimeout för att skydda servern från obehöriga förfrågningar. Detta direktiv kommer med några knepiga konfigurationer, så att du kan läsa ut den relaterade informationen som finns på dokumentationssidan.
Inaktivera onödiga HTTP-begäranden
Obegränsade HTTP / HTTPS-förfrågningar kan också leda till låg serverprestanda eller en DoS-attack. Du kan begränsa mottagande av HTTP-förfrågningar per katalog genom att använda LimitRequestBody till mindre än 100K. För att till exempel skapa ett direktiv för mappen / var / www / din_webbplats kan du lägga till LimitRequestBody-direktivet nedan AllowOverride All, i.e.:
... klipp ..Alternativ -indexer
AllowOverride All
LimitRequestBody 995367
... klipp ..
Obs! Kom ihåg att starta om Apache efter att de tillämpade ändringarna uppdaterats.
Slutsats
Standardinstallationen av Apache-servern kan leverera mycket känslig information för att hjälpa angripare i en attack. Under tiden finns det många andra sätt (som inte anges ovan) för att skydda Apache-webbservern också. Fortsätt undersöka och hålla dig uppdaterad om nya direktiv och moduler för att säkra din server ytterligare.