2023. október 1.
Cloud

Hogyan védekezz a túlterheléses támadások ellen a felhőben?

Author photo
Tabajdi Péter
DevOps

Ez a cikk eredetiben a Cheppers honlapján jelent meg.

Az elmúlt hetekben gyakran találkozhattunk azzal, hogy hírportálok, mint a 444.hu, vagy civil kezdeményezések szolgáltatásai, mint az előválasztási rendszer túlterheléses támadások áldozatai lettek. Az egyébként Drupalban készült koronavírus kormányzati tájékoztató honlap, és a vakcina regisztrációs rendszer is órákig elérhetetlen volt, állítólag szintén hasonló támadásoknak köszönhetően. Találkozhattunk olyan hírrel is az elmúlt hetekben, hogy bankokat próbáltak megzsarolni azzal, hogy ha nem fizetnek, elérhetetlenné teszik a rendszereiket. Sok bosszúságot és óriási üzleti - anyagi és reputációs - kárt tud okozni az, ha egy fontos szolgáltatás órákra, napokra elérhetetlen lesz, éppen emiatt nagyon fontos mind a megelőzés, mind a védekezés. Ebben a cikkben azt mutatjuk be, hogy hogyan tudsz védekezni az ilyen támadások ellen a felhőben, és milyen szolgáltatásokat biztosít az Amazon Web Services (AWS) a szolgáltatásaid védelme érdekében.

Megelőzés

A túlterheléses támadásoknak rengeteg változata van. Nagyon leegyszerűsítve, olyan nem valós, robot látogatók által generált forgalmat irányítanak a támadók a honlapunk felé, amelyet a szervereink és hálózati eszközeink nem tudnak feldolgozni kellő gyorsasággal, túlterhelődnek, majd elérhetetlenné válik a szolgáltatásunk. Néha előfordul, hogy egy mezei számítógép és internet kapcsolat is elég ahhoz, hogy térdre kényszerítsen egy rendszert, ha a támadó egy olyan hibát talál, amelyet kihasználva könnyen térdre kényszeríti a rendszereinket. Éppen ezért már a szoftverek készítésekor fontos ügyelni a kód minőségére, az optimalizációra és persze érdemes alapos tesztelés után élesíteni csak egy rendszert.

Kritikus üzleti alkalmazásoknál az úgynevezett terheléses teszt arra szolgál, hogy segítse megtalálni a szűk keresztmetszetet (bottleneck). Fontos a szerver, a forgalom és a szoftverek alapos naplózása is, ugyanis megfelelő és könnyen elérhető naplóbejegyzések nélkül már csak rohanni tudunk az események után akkor, amikor beütött a baj. Ekkor sokat segíthet egy vészhelyzeti forgatókönyv (disaster recovery plan, DRP), illetve az sem árt, ha jól dokumentált a rendszerünk: ezzel rengeteg időt takaríthatunk meg.

Szoftver

Bár különböző kompromisszumos megoldásokkal és kerülőutakkal bármilyen klasszikus webalkalmazás skálázása megoldható, egyszerűbb dolgunk lesz és hatékonyabb eredményt érhetünk el, ha már szoftverünk tervezésekor a felhős környezetet vesszük figyelembe, emellett követjük a 12-factor alkalmazásfejlesztés irányelveit.

Infrastruktúra

Az olcsóbb virtuális szerver (VPS) vagy megosztott tárhely (shared hosting) költségeinél biztosan magasabb ráfordítást igényel egy hibatűrő és a támadásoknak ellenállni képes infrastruktúra kiépítése és üzemeltetése. Ha üzletileg kritikus rendszert üzemeltetünk, és komoly kárt tud okozni egy néhány órás vagy néhány napos kiesés, könnyen kiszámítható, hogy mekkora összeget érdemes a védekezésre fordítani. A költségek és a károk becslése, előzetes felmérése sokat segíthet abban, hogy megfelelően méretezzük a rendszerünket.

