Computer case

Openstack Neutron Security Groups

 

 

OpenStack Neutron Security Groups

OpenStack Neutron is a powerful networking service crucial in managing network connectivity for OpenStack-based cloud environments. OpenStack Neutron Security Groups stand out as a critical feature among its various components. In this blog post, we will delve into the significance of OpenStack Neutron Security Groups and understand how they contribute to enhancing the security of cloud deployments.

OpenStack Neutron Security Groups serve as virtual firewalls, controlling inbound and outbound traffic for instances within an OpenStack cloud. They are an essential aspect of network security, allowing administrators to define and enforce access rules for different types of network traffic.

 

Highlights: OpenStack Neutron Security Groups

  • Network-as-a-Service

The power of open-source cloud environments is driven by Liberty OpenStack and the Neutron networks forming network-as-a-service. OpenStack can now be used with many advanced technologies – Kubernetes network namespace, Clustering, and Docker Container Networking. By default, Neutron handles all the networking aspects for OpenStack cloud deployments and allows the creation of network objects such as routers, subnets, and ports.

For example, Neutron creates three subnets and defines the conditions for tier interaction with a standard multi-tier application with a front, middle, and backend tier. The filtering is done centrally or distributed with tenant-level firewall OpenStack security groups.

  • OpenStack is Modular

OpenStack is very modular, which allows it to be enhanced by commercial and open-source network technologies. The plugin architecture allows different vendors to enhance networking and security with advanced routers, switches, and SDN controllers. Every OpenStack component manages a resource made available and virtualized to the user as a consumable service, creating a network or permitting traffic with ingress/egress rule chains. Everything is done in software – a powerful abstraction for cloud environments.

 



Openstack Security Group.

Key OpenStack Neutron Security Groups Discussion points:


  • Introduction to OpenStack Neutron Security Groups.

  • Discussion on the control, network, and compute components.

  • Neutron components and connectivity.

  • Discssion on Linux and agents.

 

For pre-information, you may find the following helpful

  1. OpenStack Architecture
  2. Application Aware Networking

 

Back to Basics With OpenStack Neutron Security Groups

Security Groups

Security groups are essential for maintaining access to instances by permitting users to create inbound and outbound rules that restrict traffic to and from models based on specific addresses, ports, protocols, and even other security groups.

Neutron creates default security groups for every project, allowing all outbound communication and restricting inbound communication to instances in the same default security group. Following security groups are locked down even further, allowing only outbound communication and not allowing any inbound traffic at all unless modified by the user.

 

Benefits of OpenStack Neutron Security Groups:

1. Granular Control: With OpenStack Neutron Security Groups, administrators can define specific rules to control traffic flow at the instance level. This granular control enables the implementation of stricter security measures, ensuring that only authorized traffic is allowed.

2. Enhanced Security: By utilizing OpenStack Neutron Security Groups, organizations can strengthen the security posture of their cloud environments. Security Groups help mitigate risks by preventing unauthorized access, reducing the surface area for potential attacks, and minimizing the impact of security breaches.

3. Simplified Management: OpenStack Neutron Security Groups offer a centralized approach to managing network security. Administrators can define and manage security rules across multiple instances, making enforcing consistent security policies throughout the cloud infrastructure easier.

4. Dynamic Adaptability: OpenStack Neutron Security Groups allow dynamic adaptation to changing network requirements. As instances are created or terminated, security rules can be automatically applied or removed, ensuring that security policies remain up-to-date and aligned with the evolving infrastructure.

Implementation Example:

To illustrate the practical implementation of OpenStack Neutron Security Groups, let’s consider a scenario where an organization wants to deploy a multi-tier web application in its OpenStack cloud. They can create separate security groups for each tier, such as web servers, application servers, and database servers, with specific access rules for each group. This segregation ensures that traffic is restricted to only the necessary ports and protocols, reducing the attack surface and enhancing overall security.

 

OpenStack Neutron Security Groups: The Components

Control, Network, and Compute

The OpenStack architecture for network-as-a-service Neutron-based clouds divides into Control, Network, and Compute components. At a very high level, the control tier runs the Application Programming Interfaces (API), compute is the actual hypervisor with various agents, and the network component provides network service control.

