💾

Zadaci za samostalan rad – Modul 25 – Cloud mreže

Rešenja se nalaze u /resenja/modul-25/05-zadaci-resenja.md — pokušajte da rešite zadatke samostalno pre nego što pogledate rešenja. Zadaci se rešavaju na papiru ili u editoru; cloud nalog nije potreban.

Nivo: Početni

Zadatak 1. Odredite model usluge (IaaS, PaaS ili SaaS) za: (a) virtuelnu mašinu na kojoj sami instalirate Linux i veb server; (b) Microsoft 365; (c) upravljanu PostgreSQL bazu kojoj provajder radi zakrpe i backup; (d) virtuelnu mrežu sa subnetima i security group-ama.

Zadatak 2. Prema modelu podeljene odgovornosti, ko je odgovoran za svaku stavku kod IaaS usluge: (a) fizička bezbednost data centra; (b) zakrpe operativnog sistema virtuelne mašine; (c) pravila security group-e; (d) rad hipervizora; (e) šifrovanje sopstvenih podataka?

Zadatak 3. Uporedite security group i network ACL po četiri osobine: nivo primene, stateful/stateless, vrste pravila (allow/deny) i način procene pravila.

Zadatak 4. Šta određuje da li je subnet u AWS-u javni ili privatni? Da li je dovoljno da se subnet zove „javni"?

Nivo: Srednji

Zadatak 5. Firma koristi lokalne mreže 10.0.0.0/16 i 10.1.0.0/16, a partner sa kojim se povezuje VPN-om koristi 172.16.0.0/12. Za svaki predloženi CIDR VPC-a odredite da li je prihvatljiv i zašto: (a) 10.0.0.0/16; (b) 10.1.128.0/17; (c) 172.20.0.0/16; (d) 10.50.0.0/16.

Zadatak 6. Koliko upotrebljivih adresa ima subnet: (a) /28 u AWS-u; (b) /26 u AWS-u; (c) /24 u AWS-u; (d) /20 u AWS-u; (e) /24 u Google Cloud-u?

Zadatak 7. Tabela ruta subneta:

OdredišteCilj
10.40.0.0/16local
172.16.0.0/12vgw-01 (VPN)
172.16.8.0/24pcx-01 (VPC peering)
0.0.0.0/0nat-01

Odredite cilj za pakete ka: (a) 172.16.8.9; (b) 172.20.1.1; (c) 10.40.3.3; (d) 9.9.9.9. Koje pravilo koristite?

Zadatak 8. U javnom subnetu je bastion server kome se pristupa SSH-om samo iz administratorske mreže 203.0.113.0/24. Napišite NACL za taj subnet (dolazna i odlazna pravila sa rednim brojevima) koja dozvoljava samo taj saobraćaj.

Zadatak 9. Aplikacija mora nastaviti da radi ako otkaže jedna zona dostupnosti, a aplikacioni serveri u privatnim subnetima moraju imati izlaz na internet. Koliko NAT gateway-a treba i gde, i kako izgledaju tabele ruta privatnih subneta?

Nivo: Napredni

Zadatak 10. Instance u privatnom subnetu ne mogu da preuzmu ažuriranja. NAT gateway postoji u javnom subnetu i u stanju je Available. Tabela ruta privatnog subneta sadrži 10.60.0.0/16 → local i 0.0.0.0/0 → igw-01. Šta je uzrok i kako ga ispravljate? Zašto ova konfiguracija ne radi?

Zadatak 11. Napišite security group-e za troslojnu aplikaciju (load balancer na 443, aplikacija na 8080, MySQL baza na 3306, administratori iz 10.10.50.0/24 preko VPN-a na SSH). Objasnite zašto su reference na druge security group-e bolje od pravila sa CIDR opsezima aplikacionih subneta.

Zadatak 12. Firma želi da poveže lokalnu mrežu 10.20.0.0/16 sa postojećim VPC-om čiji je opseg takođe 10.20.0.0/16. (a) Zašto to ne može da radi direktno? (b) Navedite tri moguća rešenja i uporedite ih. (c) Kako se ovaj problem sprečava ubuduće?

Zadatak 13. Testno okruženje radi 24 sata dnevno i sadrži: dva NAT gateway-a, Application Load Balancer, četiri instance sa javnim IPv4 adresama i VPC sa subnetima i security group-ama. Koje stavke se naplaćuju, a koje ne? Predložite četiri mere za smanjenje troškova testnog okruženja.

Praktičan zadatak

Zadatak 14. Proširite Deo 2 laboratorije drugim javnim subnetom 10.30.0.64/26 u drugoj zoni dostupnosti. Napišite AWS CLI komande kojima: pronalazite ime druge zone, pravite subnet, pridružujete ga postojećoj tabeli ruta rt-javni i postojećoj NACL, i uključujete automatsku dodelu javnih IP adresa. Koje komande dodajete u Korak 14 (brisanje)?

Zadatak zasnovan na izlazu komande

Zadatak 15. Veb server u javnom subnetu je juče radio, a danas nije dostupan. Dobijeni su ovi izlazi:

