Junos Security is dead! Long live Junos Security!

I was hoping that title would catch your attention.

First and foremost this is a technical blog to discuss neat tricks and tips that I use daily, but sometime it’s a good idea to jump off the path and take a look at what is going on in the tech world. It is high time we start looking past traditional security firewalls or Next-Generation Firewalls and see where the path takes us.

For starters, I was recently at the Juniper Ambassador’s Conference and got to speak with the brilliant minds at Juniper Networks. I am quite sure everyone has heard about the significant changes that has been occurring at Juniper, and like many of you I had my concerns/reservations. While it is important to note is that there are still plenty of opportunities to improve the realm of Junos security in the short term I am excited for what is to come.

I feel that there is always going to be a need for traditional hardware firewalls in the network. Certain features make it extremely tough to remove hardware appliances completely; in particular I am talking about the edge firewalls that handle massive amounts of IPSEC tunnels or NATing public/private IP’s. In the future it would not be a long shot to put security functions in other parts of the network. As an example by moving firewall functions to the hypervisor then we can reduce the need of massive firewalls at the head end.

Let’s look at this idea for a moment. Consider the following traditional network:

traditional network

Typically you would have your network segments trunked to an interface on a firewall, or a unique interface per vlan directly connected to the firewall. This works great until you run out of interfaces, bandwidth, or processing power of the firewall – especially for that pesky intra-zone traffic!

Now consider adding security features to the hypervisor, such as a virtual firewall that connects its external interface to a flat vlan, and its internal interface to a specific vlan on the virtual switch. A diagram of such an idea is shown below:

new network

By offloading basic firewall or even IPS features to the hypervisor (which has far more compute power than that of a single hardware firewall) we can now free up the firewall to do more important tasks, and increase our scalability significantly! Combining this solution with some of the cool tools like Firefly Packer to help with automating these deployments you can have a significantly faster turnaround time for the needs of your network. This type of design also helps with reducing the failure domain of the network – if an issue crops up one of the hypervisor firewalls it only affects one group of devices, instead of causing an entire network outage. Smaller failure domains = higher overall stability.

Now certainly there are still a bunch of unanswered questions about designs like these, but this is the start of a significant change in how we all can view security and its application to the network. Sometimes it helps to take a step back from what features are missing in a device, and instead look at the opportunities that exist today and in the future.

Quick Tip: TOS Ping in JUNOS

I recently ran into an issue with Class of Service on an SRX device where DSCP markings on traffic we not being seen on an upstream router when going through an SRX. After running packet captures showing the DSCP-marked traffic leaving the SRX the customer still wanted to proceed with troubleshooting the SRX as being at fault.

Because of this, I wanted to generate traffic with the DSCP markings directly from the SRX. In order to do this we can use a simple ping in order to generate a Type of Service (TOS) value. The command to do so is below:

ping tos <value> <host>

The <value> is where we set a TOS value, and <host> is the destination address we want to ping.

In the example below, we will use a TOS value of 46, and ping the host 1.2.3.4:

ping tos 46 1.2.3.4

From here we can open a second CLI window and can monitor traffic coming in and out of the SRX.

root@SRX> monitor traffic interface ge-0/0/0.0 detail matching "host 1.2.3.4" no-resolve   
Address resolution is OFF.
Listening on ge-0/0/0.0, capture size 1514 bytes

14:09:15.098657 Out IP (tos 0x2e,ECT(0), ttl  64, id 57053, offset 0, flags [none], proto: ICMP (1), length: 84) 1.1.1.1 > 1.2.3.4: ICMP echo request, id 56818, seq 0, length 64
14:09:15.163678  In IP (tos 0x0, ttl  60, id 43312, offset 0, flags [none], proto: ICMP (1), length: 84) 1.2.3.4 > 1.1.1.1: ICMP echo reply, id 56818, seq 0, length 64

Note how the packets are tagged with the TOS 0x2e going out, but the ICMP replies are coming back with the DSCP marker stripped! In this case, an intermediary switch the SRX was connected to was not trusting the DSCP markings. After that issue was corrected here is what we saw instead:

root@SRX> monitor traffic interface ge-0/0/0.0 detail matching "host 1.2.3.4" no-resolve   
Address resolution is OFF.
Listening on ge-0/0/0.0, capture size 1514 bytes

14:09:15.098657 Out IP (tos 0x2e,ECT(0), ttl  64, id 57053, offset 0, flags [none], proto: ICMP (1), length: 84) 1.1.1.1 > 1.2.3.4: ICMP echo request, id 56818, seq 0, length 64
14:09:15.163678  In IP (tos 0x2e,ECT(0), ttl  60, id 43312, offset 0, flags [none], proto: ICMP (1), length: 84) 1.2.3.4 > 1.1.1.1: ICMP echo reply, id 56818, seq 0, length 64

I hope this neat little trick helps someone else out in the future!