All these components use a database and message bus. Examples of a database include MySQL, PostgreSQL, and MariaDB; for message bus, we have, for example, RabbitMQ and Qpid. The default plugins are Modular Layer 2 (ML2) and Open vSwitch. 

Openstack Neutron Security Groups

Ports, Networks, and Subnets

Neutrons’ network-as-a-service core and the base for the API are elementary. It consists of Ports, Networks, and Subnets. Ports hold the IP and MAC address and define how a VM connects to the network. They are an abstraction for VM connectivity.

A network is a Layer 2 broadcast domain, represented as an external network (reachable from the internet), provider network (mapped to an existing network), and tenant network, created by cloud users, isolated from other tenant networks. Layer 3 routers connect networks; subnets are the subnet spaces attached to networks.

 

OpenStack Neutron: Components

OpenStack networking with Neutron provides an API to create various network objects. This powerful abstraction allows the creation of networks in software and the ability to attach multiple subnets to a single network. The Neutron Network is isolated or connected with Layer 3 routers for inter-network connectivity.

Neutron employs the concepts of floating IP, best understood as a 1:1 NAT translation. The term “floating” comes from the fact that it can be modified on the fly between instances.

It may seem that floating IPs are assigned to instances but are assigned to ports. Everything gets assigned to ports – fixed IP, Security Groups, and MAC addresses. SNAT (source NAT) or DNAT (destination NAT) enables inbound and outbound to and from tenants. DNAT modifies the IP address of the destination in the IP packet header, and SNAT modifies the sender’s IP address in IP packets. 

 

Open vSwitch and the Linux bridge

Neutron can be integrated for switching functionality with Open vSwitch and Linux bridge. By default, it integrates with the ML2 plugin and Open vSwitch. Open vSwitch, and Linux bridges are virtual switches orchestrating the network infrastructure.

For enhanced networking, the virtual switch can be controlled outside Neutron by 3rd party network products and SDN controllers via plugins. The Open vSwitch may also be replaced or used in parallel. Recently, there have been many enhancements to the classic forwarding with Open vSwitch and Linux Bridge.

We now have numerous high availability options with L3 High Availability & VRRP and Distributed Virtual Routing (DVR) feature. DVR essentially moves to route from the Layer 3 agent to compute nodes. However, it only works with tunnels, and L2pop enabled, requiring the compute nodes to have external network connectivity.

For production environments, these HA features are a welcomed update. The following shows three bridges created in Open vSwitch – br-ex, br-ens3, and br-int. The br-int is the main integration bridge; all others connect via particular patch ports.

 

Openstack Neutron Security Groups

 

Network-as-a-service and agents

Neutron has several parts backed by a relationship database. The Neutron server is the API, and the RPC service talks to the agents (L2 agent, L3 agent, DHCP agent, etc.) via the message queue. The Layer 2 agent runs on the compute and communicates with the Neutron server with RPC. Some deployments don’t have an L2 agent, for example, if you are using an SDN controller.

Also, if deploying the Linux bridge instead of the Open vSwitch, you wouldn’t have the Open vSwitch agent; instead, use the standard Linux Bridge utilities. The Layer 3 agent runs on the Neutron network node and uses Linux namespaces to implement multiple copies of the IP stack. It also runs the metadata agent and supports static routing. 

 

Linux Namespaces

An integral part of Neutron networking is the Linux namespace for object isolation. Namespaces enable multi-tenancy and allow overlapping IP address assignment for tenants – an essential requirement for many cloud environments. Every network and network service a user creates is a namespace.

For example, the qdhcp namespace represents the DHCP services, qrouter namespace represents the router namespace and the qlbaas represents the load balance service based on HAProxy. The qrouter namespaces provide routing amongst networks – north-south and east-west traffic. It also performs SNAT and DNAT in classic non-DVR scenarios. For certain cases with DVR, the snat namespaces perform SNAT for north-south network traffic.

 

OpenStack Neutron Security Groups

