|
|
CiscoSecure UNIX Server User Guide
Release Notes 1.0(1)
This document provides information about CiscoSecure UNIX Server 1.0(1), a new software release that supports the Solaris platform and provides bug fixes and related improvements over CiscoSecure UNIX Server 1.0. Use this document to complement information contained in the CiscoSecure UNIX Server User Guide publication.
In addition to information on new functionality, including how to unpack CiscoSecure UNIX Server software onto a Solaris platform, this document discusses information that became known or available after the user guide was printed.
For related information, including router configuration examples, refer to the Cisco Security Configuration Guide publication in your Cisco Internetwork Operating System (Cisco IOS) Release 11.2 documentation set.
This document contains the following sections:
New Information for CiscoSecure UNIX Server 1.0(1)
This section describes the following new information in CiscoSecure UNIX Server 1.0(1):
CiscoSecure UNIX Server Software Files
The CiscoSecure UNIX Server software /bin directory contains the CiscoSecure executable files, and a "samples" directory, that you can use or adjust according to your needs. The /samples directory contains the files specified in Table 1.
The sample control file contains sample software license keys (they have already expired). As such, if you use CiscoSecure UNIX Server software with the sample keys, you will get a "license expired" message. The message indicates how many ports you are licensed to.
Table 1 : Samples Directory Files
| File | Description |
|---|---|
| control.file | CiscoSecure master control file. |
| aa.database | Example AA1 database, referenced by control.file. |
| msg_cat.1 | Very simple message catalog file, referenced by control.file. |
| left.cfg | Example router configuration file that uses CiscoSecure UNIX Server software. |
| right.cfg | Example router configuration file that uses CiscoSecure UNIX Server software. |
| samples/run_script | CiscoSecure UNIX Server software startup file |
These files have been used together in a Cisco Systems lab for some simple tests and are a good place to begin your examination of CiscoSecure UNIX Server software. The example router configuration files represent two routers connected to each other by a single serial link. The router, "left," shares an ethernet segment with the CiscoSecure server. While the name of the router is "left," its config file is named "left.cfg."
Installing CiscoSecure UNIX Server Software 1.0(1) onto Solaris
CiscoSecure UNIX Server software is now supported on the SPARC Solaris platform.
Installing onto a Solaris Server that Does Not Contain a Disk Drive
If you do not have a disk drive, you can download CiscoSecure UNIX Server 1.0(1) for Solaris from a web site, as described in this section.
Installing onto a Solaris Server that Does Contain a Disk Drive
This section contains instructions on how to install CiscoSecure UNIX Server 1.0(1) onto a Solaris platform.
Take the following steps to unpack the CiscoSecure UNIX Server 1.0(1) files:
Creating a Startup File on Solaris
This section describes how to create a startup file on Solaris.
Take the following steps to create a startup file on Solaris:
When installation is complete, the CiscoSecure UNIX Server software control file and AA database must be properly configured before starting the server. (See Chapter 3"Configuring CiscoSecure UNIX Server Software," and Chapter 4 "The AA Database" in the CiscoSecure UNIX Server User Guide.)
Installing CiscoSecure UNIX Server Software 1.0(1) onto SunOS
Complete installation information and examples are included in the CiscoSecure UNIX Server User Guide. However, for your convenience, the following information is provided to help you install CiscoSecure UNIX Server software, and to start and stop the server using the files contained in the /samples directory. For more information, see Chapter 3 "Configuring CiscoSecure UNIX Server Software" in the CiscoSecure UNIX Server User Guide.
CiscoSecure UNIX Server software Version 1.0(1) includes the binary image, CiscoSecure. You can install this program anywhere within the file system. However, for best results, install the CiscoSecure binary image in the directory /usr/local/etc. In order to perform its function, CiscoSecure UNIX Server software must be run with superuser privileges.
Installing onto a SunOS Server that Does Not Contain a Disk Drive
If you do not have a disk drive, you can download CiscoSecure UNIX Server 1.0(1) for SunOS from a web site, as described in this section.
Installing onto a SunOS Server that Does Contain a Disk Drive
Take the following steps to install CiscoSecure UNIX Server software:
Obtaining a Software License Key
After you finish installing CiscoSecure UNIX Server software on your particular platform configuration, you need to obtain a software license key from Cisco in order to enable your licensed ports.
To obtain a software license key take the following steps:
Under Solaris, encrypted passwords are no longer stored in a password file (in other words, /etc/passwd). Instead, passwords are stored in the file /etc/shadow and can be accessed only as root or in cases where read access has been assigned.
The /etc/shadow file is a separate, unreadable file that contains the encrypted passwords on Solaris platforms, and was created to help avoid "dictionary guessing" attacks on passwords.
Support for Single TCP Connection
In CiscoSecure UNIX Server software 1.0(1), the network access server can maintain a longer Transmission Control Protocol (TCP) connection to the TACACS+ daemons. This optimization feature is supported in network access servers running Cisco IOS Release 11.2 or later.
Support for a single TCP connection means that the connection is maintained in an open state for as long as possible, instead of being opened and closed each time a session is negotiated. As such, you can expect that single connection will yield performance improvements.
Displaying Group Membership for Billing and Accounting
CiscoSecure UNIX Server software can now add a field to each accounting record that will indicate the immediate group membership of the corresponding user as listed in an AA database. In this way, accounting organizations can easily know whether to adjust billing information according to the user's group association.
The ability to display group membership for billing and accounting is achieved by specifying the acct_member attribute in the CiscoSecure UNIX Server software control file, and by specifying the acct_member attribute beside each user's name whose group membership you want to be able to display.
Take the following steps to install the acct_member attribute:
The "account = acct_member_fn" statement could be located anywhere above the indicated user in the AA database. For example, the specified AA database file might look as follows:
In this case, the record "acct_member_fn" would be called for all users who were in the group "allusers" or any subgroup of same (for example, in the previous display, testusers was such a subgroup).
When you view your accounting data, you can now identify the group membership of a particular user. For example, the accounting data based on the sample data in this section, would look as follows:
Note that the accounting data now identifies the user "test" as a member of the group "foo."
Authorization Attribute-Value Pairs
You can skip this section unless you want to bypass the CiscoSecure UNIX Server software graphical user interface (GUI), as the means to set authorization value pairs, or unless you need to view a convenient list of service attributes and the corresponding protocol values.
The authorization attribute-value pairs presented here are primarily for reference and to complement the accounting attribute-value pairs already documented in the publication CiscoSecure UNIX Server User Guide. For an example of how authorization attribute-value pairs are used, refer to page 4-6 in the section "The AA Database" File, in Chapter 4, "The AA Database" in the publication CiscoSecure UNIX Server User Guide. For related information, refer to the Cisco Security Configuration Guide in your Cisco IOS Release 11.2 documentation set.
CiscoSecure supports all four service attributes available to dial-in users, as follows:
After the network access server has authorized the user for a specified service, the CiscoSecure UNIX server returns to the network access server a list of attribute-value pairs appropriate for that service. For each service, several attribute-value pairs are generally available depending on the configurability of the service.
Each of the following attribute-value pairs is accompanied by a notation that identifies the corresponding, supported service.
Use the ip-local pool IOS configuration command to declare local pools, such as those on the network access server, as follows:
You can indicate from which address pool you want to get this remote node's address. As shown in the following example, you can use the TACACS+ protocol to return addr-pool=foo or set addr-pool=baz.
Support for Cisco IOS Release 11. 2
Cisco IOS Release 11.2 provides a new version of the TACACS+ protocol; this protocol is backward compatible with old daemons (including CiscoSecure UNIX Server 1.0). As such, you can now install Cisco IOS Release 11.2 in your network without having to upgrade your existing CiscoSecure UNIX Server software daemon at the same time.
Cisco IOS Release 11.2 also provides two new attribute-value pairs, tunnel-id and ip-addresses, both of which are supported in CiscoSecure UNIX Server 1.0(1). For more information on attribute-value pairs, see the previous section, "Authorization Attribute-Value Pairs, page 12."
Working with S/Key Authentication
The S/Key one-time password system from Bellcore provides secure authentication over networks that are subject to eavesdropping. S/Key distinguishes itself from other one-time or multi-use authentication systems by preventing the user's secret password from ever crossing the network during authentication.
To help you better understand the benefits of using S/Key with CiscoSecure UNIX Server software, consider the following example of a hypothetical user, Sue, who authenticates to the CiscoSecure network access server by means of the S/Key system.
Sue's account could also be configured so that she is required to use S/Key when she enables on the router. In this case, the AA database would be modified to display something like the following:
In this case, Sue would be required to give a different S/Key password every time she logs in and every time she enables at level 15.
Take the following steps to prepare for S/Key installation and use:
Installing and Getting Ready to Use S/Key
Take the following steps to install the S/Key system on a CiscoSecure server:
In the next step, each S/Key user will run the keyinit program to initialize the S/Key system for that user. (For the purpose of example, a hypothetical user, Sue, will run the keyinit program to initialize the S/Key system. This process enables Sue to use S/Key authentication.)
S/Key also accounts for previous iterations of keyinit, providing assurance for the user that someone has not altered the system. As a result, the next time that Sue enters the keyinit command, she will see a display similar to the following:
Allow/Refuse Functionality Extended to Remote Address
CiscoSecure UNIX Server software can control authorization of services based on several values, including the NAS name, NAS port, and now, the remote address. These fields are supplied by the NAS. For example, the remote address might contain a string representing an X.121 address, the IP address associated with the remote end of a telnet connection, or the calling number (Caller ID) on an interface. These controls are called filters.
Using the CiscoSecure graphical user interface, you can now specify the following by clicking the Filter button to enable attributes as follows:
The nas_name, port_name, and rem_addr can all be regular expressions. (See the man page for regex for details on writing regular expressions.)
The following two examples show how a CiscoSecure UNIX Server administrator can take advantage of the filter mechanism to control authorization of services:
Example 1:
Example 2:
Filters can also be used to apply caller-id information (if provided by the NAS) to a service authorization. If the server supplies caller-id information, it is supplied in the rem_addr field, as follows:
The GUI now acknowledges where a regular expression is required, and provides a default of ".*" for you. (This is a regular expression that matches any string.)
Improvements to the CiscoSecure UNIX Server Graphical User Interface
This section discusses fixes to problems and clarifies difficult points associated with CiscoSecure UNIX Server software version 1.0. Bug-tracking numbers follow descriptions that address specific bugs. The following sections are included:
In the CiscoSecure UNIX Server 1.0 graphical user interface (GUI), if you initially tried to save a database with an illegal name (such as specifying a directory that did not exist) but subsequently tried to correct the name by using the Save As feature or by loading a new database, you would still receive an error message. Typically, the error message would report that the specified location could not be found. This problem is fixed in CiscoSecure UNIX Server 1.0(1). [CSCdi57881 and CSCdi50395]
In the CiscoSecure UNIX Server 1.0 GUI, when you specified the password to be Data Encryption Standard (DES) encrypted, the password was stored in clear text instead. In the CiscoSecure UNIX Server 1.0(1) GUI, when you specify DES encryption, a password is taken in clear text, but the CiscoSecure UNIX Server software later encrypts it by running the DES password generator and then inserting the resulting encrypted password into the database. [CSCdi50446]
In the CiscoSecure UNIX Server 1.0 GUI, you might have experienced problems retrieving database files in cases where you added a group and the software did not insert closing brackets around the group name. This problem has been corrected in the CiscoSecure UNIX Server 1.0(1) GUI. [CSCdi50426, CSCdi51121, CSCdi50460]
In CiscoSecure 1.0, you can typically enter invalid data such as protocols, dates, or time values that do not exist. The data is stored in the AA database but cannot be processed. In CiscoSecure 1.0(1) you are prompted in many cases to enter data in a correct format so that it can be recognized by and acted upon by the CiscoSecure server and the network access server. In other cases, invalid data might still be accepted by the AA database. Be careful to enter only valid attributes when prompted by the GUI. [CSCdi47134]
Console Stalls After Sequence of GUI commands
In CiscoSecure UNIX Server 1.0, if you enter a sequence of GUI commands, you might find the GUI console to stall or hang indefinitely in some conditions. In CiscoSecure UNIX Server 1.0(1), the overall functionality of the GUI is more reliable than its predecessor. [CSCdi50540]
In CiscoSecure UNIX Server 1.0, when you click the User Attributes button and click the Cancel button in the resulting String dialog box, you might view a Tool Command Language (TCL) error message: In CiscoSecure 1.0(1), TCL error messages typically do not display in the GUI. [CSC56081]
Cancelling from Create User Still Stores Name
In CiscoSecure UNIX Server 1.0, if you click the Cancel button in the Create User dialog box, the specified username is still recorded by the CiscoSecure server database. Consequently, if you attempt to recreate that username, the CiscoSecure UNIX Server software might disallow the operation because of duplicate names. This problem is resolved in CiscoSecure UNIX Server 1.0(1). [CSCdi50395, CSCdi57312]
Error Message of Unable to Parse File
In CiscoSecure UNIX Server 1.0, when setting user attributes, if you specify "Prohibit service" in combination with a filter option, you see an error message "Unable to Parse File." In CiscoSecure 1.0(1), however, you can specify "Prohibit service" with any available filter option without generating an error message or causing the GUI to stall or become unresponsive. [CSCdi57913]
Misleading Message of "Protocol - Username too long"
In CiscoSecure UNIX Server 1.0, when the secret key for an access server does not match the one in the control file, the debugging output from the server incorrectly specifies "Protocol - Username too long." In CiscoSecure UNIX Server 1.0(1), the server now specifies, "Protocol - mismatched encryption." [CSCdi57951]
In CiscoSecure UNIX Server 1.0, when using CiscoSecure UNIX Server software with accounting functionality, and the router is using PPP, you might observe the accounting log to show two stop records for every session. One of the packets, recorded as stop, is actually a "watchdog" packet sent by the network access server during the beginning of the PPP negotiation. This watchdog packet is supposed to signify that the PPP negotiation has proceeded to the point where the IP address was assigned. However, CiscoSecure UNIX Server 1.0 does not recognize this watchdog, and instead writes the record as "stop." In CiscoSecure UNIX Server 1.0(1), this packet is now correctly identified in the accounting log as a watchdog rather than a stop packet. [CSCdi59124]
Extra Line Deleted When Setting User Attributes
In CiscoSecure UNIX Server 1.0, an extra line is sometimes inadvertently removed by software while you set a user's attributes. In particular, you might observe this behavior when you highlight a service in the console and attempt to press delete. In this case, the subsequent line of some other attribute also becomes highlighted and deleted. This problem has been resolved in CiscoSecure UNIX Server 1.0(1). [CSCdi59802, CSCdi59796]
Assigning an Invalid Time Qualifier
In CiscoSecure UNIX Server 1.0, if you enter a time that does not exist, such as 2500, the GUI might hang indefinitely. In CiscoSecure UNIX Server 1.0(1), you see a message that declares the specified time to be invalid and you are prompted to re-enter a value for the time. [CSCdi60542, CSCdi57395, CSCdi58817]
TCL Error Message After Clicking Right Mouse-Button on User Name
In CiscoSecure UNIX Server 1.0, you might receive a TCL error message when you click the right mouse button on a username. In CiscoSecure UNIX Server 1.0(1), TCL error messages typically no longer display in the GUI. [CSCdi61186]
Deleting Users and Groups Without Warning
In CiscoSecure UNIX Server 1.0, you could delete user or group entries, add groups, or change group names, without first being prompted for confirmation. In CiscoSecure UNIX Server 1.0(1), however, when making such permanent database changes, you are first presented with a dialog box in which you must confirm your choices. [CSCdi63364]
TCL Error Message After Specifying No Password
In CiscoSecure UNIX Server 1.0, you might receive a TCL error message when you click No Password in the User Attributes window. In CiscoSecure UNIX Server 1.0(1), TCL error messages typically no longer display in the GUI. [CSCdi62437]
Although this feature is not documented in the user guide, you can delete a user by taking the following steps:
[CSCdi50445]
Support for IP, IPX, Link Control Protocol (LCP), ARAP, and EXEC have been added to the list of service attributes in the GUI.
CiscoSecure UNIX Server software enables you to specify a date on which authentication or authorization attributes become available or unavailable. The following is an example of the correct format:
This format is required by the CiscoSecure UNIX Server. Although the CiscoSecure UNIX Server GUI does not place any restrictions on the values you enter in the date field, if you enter the date incorrectly, the CiscoSecure UNIX Server will not recognize it.
The length of the encryption key shared by the CiscoSecure server and network access server has been extended to 255 characters. In earlier versions of CiscoSecure UNIX Server software, the length of a valid key could not exceed 31 characters.
In CiscoSecure UNIX Server 1.0, if you try to edit user attributes from the Users menu, the Users menu might remain highlighted, but the Edit User Attributes window does not display. The GUI stalls and becomes unresponsive to mouse clicks or keyboard strokes. In CiscoSecure UNIX Server 1.0(1), however, this problem has been resolved. [CSCdi57405]
CiscoSecure uses the logging levels DEBUG, INFO, NOTICE, WARNING, ERROR, and ALERT. These logging levels are tied to the operation of CiscoSecure UNIX Server software, not to the interaction of the software to its users. However, much of the output that will help you resolve such problems can be found in the DEBUG level. To examine the output, enable DEBUG logging and turn on the relevant bits in the control file. [CSCdi61830]
In CiscoSecure UNIX Server 1.0, when pressing the Cancel button in some of the edit dialog boxes, you might see the error message "Not enough undo info available" and the GUI will pause indefinitely. This problem is resolved in CiscoSecure UNIX Server 1.0(1). [CSCdi57405, CSCdi57059]
Known Problems with the CiscoSecure UNIX Server GUI
This section identifies shortcomings of the CiscoSecure UNIX Server GUI that are expected to be addressed in a subsequent release.
Clicking Cancel Causes GUI to Stall
In CiscoSecure UNIX Server 1.0(1), you might experience the GUI to stall or hang after you click the Cancel button of many of the dialog boxes. If you encounter this problem, restart the GUI and try the operation again. [CSCdi63554]
Assigning the Same Name to a Group and User
In CiscoSecure UNIX Server 1.0(1), the GUI does not acknowledge the difference between a group and user with the same name. This will be fixed in a subsequent release of CiscoSecure UNIX Server software. [CSCdi70114]
In CiscoSecure UNIX Server 1.0(1), the GUI enables you to specify dates when security services become available or unavailable. If you inadvertently enter two or more expiration dates, the GUI will record them; however, the actual date on which the specified service will expire is unpredictable. Furthermore, if you save the database containing multiple-conflicting expiration dates, you might not be able to reload the database. To avoid uncertainty in when a particular service will expire, make sure that you enter only one expiration date. [CSCdi47149]
Unclear Error Messages with Clear Password
In some cases, you might see a TCL script error message similar to the following when establishing a clear password.
In such cases, clicking on any other buttons in the GUI will yield other TCL script errors. To recover from this condition, you must cancel from the User Create window then edit the user attributes. This problem will be fixed in a subsequent version. [CSCdi56081, CSCdi62437, CSCdi50457]
Setting Passwords that do not Expire
In some cases, you might want to set a password so that it does not expire. Although not immediately apparent, you can set expiration data in the AA database so that different expiration periods can be assigned to each password at the user level.
Take the following steps to set a password declaration which does not carry a qualification time to expire:
Requiring Users to Modify Their Passwords
In some cases you might want the ability to require that users modify their passwords upon initial login to CiscoSecure UNIX Server. This ensures that only the user knows his or her own password. You can set up an initial password when a new account is first created, then the first time the user authenticates, he or she must change the password.
Take the following steps to set up CiscoSecure UNIX Server software to require that users change their password when they authenticate to the network access server for the first time:
This section addresses errors in the CiscoSecure UNIX Server User Guide publication.
Restricting the Enable Command
In Appendix B, "CiscoSecure UNIX Server File Formats and Syntax," page B-6, the example that shows how the enable command can be restricted by means of aaa authorization is incorrect. The enable command is a function of the authentication process, not authorization.
To prevent the example user, joy, from enabling, the profile should be changed as follows:
In the preceding example, the "*" creates a password that will never be matched by the CiscoSecure server and therefore will always be invalid. Furthermore, the example puts a privilege statement at level 2, thus preventing the user's password from being found at any preceding level.
Another way to prevent the example user from enabling, is simply to remove the "member = staff" statement from user's profile.
In Chapter 1, "Overview of CiscoSecure UNIX Server Software," page 1-6, preprocess and postprocess authorization functions are mentioned as supported features. While these features are in place, they remain undocumented because they are reserved for enhancements targeted for a later release of CiscoSecure UNIX Server. These structures remain private and are subject to change.
Similarly, on page 1-7, preaccounting and postaccounting functions are also mentioned as supported functions. Only preaccounting processing is supported.
The capability for postaccounting is in place but remains undocumented because the capability is reserved for enhancements targeted for a later release of CiscoSecure UNIX Server software.
Protocol Port Number Definition
In Chapter 2, "Getting Started With CiscoSecure UNIX Server Software," page 2-3, the example protocol port number definition for the TACACS+ service shown in Step 4 is shown incorrectly. It should read as follows:
Password in NAS Configuration Record
In Chapter 3, "Configuring CiscoSecure UNIX Server Software," on page 3-8 you see a sample configuration file structure called NAS config_nas_config. The last entry in the control file structure is a definition as follows:
However, the samples directory installed as part of the release does not have this field in its NAS config_nas_config structure.
Disregard this entry (shown in the previous example).
Early versions of CiscoSecure UNIX Server software provided different expiration and warning periods for different network access servers. However, this proposed feature was removed in the 1.0 release. Note that a reference to this feature appears in the user guide.
Incorrect Display of kill Command
In Chapter 6, "Using CiscoSecure UNIX Server Software," page 6-3, the example kill command for SIGUSR1 is shown incorrectly in that it uses a single quote instead of the back quote character. It should read as follows:
In Chapter 6, "Using CiscoSecure UNIX Server Software," page 6-6, the sample /etc/syslog.conf entry is shown incorrectly. It should read as follows:
The blank space between the two parameters must be created by pressing the tab key. Spaces entered by pressing the space bar will cause errors in the sample entry.
In Appendix B, "CiscoSecure UNIX Server File Formats and Syntax," page B-2, the AA Database grammar is incorrect. The correct grammar and statement of clarification follow:
In Chapter 5, "CiscoSecure UNIX Server Accounting," on page 5-2, the accounting record format is incorrect. The correct format of the accounting record is structured as follows:
[CSCdi50422]
In Chapter 6, "Using CiscoSecure UNIX Server Software," on page 6-6 the instruction on how to maintain a centralized database of messages is somewhat incomplete. Note that in order for information to go into the file, you must create the file /var/log/csuslog before syslog will store messages into it.
In Appendix B, "CiscoSecure UNIX Server File Formats and Syntax," on page 3, the message catalog is incorrect. The following list identifies the correct default message IDs, message names, and message strings used by CiscoSecure UNIX Server software:
Copyright 1988-1996 © Cisco Systems Inc.
http://www.cisco.com/kobayashi/ciscosecure.html
#
zcat /
tmp/csu.pkg.
tar.z | tar xvf .
#
pkgadd -d /tmp
The following package(s) are available:
1 Cisco CiscoSecure TACACS+ Server Software
(sun4) Version CSUS-1.0(1.0)
Select the package(s) you wish to process (or `all' to process all packages). (default: all) [?,??,q]
Enter path to package base directory [?,q]
/usr/ciscosecure
Using </usr/ciscosecure> as the package directory.
Cisco Systems, Inc.
## Processing package information.
## Processing system information.
## Verifying disk space requirements.
## checking for conflicts with packages already installed.
## checking for setuid/setgid programs.
Installing Cisco CiscoSecure TACACS+ Server Software as <CSCOcsu>
Installation of <CSCOcsu> was successful.
#
dd if=/dev/diskette of=/tmp/csu.pkg.
tar.z
2880+0 records in
2880+0 records out
#
zcat /
tmp/csu.pkg.
tar.z | tar xvf -
#
pkgadd -d /tmp
The following package(s) are available:
1 Cisco CiscoSecure TACACS+ Server Software
(sun4) Version CSUS-1.0(1.0)
Select the package(s) you wish to process (or `all' to process all packages). (default: all) [?,??,q]
Enter path to package base directory [?,q]
/usr/ciscosecure
Using </usr/ciscosecure> as the package directory.
Cisco Systems, Inc.
## Processing package information.
## Processing system information.
## Verifying disk space requirements.
## checking for conflicts with packages already installed.
## checking for setuid/setgid programs.
Installing Cisco CiscoSecure TACACS+ Server Software as <CSCOcsu>
Installation of <CSCOcsu> was successful.
#!/sbin/sh
# CiscoSecure control
state=$1
set `who -r`
if [ $8 != "0" ]
then
exit
fi
pid=`cat /etc/CiscoSecure.pid`
case $state in
'start')
CSUHOME=/usr/CSU
state=$1
pid=""
#
# It is a bug that the pid file can remain after the
# server exits, and some other process can now be on
# the pid contained in /etc/CiscoSecure.
#
# But lots of Unix commands have the same problem...
#
# We could use 'ps' to attempt to find a running copy of
# CiscoSecure, but the admin could have changed the name.
#
# Not much to do here but cross one's fingers..
#
if [ -w / ] # only root can write /
then
if [ -r /etc/CiscoSecure.pid ]
then
pid=`cat /etc/CiscoSecure.pid` > /dev/null 2>&1
fi
else
echo "not root"
exit
fi
case $state in
#
# Start-up
#
'start')
if [ -x ${CSUHOME}/bin/CiscoSecure -a -f ${CSUHOME}/samples/control.file ]
then
cd ${CSUHOME}
./bin/CiscoSecure -x -f ./samples/control.file > Logfile 2>&1 &
fi
;;
#
# Stop processing, don't come back.
#
'stop')
if [ "${pid}" != "" ]
then
/usr/bin/kill -INT ${pid} > /dev/null 2>&1
fi
;;
#
# Causes the daemon to re-init.
#
'reload')
if [ "${pid}" != "" ]
then
/usr/bin/kill -HUP ${pid} > /dev/null 2>&1
fi
;;
#
# Ask CiscoSecure to process the 'update' file.
# (Forces changes passwords back into the aa database.
#
'update')
if [ "${pid}" != "" ]
then
/usr/bin/kill -USR1 ${pid} > /dev/null 2>&1
fi
;;
*)
echo "usage: $0 {start|stop|reload|update}"
;;
esac
chmod 744 /etc/init.d/ciscosecure
ln -s /etc/init.d/ciscosecure /etc/rc2.d/S99csu
ln -s /etc/init.d/ciscosecure /etc/rc0.d/K89csu
http://www.cisco.com/kobayashi/ciscosecure.html
# tar xvf <
filename>
tacacs 49/tcp TACACS+
% su
Password: <
password>
# mkdir /usr/local/etc/ciscosecure
# cd /usr/local/etc/ciscosecure
# bar xvZf /dev/rfd0
tacacs 49/tcp TACACS+
# hostid
55412315
# /usr/ucb/hostid
55412315
ACCT config_external_acct_symbols = {
{
"bin/libacctmember.so",
"acct_member_fn"
}
};
user = test {
member = foo
account = acct_member_fn
password = clear "test" # this is just an example
[...] # and so on, and so on
}
user = test1 {
member = group1
password = clear "test" # this is just an example
[...] # and so on, and so on
}
user = test2 {
member = testusers
[...] # and so on, and so on
}
group = testusers {
member = allusers
}
group = allusers {
account = acct_member_fn
}
#
kill -HUP `cat /etc/CiscoSecure.pid`
cisco.Secure.com test tty2 192.207.126.16 stop
server=ciscosecure=21:53:52 date=04/10/96 task_id=26291
service=exec port=2 service=exec port=2 elapsed_time=2
member=foo
service=arap
service=shell (for exec startup, and also for command authorizations)
service=ppp
service=slip
cmd=telnet
cmd-arg=archie.sura.net
set acl=2
set inacl=2
set outacl=4
set addr=1.2.3.4
set timeout=60
set autocmd="telnet foo.com"
set noescape=true
set nohangup=true
set priv-lvl=5
set zonelist=5
ip address-pool local
ip local pool foo 1.0.0.1 1.0.0.10
ip local pool baz 2.0.0.1 2.0.0.20
user = lol {
service = ppp {
protocol = lcp {
}
protocol = ip {
set addr-pool=foo
}
}
}
service=ppp protocol=ip {
set route = "<dst_addr> <mask> [ <gateway> ]"
}
set callback-rotary=34
set callback-dialstring=408-555-1212
set nocallback-verify=1
User Access Verification
Username: sue
s/key 97 fr09072
Password:
The CiscoSecure server observes that Sue needs to supply an S/Key password.
Based on the verification display, the CiscoSecure server instructed the network access server to display the sequence number, 97, and a seed, fr09072, which will be used by a separate program to initiate the encryption process leading to an S/Key password.
Sue notes the sequence number and seed, then pauses from her interaction with the network access server in order to generate a password. She will generate the password by entering the sequence number and seed, along with her secret password, into an S/Key calculator program.
% key 97 fr09072
Enter secret password: <secret password>
The secret password is any string of at least 10 alphanumeric characters generated by Sue, for Sue, and known only by Sue.
CRAG BAKE MOLT JEAN JIBE OFT
The one-time S/Key password is always expressed as a sequence of six short English words. Note how the one-time password is generated without any secret information crossing the network.
This second password will be used to authenticate Sue to the CiscoSecure server. Sue now returns to her interaction with the network access server. She enters the S/Key password and is authenticated, as follows:
Password: <CRAG BAKE MOLT JEAN JIBE OFT>
The sequence number is one less than what was used for the previous authentication. In the case of Sue, her last sequence number was 97, so the next required sequence number will be 96. When the sequence number reaches 0, Sue will not be able to log in without reinitializing the S/Key system.
user = sue {
password = skey
privilege = skey 15
}
user = sue {
password = skey
}
#
kill -HUP `cat /etc/CiscoSecure.pid`
ftp://
userid
@www.cisco.com/cisco/netmgmt/ciscosecure/sunos
tar -xvf skey-cs.tar
#
INSTALL.S_Key
%
keyinit
Password: <
UNIX password>
[Adding sue]
Enter secret password: <
secret password>
Again secret password: <
secret password>
ID sue s/key is 99 fr05065
Next login password: SKI INCA HONE NEE MESS LEAF
%
keyinit
Password: <
Unix password>
[Updating sue]
Old key: fr05064
Enter secret password: <
secret password>
Again secret password: <
secret password>
ID sue s/key is 99 fr05065
Next login password: SKI INCA HONE NEE MESS LEAF
allow nas_name port_name rem_addr
refuse nas_name port_name rem_addr
# Let Oscar the Grouch start a shell on any tty lines attached to any NAS
# in the cisco.com domain, and start a shell on any vty,
# as long as he's logging in from the machine trashcan.cisco.com
#
# Once on, Oscar the Grouch can run any command.
#
user = grouchy {
password = clear "dratsab"
service = shell {
default cmd = permit
default attribute = permit
allow ".*\.cisco\.com" "tty.*" ".*"
allow ".*\.cisco\.com" "vty.*" "trashcan\.cisco\.com"
refuse ".*" ".*" ".*"
}
}
# The 'refuse' filter in this example isn't strictly necessary.
# However, if the profile were modified to contain
# 'default service = permit', shell service would be allowed on any
# NAS unless the associated refuse ".*" ".*" *.*" was in-place.
# Allow Chuck Yager to start a shell on any tty line attached to any NAS
# served by this copy of CiscoSecure. Further allow access to vtys if
# Chuck is logging in from anywhere in the 198.xxx.yy network, but
# absolutely refuse access to any nas if Charles is logging in from
# champagne.cisco.com (the external NAS). Note that we provide both
# the name and the ip address for champagne, just for assurance in
# case the DNS breaks.
#
#
# Once on, only allow Chuck to use the 'telnet' command.
#
user = cyager {
password = clear "gnitekram"
service = shell {
default cmd = telnet
default attribute = permit
allow ".*" "vty.*" "198\.xxx\.yy\..*"
refuse ".*" "vty.*" "171\.xx\.yy\.xx"
refuse ".*" "vty.*" "champagne\.cisco\.com"
allow ".*" "tty.*" ".*"
}
}
# Allow Jerry to start PPP, but only if he's coming in via ISDN on a
# basic-rate channel, and only if # the caller-id string matches what
# we think it should be, and only on NAS22.cisco.com.
user = jerry {
password = chap "was a race car driver"
service = ppp {
protocol = lcp {
}
protocol = ip {
}
allow "NAS22\.cisco\.com" "BRI.*" "7145551212"
}
}
21 Mar 96
Error in Tcl Script
Error: can't read
"TacFMenu(NULL,function)":
no such element in array
user = joy {
member = staff
privilege = des "*" 2
password = clear "My ClearText Password"
service = ppp {
default protocol = permit
prohibit protocol = ipx
}
service = shell {
default cmd = permit
prohibit cmd = enable
}
}
tacacs 49/tcp TACACS+
5 /* password expiration period, in days */
kill -SIGUSR1 `cat /etc/CiscoSecure.pid`
local0.debug var/log/csuslog
string = STRING | QSTRING
password: FILESPEC string
| SYSTEM
| NO_PASSWORD
| DES QSTRING
| CLEAR QSTRING
| ARAP QSTRING
| PAP QSTRING
| STRING
| EXTERNAL STRING string
| Shadow for Solaris
char nas_name[] /* NAS name */
char user_name[] /* username */
char port_name[] /* port the connection is on */
char remote_address[] /* where the user connected from */
char record_type[] /* (start, update, stop etc) */
char server[] /* hostname of the server, as an AV pair */
char time[] /* time of this record, as an AV pair */
char date[] /* date of this record, as an AV pair */
char attribute_value_pairs[] /* there are an arbitrary number of these */
0 AUTHEN_CLIENT_LOGIN_PROMPT "\nUser Access Verification\n"
1 AUTHEN_CLIENT_USERNAME_PROMPT "Username: "
2 AUTHEN_CLIENT_PASSWORD_PROMPT "Password: "
3 AUTHEN_CLIENT_SIGN_ON_MESSAGE ""
4 AUTHEN_CLIENT_CHANGEPASS_INTRO "Change password sequence"
5 AUTHEN_CLIENT_PASSWORDS_IDENTICAL "Error - passwords the same"
6 AUTHEN_CLIENT_PASSWORD_EXPIRED "Your password has expired"
7 AUTHEN_CLIENT_TOO_MANY_TRIES_FOR_USERNAME "Too many tries for username"
8 AUTHEN_CLIENT_TOO_MANY_TRIES_FOR_PASSWORD "Too many tries for password"
9 AUTHEN_CLIENT_NEW_PASSWORD1 "New password: "
10 AUTHEN_CLIENT_NEW_PASSWORD2 "New password again: "
11 AUTHEN_CLIENT_PASSWORDS_DIFFERENT "The passwords are different"
12 AUTHEN_CLIENT_BAD_PASSWORD "Bad password"
13 AUTHEN_CLIENT_CANT_CHANGE_PASSWORD "You cannot change your password"
14 AUTHEN_CLIENT_ACCOUNT_EXPIRY_WARNING "Your account will expire in %d days"
15 AUTHEN_CLIENT_PASSWORD_EXPIRY_WARNING "Your password will expire in %d days"
16 AUTHEN_CLIENT_NEW_PASSWORD_CRITERIA "A password must be between six and thirteen
characters, containing at least one alphabetic and numeric character."
18 AUTHEN_USER_NOT_FOUND "Authentication - User not found"
19 AUTHEN_BAD_METHOD_FOR_USER "Authentication - Bad method for user"
20 AUTHEN_BAD_TYPE "Authentication - Bad type"
21 AUTHEN_NO_USERNAME "Authentication - No username specified"
22 AUTHEN_INSUFFICIENT_PRIVILEGE "Authentication - Insufficient privilege"
23 AUTHEN_UNEXPECTED_DATA "Authentication - Unexpected data"
24 AUTHEN_UNEXPECTED_RESERVED_DATA "Authentication - Unexpected reserved data"
25 AUTHEN_INCORRECT_PASSWORD "Authentication - Incorrect password"
26 AUTHEN_ABORTED_SEQUENCE "Authentication - Aborted sequence"
27 AUTHEN_FILEHANDLING_ERROR "Authentication - File handling error"
28 AUTHEN_UNKNOWN_PASSWORD_TYPE "Authen - Unknown password type"
29 AUTHEN_USER_NOT_IN_FILE "Authentication - User not in file"
30 AUTHEN_ERROR_IN_EXTERNAL_FN,"Authentication - Error in external function"
31 AUTHEN_BAD_SERVICE "Authentication - Bad Service"
32 AUTHEN_BAD_ACTION "Authentication - Bad Action"
33 AUTHEN_SENDPASS_OK "Authentication - SENDPASS (ok)"
34 AUTHEN_SENDPASS_FAIL "Authentication - SENDPASS (fail)"
35 PROTOCOL_USERNAME_TOO_LONG "Protocol - Username too long"
36 PROTOCOL_NASNAME_TOO_LONG "Protocol - NAS name too long"
37 PROTOCOL_NASPORT_TOO_LONG "Protocol - NAS port name too long"
38 PROTOCOL_NACADDR_TOO_LONG "Protocol - NAC address too long"
39 PROTOCOL_BAD_PRIVILEGE "Protocol - Invalid privilege field"
40 PROTOCOL_ACTIVE_SESSION "Protocol - Session id in use"
41 PROTOCOL_NO_SESSION "Protocol - No session found"
42 PROTOCOL_INCORRECT_TYPE "Protocol - Incorrect type"
43 PROTOCOL_INCORRECT_SESSION "Protocol - Incorrect session"
44 PROTOCOL_INCORRECT_SEQUENCE "Protocol - Incorrect sequence"
45 PROTOCOL_INCORRECT_VERSION "Protocol - Incorrect version"
46 PROTOCOL_GARBLED "Protocol - Garbled message"
47 PROTOCOL_READ_TIMEOUT "Protocol - Read timeout"
48 PROTOCOL_CONNECTION_CLOSED "Protocol - Connection closed"
49 PROTOCOL_BAD_TYPE "Protocol - Bad type"
50 PROTOCOL_MAX_USERS_EXCEEDED "Maximum number of users exceeded"
51 PROTOCOL_ENCRYPTION_MISMATCH "Mismatched encryption"
52 AUTHOR_NO_SERVICE "Authorization - No service specified"
53 AUTHOR_FAILED_MANDATORY_ARG "Authorization - Failed mandatory argument"
54 AUTHOR_FAILED_COMMAND_LINE "Authorization - Failed command line"
55 AUTHOR_FAILED_SERVICE "Authorization - Failed service"
56 AUTHOR_FAILED_TIME "Authorization - Failed time qualification"
57 AUTHOR_BAD_ARGUMENT "Authorization - Bad argument"
58 AUTHOR_NO_COMMAND "Authorization - No command specified"
59 AUTHOR_FAILED_CMD "Authorization - Failed command"
60 AUTHOR_NO_PROTOCOL "Authorization - No protocol"
61 AUTHOR_UNKNOWN_USER "Authorization - Unknown user"
62 AUTHOR_INVALID_NAS_OR_PORT "Authorization - Unauthorized NAS or PORT"
63 AUTHOR_COMMAND_AUTHORIZED "Authorization - Command authorized"
![]()
![]()
![]()
![]()
![]()
![]()
![]()