Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

header-navigation
keyboard_arrow_up
list Table of Contents
file_download PDF
{ "lLangCode": "en", "lName": "English", "lCountryCode": "us", "transcode": "en_US" }
English
keyboard_arrow_right

RSH ALG

date_range 28-Nov-23

The Remote Shell (RSH) provides a conduit to execute commands on a remote host. Unlike Telnet or SSH, which create a terminal shell session on the remote system, RSH passes the command and authentication data. The protocol uses the 514 TCP port to pass the authentication data and the command. The server returns the stdout of the command to the client's source port. RSH requires an ALG to pass a second client port to the server for transmission of the stderr stream.

Understanding the RSH ALG

The Remote Shell (RSH) Application Layer Gateway (ALG) processes RSH packets that initiate requests and open two gates to allow return packets from the reverse direction to the client. One gate is used for an identification (ident) session to apply authorization and the other gate is used for a standard error (stderr) session to transfer an error message.

Note:

The RSH ALG does not work if Port Address Translation (PAT) is configured. The RSH requires the port range to be between 512 to 1024. The source NAT module cannot match this port range.

Example: Configuring the RSH ALG

This example shows how to configure the RSH ALG in route or NAT mode. The configuration allows RSH traffic to pass through a device, and it transfers remote commands and results between a client and a server located on opposite sides of a Juniper Networks device.

Requirements

This example uses the following hardware and software components:

  • An SRX Series Firewall

  • Two PCs (server and client)

Before you begin:

Overview

In this example, first you configure network interfaces on the device. Create security zones and assign interfaces to the zones, and configure a policy to allow RSH traffic to go through an SRX Series Firewall.

Then you create a static NAT rule set rs1 with a rule r1 to match with the destination address 40.0.172.10/32, and you create a static NAT prefix with address 40.0.172.45/32.

Next you create a source NAT pool src-p1 with a source rule set src-rs1 to translate packets from interface fe-3/0/0.0 to interface fe-3/0/1.0. For matching packets, the source address is translated to an IP address in the src-p1 pool.

Then you create a destination NAT pool des-p1 with a destination rule set des-rs1 to translate packets from zone trust to destination address 40.0.172.10/32. For matching packets, the destination address is translated to an IP address in the des-p1 pool. Finally, you enable RSH ALG trace options.

Topology

Figure 1 shows the RSH ALG topology.

Figure 1: RSH ALG TopologyRSH ALG Topology

Configuration

To configure the RSH ALG, perform these tasks:

Configuring a Route Mode

CLI Quick Configuration

To quickly configure this example, copy the following commands, paste them into a text file, remove any line breaks, change any details necessary to match your network configuration, copy and paste the commands into the CLI at the [edit] hierarchy level, and then enter commit from configuration mode.

content_copy zoom_out_map
set interfaces ge-0/0/0 unit 0 family inet address 10.208.172.58/21
set interfaces fe-3/0/0 unit 0 family inet address 30.3.3.149/8
set interfaces fe-3/0/1 unit 0 family inet address 40.4.4.149/8
set security zones security-zone trust host-inbound-traffic system-services all
set security zones security-zone trust host-inbound-traffic protocols all
set security zones security-zone trust interfaces fe-3/0/0.0
set security zones security-zone untrust host-inbound-traffic system-services all
set security zones security-zone untrust host-inbound-traffic protocols all
set security zones security-zone untrust interfaces fe-3/0/1.0
set security policies from-zone trust to-zone untrust policy rsh match source-address any
set security policies from-zone trust to-zone untrust policy rsh match destination-address any
set security policies from-zone trust to-zone untrust policy rsh match application junos-rsh
set security policies from-zone trust to-zone untrust policy rsh then permit
Step-by-Step Procedure

The following example requires you to navigate various levels in the configuration hierarchy. For instructions on how to do that, see Using the CLI Editor in Configuration Mode in the CLI User Guide.