OpenStack has the concept of OpenStack Neutron Security Groups. They are a tenant-level firewall enabling Neutron to provide distributed security filtering. Due to the limitations of Open vSwitch and iptables, the Linux bridge controls the security groups. Neutron security groups are not directly added to the Integration bridge. Instead, they are implemented on the Linux bridge that connects to the integrated bridge.

The reliance on the Linux bridge stems from Neutron’s inability to place iptable rules on tap interfaces connected to the Open vSwitch. Once a Security Group has been applied to the Neutron port, the rules are translated into iptable rules, which are then applied to the node hosting the respective instance.

Neutron also can protect instances with perimeter firewalls, known as Firewall-as-a-service.

Firewall rules implemented with perimeter firewalls utilizing iptables within a Neutron routers namespace instead of configuring on every compute host. The following diagram displays ingress and egress rules for the default security group. Tenants that don’t have a security group are placed in the default security group.

 

Openstack Neutron Security Groups

 

Conclusion:

OpenStack Neutron Security Groups offer a robust solution for managing network security in OpenStack-based cloud environments. By providing granular control, enhanced security, simplified management, and dynamic adaptability, they contribute significantly to safeguarding cloud deployments. As organizations continue to embrace the benefits of OpenStack, leveraging the power of Neutron Security Groups becomes paramount in building secure and resilient cloud infrastructures.

wide-open-spaces-2021-08-31-22-42-30-utc

Neutron Networks

 

openstack lbaas architecture

 

Neutron Networks

In today’s digital age, connectivity has become essential to our personal and professional lives. As the demand for seamless and reliable network connections grows, businesses seek innovative solutions to meet their networking needs. One such solution that has gained significant attention is Neutron Networks. In this blog post, we will delve into Neutron Networks, exploring its features, benefits, and how it is revolutionizing connectivity.

Neutron Networks is an open-source networking project within the OpenStack platform. It acts as a networking-as-a-service (NaaS) solution, providing a programmable interface for creating and managing network resources. Unlike traditional networking methods, Neutron Networks offers a flexible framework that allows users to define and control their network topology, enabling greater customization and scalability.

 

Highlights: Neutron Networks

  • The Role of OpenStack Networking

OpenStack networking and neutron networks offer virtual networking services and connectivity to and from Instances. It plays a significant role in OpenFlow and SDN adoption. The Neutron API manages the configuration of individual networks, subnets, and ports. It enhanced the original Nova-network implementation and introduced support for 3rd party plugins, such as Open vSwitch (OVS) and Linux bridge.

OVS and LinuxBridge provide Layer 2 connectivity with VLANs or Overlay encapsulation technologies, such as GRE or VXLAN. Neutron is pretty basic, but their capability is gaining momentum with each distribution release with the ability to include an OpenStack neutron load balancer.

 

You may find the following helpful post for pre-information:

  1. OpenStack Neutron Security Groups
  2. Neutron Network
  3. OpenStack Architecture

 



OpenStack Neutron Load Balancer.

Key Neutron Networks Discussion Points:


  • Introduction to Neutron networks and what is involved.

  • Highlighting the different components of Neutron networks.

  • Discussing the switching methods.

  • Technical details load balancing and OpenStack lbaas architecture.

  • A final note on HAProxy.

 

Back to Basics with Neutron Networks

OpenStack Networking

OpenStack Networking is a pluggable, API-driven approach to control networks in OpenStack. OpenStack Networking exposes a programmable application interface (API) to users and passes requests to the configured network plugins for additional processing. A virtual switch is a software application that connects virtual machines to virtual networks. The virtual switch operated at the data link layer of the OSI model, Layer 2. A considerable benefit to Neutron is that it supports multiple virtual switching platforms, including Linux bridges provided by the bridge kernel module and Open vSwitch.

 

  • A key point: Ansible and OpenStack

Ansible architecture offers excellent flexibility and can be used ways to leverage Ansible modules and playbook structures to automate frequent operations with OpenStack. With Ansible, you have a module to manage every layer of the OpenStack architecture. At the time of this writing, Ansible 2.2 includes modules to call the following APIs

  • Keystone: users, groups, roles, projects
  • Nova: servers, keypairs, security groups, flavors
  • Neutron: ports, network, subnets, routers, floating IPs
  • Ironic: nodes, introspection
  • Swift Objects
  • Cinder volumes
  • Glance images

 

