Information
A _security group_ acts as a virtual firewall for your instance to control inbound and outbound traffic. When you launch an instance in the AWS Virtual Private Cloud (VPC), you can assign the instance to up to five security groups. Security groups act at the instance level, not the subnet level. Therefore, each instance in a subnet in your VPC could be assigned to a different set of security groups. If you don't specify a particular group at launch time, the instance is automatically assigned to the default security group for the VPC.
For each security group, you add _rules_ that control the inbound traffic to instances, and a separate set of rules that control the outbound traffic.
The port for these inbound rules would depend on the Database engine used and the configured port.
The default values are:
MySQL - TCP 3306
MSSQL - TCP 1433
Oracle SQL - TCP 1521
PostgreSQL - TCP 5432
MariaDB - TCP 3306
Amazon Aurora DB - TCP 3306
This protects the Data tier from unauthorized access, it is recommended to add inbound security group rules that allow traffic for the specific database protocol and ports by referencing as source the security group associated with the App tier instances.
NOTE: Nessus has provided the target output to assist in reviewing the benchmark to ensure target compliance.
Solution
Using the Amazon unified command line interface:
* First remove all the ingress rules for the security group configured for your RDS DB instance:
aws ec2 describe-security-groups --group-id _<data_tier_security_group>_ --query "SecurityGroups[0].IpPermissions" > /tmp/IpPermissions.json
aws ec2 revoke-security-group-ingress --group-id _<data_tier_security_group>_ --ip-permissions file:///tmp/IpPermissions.json
* Add an ingress rule for a specific port, using --source-group option to specify the App tier security group as the source of the connections:
aws ec2 authorize-security-group-ingress --group-id _<data_tier_security_group>_ --protocol tcp --port _<specific_port>_ --source-group _<app_tier_security_group>_