To configure route mode:

  1. Configure interfaces.

    content_copy zoom_out_map
    [edit interfaces]
    user@host#set ge-0/0/0 unit 0 family inet address 10.208.172.58/21
    user@host#set fe-3/0/0 unit 0 family inet address 30.3.3.149/8
    user@host#set fe-3/0/1 unit 0 family inet address 40.4.4.149/8
    
  2. Configure zones and assign interfaces to the zones.

    content_copy zoom_out_map
    [edit security zones security-zone]
    user@host#set trust host-inbound-traffic system-services all
    user@host#set trust host-inbound-traffic protocols all
    user@host#set trust interfaces fe-3/0/0.0
    user@host#set untrust host-inbound-traffic system-services all
    user@host#set untrust host-inbound-traffic protocols all
    user@host#set untrust interfaces fe-3/0/0.1
    
  3. Configure an RSH policy that allows RSH traffic from the trust zone to the untrust zone.

    content_copy zoom_out_map
    [edit security policies from-zone trust to-zone untrust]
    user@host#set policy rsh match source-address any
    user@host#set policy rsh match destination-address any
    user@host#set policy rsh match application junos-rsh
    user@host#set policy rsh then permit
    
Results

From configuration mode, confirm your configuration by entering the show interfaces, show security zones, and show security policies commands. If the output does not display the intended configuration, repeat the configuration instructions in this example for correction.

For brevity, this show output includes only the configuration that is relevant to this example. Any other configuration on the system has been replaced with ellipses (...).

content_copy zoom_out_map
[edit]
user@host# show interfaces
ge-0/0/0 {
    unit 0 {
        family inet {
            address 10.208.172.58/21;
        }
    }
}
fe-3/0/0 {
    unit 0 {
        family inet {
            address 30.3.3.149/8;
        }
    }
}
fe-3/0/1 {
    unit 0 {
        family inet {
            address 40.4.4.149/8;
        }
    }
}
content_copy zoom_out_map
[edit]
user@host# show security zones
..
    security-zone trust {
    host-inbound-traffic {
        system-services {
            all;
        }
        protocols {
            all;
        }
    }
    interfaces {
        fe-3/0/0.0;
        }
}
security-zone untrust {
    host-inbound-traffic {
        system-services {
            all;
        }
        protocols {
            all;
        }
    }
    interfaces {
        fe-3/0/1.0;
        }
}
...
content_copy zoom_out_map
[edit]
user@host# show security policies
from-zone trust to-zone untrust {
    policy rsh {
        match {
            source-address any;
            destination-address any;
            application junos-rsh;
        }
        then {
            permit;
        }
    }
}

If you are done configuring the device, enter commit from configuration mode.

Configuring a Static NAT Rule Set

CLI Quick Configuration

To quickly configure this example, copy the following commands, paste them into a text file, remove any line breaks, change any details necessary to match your network configuration, copy and paste the commands into the CLI at the [edit] hierarchy level, and then enter commit from configuration mode.

content_copy zoom_out_map
set security nat static rule-set rs1 from zone trust 
set security nat static rule-set rs1 rule r1 match destination-address 40.0.172.10/32
set security nat static rule-set rs1 rule r1 then static-nat prefix 40.0.172.45/32
Step-by-Step Procedure

The following example requires you to navigate various levels in the configuration hierarchy. For instructions on how to do that, see Using the CLI Editor in Configuration Mode in the CLI User Guide.

To configure a static NAT rule set:

  1. Create a static NAT rule set.

    content_copy zoom_out_map
    [edit security nat static rule-set rs1]
    user@host#set from zone trust 
    
  2. Define the rule to match with the destination address.

    content_copy zoom_out_map
    [edit security nat static rule-set rs1]
    user@host#  set rule r1 match destination-address 40.0.172.10/32
    
  3. Define the static NAT prefix for the device.

    content_copy zoom_out_map
    [edit security nat static rule-set rs1]
    user@host#  set rule r1 then static-nat prefix 40.0.172.45/32
    