Key Features of Neutron Networks:

a) Network Abstraction: Neutron Networks abstract the underlying network infrastructure, allowing users to manage and configure virtual networks without worrying about the complexities of the physical infrastructure.

b) Multi-Tenancy Support: Organizations can create isolated virtual networks with Neutron Networks, granting multiple tenants secure access to their network resources within a shared infrastructure.

c) Extensibility: Neutron Networks supports various plugins and drivers, enabling seamless integration with various networking technologies and devices.

d) Load Balancing and Firewalling: Neutron Networks offer built-in load balancing and firewalling capabilities, empowering organizations to enhance network security and optimize traffic distribution.

Benefits of Neutron Networks:

a) Improved Agility: By providing a programmable interface, Neutron Networks enables organizations to quickly adapt their network infrastructure to changing business requirements, reducing time-to-market for new applications and services.

b) Enhanced Security: Neutron Networks’ multi-tenancy support and built-in firewalling capabilities ensure secure isolation and protection of network resources, minimizing the risk of unauthorized access and data breaches.

c) Scalability and Flexibility: With Neutron Networks, businesses can quickly scale their network infrastructure up or down based on demand, ensuring optimal performance and resource utilization.

d) Cost Optimization: Neutron Networks eliminates the need for expensive physical networking equipment by leveraging virtualization, reducing capital and operational expenses associated with traditional networking approaches.

Real-World Applications of Neutron Networks:

Neutron Networks has found applications across various industries, including:

a) Cloud Service Providers: Neutron Networks enables cloud service providers to offer customers customizable and scalable networking solutions, enhancing the overall cloud experience.

b) Software-Defined Networking (SDN): Neutron Networks are a vital component of SDN architectures, allowing organizations to control and manage their network infrastructure programmatically.

c) Internet of Things (IoT): Neutron Networks provide a reliable and scalable networking solution for IoT deployments, facilitating seamless communication and data transfer between connected devices.

 

Neutron Networks

Neutron networks support a wide range of networks. Including Flat, Local, VLAN, and VXLAN/GRE-based networks. Local networks are isolated and local to the Compute node. In a FLat network, there is no VLAN tagging. VLAN-capable networks implement 802.1Q tagging; segmentation is based on VLAN tags. Similar to the physical world, hosts in VLANs are considered to be in the same broadcast domain, and inter-VLAN communication must pass a Layer 3 device.

GRE and VXLAN encapsulation technologies create the concept known as overlay networking. Network Overlays interconnect layer 2 segments over an Underlay network, commonly an IP fabric but could also be represented as a Layer 2 fabric. Their use case derives from multi-tenancy requirements and the scale limitations of VLAN-based networks.

 

The virtual switches: Open vSwitch and Linux Bridge

Open vSwitch and Linux Bridge plugins are monolithic and cannot be used simultaneously. A new plugin, introduced in Havana, called Modular Layer 2 ( ML2 ), allows the use of multiple Layer 2 plugins simultaneously. It works with existing OVS and LinuxBridge agents and is intended to replace the associated plugins.

OpenStack foundations are pretty flexible. OVS and other vendor appliances could be used parallel to manage virtual networks in an OpenStack Neutron deployment. Plugins can replace OVS with a physically managed switch to handle the virtual networks. 

 

Open vSwitch

The OVS bridge is a popular software-based switch orchestrating the underlying virtualized networking infrastructure. It comprises a kernel module, a vSwitch daemon, and a database server. The kernel module is the data plane, similar to an ASIC on a physical switch. The vSwitch daemon is a Linux process creating controls so the kernel can forward traffic.

The database server is the Open vSwitch Database Server ( OVSDB) and is local on every host. OVS consists of 4 distinct elements, – Tap devices, Linux bridges, Virtual Ethernet cables, OVS bridges, and OVS patch ports. Virtual Ethernet cables, known as veth mimic network patch cords. They connect to other bridges and namespaces (namespaces discussed later). An OVS bridge is a virtualized switch. It behaves similarly to a physical switch and maintains MAC addresses.

 

