diff --git a/README.md b/README.md index 0567e75..38636da 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,20 @@ ## Opis zajęć Współczesne modele przetwarzania danych bazują coraz częściej na zastosowaniu rozwiązań chmurowych. Wraz z rozwojem nowych możliwości, pojawiają się również zagrożenia związane z bezpieczeństwem danych. Na zajęciach przedstawione zostaną podstawy teoretyczne oraz narzędzia przydatne przy budowaniu bezpiecznej infrastruktury IT w chmurze. Omówione zostaną też sposoby pozyskiwania informacji o nowych zagrożeniach i metodach radzenia sobie z nimi. +## Materiały + +- [slajdy](notatki/) - dostępne w formacie PDF +- [zadania](zadania.md) - lista zadań do realizacji +- [architektura](architektura.md) - opis architektury chmurowej AWS do realizacji projektu końcowego + ## Zasady Zaliczenia Projekt końcowy realizowany w zespołach 2-3 osobowych oceniany na podstawie następujących kryteriów: 1. Analiza wybranego zagrożenia CVE dla odbiorcy biznesowego oraz technicznego – 10 punktów; 2. Prezentacja metod wykrycia zagrożenia CVE oraz sposobu jego usunięcia bądź minimalizacji – 20 punktów; +Analizę zagrożenia oraz prezentację należy przygotować w oparciu o architekturę chmurową AWS, opisaną [tutaj](architektura.md). + Skala ocen: - bardzo dobry (bdb; 5,0) – od 90% punktów, - dobry plus (db plus; 4,5) – od 80% punktów, @@ -17,12 +25,31 @@ Skala ocen: - dostateczny (dst; 3,0) – od 50% punktów, - niedostateczny (ndst; 2,0) – poniżej 50% punktów. -Szczegóły dotyczące projektu zostaną podane w niedługim czasie. +W ramach zaliczenia projektu końcowego należy: +- przygotować prezentację w formie slajdów dla odbiorcy biznesowego oraz specyfikację techniczną dla odbiorcy technicznego w formacie PDF lub markdown. +- zaprezentować przygotowane materiały na zajęciach. -## Materiały +Terminy zaliczeń do wyboru: +- 29.01.2025 +- 03.02.2025 -- [slajdy](notatki/) - dostępne w formacie PDF -- [zadania](zadania.md) - lista zadań do realizacji +Materiały powinny zostać dostarczone dla prowadzącego poprzez platformę Teams najpóźniej na 3 dni przed terminem prezentacji. + +Wybrane Zagrożenia CVE: + +- [CVE-2014-0160](https://nvd.nist.gov/vuln/detail/CVE-2014-0160) - Heartbleed +- [CVE-2014-6271](https://nvd.nist.gov/vuln/detail/CVE-2014-6271) - Shellshock +- [CVE-2018-0886](https://nvd.nist.gov/vuln/detail/CVE-2018-0886) - BlueKeep +- [CVE-2018-10933](https://nvd.nist.gov/vuln/detail/CVE-2018-10933) - libssh +- [CVE-2019-5736](https://nvd.nist.gov/vuln/detail/CVE-2019-5736) - RunC +- [CVE-2020-1472](https://nvd.nist.gov/vuln/detail/CVE-2020-1472) - Zerologon +- [CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) - Log4Shell (Log4j) +- [CVE-2022-22965](https://nvd.nist.gov/vuln/detail/CVE-2022-22965) - Spring4Shell +- [CVE-2022-26377](https://nvd.nist.gov/vuln/detail/CVE-2022-26377) - HTTP Request Smuggling +- [CVE-2022-42889](https://nvd.nist.gov/vuln/detail/CVE-2021-42889) - Text4Shell +- [CVE-2024-38063](https://nvd.nist.gov/vuln/detail/CVE-2024-38063) - Critical Remote Code Execution Threat in Windows TCP/IP Stack + +Przydział zespołów do zagrożeń CVE zostanie ustalony poprzez platformę Teams. ## Kontakt diff --git a/architektura.md b/architektura.md new file mode 100644 index 0000000..bf4e225 --- /dev/null +++ b/architektura.md @@ -0,0 +1,2 @@ +# Architektura systemu +TODO \ No newline at end of file diff --git a/notatki/04_certyfikaty_tls.pdf b/notatki/04_certyfikaty_tls.pdf index 3ba5b92..fad82c7 100644 --- a/notatki/04_certyfikaty_tls.pdf +++ b/notatki/04_certyfikaty_tls.pdf @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d474990c66cd5718e2f6080c089f653dbd72d5fe429689e2d33ef738a89cf641 -size 42977 +oid sha256:9bed157a435950cfbb090426091892a56c0bda836207a24820083576a5fdf1f3 +size 76937 diff --git a/notatki/md/04_certyfikaty_tls.md b/notatki/md/04_certyfikaty_tls.md index 165c47e..54663fa 100644 --- a/notatki/md/04_certyfikaty_tls.md +++ b/notatki/md/04_certyfikaty_tls.md @@ -34,7 +34,7 @@ backgroundImage: url('img/hero-background.svg') - klucz publiczny - dane o właścicielu - dane o CA - - datę ważności + - okres ważności - można go uzyskać samodzielnie lub za pośrednictwem CA - może być pozyskany za darmo lub za opłatą - opcja bezpłatna: [Let's Encrypt](https://letsencrypt.org/) diff --git a/notatki/md/06_s3.md b/notatki/md/06_s3.md new file mode 100644 index 0000000..0588c73 --- /dev/null +++ b/notatki/md/06_s3.md @@ -0,0 +1,36 @@ +--- +marp: true +theme: gaia +backgroundColor: #fff +backgroundImage: url('img/hero-background.svg') + +--- +#


