Security
Image-level security
- No hardcoded credentials, passwords, API keys, or SSH keys tested by pemba
- OS security updates applied at build time
- UFW firewall enabled with restrictive defaults
- fail2ban configured for SSH protection
- Docker daemon on Unix socket only
- Jenkins requires authentication setup on first access
Jenkins security
Jenkins is a high-value target. Before exposing it on any network:
- Complete the setup wizard — create an admin user with a strong password immediately
- Restrict port 8080 via your EC2 security group — never open it to
0.0.0.0/0 - Use HTTPS — place Jenkins behind a reverse proxy (nginx) with a TLS certificate
- Disable the Jenkins CLI if not needed — it has historically been an attack vector
- Install the Security plugin and review the built-in security recommendations
AWS credentials
- Use IAM instance profiles — attach a role to your EC2 instance instead of using long-term credentials
- Never run
aws configurewith IAM user access keys on shared build servers - Rotate credentials regularly if long-term keys must be used
Terraform state
- Store Terraform state in an S3 backend with server-side encryption enabled
- Use DynamoDB for state locking to prevent concurrent modifications
- Do not commit
.tfstatefiles to version control
Reporting security issues
Contact [email protected] for any security concerns with a NebulaImage product.