This estate is a security nightmare: no WAF, every tier in a public subnet, each security group trusting the whole VPC, public SSH on the hosts, and the database unencrypted. There's no perimeter and no segmentation.
Rebuild it as zero-trust:
- a WAF at the edge; the ALB accepts only from the WAF,
- web, app, and data tiers all private, each accepting only from the tier directly in front (web ← ALB, app ← web, data ← app),
- no public SSH anywhere (use SSM),
- the database not internet-reachable and encrypted at rest and in transit, and
- NAT for private egress. Every control has to be right — this is the full boss fight.