GNU/Linux >> Znalost Linux >  >> Linux

10 tipů, jak zabezpečit webový server Apache v systému UNIX / Linux

Pokud jste správce systému, měli byste zabezpečit webový server Apache podle 10 tipů uvedených v tomto článku.

1. Zakázat nepotřebné moduly

Pokud plánujete instalovat apache ze zdroje, měli byste zakázat následující moduly. Pokud tak učiníte ./configure –help, uvidíte všechny dostupné moduly, které můžete zakázat/povolit.

  • userdir – Mapování požadavků na adresáře specifické pro uživatele. tj. ~username v URL bude přeloženo do adresáře na serveru
  • autoindex – zobrazí seznam adresářů, když není přítomen žádný soubor index.html
  • stav – zobrazí statistiky serveru
  • env – Vymazání/nastavení proměnných ENV
  • setenvif – Umístění proměnných ENV do záhlaví
  • cgi – skripty CGI
  • akce – Spouštění akcí na žádost
  • vyjednávání – vyjednávání obsahu
  • alias – mapování požadavků na různé části souborového systému
  • zahrnout – Zahrnuje na straně serveru
  • filtr – Inteligentní filtrování požadavku
  • version – Zpracování informací o verzi v konfiguračních souborech pomocí IfVersion
  • tak jak jsou – typy souborů tak jak jsou

Deaktivujte všechny výše uvedené moduly, jak je ukázáno níže, když provedete ./configure

./configure \
--enable-ssl \
--enable-so \
--disable-userdir \
--disable-autoindex \
--disable-status \
--disable-env \
--disable-setenvif \
--disable-cgi \
--disable-actions \
--disable-negotiation \
--disable-alias \
--disable-include \
--disable-filter \
--disable-version \
--disable-asis

Pokud povolíte ssl a deaktivujete mod_setenv, zobrazí se následující chyba.

  • Chyba :Chyba syntaxe na řádku 223 souboru /usr/local/apache2/conf/extra/httpd-ssl.conf:Neplatný příkaz ‘BrowserMatch’, možná špatně napsaný nebo definovaný modulem, který není zahrnut v konfiguraci serveru
  • Řešení :Pokud používáte ssl, nevypínejte setenvif. Nebo zakomentujte BrowserMatch ve vašem httpd-ssl.conf, pokud deaktivujete mod_setenvif.

Po instalaci, když provedete httpd -l , uvidíte všechny nainstalované moduly.

# /usr/local/apache2/bin/httpd -l
Compiled in modules:
  core.c
  mod_authn_file.c
  mod_authn_default.c
  mod_authz_host.c
  mod_authz_groupfile.c
  mod_authz_user.c
  mod_authz_default.c
  mod_auth_basic.c
  mod_log_config.c
  mod_ssl.c
  prefork.c
  http_core.c
  mod_mime.c
  mod_dir.c
  mod_so.c

V tomto příkladu máme nainstalované následující moduly apache.

  • core.c – základní modul Apache
  • mod_auth* – pro různé moduly ověřování
  • mod_log_config.c – Zaznamenat požadavek klienta. poskytuje další flexibilitu protokolu.
  • mod_ssl.c – pro SSL
  • prefork.c – pro modul MPM (Multi-Processing Module)
  • httpd_core.c – základní modul Apache
  • mod_mime.c – pro nastavení typů MIME dokumentů
  • mod_dir.c – pro přesměrování koncovým lomítkem na cestách k adresářům. pokud zadáte url/test/, přejde na adresu url/test/index.html
  • mod_so.c – Pro načítání modulů během startu nebo restartu

2. Spusťte Apache jako samostatný uživatel a skupina

Ve výchozím nastavení může Apache běžet jako nikdo nebo jako démon. Apache je dobré provozovat na vlastním neprivilegovaném účtu. Například:apache.

Vytvořte skupinu a uživatele Apache.

groupadd apache
useradd -d /usr/local/apache2/htdocs -g apache -s /bin/false apache

Upravte soubor httpd.conf a vhodně nastavte uživatele a skupinu.

# vi httpd.conf
User apache
Group apache

Poté, pokud restartujete apache a provedete ps -ef, uvidíte, že apache běží jako „apache“ (s výjimkou 1. procesu httpd, který bude vždy běžet jako root).

# ps -ef | grep -i http | awk '{print $1}'
root
apache
apache
apache
apache
apache

3. Omezte přístup ke kořenovému adresáři (použijte Povolit a Zakázat)

Zabezpečte kořenový adresář nastavením následujícího v httpd.conf

<Directory />
    Options None
    Order deny,allow
    Deny from all
</Directory>

