Co se týče OSS, musíte určitě z části věřit. Dobrým vodítkem jsou statistiky CVE společně s nějakou informací o používání. Nejlepší je hodně používaná aplikace s minimem bezpečnostních chyb ve statistikách. Není to samozřejmě záruka, že zrovna zítra se nenajde díra jako hrom, ale něco to vypovídá. Zrovna Joomla a hlavně WordPress dopadají katastrofálně. Navíc u nich jsou ještě další díry v pluginech a motivech, které do CVE základního produktu nespadnou.
Pokud chci postavit aplikaci a rozumně ji zabezpečit, pak:
1. Běží odděleně. Docker nepovažuji za bezpečný. Samostatná VPS je neekonomická. Mám rád FreeBSD jaily, to je takový kompromis mezi těmi dvěma.
2. Oprávnění musejí být segregovaná. Pokud apache / nginx / php-fpm běží pod uživatelem www-data a pod ním běží i další weby, nelze bezpečnost rozumně nastavit. => Spouštím nezávislou instanci webserveru a php, která běží pod oprávněními jednoho nezávislého uživatele.
3. Na firewallu nefiltruji jen provoz dovnitř, ale i provoz ven. Aplikace nemá co komunikovat ven ze serveru, když o tom nevím. (Tím se také značně omezí možnosti šíření (D)DoS a červů.
4. Aby aplikace mohla komunikovat jen tam, kam chci, nastavuji na serveru proxy server. Aplikace má povinnost komunikovat přes proxy, pokud potřebuje spojení směrem ven. Na firewallu mohu filtrovat jen L3, na úrovni IP adres, za kterou mohou být stovky služeb, např. celé cloudy, a ty IP adresy se čas od času mění, takže by bylo potřeba neustále reloadovat firewall. Na proxy serveru nastavím L7 filtr, obvykle na URI služby, kterou chci povolit.
5. Směrem dovnitř komunikaci proháním přes reverzní proxy, na které běží aplikační firewall. ModSecurity + pravidla, např. od Atomicu.
6. PHP má zásadně omezenou paměť (co nejméně, pár nižších megabajtů).
7. PHP script musí mít omezenou dobu běhu (např. 5 sekund). Cokoliv, co běží déle není na webu stejně použitelné (z hlediska UX) a otevírá to dveře útokům.
8. Administrace webů vyžadují vyšší limity (např. na přeškálování obrázků, pro složitější DB operace, upload souborů, ...). Administrace se musí oddělit na jiný virtuální server, běžící v jiné instanci včetně oddělené instance PHP.
Tím vším se posunete ke zvýšené bezpečnosti. Ano, je to v tu chvíli dost náročné na správu, ale jestli hledáte bezpečnost, tak toto je jedna z cest.