:shield: AWS S3 :shield: +--- + +# S3 - Simple Storage Service +- [S3](https://aws.amazon.com/s3/) - usługa przechowywania danych w chmurze +- dane przechowywane są w tzw. *buckecie* +- brak górnego limitu pojemności, największy pojedyńczy obiekt może mieć do 5TB +- dane mogą być zaszyfrowane podczas przechowywania (at-rest) oraz w trakcie przesyłania (in-transit) +- S3 można też wykorzystać jako hosting do statycznych stron internetowych + +--- + +# S3 - Simple Storage Service +- [Rodzaje przestrzeni](https://aws.amazon.com/s3/storage-classes/) +- Buckety S3 mogą spełniać wymogi prawne dotyczące przechowywania danych i braku możliwości ich usunięcia, np. poprzez WORM (Write Once Read Many) - [S3 Object Lock](https://aws.amazon.com/s3/features/object-lock/) +- S3 obsługuje zdarzenia w obrębie bucketa, np. dodanie nowego obiektu, usunięcie obiektu, itp. - [S3 Events](https://docs.aws.amazon.com/AmazonS3/latest/userguide/NotificationHowTo.html) +- Usługa S3 może być częścią rozwiązań architektonicznych tzw. serverless, np. [S3 + Lambda](https://aws.amazon.com/blogs/compute/building-scalable-serverless-applications-with-amazon-s3-and-aws-lambda/) + +--- + +# S3 - Simple Storage Service +- Bezpieczeństwo danych w S3 zapewniają: + - [S3 Bucket Encryption](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-encryption.html) + - [S3 Bucket Policies](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-iam-policies.html) + - [S3 Bucket Versioning](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) + - [S3 Bucket Logging](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerLogs.html) + - [S3 Bucket Replication](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html) + - [S3 Bucket Lifecycle](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) + diff --git a/skrypty/create-ec2-with-http.sh b/skrypty/create-ec2-with-http.sh new file mode 100644 index 0000000..eadcfe4 --- /dev/null +++ b/skrypty/create-ec2-with-http.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +# Variables +KEY_NAME="uam-bwc-key" +INSTANCE_TYPE="t2.micro" +SECURITY_GROUP_NAME="uam-bwc-sg" +AMI_ID="ami-005fc0f236362e99f" +REGION="us-east-1" + +# Generate SSH key pair +aws ec2 create-key-pair --key-name $KEY_NAME --query 'KeyMaterial' --output text --region $REGION > ${KEY_NAME}.pem +chmod 400 ${KEY_NAME}.pem + +# Create security group +SECURITY_GROUP_ID=$(aws ec2 create-security-group --group-name $SECURITY_GROUP_NAME --description "Security group for uam-bwc EC2 instance" --query 'GroupId' --output text --region $REGION) + +# Add rules to security group +aws ec2 authorize-security-group-ingress --group-id $SECURITY_GROUP_ID --protocol tcp --port 22 --cidr 0.0.0.0/0 --region $REGION +aws ec2 authorize-security-group-ingress --group-id $SECURITY_GROUP_ID --protocol tcp --port 80 --cidr 0.0.0.0/0 --region $REGION +aws ec2 authorize-security-group-ingress --group-id $SECURITY_GROUP_ID --protocol tcp --port 443 --cidr 0.0.0.0/0 --region $REGION + +# User data script +USER_DATA_SCRIPT=$(cat < /var/www/html/index.html +EOF +) + +# Provision EC2 instance +INSTANCE_ID=$(aws ec2 run-instances --image-id $AMI_ID --count 1 --instance-type $INSTANCE_TYPE --key-name $KEY_NAME --security-group-ids $SECURITY_GROUP_ID --user-data "$USER_DATA_SCRIPT" --query 'Instances[0].InstanceId' --output text --region $REGION) + +# Wait for the instance to be in running state +aws ec2 wait instance-running --instance-ids $INSTANCE_ID --region $REGION + +# Get the public IP of the instance +INSTANCE_PUBLIC_IP=$(aws ec2 describe-instances --instance-ids $INSTANCE_ID --query 'Reservations[0].Instances[0].PublicIpAddress' --output text --region $REGION) + +echo "EC2 instance is running. Public IP: $INSTANCE_PUBLIC_IP" \ No newline at end of file diff --git a/zadania.md b/zadania.md index 3b1dbec..ce59df1 100644 --- a/zadania.md +++ b/zadania.md @@ -55,13 +55,20 @@ Content-Security-Policy-Report-Only: default-src 'none'; form-action 'none'; fra ## Certyfikaty TLS 1. Przygotuj certyfikat TLS za pomocą narzędzia [Let's Encrypt](https://letsencrypt.org/) dla serwera Apache na maszynie wirtualnej EC2. + - skorzystaj ze skryptu w AWS Cloud Shell aby przygotować EC2 z Apache Web Server: [uam-bwc-ec2-httpd.sh](skrypty/uam-bwc-ec2-httpd.sh) +- instrukacja dla konfiguracji Certbot dla Apache Web Server na Ubuntu https://certbot.eff.org/instructions?ws=apache&os=snap 2. Zapoznaj się z wartością certyfikatu TLS dla dowolnej strony obsługującej HTTPS, np. [Sejmu RP](https://www.sejm.gov.pl/) . 3. Przygotuj prywatny certifikat TLS za pomocą narzędzia [OpenSSL](https://www.openssl.org/). W jaki sposób taki certyfikat może być autoryzowany przez przeglądarkę WWW bądź system operacyjny? ## EC2 i EBS -1. Uruchom maszynę wirtualną EC2 z przestrzenią dyskową EBS. Wykorzystaj skrypt [skrypt instalacyjny](skrypty/uam-bwc-ec2-ebs.sh) do instalacji serwera Apache. +1. Uruchom maszynę wirtualną EC2 w użyciem skryptu [create-ec2-instance.sh](skrypty/create-ec2-instance.sh). 2. Zmodifikuj ustawienia Security Group tak, aby zezwolić na dostęp do maszyny wirtualnej EC2 tylko z wybranego adresu IP. -3. Zmodifikuj rozmiar przestrzeni dyskowej EBS na maszynie wirtualnej EC2. -4. Wykonaj kopię zapasową EB2 ręcznie. -5. Wykorzystaj usługę AWS Backup do automatycznej kopii zapasowej maszyny wirtualnej EC2. +3. Dołącz do maszyny EC2 przestrzeń dyskową EBS. +4. Wykonaj snapshot dla przestrzeni dyskowej EBS. +5. Uruchom usługę AWS Inspector dla maszyny wirtualnej EC2. +6. Usuń maszynę wirtualną EC2 i sprawdź czy dane z przestrzeni dyskowej EBS są dostępne. +## S3 +1. Przygotuj własny bucket S3 w regionie *us-east-1*. Użyj własnego klucza w celu zaszyfrowania danych. Prześlij do bucketu dowolny plik. +2. Przygotuj nowy bucket 3. Skonfiguruj go, aby mógł służyć jako serwer www dla statycznych treści. +4. Zapoznaj się z opcją replikacji danych pomiędzy regionami AWS - [Cross-Region Replication](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html). \ No newline at end of file