Results

From configuration mode, confirm your configuration by entering the show security nat command. If the output does not display the intended configuration, repeat the configuration instructions in this example to correct it.

content_copy zoom_out_map
[edit]
user@host# show security nat 
static {
    rule-set rs1 {
        from zone trust;
        rule r1 {
            match {
                destination-address 40.0.172.10/32;
            }
            then {
                static-nat {
                    prefix {
                        40.0.172.45/32;
                    }
                }
            }
        }
    }
}

If you are done configuring the device, enter commit from configuration mode.

Configuring a Source NAT Pool and Rule Set without PAT

CLI Quick Configuration
Note:

The RSH ALG does not support PAT configuration. The RSH ALG requires the stderr port range to be between 512 to 1024. The source NAT module cannot match this port range.

To quickly configure this example, copy the following commands, paste them into a text file, remove any line breaks, change any details necessary to match your network configuration, copy and paste the commands into the CLI at the [edit] hierarchy level, and then enter commit from configuration mode.

content_copy zoom_out_map
set security nat source pool src-p1 address 40.0.172.100/32 to 40.0.172.101/32
set security nat source pool src-p1 port no-translation
set security nat source rule-set src-rs1 from interface fe-3/0/0.0
set security nat source rule-set src-rs1 to interface fe-3/0/1.0 
set security nat source rule-set src-rs1 rule r1 match source-address 30.0.0.0/8
set security nat source rule-set src-rs1 rule r1 match destination-address 40.0.0.0/8 
set security nat source rule-set src-rs1 rule r1 then source-nat pool src-p1
Step-by-Step Procedure

The following example requires you to navigate various levels in the configuration hierarchy. For instructions on how to do that, see Using the CLI Editor in Configuration Mode in the CLI User Guide.

To configure a source NAT pool and rule set:

  1. Create a source NAT pool.

    content_copy zoom_out_map
    [edit security nat source]
    user@host#set pool src-p1 address 40.0.172.100/32 to 40.0.172.101/32
    
  2. Create a source NAT pool with no port translation.

    content_copy zoom_out_map
    [edit security nat source ]
    set pool src-p1 port no-translation
    
  3. Create a source NAT rule set.

    content_copy zoom_out_map
    [edit security nat source]
    user@host#  set rule-set src-rs1 from interface fe-3/0/0.0
    user@host# set rule-set src-rs1 to interface fe-3/0/1.0 
    
  4. Configure a rule that matches packets and translates the source address to an address in the source pool.

    content_copy zoom_out_map
    [edit security nat source]
    user@host#  set rule-set src-rs1 rule r1 match source-address 30.0.0.0/8
    
  5. Configure a rule that matches packets and translates the destination address to an address in the source pool.

    content_copy zoom_out_map
    [edit security nat source]
    user@host#  set rule-set src-rs1 rule r1 match destination-address 40.0.0.0/8 
    
  6. Configure a source NAT pool in the rule.

    content_copy zoom_out_map
    [edit security nat source]
    user@host# set rule-set src-rs1 rule r1 then source-nat pool src-p1
    
Results

From configuration mode, confirm your configuration by entering the show security nat command. If the output does not display the intended configuration, repeat the configuration instructions in this example to correct it.

content_copy zoom_out_map
[edit]
user@host# show security nat 
source {
    pool src-p1 {
        address {
            40.0.172.100/32 to 40.0.172.101/32;
        }
        port no-translation;
    }
    rule-set src-rs1 {
        from interface fe-3/0/0.0;
        to interface fe-3/0/1.0;
        rule r1 {
            match {
                source-address 30.0.0.0/8;
                destination-address 40.0.0.0/8;
            }
            then {
                source-nat {
                    pool {
                        src-p1;
                    }
                }
            }
        }
    }
}

If you are done configuring the device, enter commit from configuration mode.

Configuring a Destination NAT Pool and Rule Set

