Network ACL Overview

A network ACL is an optional layer of security for your subnets. After you associate one or more subnets with a network ACL, the network ACL can help you control traffic in and out of the subnets.

Figure 1 shows how a network ACL works.

Figure 1 Security groups and network ACLs

Similar to security groups, network ACLs control access to subnets and add an additional layer of defense to your subnets. Security groups only have the "allow" rules, but network ACLs have both "allow" and "deny" rules. You can use network ACLs together with security groups to implement access control that is both comprehensive and fine-grained.

Differences Between Security Groups and Network ACLs summarizes the basic differences between security groups and network ACLs.

Network ACL Basics

  • Your VPC does not come with a default network ACL, but you can create one and associate it with a subnet if required. By default, each network ACL denies all inbound traffic to and outbound traffic from the associated subnet until you add rules.
  • You can associate a network ACL with multiple subnets. However, a subnet can only be associated with one network ACL at a time.
  • Each newly created network ACL is in the Inactive state until you associate subnets with it.
  • Network ACLs are stateful. If you send a request from your instance and the outbound traffic is allowed, the response traffic for that request is allowed to flow in regardless of inbound network ACL rules. Similarly, if inbound traffic is allowed, responses to allowed inbound traffic are allowed to flow out, regardless of outbound rules.

    The timeout period of connection tracking varies according to the protocol. The timeout period of a TCP connection in the established state is 600s, and the timeout period of an ICMP connection is 30s. For other protocols, if packets are received in both directions, the connection tracking timeout period is 180s. If one or more packets are received in one direction but no packet is received in the other direction, the connection tracking timeout period is 30s. For protocols other than TCP, UDP, and ICMP, only the IP address and protocol number are tracked.

Default Network ACL Rules

By default, each network ACL has preset rules that allow the following packets:

  • Packets whose source and destination are in the same subnet
  • Broadcast packets with the destination 255.255.255.255/32, which is used to configure host startup information.
  • Multicast packets with the destination 224.0.0.0/24, which is used by routing protocols.
  • Metadata packets with the destination 169.254.169.254/32 and TCP port number 80, which is used to obtain metadata.
  • Packets from CIDR blocks that are reserved for public services (for example, packets with the destination 100.125.0.0/16)
  • A network ACL denies all traffic in and out of a subnet excepting the preceding ones. Table 1 shows the default network ACL rules. The default rules cannot be modified or deleted.
    Table 1 Default network ACL rules

    Direction

    Priority

    Action

    Protocol

    Source

    Destination

    Description

    Inbound

    *

    Deny

    All

    0.0.0.0/0

    0.0.0.0/0

    Denies all inbound traffic.

    Outbound

    *

    Deny

    All

    0.0.0.0/0

    0.0.0.0/0

    Denies all outbound traffic.

Rule Priorities

  • Each network ACL rule has a priority value where a smaller value corresponds to a higher priority. Any time two rules conflict, the one with the higher priority is the one that gets applied. The rule whose priority value is an asterisk (*) has the lowest priority.
  • If multiple network ACL rules conflict, only the rule with the highest priority takes effect. If you need a rule to take effect before or after a specific rule, you can insert that rule before or after the specific rule.

Application Scenarios

  • If the application layer needs to provide services for users, traffic must be allowed to reach the application layer from all IP addresses. However, you also need to prevent illegal access from malicious users.

    Solution: You can add network ACL rules to deny access from suspect IP addresses.

  • How can I isolate ports with identified vulnerabilities? For example, how do I isolate port 445 that can be exploited by WannaCry worm?

    Solution: You can add network ACL rules to deny access traffic from specific port and protocol, for example, TCP port 445.

  • No defense is required for the communication within a subnet, but access control is required for communication between subnets.

    Solution: You can add network ACL rules to control traffic between subnets.

  • For frequently accessed applications, a security rule sequence may need to be adjusted to improve performance.

    Solution: A network ACL allows you to adjust the rule sequence so that frequently used rules are applied before other rules.

Network ACL Configuration Procedure

Figure 2 shows the procedure for configuring a network ACL.

Figure 2 Network ACL configuration procedure
  1. Create a network ACL by following the steps described in Creating a Network ACL.
  2. Add network ACL rules by following the steps described in Adding a Network ACL Rule.
  3. Associate subnets with the network ACL by following the steps described in Associating Subnets with a Network ACL. After subnets are associated with the network ACL, the subnets will be protected by the configured network ACL rules.