A túlterheléses támadások során a rendelkezésre álló kapacitás fogy el a szolgáltatásaink körül, így adná magát a megoldás: több- és nagyobb erőforrással fogunk tudni védekezni. Szerencsére ennél szofisztikáltabb megoldások is a rendelkezésünkre állnak, de egy ponton túl, egészen biztosan képesnek kell lennie automatikusan skálázódni a rendszereinknek, és erre a menedzselt felhő szolgáltatások adják a legolcsóbb, legbiztosabb megoldást. A világ legnépszerűbb felhőszolgáltatója az Amazon Web Services (AWS), melynek elindulása éppen annak köszönhető, hogy rengeteg felesleges kapacitás állt az online piactér, az Amazon.com rendelkezésére, amivel egy-egy kiemelkedő forgalmú időszakot is fennakadások nélkül tudtak kiszolgálni. Adta magát, hogy adják el ezeket a kapacitásokat, amikor nekik épp nincsen rá szükségük.

Az AWS által biztosított - tulajdonképpen - korlátlan erőforrás segítségével, építve az úgynevezett menedzselt megoldásokra, gyorsan és egyszerűen építhetünk HA (high availability - nyersfordításban magas elérhetőségű) rendszereket. A HA megoldásokban közös, hogy egy szerver vagy akár szerverterem kiesése esetén is elérhető marad a szolgáltatás. Így sem egy áramszünet, sem egy leállás valamelyik szerverterem internet szolgáltatásában, sem egy támadás nem tudja könnyen és gyorsan megakasztani a szolgáltatásunkat.

AWS felhőszolgáltatások

Egyszerű kezdetek: Elastic Beanstalk

Az Elastic Beanstalk az AWS azon szolgáltatása, mely segít a webalkalmazásokat és szolgáltatásokat magas elérhetőségű, skálázható módon futtatni az Amazon felhőjében. A szolgáltatás lényegében segít a felhasználónak központosítva, egyszerűen összeállítani és konfigurálni az üzemeltetéshez szükséges AWS szolgáltatásokat.

A legegyszerűbb automatikusan skálázódó infrastruktúra: EC2 Auto Scaling

Alkalmazásunkat EC2 (Elastic Compute Cloud) virtuális gépeken futtathatjuk, melyekre különböző stratégiákkal automatikusan telepíthetjük az alkalmazásunkat, majd az általunk meghatározott metrikák segítségével automatikusan skálázhatjuk a rendszerünk gépek hozzáadásával és megszüntetésével. A forgalom szétosztásáról/megfelelő szerverekre irányításáról az AWS Elastic Load Balancing szolgáltatása gondoskodik.

Konténerizálás: Elastic Container Service, Fargate

Modernebb megoldás, ha alkalmazásunkat konténerizálva szállítjuk, és az AWS Elastic Container Service (ECS) szolgáltatásán futtatjuk. Ez számos előnnyel jár, például a skálázás gyorsaságával, illetve a kisebb karbantartási szükségletekkel. Ez esetben is az AWS Elastic Load Balancing segítségével osztjuk el a forgalmat konténereink között.

Menedzselt Kubernetes AWS-en: Elastic Kubernetes Service

A konténerizált alkalmazásunkat az AWS menedzselt Kubernetes szolgáltatása, az Elastic Kubernetes Service (EKS) segítségével is kiszolgálhatjuk, mely nagyfokú flexibilitást biztosít az üzemeltetés számos területén.

Elosztott rendszerekkel kapcsolatos problémák

Az ilyen rendszerekkel járnak olyan megoldandó feladatok, melyek a klasszikus, “egyszerveres” üzemeltetéskor nem tapasztalhatóak. Például a szolgáltatásunk, mivel több példányban fut külön virtuális szervereken vagy konténerekben, nem támaszkodhat az adott szerver(ek) fájlrendszerén történő adattárolásra. Az AWS számos szolgáltatást nyújt ennek megoldására: az Amazon Elastic File System (EFS) egyszerűen használható, tárhely- és teljesítmény szempontjából automatikusan skálázódó hálózati fájlrendszert biztosít, de tárolhatunk adatot a szolgáltató objektumtárolójában, az Amazon Simple Storage Service-ben (Amazon S3) is.

Alternatív út: Serverless alkalmazások

