This section contains cookbook-style instructions for setting up the following:
Telnet proxy service with and without proxy user authentication
FTP proxy service with and without proxy user authentication
HTTP proxy service
SMTP proxy service
Configuring RADIUS Authentication
Telnet and FTP proxy service with RADIUS user authentication
SecurID clients supported by SunScreen
Telnet and FTP proxy service with SecurID user authentication
The following information is used in this example:
pu1
none
none
bu1
telnet_server
sunscreen_fw
tiny
Add an entry in the /etc/hosts file if it is accessible, for example:
1.2.3.4 telnet_server |
Type the following to make sure the backend Telnet server is accessible:
ping -s telnet_server |
There is no need to create an authorized user.
Create the proxy user:
In the Common Objects section, select Proxy User from the Type list.
Select New Single from the Add New list.
The Proxy User dialog box appears.
Type a name for this Proxy User in the Name field, for example:
pu1 |
Select the User Enabled check box.
Leave the Authorized User Name field empty.
Type a name in the Backend User Name field, for example:
bu1 |
Click the OK button.
Create a Policy Rule.
Click the Add New button in the Policy Rules area of the Policy Rules page.
The Rule Definition dialog box appears.
Select the following values for each field as follows by clicking the down arrow to display the list:
telnet
*
*
ALLOW
PROXY_TELNET
Save the changes:
Test the Telnet Proxy Service
From the client machine:
Make sure the physical connections are good.
Make sure the client machine can access the SunScreen proxy:
ping -s sunscreen_fw |
Test the Telnet proxy service:
telnet sunscreen_fw
pu1@telnet_server
Press the Return key
tiny# telnet sunscreen_fw Trying 70.70.70.1... Connected to sunscreen_fw. Escape character is "^]". SunScreen Telnet Proxy Version 3.2 Username@Hostname: pu1@telnet_server Password: <press return> Trying telnet_server (1.2.3.4) ... Connected to telnet_server SunOS 5.6 login: bu1 Password: bu1_pw |
The following information is used in this example:
pu1
au1
au1_pw
bu1
telnet_server
sunscreen_fw
tiny
Type the following to make sure the backend Telnet Server is accessible:
# ping -s telnet_server |
Add an entry in the /etc/hosts file if it is accessible. For example:
1.2.3.4 telnet_server |
Create an authorized user:
In the Common Objects section, select Authorized User from the Type list.
Select New from the Add New list.
The Authorized User dialog box appears.
Type a name for this authorized user in the Name field, for example:
au1 |
Select the User Enabled check box.
Type the password:
au1_pw |
Select the Enabled check box after the Password field.
Retype the password:
au1_pw |
Click the OK button.
Create the Proxy User:
In the Common Objects section, select Proxy User from the Type list.
Select New from the Add New list.
The Proxy User dialog box appears.
Type a name for this Proxy User in the Name field, for example:
pu1 |
Select the User Enabled check box.
Type the following in the Authorized User Name field:
au1 |
Type a name in the Backend User Name field, for example:
bu1 |
Click the OK button.
Create a Policy Rule:
Save the changes:
Test the Telnet Proxy Service
From the client machine:
Make sure the physical connections are good.
Make sure the client machine can access the SunScreen proxy:
ping -s sunscreen_fw |
Test the Telnet proxy service:
Command issued |
telnet sunscreen_fw |
Username |
pu1@telnet_server |
Password |
au1's password, for example, au1-pw. (Password is not seen because it is echo suppressed.) |
tiny# telnet sunscreen_fw Trying 70.70.70.1... Connected to sunscreen_fw. Escape character is "^]". SunScreen Telnet Proxy Version 3.2 Username@Hostname: pu1@telnet_server Password: au1_pw Trying telnet_server (1.2.3.4) ... Connected to telnet_server SunOS 5.6 login: bu1 Password: au1_pw |
The following information is used in this example:
pu1
none
none
bu1
bu1_pw
ftp_server
sunscreen_fw
tiny
The ping command must be enabled in the Rules page before you can perform the following procedure.
Type the following to make sure the backend FTP Server is accessible:
ping -s ftp_server |
Add an entry in the /etc/hosts file if it is accessible. For example:
1.2.3.4 ftp_server |
There is no need to create an authorized user.
Create the proxy user:
In the Common Objects section, select Proxy User from the Type list.
Select New Single from the Add New list.
The Proxy User dialog box appears.
Type a name for this Proxy User in the Name field, for example:
pu1 |
Select the User Enabled check box.
Leave the Authorized User Name field empty.
Type a name in the Backend User Name field, for example:
bu1 |
Click the OK button.
Create a Policy Rule
Click the Add New button in the Policy Rules area of the Policy Rules page.
The Rule Definition dialog box appears.
Select the following values for each field:
proxy_ftp
*
*
ALLOW
From the PROXY list, select PROXY_FTP.
Enable the FTP command options, for example:
ALLOW
ALLOW
pu1
Click the OK button.
Save the changes:
From the client machine:
Make sure the physical connections are good.
Use the ping command to make sure the client machine can access the SunScreen proxy:
# ping -s sunscreen_fw |
The ping command must be enabled in the Rules page before you can perform this procedure.
Test the FTP proxy service.
For example, the following values produce the screen output in Example C-1:
ftp sunscreen_fw
pu1@ftp_server
put_anything@bu1_pw OR:<none>@bu1_pw For example, zzz@bu1_pwPassword is not seen because it is echo suppressed.
tiny# ftp sunscreen_fw Connected to sunscreen_fw. 220- Proxy: SunScreen FTP Proxy Version 3.2 : Username to be given as <proxy-user>'@'<FTP-server-host> : Password to be given as <proxy-password>'@'<FTP-server-password> 220 Ready. Name (sunscreen_fw: root): pu1@ftp_server 331- Proxy: Authenticate & connect: 331 Password needed to authenticate 'pu1'. Password: <zzz@bu1_pw> OR Password: <@bu1_pw> 230- Proxy: : Authentication mapped 'pu1' to backend user 'bu1'. : Connecting to ftp_server (1.2.3.4) - done. Server: 220 ftp_server FTP server (SunOS 5.6) ready. Proxy: Login on server as 'bu1'. Server: 331 Password required for bu1. Proxy: Supplying password to server. 230 Server: User bu1 logged in. ftp> ls |
The following information is used in this example:
pu1
au1
au1_pw
bu1
bu1_pw
ftp_server
sunscreen_fw
tiny
Use the ping command to make sure the backend FTP Server is accessible:
ping -s ftp_server |
Add an entry in the /etc/hosts file if it is accessible. For example:
1.2.3.4 ftp_server |
Create the authorized user:
In the Common Objects section, select Authorized User from the Type list.
Select New from the Add New list.
The Authorized User dialog box appears.
Type a name for this authorized user in the Name field, for example:
au1 |
Select the User Enabled check box.
Type the password:
au1_pw |
Select the Enabled check box after the Password field.
Retype the password:
au1_pw |
Click the OK button.
Create a Proxy User:
In the Common Objects section, select Proxy User from the Type list.
Select New from the Add New list.
The Proxy User dialog box appears.
Type a name for this Proxy User in the Name field, for example:
pu1 |
Select the User Enabled check box.
Type a name in the Authorized User Name field:
au1 |
Type a name in the Backend User Name field, for example:
bu1 |
Click the OK button.
Create a Policy Rule:
Click the Add New button in the Policy Rules area of the Policy Rules page.
The Rule Definition dialog box appears.
Select the following values for each field:
ftp
*
*
ALLOW
PROXY_FTP
Enable the FTP command options, for example:
ALLOW
ALLOW
pu1
Click the OK button.
Save the changes:
Test the FTP Proxy Service
From the client machine:
Make sure the physical connections are good.
Make sure the client machine can access the SunScreen proxy:
# ping -s sunscreen_fw |
Test the FTP proxy service:
Command issued |
ftp sunscreen_fw |
Username |
pu1@ftp_server |
Password |
For example, au1_pw@bu1_pw (Password is not seen because it is echo suppressed.) |
tiny# ftp sunscreen_fw Connected to sunscreen_fw. 220- Proxy: SunScreen FTP Proxy Version 3.2 : Username to be given as <proxy-user>'@'<FTP-server-host> : Password to be given as <proxy-password>'@'<FTP-server-password> 220 Ready. Name (sunscreen_fw: root): pu1@ftp_server 331- Proxy: Authenticate & connect: 331 Password needed to authenticate 'pu1'. Password: <au1_pw@bu1_pw> 230- Proxy: : Authentication mapped 'pu1' to backend user 'bu1'. : Connecting to ftp_server (1.2.3.4) - done. Server: 220 ftp_server FTP server (SunOS 5.6) ready. Proxy: Login on server as 'bu1'. Server: 331 Password required for bu1. Proxy: Supplying password to server. 230 Server: User bu1 logged in. ftp> ls |
User authentication does not apply.
The following information is used in this example:
gobaby
gobaby/Sun.Net
sunscreen_fw
tiny
Disable the HTTP daemon (for example, httpd), if it is running.
Type the following to make sure the backend HTTP Server is accessible:
ping -s gobaby |
Add an entry in the /etc/hosts file if it is accessible. For example:
1.2.3.4 gobaby |
Create the Proxy User:
In the Common Objects section, select Proxy User from the Type list.
Select New from the Add New list.
The Proxy User dialog box appears.
Type a name for this Proxy User in the Name field, for example:
pu1 |
Leave the Authorized User Name field blank.
Leave the Backend User Name blank.
Click the OK button.
Create a Policy Rule:
Click the Add New button in the Policy Rules area of the Policy Rules page.
The Rule Definition dialog box appears.
Select the following values for each field:
http
*
*
ALLOW
PROXY_HTTP
ALLOW/DENY
Click the OK button.
Save the changes:
Test the HTTP Proxy service
From the client machine:
The screen output appears on the web page.
User authentication does not apply.
Configure addresses and rules for DNS servers and address(es) for SMTP server(s) as follows:
ssadm edit Initial edit> add Address dns0 HOST 1.2.3.4 edit> add Address dns1 HOST 1.2.3.5 edit> add Address dns-servers GROUP { dns0 dns1 } { } edit> add Address smtp-server HOST ... edit> add Rule dns localhost dns-servers ALLOW |
Test spam filtering.
The rule below allows any address to all inbound mailboxes, no relay checking.
edit> add Rule smtp "*" smtp-server ALLOW PROXY_SMTP RELAY edit> save |
Type the following to create a basic mail spam list (list of domains and/or addresses which won't be allowed to send mail):
ssadm edit Initial mail_spam add spam.com ssadm edit Initial mail_spam add 0.0.0.0..255.255.255.255 |
For more information on spam control, see "SMTP Proxy" in SunScreen 3.2 Administrator's Overview.
Type the following to activate the configuration:
ssadm activate Initial |
This refuses mail from any named host in spam.com, any host that has an unregistered address, and any originator name (in MAIL FROM: command) within spam.com.
Now a connection from an unregistered host, or from a registered host under the domain spam.com, looks like this:
% telnet efs 25 Trying 1.2.3.4... Connected to efs Escape character is "^]". 455 Smells like ... bacon ... no, spam! Connection closed by foreign host. |
The reverse-translated name (or lack thereof) has determined the originator is a spammer.
A connection from a registered host not under the domain spam.com looks like this:
% telnet efs 25 Trying 1.2.3.4... Connected to efs Escape character is "^]". 220 efs ESMTP Sendmail 8.7.4/8.7.3; Thu, 11 Mar 1999 19: 34: 40 -0800 (PST) helo me.com 250 efs Hello me.com [3.4.5.6], pleased to meet you mail from: elvis-lives@spam.com 455 Smells like ... bacon ... no, spam! Connection closed by foreign host. |
The connection is aborted because the originating user was determined to be a spammer. elvis-lives@spam.com is an alternate syntax for the mailbox.
Type the following to replace the previous rule with a rule that checks relaying:
edit> add Rule smtp "*" smtp-server ALLOW PROXY_SMTP |
This allows only configured domains in inbound mailbox names.
Type the following to create a basic mail relay list (a list of domains and/or hosts which will/will not be allowed as recipient):
ssadm edit Initial mail_relay add good.org ssadm edit Initial mail_relay add !too.good.org ssadm edit Initial mail_relay add !too-mailer ssadm edit Initial mail_relay add plenty.org |
The ! prefix indicates that the domain or host is not to be allowed; if you are using csh, remember to escape the !, which is a shell meta-character.
Relay processing first compares the recipient domain(s) to those which are NOTs (that is, begin with !); if the recipient is found there, the message is refused.
Second, the recipient domain(s) are compared to the list of OK domains (that is, without !); if found, the recipient is allowed.
Activate the configuration.
This refuses mail to any mailbox in the subdomain too.good.org or for the host too-mailer, but accepts messages bound for any mailbox in other parts of good.org, or any mailbox in plenty.org (from RCPT TO: command).
This example shows mail for allowed recipients, ending in one which will not be relayed-to:
% telnet efs 25 Trying 1.2.3.4... Connected to efs Escape character is "^]". 220 efs ESMTP Sendmail 8.7.4/8.7.3; Thu, 11 Mar 1999 19: 34: 40 -0800 (PST) helo me.com 250 efs Hello me.com [3.4.5.6], pleased to meet you mail from: me@me.com 250 me@me.com... Sender ok rcpt to: <johnny.b@good.org> 250 Recipient ok rcpt to: extra@extra@good.org 250 Recipient ok rcpt to: <chinz@plenty.org> 250 Recipient ok rcpt to: but.not@too.good.org 454 Relay refused Connection closed by foreign host. |
The connection was aborted because the recipient would require a forbidden relay operation.
Other examples of relay addresses that will not be allowed are:
bad1@too-mailer
bad2@too-mailer@good.org
bad3@too.good.org@good.org
@good.org,bad4@too.good.org
@too.good.org,bad5@ok.good.org
The last two bullet items are examples of older, ARPANET-style path naming, and most modern mail transfer agents (MTA), such as sendmail, are not configured to accept them, regardless of whether they pass our relay filtering. Also, mailbox names surrounded by <> are treated as if they there are no <>s.
Test default relay.
If there is no configured relay list, the domain name of the SunScreen host itself is used as the allowed domain. For example, if the SunScreen name is host@domain.com, the relay checking behaves as if the following command was configured as the entire relay list:
ssadm edit Initial mail_relay domain.com |
The following example shows mail which actually gets through:
% telnet efs 25 Trying 1.2.3.4... Connected to efs Escape character is "^]". 220 efs ESMTP Sendmail 8.7.4/8.7.3; Thu, 11 Mar 1999 19: 34: 40 -0800 (PST) helo me.com 250 efs Hello me.com [3.4.5.6], pleased to meet you mail from: me@me.com 250 me@me.com... Sender ok rcpt to: you@good.com 250 Recipient ok rcpt to: really@really.good.org 250 Recipient ok rcpt to: i-got@plenty.org 250 Recipient ok rcpt to: good@and.plenty.org 250 Recipient ok data 354 Enter mail, end with "." on a line by itself Subject: I Love Candy I really, really love good candy ... yummm! Send me some! . 250 UAA01234 Message accepted for delivery quit 221 efs closing connection Connection closed by foreign host. |
After the . (ending the mail session), the proxy and mailer return to the state where the mailer expects a next message (starting with a MAIL FROM: command.
Backslash \ and end-of-line denote command line continuation.
A typical RADIUS configuration uses two Screens, each of which protects the site. With multiple sites, a given site may use the RADIUS server of another site as a backup.
Identify the RADIUS servers:
# ssadm edit Policy edit> vars add prg=auth name=RADIUSServers VALUES={ host=radius_server_name } DESCRIPTION="RADIUS server name(s) or addresses to query" |
Add the node secret used by the RADIUS protocol to secure traffic between the RADIUS client and server:
# ssadm edit Policy edit> vars add sys=screen_name prg=auth name=RADIUSNodeSecret VALUE="xxxxxxxx |
Where xxxxxxxx is the RADIUS Node Secret.
Add a rule to allow the SunScreen machine to communicate with the RADIUS servers:
# ssadm edit Policy edit> add rule radius EFS_hostname radius_server_name ALLOW edit> save # ssadm activate Policy |
The following information is used in this example:
pu1
au1
au1_pw
bu1
bu1_pw
telnet_server
sunscreen_fw
Follow the steps in the previous section, "Configuring RADIUS Authentication".
Add a rule to enable the Telnet Proxy for a pre-defined RADIUS user:
# ssadm edit Policy edit> Add Rule telnet USER radius ALLOW PROXY_Telnet edit> save # ssadm activate Policy |
Test the Telnet Proxy with RADIUS authentication:
Telnet command issued |
telnet sunscreen_fw |
Username@Hostname |
/radius/bu1@telnet_server |
Password |
bu1_radpw |
# telnet sunscreen_fw Username @Hostname: /radius/bu1@telnet_server Password: bu1_radpw |
The following information is used in this example:
Proxy user name |
pu1 |
Authorized user name |
au1 |
Authorized user password |
au1_pw |
Backend user name |
bu1 |
Backend user password |
bu1_pw |
Backedn FTP server name |
ftp_server |
SunScreen proxy server name |
sunscreen_fw |
Radius user name |
bu1 |
Radius user password |
bu1_radpw |
Follow the steps in the section above, "Configuring RADIUS Authentication".
Configure the FTP Proxy Service:
Create a Proxy user group, for example, ftp-grp.
Add predefined users radius and securid to ftp-grp.
# ssadm edit Policy > proxyuser add ftp-grp GROUP > proxyuser addmember ftp-grp radius > proxyuser addmember ftp-grp securid |
For each user that will be using the FTP Proxy:
Create a record in the Authorized User database.
Create a record in the Proxy User database.
Add the user as member of ftp-grp:
# ssadm edit Policy > authuser add au1 PASSWORD=\{ au1_pw \} > proxyuser add pu1 auth_user_name=au1 backend_user_name=bu1 > proxyuser addmember ftp-grp pu1 |
This example assumes C shell. The backslash \ before the brackets is the escape key from special characters { and }. For Bourne shell, the backslash is not necessary.
Since there are typically many users to administer, this is a good task to automate with a script.
Add a rule to allow the FTP proxy for the proxy user group, ftp-grp.
# ssadm edit Policy edit> Add Rule ftp USER ftp-grp ALLOW PROXY_FTP FTP_GET FTP_CHDIR edit> save # ssadm activate Policy |
Test the FTP Proxy with RADIUS authentication:
FTP proxy login |
ftp sunscreen_fw |
Username@Hostname |
bu1@ftp_server |
Password |
bu1_radpw@bu1_pw |
# ftp sunscreen_fw Username@Hostname: radius_user@ftp_server Password: radius_user_pw@password_at_ftp_server |
SunScreen supports two mechanisms for SecurID clients:
Install ACE/Agent 3.3 on each user desktop.
Or:
Install SunScreen SecurID stub client on the SunScreen machine, which supports Solaris 2.6, Solaris 7, and Solaris 8 operating systems, on both SPARC and Intel platforms.
As root, install a copy of sdconf.rec from the ACE server after it has been configured to have SunScreen as the ACE client.
Type the following in the directory containing sdconf.rec:
# /usr/lib/sunscreen/lib/securid_stubclient_setup sdconf.rec |
The ACE/Agent 3.3 is supported only on the Solaris 2.6 SPARC platform. It replaces the system login module with an ACE login module. When the Ace/Agent 3.3 is installed on each user desktop, ACE accounting will show that the user is authenticated through the user's desktop.
The EFS SecurID stub client supports Solaris 2.6, Solaris 7, and Solaris 8, on both SPARC and Intel platforms. Install it only on the SunScreen EFS firewall. ACE accounting will show that the users are authenticated through the EFS machine.
Follow ACE documentation to set up the ACE server and configure SecurID users.
Install either ACE/Agent 3.3 on each user desktop or the SunScreen SecurID stub client on the EFS machine.
Add a rule to allow the SunScreen machine to communicate with the ACE servers:
# ssadm edit Policy edit> Add Rule securid EFS_hostname secureid_server_name ALLOW edit> save # ssadm activate Policy |
The following information is used in this example:
pu1
au1
au1_pw
bu1
bu1_pw
telnet_server
sunscreen_fw
Follow the steps in "To Configure SecurID Authentication".
Add a rule to allow telnet proxy for predefined SecurID user:
# ssadm edit Policy edit> Add Rule telnet USER securid ALLOW PROXY_Telnet edit> save # ssadm activate Policy |
Test the Telnet Proxy with SecurID Authentication:
Telnet proxy login command issued |
telnet sunscreen_fw |
Username@Hostname |
/securid/bu1@telnet_server |
Password |
securid_passcode |
# telnet sunscreen_fw Username@Hostname: /securid/bu1@telnet_server Password: securid_passcode |
The following information is used in this example:
pu1
au1
au1_pw
bu1
bu1_pw
ftp_server
bu1
securid_passcode
Follow the steps in "To Configure SecurID Authentication".
Configure the FTP Proxy Service
Create a Proxy user group, for example, ftp-grp.
Add predefined users radius and securid to ftp-grp:
# ssadm edit Policy > proxyuser add ftp-grp GROUP > proxyuser addmember ftp-grp radius > proxyuser addmember ftp-grp securid |
For each user that will be using the FTP Proxy:
Create a record in the Authorized User database.
Create a record in the Proxy User database.
Add user as member of ftp-grp:
# ssadm edit Policy > authuser add au1 PASSWORD=\{ au1_pw\} > proxyuser add pu1 auth_user_name=au1 backend_user_name=bu1 > proxyuser addmember ftp-grp pu1 |
Since there are typically many users to administer, this can be done through a script.
Add a rule to allow FTP proxy for proxy user group ftp-grp:
# ssadm edit Policy edit> Add Rule ftp USER ftp-grp ALLOW PROXY_FTP FTP_GET FTP_CHDIR edit> save # ssadm activate Policy |
Test the FTP Proxy with SecurID Authentication:
FTP proxy login |
ftp sunscreen_fw |
Username@Hostname |
/securid/bu1@ftp_server |
Password |
securid_passcode@bu1_pw |
# ftp sunscreen_fw Username@Hostname: /securid/bu1@ftp_server Password: securid_passcode@bu1_pw |