recent changed

This commit is contained in:
Jan Helak 2024-10-22 15:35:30 +02:00
parent 9be78673cc
commit fb07ae8423
7 changed files with 128 additions and 11 deletions

View File

@ -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

2
architektura.md Normal file
View File

@ -0,0 +1,2 @@
# Architektura systemu
TODO

BIN
notatki/04_certyfikaty_tls.pdf (Stored with Git LFS)

Binary file not shown.

View File

@ -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/)

36
notatki/md/06_s3.md Normal file
View File

@ -0,0 +1,36 @@
---
marp: true
theme: gaia
backgroundColor: #fff
backgroundImage: url('img/hero-background.svg')
---
# </br></br></br>: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)

View File

@ -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 <<EOF
#!/bin/bash
apt-get update -y
apt-get install -y apache2
apt-get install -y openssl
a2enmod ssl
a2ensite default-ssl
systemctl start apache2
systemctl enable apache2
echo "Hello World!" > /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"

View File

@ -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).