CLI Quick Configuration

To quickly configure this example, copy the following commands, paste them into a text file, remove any line breaks, change any details necessary to match your network configuration, copy and paste the commands into the CLI at the [edit] hierarchy level, and then enter commit from configuration mode.

content_copy zoom_out_map
set security nat destination pool des-p1 address 40.0.172.45/32 
set security nat destination rule-set des-rs1 from zone trust
set security nat destination rule-set des-rs1 rule des-r1 match source-address 30.0.172.12/32
set security nat destination rule-set des-rs1 rule des-r1 match destination-address 40.0.172.10/32
set security nat destination rule-set des-rs1 rule des-r1 then destination-nat pool des-p1
Step-by-Step Procedure

The following example requires you to navigate various levels in the configuration hierarchy. For instructions on how to do that, see Using the CLI Editor in Configuration Mode in the CLI User Guide.

To configure a destination NAT pool and rule set:

  1. Create a destination NAT pool.

    content_copy zoom_out_map
    [edit security nat destination]
    user@host#set pool des-p1 address 40.0.172.45/32 
    
  2. Create a destination NAT rule set.

    content_copy zoom_out_map
    [edit security nat destination]
    user@host#  set rule-set des-rs1 from zone trust
    
  3. Configure a rule that matches packets and translates the source address to the address in the pool.

    content_copy zoom_out_map
    [edit security nat destination]
    user@host#  set rule-set des-rs1 rule des-r1 match source-address 30.0.172.12/32
    
  4. Configure a rule that matches packets and translates the destination address to the address in the pool.

    content_copy zoom_out_map
    [edit security nat destination]
    user@host#  set rule-set des-rs1 rule des-r1 match destination-address 40.0.172.10/32
    
  5. Configure a source NAT pool in the rule.

    content_copy zoom_out_map
    [edit security nat destination]
    user@host# set rule-set des-rs1 rule des-r1 then destination-nat pool des-p1
    
Results

From configuration mode, confirm your configuration by entering the show security nat command. If the output does not display the intended configuration, repeat the configuration instructions in this example to correct it.

content_copy zoom_out_map
[edit]
user@host# show security nat 
destination {
    pool des-p1 {
        address {
            40.0.172.45/32;
        }
    }
    rule-set des-rs1 {
        from zone trust;
        rule des-r1 {
            match {
                source-address 30.0.172.12/32;
                destination-address 40.0.172.10/32;
            }
            then {
                destination-nat {
                    pool {
                        des--p1;
                    }
                }
            }
        }
    }
}

If you are done configuring the device, enter commit from configuration mode.

Enabling RSH ALG Trace Options

CLI Quick Configuration

To quickly configure this example, copy the following commands, paste them into a text file, remove any line breaks, change any details necessary to match your network configuration, copy and paste the commands into the CLI at the [edit] hierarchy level, and then enter commit from configuration mode.

content_copy zoom_out_map
set security alg rsh traceoptions flag all
set security alg traceoptions file trace
set security alg traceoptions file size 1g
set security alg traceoptions level verbose
Step-by-Step Procedure

The following example requires you to navigate various levels in the configuration hierarchy. For instructions on how to do that, see Using the CLI Editor in Configuration Mode in the CLI User Guide.

To enable RSH ALG trace options:

  1. Enable RSH ALG trace options.

    content_copy zoom_out_map
    [edit security alg]
    user@host#set sql traceoptions flag all
    
  2. Configure a filename to receive output from the tracing operation.

    content_copy zoom_out_map
    [edit security alg]
    user@host#set traceoptions file trace
    
  3. Specify the maximum trace file size.

    content_copy zoom_out_map
    [edit security alg]
    user@host#set traceoptions file size 1g
    
  4. Specify the level of tracing output.

    content_copy zoom_out_map
    [edit security alg]
    user@host#set traceoptions level verbose
    
Results