Ve výše uvedeném:

  • Žádné možnosti – Nastavte toto na None, což nepovolí žádné volitelné doplňkové funkce.
  • Odmítnutí objednávky, povolení – Toto je pořadí, ve kterém by měly být zpracovány směrnice „Odmítnout“ a „Povolit“. Tím se nejprve zpracuje „odmítnout“ a poté „povolit“.
  • Odmítnout všem – Toto odepře požadavek od všech do kořenového adresáře. Pro kořenový adresář neexistuje žádná direktiva Allow. Nikdo k němu tedy nemá přístup.

4. Nastavte příslušná oprávnění pro adresář conf a bin

Adresář bin a conf by měli prohlížet pouze oprávnění uživatelé. Je dobré vytvořit skupinu a přidat do této skupiny všechny uživatele, kteří mají povoleno prohlížet/upravovat konfigurační soubory Apache.

Nazvěme tuto skupinu:apacheadmin

Vytvořte skupinu.

groupadd apacheadmin

Povolte této skupině přístup k adresáři bin.

chown -R root:apacheadmin /usr/local/apache2/bin
chmod -R 770 /usr/local/apache2/bin

Povolte této skupině přístup do adresáře conf.

chown -R root:apacheadmin /usr/local/apache2/conf
chmod -R 770 /usr/local/apache2/conf

Přidejte do této skupiny vhodné členy. V tomto příkladu jsou ramesh i john součástí apacheadmin

# vi /etc/group
apacheadmin:x:1121:ramesh,john

5. Zakázat procházení adresářů

Pokud to neuděláte, uživatelé budou moci vidět všechny soubory (a adresáře) ve vašem kořenovém adresáři (nebo v jakémkoli podadresáři).

Pokud například přejdou na http://{vaše-ip}/images/ a pokud pod obrázky nemáte index.html, uvidí všechny soubory obrázků (a podadresáře) uvedené v prohlížeč (stejně jako výstup ls -1). Odtud mohou kliknout na jednotlivý soubor obrázku a zobrazit jej, nebo kliknout na podadresář a zobrazit jeho obsah.

Chcete-li zakázat procházení adresářů, můžete buď nastavit hodnotu direktivy Options na „None“ nebo „-Indexes“ . A – před názvem volby ji odstraní z aktuálního seznamu voleb vynucených pro daný adresář.

Indexy zobrazí seznam dostupných souborů a podadresářů v adresáři v prohlížeči (pouze v případě, že v této složce není přítomen žádný index.html). Indexy by tedy neměly být povoleny.

<Directory />
  Options None
  Order allow,deny
  Allow from all
</Directory>

(or)

<Directory />
  Options -Indexes
  Order allow,deny
  Allow from all
</Directory>

6. Nepovolovat .htaccess

Pomocí souboru .htaccess uvnitř konkrétního podadresáře pod htdocs (nebo kdekoli mimo) mohou uživatelé přepsat výchozí direktivy apache. V určitých situacích to není dobré a je třeba se tomu vyhnout. Tuto funkci byste měli zakázat.

Neměli byste dovolit uživatelům používat soubor .htaccess a přepisovat direktivy Apache. Chcete-li to provést, nastavte „AllowOverride Žádné ” v kořenovém adresáři.

<Directory />
  Options None
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>

7. Zakázat další možnosti

Níže jsou dostupné hodnoty pro direktivu Options:

  • Všechny možnosti – Všechny možnosti jsou povoleny (kromě MultiViews). Pokud neurčíte direktivu Options, jedná se o výchozí hodnotu.
  • Možnosti ExecCGI – Spouštět CGI skripty (používá mod_cgi)
  • Možnosti FollowSymLinks – Pokud máte v tomto adresáři symbolické odkazy, budou následovány.
  • Možnosti včetně – Povolit server side include (používá mod_include)
  • Možnosti včetně NOEXEC – Povolit zahrnutí na straně serveru bez možnosti spustit příkaz nebo cgi.
  • Indexy možností – Zakázat výpis adresářů
  • Možnosti MultiViews – Povolit vícenásobná zobrazení vyjednaná pro obsah (používá mod_negotiation)
  • Možnosti SymLinksIfOwnerMatch – Podobné jako FollowSymLinks. To však bude následovat pouze v případě, že vlastník je stejný mezi odkazem a původním adresářem, ke kterému je odkaz připojen.

Nikdy nezadávejte „Možnosti vše“. Vždy uveďte jednu (nebo více) z výše uvedených možností. Můžete kombinovat více možností v jednom řádku, jak je znázorněno níže.

Options Includes FollowSymLinks

