Webové aplikační servery jsou ve většině případů veřejně dostupné, což je vystavuje celé řadě bezpečnostních rizik. Je nutné si uvědomit, že tyto servery jsou neustále ohrožovány.
Mnohým z těchto nebezpečí se dá předejít díky předvídatelnosti, ale některé jsou nečekané a mohou vás nemile překvapit. Abychom riziko takových překvapení minimalizovali, přinášíme několik zásadních doporučení, jak udržet webové aplikační servery v co největším bezpečí.
Než se ponoříme do konkrétních tipů, je důležité pochopit, že webový aplikační server není izolovaným prvkem. Představuje klíčovou součást infrastruktury webové aplikace, která umožňuje její hosting a provoz. Zabezpečení tedy musíme vnímat jako celostní záležitost, která zahrnuje všechny související komponenty.
Základní infrastruktura pro hostování webových aplikací obvykle zahrnuje operační systém (například Linux či Windows), webový server (Apache, Nginx) a databázový server. Pokud dojde k prolomení zabezpečení u jakékoliv z těchto součástí, útočníci získají přístup a mohou provádět libovolné škodlivé akce.
Prvním a nejdůležitějším krokem k zabezpečení takového prostředí je důkladné prostudování bezpečnostních pokynů a osvědčených postupů pro všechny z uvedených komponent. Nicméně i přes to se podíváme na několik všeobecných bezpečnostních rad, které se hodí téměř pro každé prostředí webových aplikací.
Ochrana pomocí firewallu
Možná si řeknete, že máte vyhráno, protože vaše síť je chráněna firewallem. Ale raději se zadržte.
Ačkoliv váš firewall chrání hranice sítě před vnějšími hrozbami, nemusí dostatečně bránit váš webový aplikační server před útoky.
Jak je to možné?
Velmi jednoduše: váš síťový firewall musí umožnit příchozí provoz na portech 80 a 443 (HTTP a HTTPS), ale nemá kontrolu nad tím, kdo a co skrze tyto porty komunikuje.
K zabezpečení samotné aplikace je nutné použít webový aplikační firewall (WAF), který analyzuje webový provoz a blokuje pokusy o zneužití zranitelností, jako je cross-site scripting nebo injekce kódu. WAF funguje podobně jako antivirus: hledá známé vzory v datovém toku a blokuje škodlivé požadavky.
Aby byl WAF efektivní, je nezbytné neustále aktualizovat jeho databázi o nové vzory hrozeb. Problémem je, že vaše aplikace může být jedním z prvních cílů nového útoku, o kterém WAF ještě neví. Proto je potřeba víceúrovňová ochrana.
Z těchto důvodů je pro webovou aplikaci nezbytná dodatečná ochrana nad rámec síťového firewallu.
Hledání specifických webových zranitelností
Neměli byste se domnívat, že váš server je bezpečný, jen proto, že to tvrdí váš bezpečnostní skener.
Síťové skenery nemají schopnost detekovat zranitelnosti specifické pro aplikace. Pro odhalení a odstranění těchto zranitelností je nutné provést řadu testů a auditů, například penetrační testy, skenování černé skříňky a audit zdrojového kódu. Žádná z těchto metod však nezaručuje absolutní bezpečnost. Pro minimalizaci rizik je nejlepší provést co nejvíce z nich.
Například bezpečnostní skenery, jako je Invicti, pomáhají zajistit, aby se do produkčního prostředí nedostal žádný zranitelný kód. Nicméně mohou existovat logické chyby zabezpečení, které se dají odhalit pouze manuální kontrolou kódu. Manuální audit je sice nákladný a náchylný k lidským chybám, nicméně je důležitý. Doporučuje se začlenit ho do procesu vývoje, především skrze vzdělávání vývojářů.
Vzdělávejte své vývojáře
Vývojáři mají někdy tendenci vnímat své aplikace jako by fungovaly v ideálním světě, kde jsou zdroje neomezené, uživatelé nedělají chyby a neexistují lidé se zlými úmysly. Bohužel, dříve nebo později se musí vyrovnat s reálnými problémy, zejména v oblasti informační bezpečnosti.
Při vývoji webových aplikací je nutné, aby programátoři znali bezpečnostní mechanismy a implementovali je tak, aby aplikace nebyly zranitelné. Tyto bezpečnostní mechanismy by měly být součástí sady osvědčených postupů, kterou musí vývojový tým dodržovat.
K zajištění dodržování osvědčených postupů se využívá audit kvality softwaru. Osvědčené postupy a auditování jsou klíčové pro odhalení logických chyb zabezpečení, jako je například předávání nešifrovaných a viditelných parametrů v adrese URL, které útočník může snadno upravit pro své potřeby.
Vypněte nepotřebné funkce
Za předpokladu, že webové aplikace jsou co nejvíce bez chyb a webová infrastruktura je zabezpečena, podívejme se, co můžeme udělat přímo na serveru pro jeho lepší ochranu.
Základním a rozumným tipem je minimalizovat počet potenciálně zranitelných vstupních bodů. Pokud útočník dokáže zneužít některou komponentu webového serveru, může to ohrozit celý server.
Vytvořte si seznam všech otevřených portů a spuštěných služeb nebo démonů na vašem serveru. Poté ty, které jsou nepotřebné, zavřete, deaktivujte nebo vypněte. Server by měl sloužit pouze pro spouštění webových aplikací. Doporučuje se přesunout všechny ostatní funkce na jiné servery ve vaší síti.
Používejte oddělená prostředí pro vývoj, testování a produkci
Vývojáři a testeři potřebují oprávnění v prostředí, ve kterém pracují, ale neměli by mít přístup na živý aplikační server. I když jim plně důvěřujete, jejich hesla mohou snadno uniknout a dostat se do nepovolaných rukou.
Kromě hesel a oprávnění se ve vývojových a testovacích prostředích často nacházejí zadní vrátka, soubory protokolu, zdrojový kód a jiné informace pro ladění, které mohou odhalit citlivé údaje, jako jsou uživatelská jména a hesla k databázi. Implementace webové aplikace by měla být svěřena administrátorovi, který musí zajistit, že po instalaci aplikace na produkční server nebudou odhaleny žádné citlivé informace.
Stejný koncept segregace je nutné uplatnit i u dat aplikace. Testeři a vývojáři obvykle preferují práci s reálnými daty, ale není vhodné jim dávat přístup k produkční databázi nebo k její kopii. Kromě zřejmých obav o soukromí může databáze obsahovat konfigurační parametry, které odhalují vnitřní nastavení serveru – například adresy koncových bodů nebo cesty k souborům.
Udržujte serverový software aktualizovaný
I když to zní samozřejmě, jedná se o jednu z nejvíce přehlížených činností. Společnost SUCURI zjistila, že 59 % aplikací CMS je zastaralých, a tedy vystavených rizikům.
Nové hrozby se objevují každý den. Jediný způsob, jak zabránit ohrožení vašeho serveru, je neustále instalovat nejnovější bezpečnostní záplaty.
Už jsme zmínili, že síťové firewally a síťové bezpečnostní skenery nejsou samy o sobě dostatečné k ochraně před útoky na webové aplikace. Jsou však nezbytné pro ochranu serveru před běžnými kybernetickými hrozbami, jako jsou útoky DDoS. Ujistěte se tedy, že tyto aplikace jsou vždy aktualizované a že účinně chrání vaši firemní aplikaci.
Omezte přístup a oprávnění
Důležitým bezpečnostním opatřením je udržovat veškerý vzdálený přístup – například RDP a SSH – šifrovaný a tunelovaný. Rovněž je dobré udržovat omezený seznam IP adres, ze kterých je vzdálený přístup povolen, a zajistit, že každý pokus o vzdálené přihlášení z jiné IP adresy bude zablokován.
Administrátoři někdy udělují servisním účtům veškerá možná oprávnění, protože se domnívají, že „vše bude fungovat“. To však není dobrý postup, protože útočníci mohou využít zranitelnosti ve službách k proniknutí na server. Pokud tyto služby běží s administrátorskými oprávněními, útočníci mohou ovládnout celý server.
Dobrá rovnováha mezi zabezpečením a praktičností vyžaduje, aby měl každý účet – jak přihlašovací, tak servisní – oprávnění, která potřebuje k vykonávání své práce, a nic navíc.
Můžete například definovat různé účty pro administrátory, kteří budou provádět různé úlohy: jeden pro zálohování, druhý pro promazávání souborů protokolu, další pro změnu konfigurace služeb a tak dále. Totéž platí i pro databázové účty. Aplikace obvykle potřebuje pouze oprávnění ke čtení a zápisu dat, nikoliv k vytváření nebo odstraňování tabulek. Proto by měla běžet s účtem s omezenými oprávněními, které postačují k provedení potřebných úkolů.
Sledujte protokoly serveru
Soubory protokolu existují z konkrétního důvodu.
Administrátoři by je měli pravidelně kontrolovat, aby včas odhalili jakékoliv podezřelé chování dříve, než způsobí škodu. Analýza souborů protokolu může odhalit mnoho užitečných informací, které vám pomohou lépe chránit vaši aplikaci. Pokud dojde k útoku, soubory protokolu mohou ukázat, kdy a jak útok začal, což pomůže lépe kontrolovat poškození.
Je také nutné mít automatizovaný proces pro odstraňování starých souborů protokolu nebo promazávání zastaralých informací, aby se zabránilo vyčerpání dostupného úložného prostoru na serveru.
Bonusový tip: buďte informováni
Na internetu je k dispozici mnoho užitečných a bezplatných informací, které vám mohou pomoci zlepšit zabezpečení vaší webové aplikace. Sledujte relevantní bezpečnostní blogy (jako je tento) a udržujte si přehled o novinkách v oblasti bezpečnosti a webových technologií.
Tutoriály, kurzy, videa a knihy jsou dalším zdrojem užitečných znalostí. Věnujte tomu pár hodin týdně, abyste byli v obraze. Ujistíte se tak, že děláte vše potřebné pro zabezpečení svých aplikací.