openstack networking

 

OpenStack networking deployment details

A few OpenStack deployment methods exist, such as Maas, Mirantis Fuel, Kickstack, and Packstack. They all have their advantages and disadvantages. Packstack suits small deployments, Proof of Concepts, and other test environments. It’s a simple Puppet-based installer. It uses SSH to connect to the nodes and invokes a puppet run to install OpenStack.

Additional configurations can be passed to Packstack via an answer file. As part of the Packstack run, a file called keystonerc_admin is created. Keystone is the identity management component of OpenStack. Each component in OpenStack registers with Keystone. It’s easier to source the file than those values in the source file are automatically placed in the shell environment.

Cat this file to see its content and get the login credentials. You will need this information to authenticate and interact with OpenStack.

openstack neutron load balancer

 

OpenStack lbaas Architecture

Neutron networks 

OpenStack is a multi-tenant platform; each tenant can have multiple private networks and network services isolated through network namespaces. Network namespaces allow tenants to have overlapping networks with other tenants. Consider a namespace to an enhanced VRF instance connected to one or more virtual switches. Neutron uses a “qrouter”“glbaas” and “qdhcp” namespace.

Regardless of the network plugins installed, you need to install the neutron-server service at a minimum. This service will expose the Neutron API for external administration. It is configured to listen to API calls on ALL addresses by default. This can be changed in the Neutron.conf file by editing the bind_host – 0.0.0.0.

  • “Neutron configuration file is found at /etc/neutron/neutron.conf”

OpenStack networking provides extensions that allow the creation of virtual routers and virtual load balancers with an OpenStack neutron load balancer. Virtual routers are created with the neutron-l3-agent. They perform Layer 3 forwarding and NAT.

A router default performs Source NAT on traffic from an instance destined to an external service. Source NAT modifies the packet source appearing to upstream devices as if it came from the router’s external interface. When users want direct inbound access to an instance, Neutron uses what is known as a Floating IP address. It is similar to the analogy of Static NAT; one-to-one mapping of an external to an internal address. 

  • “Neutron stores its L3 configuration in the l3_agent.ini files.”

The following screenshot displays that the L3 agent must first be associated with an interface driver before you can start it. The interface driver must correspond to the chosen network plugin, for example, LinuxBridge or OVS. The crudini commands set this.openstack lbaas architecture

OpenStack neutron load balancer

The OpenStack lbaas architecture consists of the neutron-lbaas-agent and leverages the open-source HAProxy to load balance traffic destined to VIPs. HAProxy is a free, open-source load balancer. LBaaS supports third-party drivers, and they will be discussed in later posts.

Load Balancing as a service enables tenants to scale their applications programmatically through Neutron API. It supports basic load-balancing algorithms and monitoring capabilities.

The OpenStack lbaas architecture load balancing algorithms are restricted to round-robin, least connections, and source IP. It can do basic TCP connect tests for monitoring and complete Layer 7 tests that support HTTP status codes.

 

HAProxy installation

As far as I’m aware, it doesn’t support SSL offloading. The HAProxy driver is installed in one ARM mode, which uses the same interface for ingress and egress traffic. It is not the default gateway for instances, so it relies on Source NAT for proper return traffic forwarding. Neutron stores its configuration in the lbaas_agent.ini files.

Like the l3 agent, it must associate with an interface driver before starting it – “crudini –set /etc/neutron/lbaas_agent.ini DEFAULT interface_driver neutron.agent.linux.interface.OVSInterfaceDriver”. Both agents use network namespaces for isolated forwarding and load-balancing contexts.

 

Conclusion:

In conclusion, Neutron Networks has emerged as a game-changer in the networking world, offering organizations the flexibility, scalability, and security they need in today’s digital landscape. With its innovative features and benefits, Neutron Networks is paving the way for a new era of connectivity, empowering businesses to unlock the full potential of their network infrastructure. As the demand for reliable and efficient networking solutions continues to grow, Neutron Networks is well-positioned to shape the future of connectivity.

openstack neutron load balancer