adding materials for shield and WAF
This commit is contained in:
parent
5798336432
commit
279bd68718
@ -5,6 +5,7 @@ backgroundColor: #fff
|
||||
backgroundImage: url('img/hero-background.svg')
|
||||
|
||||
---
|
||||
# </br>
|
||||
# :shield: AWS Shield :shield:
|
||||
# :shield: AWS WAF :shield:
|
||||
|
||||
@ -15,3 +16,16 @@ backgroundImage: url('img/hero-background.svg')
|
||||
- wersja podstawowa (Standard) jest dostępna bezpłatnie;
|
||||
- wersja rozszerzona (Advanced) pozwala na ataki na warstwę 7 modelu OSI; oferuje też dodatkowe narzędzia ochronne i monitorujące;
|
||||
- wersja rozszerzona chroni następujące usługi: [lista](https://docs.aws.amazon.com/waf/latest/developerguide/ddos-protections-by-resource-type.html)
|
||||
|
||||
---
|
||||
|
||||
# WAF
|
||||
- [AWS WAF](https://aws.amazon.com/waf/) (*Web Application Firewall*) - jedna z najbardziej kompleksowych usług bezpieczeństwa; Można ją stosować na następujących zasobach: [lista](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html);
|
||||
- usługa pozwala na definiowanie własnych reguł bezpieczeństwa, bądź też korzystania z gotowych szablonów;
|
||||
---
|
||||
# WAF
|
||||
Wybrane funkcje:
|
||||
- pozwala na filtrowanie ruchu na poziomie warstwy 7 modelu OSI na podstawie adresu IP, nagłówków HTTP, URI, treści zapytania;
|
||||
- filtruje dostęp botów
|
||||
- pozwala ustawić limity dostępu do zasobów - tzw. *rate limits*;
|
||||
- obsługa CAPTCHA;
|
53
skrypty/create-alb-in-vpc.sh
Normal file
53
skrypty/create-alb-in-vpc.sh
Normal file
@ -0,0 +1,53 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Set variables
|
||||
REGION="us-east-1"
|
||||
VPC_NAME="uam-bwc-vpc1"
|
||||
PUBLIC_SUBNET1_NAME="uam-bwc-public-subnet1"
|
||||
PUBLIC_SUBNET2_NAME="uam-bwc-public-subnet2"
|
||||
SECURITY_GROUP_NAME="uam-bwc-sg"
|
||||
TARGET_GROUP_NAME="uam-bwc-tg"
|
||||
ALB_NAME="uam-bwc-alb"
|
||||
LISTENER_NAME="uam-bwc-listener"
|
||||
INSTANCE1_NAME="uam-bwc-httpd1"
|
||||
INSTANCE2_NAME="uam-bwc-httpd2"
|
||||
|
||||
# Get VPC ID
|
||||
VPC_ID=$(aws ec2 describe-vpcs --filters "Name=tag:Name,Values=$VPC_NAME" --region $REGION --query 'Vpcs[0].VpcId' --output text)
|
||||
echo "Found VPC ID: $VPC_ID for VPC Name: $VPC_NAME"
|
||||
|
||||
# Get Public Subnet IDs
|
||||
PUBLIC_SUBNET1_ID=$(aws ec2 describe-subnets --filters "Name=tag:Name,Values=$PUBLIC_SUBNET1_NAME" --region $REGION --query 'Subnets[0].SubnetId' --output text)
|
||||
echo "Found Public Subnet 1 ID: $PUBLIC_SUBNET1_ID for Subnet Name: $PUBLIC_SUBNET1_NAME"
|
||||
|
||||
PUBLIC_SUBNET2_ID=$(aws ec2 describe-subnets --filters "Name=tag:Name,Values=$PUBLIC_SUBNET2_NAME" --region $REGION --query 'Subnets[0].SubnetId' --output text)
|
||||
echo "Found Public Subnet 2 ID: $PUBLIC_SUBNET2_ID for Subnet Name: $PUBLIC_SUBNET2_NAME"
|
||||
|
||||
# Get Security Group ID
|
||||
SG_ID=$(aws ec2 describe-security-groups --filters "Name=group-name,Values=$SECURITY_GROUP_NAME" --region $REGION --query 'SecurityGroups[0].GroupId' --output text)
|
||||
echo "Found Security Group ID: $SG_ID for Security Group Name: $SECURITY_GROUP_NAME"
|
||||
|
||||
# Get EC2 Instance IDs
|
||||
INSTANCE1_ID=$(aws ec2 describe-instances --filters "Name=tag:Name,Values=$INSTANCE1_NAME" --region $REGION --query 'Reservations[0].Instances[0].InstanceId' --output text)
|
||||
echo "Found EC2 Instance 1 ID: $INSTANCE1_ID for Instance Name: $INSTANCE1_NAME"
|
||||
|
||||
INSTANCE2_ID=$(aws ec2 describe-instances --filters "Name=tag:Name,Values=$INSTANCE2_NAME" --region $REGION --query 'Reservations[0].Instances[0].InstanceId' --output text)
|
||||
echo "Found EC2 Instance 2 ID: $INSTANCE2_ID for Instance Name: $INSTANCE2_NAME"
|
||||
|
||||
# Create ALB
|
||||
ALB_ARN=$(aws elbv2 create-load-balancer --name $ALB_NAME --subnets $PUBLIC_SUBNET1_ID $PUBLIC_SUBNET2_ID --security-groups $SG_ID --region $REGION --query 'LoadBalancers[0].LoadBalancerArn' --output text)
|
||||
echo "Created ALB: $ALB_ARN with name $ALB_NAME"
|
||||
|
||||
# Create Target Group
|
||||
TARGET_GROUP_ARN=$(aws elbv2 create-target-group --name $TARGET_GROUP_NAME --protocol HTTP --port 80 --vpc-id $VPC_ID --region $REGION --query 'TargetGroups[0].TargetGroupArn' --output text)
|
||||
echo "Created Target Group: $TARGET_GROUP_ARN with name $TARGET_GROUP_NAME"
|
||||
|
||||
# Register Targets
|
||||
aws elbv2 register-targets --target-group-arn $TARGET_GROUP_ARN --targets Id=$INSTANCE1_ID Id=$INSTANCE2_ID --region $REGION
|
||||
echo "Registered EC2 instances with Target Group"
|
||||
|
||||
# Create Listener
|
||||
LISTENER_ARN=$(aws elbv2 create-listener --load-balancer-arn $ALB_ARN --protocol HTTP --port 80 --default-actions Type=forward,TargetGroupArn=$TARGET_GROUP_ARN --region $REGION --query 'Listeners[0].ListenerArn' --output text)
|
||||
echo "Created Listener: $LISTENER_ARN on port 80"
|
||||
|
||||
echo "ALB setup complete"
|
@ -41,8 +41,11 @@ USER_DATA=$(cat <<EOF
|
||||
apt-get update -y
|
||||
apt-get install -y apache2
|
||||
systemctl start apache2
|
||||
|
||||
systemctl enable apache2
|
||||
echo "Hello from \$(uname -n)" > /var/www/html/index.html
|
||||
echo "Page to secure" > /var/www/html/secure.html
|
||||
echo "Login Page!" > /var/www/html/login.html
|
||||
EOF
|
||||
)
|
||||
|
||||
|
12
zadania.md
12
zadania.md
@ -95,7 +95,17 @@ Content-Security-Policy-Report-Only: default-src 'none'; form-action 'none'; fra
|
||||
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
|
||||
WIP
|
||||
1. Przygotuj ALB we własnym VPC za pomocą skryptów:
|
||||
- [create-vpc.sh](skrypty/create-vpc.sh)
|
||||
- [create-ec2-with-http.sh](skrypty/create-ec2-with-http.sh)
|
||||
- [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`.
|
||||
|
||||
2. Zapoznaj się z usługą [AWS Shield](https://aws.amazon.com/shield/)
|
||||
|
||||
## IAM
|
||||
1. Przygotuj nową maszynę EC2, do której dostęp będzie możliwy z konsoli AWS.
|
||||
|
Loading…
Reference in New Issue
Block a user