Amazon EC2

Public FTP

Ensure that the TCP port 20/21 for FTP connection is not open to public

Risk Level: High

Description

This plugin determines if the TCP port 20/21 for FTP (File Transfer Protocol) is open to the public. Unlike HTTP and HTTPS, which can be available to public access, TCP port 20 and 21 must be restricted to known IP addresses. These ports are used by File Transfer Protocol to transfer files and establish connections between client-server.

To minimize false positives, this plugin reports only those security groups with public IP associated with any of its network interfaces.

About the Service

Amazon EC2: Amazon Elastic Compute Cloud (Amazon EC2) provides scalable computing capacity in the Amazon Web Services (AWS) Cloud. With the EC2 instance, you can launch as many virtual servers as you need, configure security and networking, and manage storage without worrying about the hardware needs of the process. Security Groups act as a firewall for an EC2 instance to control the incoming and outgoing traffic. You can read more about security groups here.

Impact

Security Groups act as a firewall for the EC2 instances to control the incoming and outgoing traffic. There are rules defined under security groups that can allow specific IP addresses to access the EC2 instance with the protocol and the Ports specified.

FTP is a protocol used to transfer files on a computer network. Since the authentication for establishing an FTP connection is done in plain text, hackers can easily retrieve the username and password. In such an event, if the FTP connection can be accessed publicly, attackers can list all the files on the server and exploit the data obtained. Misconfigured FTP servers can lead to enormous data leaks.

Steps to Reproduce

Using AWS Console-

  1. Log In to your AWS Console.
  2. Open the EC2 Management Console. You can use this link (https://console.aws.amazon.com/ec2) to navigate directly if already logged in. 
  3. Move to the Security Group in the Network and Security section from the left navigation pane.
  4. You will find a list of Security Groups available. In the Filter security groups bar type Protocol: TCP to filter out all the security groups having rules for the mentioned protocol. From the list of security groups, choose one by clicking on its Security group ID.
  5. The Inbound rules tab will be selected which has a list of rules for the security group. Investigate the Source column, and find the rules that have the source set to Anywhere (0.0.0.0/0 or ::/0). Similarly, find if the Port is set to 20/21 with the Protocol TCP. It implies that the instances and resources attached to the security group can accept public requests through TCP protocol from Port 20/21 and the FTP is unrestricted.
  6. Repeat steps 4 to 5 for all the Security Groups you want to investigate.

Steps for Remediation

Modify the security group and permit only required IP addresses to access the FTP connection:

  1. Log In to your AWS Console.
  2. Open the EC2 Management Console. You can use this link (https://console.aws.amazon.com/ec2) to navigate directly if already logged in. 
  3. Move to the Security Group in the Network and Security section from the left navigation pane.
  4. You will find a list of Security Groups available. In the Filter security groups bar type Protocol: TCP to filter out all the security groups having rules for the mentioned protocol. From the list, choose the vulnerable security group by clicking on its Security group ID.
  5. The Inbound rules tab will be selected along with a list of rules for the security group. Click on the Edit Inbound Rules button on the right.
  6. From the list of rules with TCP Protocol and Port 20/21, click on the close button beside the (0.0.0.0/0 or ::/0) in the Source column. It will clear all the IP addresses allowed to access the instance. From the Source drop-down menu, select Custom and enter all the IP addresses you want to give access to following the protocol. 
  7. To allow only your IP to access the instance, select the My IP option. You can read more about all the options available here.
  8. Click on Preview Changes to preview the changes, and Save rules to save them.
  9. Repeat steps 4 to 8 for all the Security Groups you want to fix.