From configuration mode, confirm your configuration by entering the show security alg command. If the output does not display the intended configuration, repeat the configuration instructions in this example to correct it.

content_copy zoom_out_map
[edit]
user@host# show security alg
traceoptions {
    file trace size 1g;
    level verbose;
}
rsh traceoptions flag all;

If you are done configuring the device, enter commit from configuration mode.

Verification

Confirm that the configuration is working properly.

Verifying the RSH ALG Control Session

Purpose

Verify that the RSH command is executed and all the RSH control and data sessions are created.

Action

From operational mode, enter the show security flow session command.

content_copy zoom_out_map
user@host>show security flow session
Session ID: 2924, Policy name: rsh/6, Timeout: 2, Valid
Resource information : RSH ALG, 2, 0
  In: 30.0.172.12/1023 --> 40.0.172.45/514;tcp, If: fe-3/0/0.0, Pkts: 7, Bytes: 320
  Out: 40.0.172.45/514 --> 30.0.172.12/1023;tcp, If: fe-3/0/1.0, Pkts: 7, Bytes: 314

Session ID: 2925, Policy name: rsh/6, Timeout: 2, Valid
Resource information : RSH ALG, 2, 24
  In: 40.0.172.45/44864 --> 30.0.172.12/113;tcp, If: fe-3/0/1.0, Pkts: 5, Bytes: 278
  Out: 30.0.172.12/113 --> 40.0.172.45/44864;tcp, If: fe-3/0/0.0, Pkts: 5, Bytes: 345

Session ID: 2926, Policy name: rsh/6, Timeout: 2, Valid
Resource information : RSH ALG, 2, 23
  In: 40.0.172.45/1023 --> 30.0.172.12/1022;tcp, If: fe-3/0/1.0, Pkts: 4, Bytes: 216
  Out: 30.0.172.12/1022 --> 40.0.172.45/1023;tcp, If: fe-3/0/0.0, Pkts: 3, Bytes: 164
Total sessions: 3
Meaning
  • Session ID—Number that identifies the session. Use this ID to get more information about the session such as policy name, number of packets in and out.

  • Policy name—Policy name that permitted the traffic.

  • In—Incoming flow (source and destination IP addresses with their respective source and destination port numbers, session is TCP, and source interface for this session is fe-3/0/0.0).

  • Out—Reverse flow (source and destination IP addresses with their respective source and destination port numbers, session is TCP, and destination interface for this session is fe-3/0/1.0).

Verifying the RSH ALG

Purpose

Verify that the RSH ALG is enabled.

Action

From operational mode, enter the show security alg status command.

content_copy zoom_out_map
user@host>show security alg status
ALG Status :
  PPTP     : Enabled
  RSH      : Disabled
  RTSP     : Enabled
  SCCP     : Enabled
  SIP      : Enabled
  TALK     : Enabled
  TFTP     : Enabled
  IKE-ESP  : Disabled
Note:

The RSH ALG is disabled by default. To enable the RSH ALG, enter the set security alg rsh command in the configuration mode.

Meaning

The output shows the RSH ALG status as follows:

  • Enabled—Shows the RSH ALG is enabled.

  • Disabled—Shows the RSH ALG is disabled.

Verifying the RSH ALG Resource Manager Group

Purpose

Verify the total number of resource manager groups and active groups that are used by the RSH ALG.

Action

From operational mode, enter the show security resource-manager group active command.

content_copy zoom_out_map
user@host>show security resource-manager group active
Group ID 1: Application - RSH ALG
				Total groups 677, active groups 1

Verifying the RSH ALG Resource Information

Purpose

Verify the total number of resources and active resources that are used by the RSH ALG.

Action

From operational mode, enter the show security resource-manager resource active command.

content_copy zoom_out_map
user@host>show security resource-manager resource active
Resource ID 2: Group ID - 1, Application - RSH ALG

  		  Resource ID 1: Group ID - 1, Application - RSH ALG
			  Total Resources 4044, active resources 2
footer-navigation