+ a – před hodnotou volby jsou užitečné, když máte vnořené direcotires a chcete přepsat volbu z nadřazené direktivy Directory.

V tomto příkladu má adresář /site jak include, tak indexy:

<Directory /site>
  Options Includes Indexes
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>

V případě adresáře /site/en, pokud potřebujete pouze indexy z /site (a ne include), a pokud chcete FollowSymLinks pouze do tohoto adresáře, proveďte následující.

<Directory /site/en>
  Options -Includes +FollowSymLink
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>
  • /web bude mít zahrnutí a indexy
  • /site/en bude mít indexy a FollowSymLink

8. Odstraňte nežádoucí moduly DSO

Pokud jste do apache načetli nějaké moduly dynamických sdílených objektů, budou přítomny v direktivě httpd.conf pod direktivou „LoadModule“.

Vezměte prosím na vědomí, že staticky zkompilované moduly Apache nebudou uvedeny jako direktiva „LoadModule“.

Zakomentujte všechny nežádoucí „LoadModules“ v souboru httpd.conf

grep LoadModule /usr/local/apache2/conf/httpd.conf

9. Omezit přístup ke konkrétní síti (nebo ip-adrese)

Pokud chcete, aby byl váš web zobrazen pouze na konkrétní IP adrese nebo síti, postupujte takto:

Chcete-li povolit konkrétní síti přístup k vašemu webu, zadejte síťovou adresu v direktivě Allow.

<Directory /site>
  Options None
  AllowOverride None
  Order deny,allow
  Deny from all
  Allow from 10.10.0.0/24
</Directory>

Chcete-li povolit konkrétní ip-adrese přístup na váš web, zadejte ip-adresu v direktivě Allow.

<Directory /site>
  Options None
  AllowOverride None
  Order deny,allow
  Deny from all
  Allow from 10.10.1.21
</Directory>

10. Nezobrazovat ani neposílat verzi Apache (nastavit serverové tokeny)

Ve výchozím nastavení bude hlavička HTTP odpovědi serveru obsahovat verzi Apache a php. Něco podobného následujícímu. To je škodlivé, protože nechceme, aby útočník věděl o konkrétním čísle verze.

Server: Apache/2.2.17 (Unix) PHP/5.3.5

Abyste tomu zabránili, nastavte ServerTokens na Prod v httpd.conf. Zobrazí se „Server:Apache“ bez jakýchkoli informací o verzi.

# vi httpd.conf
ServerTokens Prod

Následující jsou možné hodnoty ServerTokens:

  • Prod ServerTokens zobrazí „Server:Apache“
  • ServerTokens Major zobrazí „Server:Apache/2“
  • ServerTokens Minor zobrazí „Server:Apache/2.2“
  • Minimální počet serverových tokenů zobrazí „Server:Apache/2.2.17“
  • OS ServerTokens zobrazí „Server:Apache/2.2.17 (Unix)“
  • ServerTokens je plný zobrazí „Server:Apache/2.2.17 (Unix) PHP/5.3.5“ (Pokud nezadáte žádnou hodnotu ServerTokens, toto je výchozí)

Kromě všech výše uvedených 10 tipů nezapomeňte zabezpečit svůj operační systém UNIX / Linux. Nemá smysl zabezpečovat váš Apache, pokud váš OS není zabezpečený. Také udržujte svou verzi Apache vždy aktuální. Nejnovější verze Apache obsahuje opravy všech známých bezpečnostních problémů. Nezapomeňte často kontrolovat soubory protokolu Apache.

Další čtení na Apache

  • Jak nainstalovat Apache 2 s SSL na Linuxu (s mod_ssl, openssl)
  • 9 tipů, jak používat Apachectl a Httpd jako zkušený uživatel
  • XAMPP:Easy Apache, MySQL, PHP, Perl Install
  • Jak nainstalovat nebo upgradovat sadu LAMP pomocí Yum

Linux
  1. Najděte 10 nejlepších IP adres pro přístup k vašemu webovému serveru Apache

  2. Nainstalujte webový server Apache na Linux Mint 13 / Linux Mint 14

  3. LAMP vs. LEMP – tipy pro výběr Apache nebo nginx pro váš webový server

  1. Jak nakonfigurovat webový server Apache

  2. 7 kroků k zabezpečení serveru Linux

  3. Migrace Unixu na Linux

  1. Nastavte VPN server na vašem počítači se systémem Linux

  2. Zabezpečte svůj Linuxový server pomocí Fail2Ban [Příručka pro začátečníky]

  3. 6 nezbytných nástrojů s otevřeným zdrojovým kódem pro zabezpečení vašeho linuxového serveru