$ aws ec2 describe-route-tables --route-table-ids rtb-0f1e2d3c4b5a69788 --query 'RouteTables[0].Routes'
[
    {
        "DestinationCidrBlock": "10.30.0.0/16",
        "GatewayId": "local",
        "Origin": "CreateRouteTable",
        "State": "active"
    },
    {
        "DestinationCidrBlock": "0.0.0.0/0",
        "GatewayId": "igw-0a1b2c3d4e5f60718",
        "Origin": "CreateRoute",
        "State": "blackhole"
    }
]

$ aws ec2 describe-internet-gateways --internet-gateway-ids igw-0a1b2c3d4e5f60718 --query 'InternetGateways[0].Attachments'
[]

(a) Šta znači stanje blackhole? (b) Šta je uzrok, na osnovu drugog izlaza? (c) Kojom komandom ispravljate problem? (d) Kako biste ubuduće saznali ko je i kada izvršio izmenu?

📖 Prikaži rešenje

Rešenja zadataka za samostalan rad – Modul 25 – Cloud mreže

Nivo: Početni

Zadatak 1. (a) IaaS; (b) SaaS; (c) PaaS; (d) IaaS (mrežna infrastruktura koju sami podešavate).

Zadatak 2. (a) provajder; (b) korisnik; (c) korisnik; (d) provajder; (e) korisnik (provajder daje alate za šifrovanje, ali korisnik odlučuje da li ih koristi i upravlja ključevima).

Zadatak 3.

OsobinaSecurity groupNetwork ACL
Nivo primeneMrežni interfejs instanceSubnet
StanjeStateful — odgovori prolaze automatskiStateless — povratni saobraćaj se mora dozvoliti
Vrste pravilaSamo allowAllow i deny
ProcenaSva pravila zajednoPo rednom broju, prvo poklapanje; implicitno * odbij

Zadatak 4. Tabela ruta pridružena subnetu: javni subnet ima rutu 0.0.0.0/0 ka internet gateway-u. Ime subneta ne utiče ni na šta — subnet nazvan „javni" bez te rute je privatni.

Nivo: Srednji

Zadatak 5.

  • (a) Nije prihvatljiv — identičan lokalnoj mreži 10.0.0.0/16.
  • (b) Nije prihvatljiv — 10.1.128.0/17 je deo lokalne mreže 10.1.0.0/16.
  • (c) Nije prihvatljiv — 172.20.0.0/16 je unutar partnerovog 172.16.0.0/12 (172.16.0.0–172.31.255.255).
  • (d) Prihvatljiv — ne preklapa se ni sa jednom navedenom mrežom.

Zadatak 6. (a) 16 − 5 = 11; (b) 64 − 5 = 59; (c) 256 − 5 = 251; (d) 4.096 − 5 = 4.091; (e) 256 − 4 = 252.

Zadatak 7. Pravilo najdužeg poklapanja prefiksa (longest prefix match):

  • (a) 172.16.8.9 → poklapaju 172.16.0.0/12 i 172.16.8.0/24; duži je /24 → pcx-01.
  • (b) 172.20.1.1 → poklapa 172.16.0.0/12 → vgw-01.
  • (c) 10.40.3.3 → local.
  • (d) 9.9.9.9 → samo 0.0.0.0/0 → nat-01.

Zadatak 8.

SmerBr.ProtokolPortoviIzvor/odredišteAkcija
Dolazno100TCP22203.0.113.0/24Dozvoli
Dolazno*SveSve0.0.0.0/0Odbij
Odlazno100TCP1024–65535203.0.113.0/24Dozvoli (odgovori SSH klijentima)
Odlazno*SveSve0.0.0.0/0Odbij

Ako bastion treba i da se povezuje dalje, ka privatnim serverima (SSH ka 10.x.x.x), dodaju se odlazno pravilo za TCP 22 ka tim subnetima i dolazno pravilo za TCP 1024–65535 iz njih. Security group bastiona i dalje mora dozvoljavati TCP 22 samo iz 203.0.113.0/24.

Zadatak 9. Dva NAT gateway-a — po jedan u javnom subnetu svake zone. Tabela ruta privatnog subneta zone a ima 0.0.0.0/0 → nat-a, a zone b 0.0.0.0/0 → nat-b (uz local i eventualne VPN rute). Zato su potrebne dve različite tabele ruta za privatne subnete. Otkaz jedne zone ne prekida izlaz na internet drugoj zoni, a nema ni troškova za saobraćaj između zona.

Nivo: Napredni

Zadatak 10. Uzrok: podrazumevana ruta privatnog subneta vodi ka internet gateway-u, a ne ka NAT gateway-u. Instance u privatnom subnetu nemaju javne IP adrese, a IGW prevodi samo adrese instanci koje imaju javnu adresu. Paketi sa privatnim izvornim adresama zato ne mogu da stignu na internet i odgovori se ne vraćaju. Ispravka:

aws ec2 replace-route --route-table-id <rt-privatni> --destination-cidr-block 0.0.0.0/0 --nat-gateway-id <nat-id>

