This project was built to solve a specific business problem for a fast-growing B2B SaaS startup. The client required a highly secure, reliable, and proactively monitored web server deployed in the cloud, with comprehensive documentation to allow their internal development team to take over maintenance.
Goal: Architect and deploy a hardened Linux web server in AWS using Infrastructure as Code (IaC), enforce least-privilege access, and establish proactive monitoring.
- Cloud Provider: Amazon Web Services (AWS)
- Infrastructure as Code: Terraform
- OS: Ubuntu Linux
- Web Server: Nginx / Apache (Update this once we pick one!)
- Security: AWS Security Groups, IAM, SSH Key-Based Authentication, UFW (Uncomplicated Firewall)
- Monitoring: AWS CloudWatch (To be implemented)
To meet the client's strict security requirements, this infrastructure was built with a "Security-First" approach:
- Network Isolation: Resources are deployed within a dedicated Virtual Private Cloud (VPC).
- Strict Firewall Rules: Security Groups configured to only allow HTTP/HTTPS traffic from the public web, and SSH access restricted to authorized administrator IPs.
- Hardened Compute: EC2 instance configured to disable root password logins, enforcing cryptographic SSH keys.
(Note: This section acts as the official SOP for the client's internal team)
- AWS CLI installed and authenticated
- Terraform installed globally
- Clone this repository to your local machine.
- Navigate to the project directory.
- Initialize the Terraform working directory:
terraform init - Review the infrastructure plan:
terraform plan - Deploy the resources to AWS:
terraform apply -auto-approve
(Screenshots of CloudWatch dashboard and CPU alerts will go here once completed in Phase 4)