bezpieczenstwo-w-chmurze/zadania.md

149 lines
9.1 KiB
Markdown
Raw Normal View History

2024-10-04 14:51:59 +02:00
# Zadania do przedmiotu Bezpieczeństwo w Chmurze:
## Wprowadzenie
1. Zapoznaj się z bazą podatności [Common Vulnerabilities and Exposures](https://cve.mitre.org/) oraz NIST [National Vulnerability Database](https://nvd.nist.gov/)
2. Zapoznaj się z opisem [CVE od firmy Red Hat](https://www.redhat.com/en/topics/security/what-is-cve)
2. Zapoznaj się z Modelami Wspólnej Odpowiedzialności:
- [AWS](https://aws.amazon.com/compliance/shared-responsibility-model/)
- [Azure](https://learn.microsoft.com/en-us/azure/security/fundamentals/shared-responsibility)
- [Google Cloud](https://cloud.google.com/architecture/framework/security/shared-responsibility-shared-fate)
3. Przygotuj dostęp do [Laboratorium AWS](https://awsacademy.instructure.com/)
## Aplikacja w Chmurze
1. Zapoznaj się z konsolą AWS;
2. Przygotuj maszynę wirtualną EC2:
2024-10-18 14:01:36 +02:00
- region: *us-east-1*;
2024-10-04 14:51:59 +02:00
- rodzaj obrazu: *Ubuntu Server 24.04 LTS*;
- rodzaj instancja: *t2.micro*;
- typ sieci: *domyślne VPC*;
- przygotuj nową parę kluczy ssh;
- zezwól na ruch SSH z dowolnego adresu IP;
- zezwól na ruch HTTP z dowolnego adresu IP;
- wykorzystaj [skrypt instalacyjny](skrypty/uam-bwc-ec2-httpd.sh) w sekcji *User Data*;
- zaloguj się na maszynę za pomocą kluczy ssh i przejrzyj logi dostępowe:
```bash
tail -f /var/log/apache2/access.log /var/log/auth.log
```
3. Zapoznaj się z ofertą [AWS Free Tier](https://aws.amazon.com/free/)
4. Po zakończeniu ćwiczeń, usuń maszynę wirtualną EC2.
2024-10-11 15:54:00 +02:00
## OWASP i Nagłówki HTTP
1. Zapoznaj się z projektami [OWASP](https://owasp.org/projects/)
2. Zapoznaj się z nagłówkami bezpieczeństwa HTTP:
- [Content Security Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP)
- [Cross-Origin Resource Sharing](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS)
- [Cache-Control](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control)
2024-10-21 09:16:17 +02:00
- [Strict-Transport-Security](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security)
- [robots.txt](https://en.wikipedia.org/wiki/Robots.txt) -
Sprawdź jakie nagłówki i zawartość pliku `robots.txt` są dostępne różnych stronach internetowych.
3. Za pomocą dodatków do przeglądarki WWW, np. [ModHeader](https://modheader.com/) spróbuj zbudować politykę CSP dla wybranej strony internetowej, np. [https://wmi.amu.edu.pl/](https://wmi.amu.edu.pl/).
Budowę polityki CSP można rozpocząć od następującej:
```
Content-Security-Policy-Report-Only: default-src 'none'; form-action 'none'; frame-ancestors 'none';
```
2024-10-18 14:01:36 +02:00
4. Sprawdź co oznacza wartość `no-cache` w nagłówku `Cache-Control`.
## Certyfikaty TLS
1. Przygotuj certyfikat TLS za pomocą narzędzia [Let's Encrypt](https://letsencrypt.org/) dla serwera Apache na maszynie wirtualnej EC2.
2024-10-28 11:05:28 +01:00
- skorzystaj ze skryptu w AWS Cloud Shell aby przygotować EC2 z Apache Web Server: [create-ec2-with-http.sh](skrypty/create-ec2-with-http.sh)
2024-10-22 15:35:30 +02:00
- instrukacja dla konfiguracji Certbot dla Apache Web Server na Ubuntu https://certbot.eff.org/instructions?ws=apache&os=snap
2024-10-18 14:01:36 +02:00
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
2024-10-31 11:44:14 +01:00
1. Uruchom maszynę wirtualną EC2 w użyciem skryptu [create-ec2-for-inspector.sh](skrypty/create-ec2-for-inspector.sh).
2. Uruchom usługę AWS Inspector i przeskanuj maszynę wirtualną EC2.
3. Zmodifikuj ustawienia Security Group tak, aby zezwolić na dostęp do maszyny wirtualnej EC2 tylko z wybranego adresu IP.
4. Dołącz do maszyny EC2 przestrzeń dyskową EBS.
5. Wykonaj snapshot dla przestrzeni dyskowej EBS.
2024-10-22 15:35:30 +02:00
6. Usuń maszynę wirtualną EC2 i sprawdź czy dane z przestrzeni dyskowej EBS są dostępne.
2024-10-31 11:44:14 +01:00
7. Zapoznaj się z [CIS Benchmarks List](https://www.cisecurity.org/cis-benchmarks) oraz [AWS Inspector](https://aws.amazon.com/inspector/).
2024-10-22 15:35:30 +02:00
## S3
2024-11-18 09:23:52 +01:00
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. Ustaw wersjonowanie plików. Wrzuć plik do bucketa z taką samą nazwą ale inną zawartością.
2024-10-22 15:35:30 +02:00
2. Przygotuj nowy bucket 3. Skonfiguruj go, aby mógł służyć jako serwer www dla statycznych treści.
2024-10-31 09:53:12 +01:00
4. Zapoznaj się z opcją replikacji danych pomiędzy regionami AWS - [Cross-Region Replication](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html).
## VPC
1. Przygotuj nową sieć VPC w regionie *us-east-1* z następującymi elementami:
- CIDR VPC: *10.10.0.0/16*;
- Internet Gateway przyłączony do VPC;
- Public Subnet: *10.10.0.0/24*;
- Private Subnet *10.10.1.0/24*;
- Nat Gateway dla podsieci prywatnej;
- Routing Table dla podsieci publicznej z trasą do Internet Gateway;
- Routing Table dla podsieci prywatnej z trasą do Nat Gateway;
- ACL dla podsieci publicznej z zezwoleniem na ruch HTTP i SSH;
2. Przygotuj maszynę wirtualną EC2 w przygotowanym VPC w podsieci publicznej.
2024-11-13 14:44:03 +01:00
3. Przygotuj maszynę wirtualną EC2 w przygotowanym VPC w podsieci prywatnej.
2024-11-22 16:10:13 +01:00
3. Zapoznaj się z możliwością połączenia [VPC za pomocą VPN](https://docs.aws.amazon.com/vpc/latest/userguide/vpn-connections.html).
2024-11-13 14:44:03 +01:00
2024-11-29 14:07:24 +01:00
## ELB + CloudFront
2024-12-02 10:00:22 +01:00
1. Przygotuj ALB w regionie *us-east-1* z dwoma instancjami EC2. Skonfiguruj ALB tak, aby przekierowywał ruch na EC2 na porcie 80. Wykorzystaj skrypty do przygotowania VPC oraz EC2: [create-vpc.sh](skrypty/create-vpc.sh) i [create-ec2-in-vpc.sh](skrypty/create-ec2-in-vpc.sh).
2024-11-29 14:07:24 +01:00
2. Wygeneruj self-signed certyfikat TLS za pomocą [tej strony](https://regery.com/en/security/ssl-tools/self-signed-certificate-generator). Dodaj listener dla ALB na porcie 443 z wykorzystaniem własnego certyfikatu TLS.
3. Zapoznaj się z możliwością hostowania strony za pomocą [CloudFront oraz S3](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/GettingStarted.SimpleDistribution.html#GettingStartedCreateBucket)
4. Zapoznaj się z [AWS Lambda @ Edge](https://aws.amazon.com/lambda/edge/) oraz [CloudFront Functions](https://aws.amazon.com/blogs/aws/introducing-cloudfront-functions-run-your-code-at-the-edge-with-low-latency-at-any-scale/).
## Shield + WAF
2024-12-05 14:59:32 +01:00
1. Przygotuj ALB we własnym VPC za pomocą skryptów:
- [create-vpc.sh](skrypty/create-vpc.sh)
2024-12-09 10:28:30 +01:00
- [create-ec2-in-vpc.sh](skrypty/create-ec2-in-vpc.sh)
2024-12-05 14:59:32 +01:00
- [create-alb-in-vpc.sh](skrypty/create-alb-in-vpc.sh)
2. Skonfiguruj usługę AWS WAF dla ALB. Przygotuj własne reguły dla WAF, które będzie blokowały dostęp do strony `/secure.html` na podstawie
- URI
- query string
- CATPCHA
3. Dodaj regułę WAF, która ustawi rate limit dla dostępu do strony `/login.html`.
2024-12-13 13:48:33 +01:00
4. Zapoznaj się z usługą [AWS Shield](https://aws.amazon.com/shield/)
# Security Tools
1. Zapoznaj się z narzędziami [nikto](https://cirt.net/Nikto2) oraz [Siege](https://github.com/JoeDog/siege)
2. Zapoznaj się z regułami [AWS Managed Rules](https://docs.aws.amazon.com/waf/latest
2. Przygotuj infrastrukturę w AWS na bazie skryptów:
- [create-vpc.sh](skrypty/create-vpc.sh)
- [create-ec2-in-vpc.sh](skrypty/create-ec2-in-vpc.sh)
- [create-alb-in-vpc.sh](skrypty/create-alb-in-vpc.sh)
3. Wykorzystaj narzędzie [nikto](https://cirt.net/Nikto2) do przetestowania poziomu bezpieczeństwa swojej infrastruktury. Poniżej przykład użycia:
```bash
2024-12-16 09:23:38 +01:00
cd ~
2024-12-13 13:48:33 +01:00
git clone https://github.com/sullo/nikto
cd nikto/program
chmod +x nikto.pl
./nikto.pl -useragent "UAM WMI Lab" -D V -T <id> -h https://<domain url> -o ~/nikto-report.txt
```
4. Wykorzystaj narzędzie [Siege](https://github.com/JoeDog/siege) aby przetestować wytrzymałość swojej infrastruktury. Poniżej przykład użycia:
```bash
2024-12-16 09:23:38 +01:00
cd ~
2024-12-16 10:59:18 +01:00
wget https://download.joedog.org/siege/siege-latest.tar.gz
2024-12-13 13:48:33 +01:00
tar -xvzf siege-latest.tar.gz
cd siege-4.1.7/
chmod +x configure
./configure --prefix ~/siege-4.1.7/
make
make install
cd ~/siege-4.1.7/bin/
./siege.config
./siege -c 10 -t 10s https://<domain url>
```
2024-12-05 14:59:32 +01:00
2024-11-29 14:07:24 +01:00
2024-11-13 14:44:03 +01:00
## IAM
2024-12-17 15:08:05 +01:00
1. Przygotuj nową maszynę EC2, do której dostęp będzie możliwy z konsoli AWS za pomocą usługi EC2 Connect. Wykorzystaj domyślne VPC oraz region *us-east-1*.
- *Uwaga! Ze względu na organiczenia środowiska laboratoryjnego, nie mamy możliwości wykonania wszystkich kroków jakie są przedstawione w tutorialu. Należy stosować się do poniższych wskazówek:*
- Przygotuj Security Groups dla usługi EC2 Instance Connect - [link](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-connect-tutorial.html#eic-tut1-task2)
- Przygotuj nową EC2 z dostępem do usługi EC2 Instance Connect - [link](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-connect-tutorial.html#eic-tut1-task3)
- Połącz się z maszyną za pomocą EC2 Instance Connect.
2. Po zalogowaniu się na EC2, próbuj przygotować nowy bucket S3 za pomocą polecenia `aws s3api create-bucket --bucket <nazwa-bucketa-s3> --region us-east-1`. Następnie nadaj Rolę *LabInstanceProfile* i spróbuj ponownie wykonać polecenie.
2024-11-22 16:10:13 +01:00