Takođe proveriti da je NAT gateway u javnom subnetu, čija tabela ima rutu ka IGW-u.

Zadatak 11.

SGProtokol/portIzvor
sg-lbTCP 4430.0.0.0/0
sg-appTCP 8080sg-lb
sg-appTCP 2210.10.50.0/24
sg-bazaTCP 3306sg-app

Reference na SG su bolje od CIDR opsega:

  1. Pravilo važi za tačno one instance koje imaju tu SG, a ne za ceo subnet — drugi resursi u istom subnetu nemaju pristup.
  2. Nove instance, i instance sa promenjenim adresama (automatsko skaliranje), automatski su obuhvaćene bez izmene pravila.
  3. Pravila su čitljivija i izražavaju nameru („aplikacija sme do baze").

Zadatak 12. (a) Iste adrese postoje na obe strane, pa ruter ne može da odluči da li je 10.20.5.10 lokalna adresa ili adresa u VPC-u. Rutiranje između preklapajućih mreža nije moguće bez prevođenja adresa. (b) Moguća rešenja:

  1. Nov VPC sa opsegom bez preklapanja (npr. 10.21.0.0/16) i premeštanje resursa u njega — najčistije rešenje, ali zahteva migraciju.
  2. NAT između mreža (na lokalnom firewall-u ili preko privatnog NAT-a u cloud-u) — brže, ali složeno za održavanje i dijagnostiku, i problematično za protokole koji nose adrese u sadržaju.
  3. Izlaganje samo pojedinačnih servisa preko privatnih krajnjih tačaka (npr. AWS PrivateLink) ili javnih API-ja — bez pune mrežne povezanosti.
  4. Prenumeracija dela lokalne mreže — retko izvodljivo.

(c) Sprečavanje: jedan centralni IP adresni plan (IPAM) za lokalne mreže i sve cloud mreže, u koji se svaki novi VPC upisuje pre izrade (Modul 23).

Zadatak 13. Naplaćuje se: oba NAT gateway-a (po satu i po količini podataka), Application Load Balancer (po satu i po korišćenju), četiri instance (po satu), četiri javne IPv4 adrese (po satu) i saobraćaj ka internetu. Ne naplaćuju se: VPC, subneti, tabele ruta, security group-e.

Mere za testno okruženje:

  1. Gašenje instanci i uklanjanje skupih resursa van radnog vremena (raspored, automatizacija).
  2. Jedan NAT gateway umesto dva (visoka dostupnost nije neophodna za test), NAT instanca, ili VPC endpoint-i za usluge provajdera.
  3. Uklanjanje javnih IP adresa sa instanci — pristup samo preko load balancer-a ili upravljanog pristupa.
  4. Infrastruktura kao kod (Terraform) — okruženje se pravi kada zatreba i briše posle testiranja.

Uz to: budžet sa upozorenjem i oznake na svim resursima.

Praktičan zadatak

Zadatak 14.

source ~/kurs25.env
AZ2=$(aws ec2 describe-availability-zones --query 'AvailabilityZones[1].ZoneName' --output text)
PUB2_ID=$(aws ec2 create-subnet --vpc-id $VPC_ID --cidr-block 10.30.0.64/26 --availability-zone $AZ2 \
  --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=kurs25-javni-b},{Key=projekat,Value=kurs25}]' \
  --query Subnet.SubnetId --output text)
echo "PUB2_ID=$PUB2_ID" >> ~/kurs25.env
aws ec2 associate-route-table --route-table-id $RT_ID --subnet-id $PUB2_ID
ASSOC2_ID=$(aws ec2 describe-network-acls --filters Name=association.subnet-id,Values=$PUB2_ID \
  --query "NetworkAcls[0].Associations[?SubnetId=='$PUB2_ID'].NetworkAclAssociationId" --output text)
aws ec2 replace-network-acl-association --association-id $ASSOC2_ID --network-acl-id $NACL_ID
aws ec2 modify-subnet-attribute --subnet-id $PUB2_ID --map-public-ip-on-launch

U Korak 14 se dodaje aws ec2 delete-subnet --subnet-id $PUB2_ID, pre brisanja NACL-a i tabele ruta, jer se NACL i tabela ruta ne mogu obrisati dok su pridružene nekom subnetu.

Zadatak zasnovan na izlazu komande

Zadatak 15. (a) blackhole znači da ruta postoji, ali njen cilj više nije dostupan, pa se paketi koji je koriste odbacuju. (b) Internet gateway nema nijedno pridruživanje (Attachments: []) — neko ga je odvojio od VPC-a. (c)

aws ec2 attach-internet-gateway --internet-gateway-id igw-0a1b2c3d4e5f60718 --vpc-id <id VPC-a>

Posle pridruživanja ruta ponovo postaje active. (d) Iz zapisa o API pozivima — AWS CloudTrail: događaj DetachInternetGateway sadrži korisnika (IAM identitet), vreme i izvornu IP adresu. Za ubuduće: upozorenje (npr. CloudWatch/EventBridge pravilo) na takve događaje i ograničenje IAM prava za izmenu mrežne infrastrukture.