# Virtual Private Cloud AWS ![](https://i.imgur.com/UZbfKGc.png) Amazon Virtual Private Cloud là dịch vụ cho phép khởi chạy các tài nguyên AWS trong mạng ảo cô lập treo logic mà bạn xác định. Bạn có quyền kiểm soát môi trường ảo của mình bao gồm lựa chọn dải IP, tạo mạng con, cấu hình các bảng định tuyến và cổng kết nối mạng. Bạn có thể cấu hình cài đặt các mạng con public hoặc private. ## Core Component * Interent Gateway (IGW) * Virtual Private Gateway (VPN Gateway) * Routing Table * Network Access Control Lists (NACLs) - Stateless * Security Group (SG) Statefull * Public/ Private Subnet * Nat Gateway * Customer Gateway * VPC Endpoints * VPC Peering ## Key Features * VPCs are Region Specific they do not span regions * You can create upto 5 VPN per region * Every rehion comes with a default VPC * You can have 200 subnets per VPC * You can use IPv4 Cidr Block an in addition to a IPv6 Cidr Blocks * Cost nothing: VPCs, Route Tables, Nacls, Internet Gateway, Security Groups and Subnets, VPC Peering * Some things cost money: NAT Gateway, VPC Endpoints, VPN Gateway, Customer Gateway * DNS hostnames ## Default VPC * Create ea VPC with a size /16 IPv4 CIDR block (127.31.0.0/16) * Create a size /20 default subnet in each Availability Zone * Create an INternet Gateway and connect it to your default VPC * Create a default security group and associater it with your default VPC * create default network access control list (NACL) an associate it with your default VPC * Associate the default DHCP options set for your AWS account with your default VPC ### Địa chỉ 0.0.0.0/0 Đây là địa chỉ mặc định, nó đại diện cho tất cả địa chỉ IPv4 Có nghĩa là: - Khi bạn định nghĩa 0.0.0.0/0 trên route table cho IGW có nghĩa là bạn cho phép tất cả địa chỉ có thể truy cập internet - Khi bạn định nghĩa 0.0.0.0/0 cho Security Groups thì bạn cho phép tất cả các Traffic có thể truy cập từ internet ## VPC Peering Cho phép bạn có thể kết nối giữa các VPC với nhau thông qua địa chỉ IP private ## Route Table Có thể hiểu đơn giản là một bảng định tuyến, hiểu đơn giản đây là một bảng định tuyến đường đi của mạng, chỉ cần nhìn vào đây bạn sẽ biết mạng từ đâu sẽ đi tới đâu. Mỗi một subnet chỉ liên kết với 1 route table, nhưng 1 route table có thể liên kết với nhiều subnet ## Internet Gateway IGW là một thành phần quan trọng cho phép các EC2 có thể truy cập đến Internet. Cho phép người dùng kết nối mạng con đến Internet bằng việc cung cấp một route tới Internet. Với Internet Gateway, một Instance có thể truy cập Internet và các resource bên ngoài cũng có thể kết nối với Instance Có 2 vai trò chính: * Cung cấp Route Table một target mà có thể routing ra ngoài internet * Thực hiện traslate địa chỉ mạng (NAT) đối với các instance được gán địa chỉ IPv4 public ## Bastion Server Là server được dùng cho các route kết nối chuyên dùng cho việc maintain. Cơ bản thì bản thân việc server ứng dụng cho phép kết nối SSH trực tiếp từ bên ngoài (internet) là không hay về quan điểm an toàn bảo mật, những kết nối SSH từ bên ngoài thì nên nhận thông qua một server chuyên dụng khác với server ứng dụng. Những server như thế được gọi là Bastion Server. Do chúng sẽ ở trạng thái dừng hoạt động ngoài những lúc mà admin server sử dụng ra nên hoàn toàn có thể an tâm người bên ngoài xâm nhập là rất khó, nên sẽ làm tăng an toàn bảo mật lên. ## Endpoint Endpoint đóng vai trò như một cầu nối, để kết nối riêng biệt giữa Instance trong VPC tới các dịch vụ khác mà không phải thông qua Internent: Nat, VPN, AWS Direct Connect,... ![endpoint](https://i.imgur.com/Cdh2KbL.png) ## CloudWatch CloudWatch là dịch vụ giám sát, tổng hợp, phân tích dữ liệu, nguồn tài nguyên chạy trên AWS, cho phép giám sát các vùng nhớ của ứng dụng, cơ sở hạ tầng và dịch vụ như Ram, Disk,... và sử dụng cảnh báo, tự động hành động hỗ trợ việc tối ưu hóa hiệu suất ứng dụng, quản lý sử dụng tài nguyên và hiểu rõ tình trạng hoạt động của toàn hệ thống * Nhật ký có tính phí: AWS VPC Flow Logs và AWS Route * Nhật ký do các dịch vụ trên AWS trích suất: hiện tại có hơn 30 dịch vụ của AWS có thể trích suất như API Gateway, AWS Lambda, CloudTrail,... * Nhật ký tuỳ chỉnh: là nhật ký từ ứng dụng và tài nguyên local của bạn. Có thể sử dụng AWS System Manager để cài đặt CloudWatch Agent hoặc sử dụng PutLogData API để trích xuất nhật ký. ## Security Group * Là tưởng lửa ảo để lọc các truy cập vào(inbound)/ra(outbound) các EC2 Instance * Mặc định Security Group sẽ chặn tất cả các traffic đi vào * Mặc định Security Group sẽ cho phép cả các traffic đi ra * Bạn có thể xác định inbound/outbound từ 1 dải IP, 1 địa chỉ IP hoặc từ một Security Group khác * Security Groups là một Stateful (tức là khi bạn xác định cho phép inbound thì mặc định sẽ cho phép outbound) * Những thay đổi trong Security Group sẽ được thay đổi ngay lập tức * Bạn không thể block 1 địa chỉ IP với Security Group, bạn chỉ có thể block trong NACLs * 10,000 Security Groups / Region (mặc định 2,500) * 60 inbound và 60 outbound / Security Group * 16 Security Groups cho 1 ENI ## Network Address Translation - NAT Khi muốn một server trong private subnet không giao tiếp với internet (ví dụ DB server), nhưng bạn muốn truy cập vào update server đó. ![](https://i.imgur.com/soH0Sl9.png) NAT là phương pháp thay đổi địa chỉ IP của các tài nguyên private. Khi private request ra internet, NAT sẽ đổi địa chỉ IP các tài nguyên này thành IP của NAT rồi đưa request ra internet, khi nhận response NAT sẽ lấy lại IP các tài nguyên nguồn vào đưa response vào đó. ## NAT Instance Là một máy tính ảo đóng vai trò dịch địa chỉ từ private IP sang public IP, là trung gian giúp những máy tính ở mạng private kết nối được với internet. ## Flow log Flow log là một tính năng cho phép bạn capture các thông tin truy cập của các IP trong VPC. Flow log được lưu trữ trên Amazon CloudWatch hoặc AWS S3 Flow log có thể giúp bạn thực hiện một số tác vụ, chẳng hạn như: * Chẩn đoán các quy tắc nhóm bảo mật quá hạn chế * Giám sát lưu lượng truy cập đến phiên bản của bạn * Xác định hướng của lưu lượng truy cập đến và đi từ các giao diện mạng