Modern webalkalmazásunk fejlesztésekor kitűzhetjük célnak, hogy olyan alkalmazást szeretnénk, amihez nem szükséges szervereket üzemeltetnünk. Az AWS számos olyan szolgáltatást nyújt, melyek segítenek ilyen szoftver üzemeltetésében, illetve illeszkednek hozzá, segítségükkel fejlett funkcionalitást implementálhatunk a serverless alkalmazásunkban. Az AWS ebben a cikkben gyakorlatiasan bemutatja, hogyan fejleszthetünk és működtethetünk serverless alkalmazást az AWS Lambda, AWS API Gateway és AWS Amplify segítségével, miközben azonosíthatjuk a felhasználókat az AWS Cognito beillesztésével, emellett tárolhatunk adatokat az Amazon DynamoDB szolgáltatásában.

Védekezés támadásokkal és egyéb rosszindulatú forgalommal szemben

Webalkalmazás tűzfal - AWS WAF

Az Amazon Web Application Firewall (WAF) segít megvédeni az alkalmazásunkat és annak infrastruktúráját rosszindulatú forgalommal szemben. A szolgáltatás segítségével használhatjuk az Amazon (vagy mások) által előre elkészített és frissített szabálycsomagjait, melyek általános védelmet nyújtanak a legtöbb web felől érkező támadás ellen, illetve készíthetünk saját szabályokat is, melyeket specifikusan a saját alkalmazásunkra szabhatunk. Ezáltal rendszereink védettséget élveznek az SQL Injection, Cross-Site Scripting (XSS) és további gyakori támadások ellen is.

A WAF kiválóan integrálható az AWS Elastic Load Balancing terheléselosztó és Amazon CloudFront CDN és gyorsítótár szolgáltatásával.

Tartalomelosztás és gyorsítótár - Amazon CloudFront

A CloudFront CDN segít gyorsan, biztonságosan és költséghatékonyan eljuttatni webalkalmazásunkat szerte a világon minden látogatónak. A CDN használatát akkor is ajánljuk, ha valaki nem támadások ellen szeretne védekezni, hanem egyszerűen csak adatforgalmi költséget szeretne megtakarítani az AWS-en, netán weboldalának látogatói számára a világ minden pontján gyors elérést szeretne biztosítani.

​​Elosztott szolgáltatásmegtagadással járó támadás (DDoS) elleni védelem - AWS Shield

A DDoS olyan támadás, amelyben jellemzően nagyszámú, eredeti céljától eltérített informatikai eszköz segítségével forgalommal árasztanak el egy célpontot, például egy hálózatot vagy egy weboldalt azért, hogy ennek működésében zavarokat okozzanak, vagy leállásra, összeomlásra kényszerítsék.

Az Amazon Shield az Amazon szolgáltatásmegtagadási védelmi szolgáltatása, amely két változatban érhető el: a Standard az AWS irányába bejövő hálózati forgalomhoz biztosít általános, minden felhasználójuk számára ingyenes védelmi réteget, míg az Advanced pedig további funkcionalitáshoz, illetve az AWS DDoS gyors reagálású csapatához is hozzáférést biztosít.

Monitorozás, naplózás, hibakeresés - Amazon CloudWatch

A CloudWatch segítségével központosíthatjuk rendszereink metrikáit, naplóit és eseményeit, könnyen átláthatóvá téve ezeket, így egyszerűvé téve a hibakeresést. A szolgáltatás vizualizálja és könnyen kereshetővé teszi számunkra a begyűjtött adatokat, szemléletessé téve a működést. Különböző eseményekre reagálva automatizmusokat indíthatunk vagy riasztásokat generálhatunk, ezáltal a problémák minél gyorsabb elhárítását is segíthetjük.

A bemutatott szolgáltatások megfelelő kombinációjával a kártékony támadások jelentős része kezelhető, kivédhető. Ha szeretnél biztosra menni, keress meg minket, felmérjük a rendszereidet, és segítünk a megfelelő felhő alapú szolgáltatáscsomag összeállításában. Tanácsadásunk ingyenesen igénybevehető!

Bejegyzések hasonló témában

AWS book

AWS Cloud Computing könyv magyarul!

Töltsd le ingyen!