Running Windows 2000 Terminal Services is the next best thing to being there--but how do you do it securely?
Securing Terminal Services
Running Windows 2000 Terminal Services is the next best thing to being there--but how do you do it securely?
- By Roberta Bragg
- 07/01/2000
What’s the stuff of network administrator daydreams?
Chocolate éclairs? Lunchtime trysts? How about never having
to get up out of that chair? I can’t give you the first
two items on the list, but pay attention and I’ll help
you find a way to smooth your days (and administrative
nights) into same-chair sessions sure to broaden the butt—er—smile
of any administrator.
But wait, you say, you’ve got numerous servers to manage
and there are just some things at which you have to be
present in order to win—er—manage. While Windows 2000
does provide a plentitude of administrative consoles that
you can turn on a dime, how can you do things from across
the network like configure network connections, work with
the local accounts database, and administer server-side
programs that don’t lend themselves to remote configuration?
Better still, what if you have to do it all from a Windows
98 client? Yech. (Well, sometimes that’s all you have.)
What if you’re on the road? What if you don’t want to
expose that administrative activity to possible snoopers?
How can you encrypt activity between your client and the
server?
I’m Feeling Remote
Windows NT 4.0 Terminal Server Edition offered a version
of NT developed by Citrix Systems. A single server could
become host to multiple sessions by various clients. Each
client received its screens from an application running
on the server and sent keystrokes and mouse clicks across
the network. This approach was similar to but different
from the old mainframe, with its dumb terminal setup and
ability to save companies upgrade costs. Underpowered
machines could be NT look-alikes. Administrators could
more easily control the configuration, installation, and
upgrade of applications like Microsoft Office. They could
even control their clients. NT 4.0 Terminal Server Edition
with Citrix MetaFrame loaded could even bring the NT desktop
to Unix, Macintosh, and other non-Windows clients.
Win2K offers Terminal Services as an optional service.
You load it during installation or by using Add/Remove
Programs. There are two modes: Application Server, which
is much like the Terminal Server edition of NT 4.0, and
Remote Administration, which allows only limited connections
by administrators so that they can remotely administer
the server.
In Remote Administration mode, only administrators can
connect to the terminal server, and a maximum of two connections
at a time is allowed. You can further configure the service
for a higher level of security. It’s this mode I’ll examine
here.
Setting it Up and Securing IT
Installing Terminal Services Remote Administration Mode
is a snap. Securing it is common sense (almost). So what’s
the drill?
There are three parts to successfully setting up secure
Terminal Services: installation, configuring and securing
the server, and configuring and securing the client.
Installation
To install Terminal Services, you’ll need your Win2K
Server Installation CD-ROM.
- From Control Panel | Add/Remove Programs double-click
on “Add/Remove Windows Components.”
- Click the Terminal Services checkbox.
- Click next.
- On the Terminal Services page select “Remote Administration
Mode.”
- Click Next, then click Finish.
Secure the Server
To configure the server, start with the first principle
of security: Secure the OS first. Remember to use complex
passwords, limit membership in the Administrators group,
and use every other trick you know to lock down the OS.
For help getting started, see my article, “Securing Windows
2000 in the Enterprise,” in the March issue. Next, consider
the options in three Terminal Services applets: Client
Creator, Configuration, and Manager.
You use Terminal Services Client Creator to create the
client disks. Without these disks you can’t load the client
on Windows desktop machines. However, you use the same
client for administration that you use for application
services. Securing the Client Creator is like securing
access to a copy of Win2K itself—it’s just not going to
happen. If somebody has a set of client disks, he or she
will be able to install the client on a machine (presuming
that person can install a normal executable from floppies).
Nevertheless, you don’t have to give away the farm. If
you wish, use Windows Explorer and traverse to:
%system root%\system32\clients\win32\disks\disk1\acmesetup.exe
and:
%system root%\system32\clients\win16\disks\disk1\acmesetup.exe
Set permissions on acmesetup.exe in both places to restrict
its use to the Administrators group—or should you desire,
to a particular administrator (namely you). While you’re
at it, set permissions on some applications you can secure;
tscc.msc, the client configuration applet, and tsadmin.exe,
the Terminal Services manager. Both executables are found
in:
%system root%\system32
Leave the administrators group and System to full control,
but nix the others. For tighter control, you could give
yourself full control and nix the Administrators group.
I don’t recommend it; I have a strong preference for leaving
a group, not a user, as sole control on any file. It’s
anti-Windows to me to place a mere user in control, and
I’m not a strong believer in the “I’ll be here forever”
philosophy of some admins.
After doing the install, you’ll see one connection, for
RDP. Remote Desktop Protocol, the protocol used for connections
between clients and servers, is an industry standard.
Microsoft RDP version 5.0 is installed with Win2K.
This connection can be used by the two allowed administrative
connections. You can configure individual parameters for
each from their individual user account properties. Also,
you can add another connection if you wish to include
another network interface, for example. Note that the
transport required is TCP.
Secure each connection by doing the following.
Set Encryption Strength
Encryption strength can be low, medium, or high. Low means
that only the data traveling from the client to the server
is encrypted; server communications to the client aren’t.
With this setting your password is protected, as are configuration
keystrokes and mouse clicks. Displays of the server screens,
which travel across the network to your desktop, aren’t
encrypted. Conceivably, these could be captured and would
allow an attacker to learn confidential information about
the server’s configuration. Whatever you see, someone
else can also see. Medium, the default, encrypts the data
traveling in both directions. The encryption strength
for both low and medium will use a 40-bit key for non-Win2K
clients and a 56-bit key for Win2K clients. High-level
encryption uses the 128-bit encryption key (if supported
and allowed) to encrypt data traveling in both directions.
All levels use the RSA RC4 encryption algorithm.
If another authentication package has been installed
on the server, you can insist that terminal server connections
default to standard Windows authentication by checking
the “Use standard Windows authentication” check box.
Configure Logon
By default, no user account is selected. You can limit
this connection to your account by checking the “Always
use the following logon information” box and entering
your user ID and domain (if the server is joined in a
domain) information. Leave the password blank and check
the “Always prompt for password” box.
Configure Sessions
When you connect to a terminal server, it’s called a connection,
and when you successfully log on, it’s called a session.
What happens when the connection is broken? By default,
a session doesn’t end. Any running programs continue and
no data is lost. The authorized user can reconnect, even
from another computer.
What should happen if a session is idle? To secure sessions,
I always recommend setting an idle time disconnect. This
prevents the administrator—who may become distracted with
the vagaries of the job—from walking away from a connected
session and returning hours later to find the server trashed
by a casual intruder. On the Sessions page, make sure
“override user settings” is checked and set the “idle
session limit” to a maximum of 15 minutes. You don’t want
to shut yourself down while you’re reading the help screen,
but even the best of us can be interrupted by some emergency
that requires leaving the office. If you wish to further
lock things down, set “end a disconnected session” to
five minutes. If something minor happens, you can still
reconnect quickly.
You’ll definitely want to set “When session limit is
reached or connection is broken” to disconnect or end
the session. After all, if you limit administrative sessions
to one or leave the default at two, far better to kick
off some masquerading intruder immediately than to give
that person opportunities for hacking into the system,
at least while you’re connected. It’ll also be a warning
to you: If you can’t connect, is someone else pretending
to be you?
Configure Network Adapters
You can choose between multiple adapters if present. In
this way you can prevent connections from outside your
network if the system is multi-homed, or configure it
for the same. Be sure to check the radio button “Maximum
connections” if you want to limit administrative connections
to one instead of the two allowed, or if you’re like me—slightly
paranoid—and want to make sure the two-connection limit
is enforced.
Configure Server Settings
The second folder in the Terminal Services Configuration
console is Server Settings. Open this to make sure the
settings for “Delete temporary folders” and “Use temporary
folders per session” are set to yes. By default, different
temporary folders are used for each session, so users
can store temporary information in a unique location.
Also, by default these folders are deleted when the session
ends. For security, these should remain in force. If temporary
folders are the same for both sessions or if folders remain
on the server, there’s a slight possibility of compromise
if someone comes along and opens them. Better to be safe.
Finally, note the Permissions page setting. Full control
is given by default to Administrators and the System.
If you want to limit it further, create the group using
normal tools and then change the permission setting here.
Full control provides the following permissions:
- Query information about a session.
- Modify connection parameters.
- Reset (or end) a session.
- Remotely control another user’s session.
- Log on to a session on the server.
- Log a user off from a session.
- Send a message to another user’s session.
- Connect to another session.
- Disconnect a session.
- Use virtual channels, which provides access from
a server program to client devices.
Secure the Client
Clients are configured in two places. First, in the Terminal
Services Client Configuration you can configure a secure
connection. In that same applet, you lock down terminal
services. Second, individual administrator settings can
be made from the local user’s portion of the Computer
Management console if the terminal server is stand-alone,
or from the “Active Directory Users and Computers” console
if it’s joined in the domain.
Got the connection settings locked down? Move on to the
server-side clients’ profiles. Open your user account
and make sure the Terminal Services Profile check box,
“Allow logon to terminal server,” is checked for your
account and for the account of any other administrators
who should have access. If other terminal servers used
for application servers aren’t present in your environment,
no other user accounts should have this checked. On the
sessions page you can make individual settings for “end
a disconnected session,” “active session limit,” and “idle
session limit.” You’ll override these settings by those
you set in Terminal Services Configuration, but if there’s
more than one administrator, you may wish to individualize
settings here and loosen them on the server.
This is also where you can lock down the reconnection
choices. Check “from originating client only” if you wish
to make sure that a disconnected session can be reconnected
only from the client that originated it. Then a wily hacker
with your account and password information won’t be able
to disconnect you and reconnect using another client.
(Otherwise, you’d only be able to fume and fuss, while
he continues the processing you started on the server
that may have required other passwords and parameters
above and beyond your user name and password.)
Check remote control settings. If you’re the only administrator
allowed to use terminal services, this shouldn’t be a
threat, but it could be otherwise. Disable that possibility
here by unchecking “enable remote control.”
Now that you’ve got client connections and user accounts
straightened out, don’t forget to check out the Terminal
Services Manager. You don’t configure security settings
here; rather, this is where you can see information on
other users’ connections. When a user is connected, you
can determine who the user is, what client that user is
working at, the IP address of the client, and the encryption
level. If someone’s messing with your server, go here
to catch him in the act. Incidentally, to disconnect the
intruder and end his connection, right-click the connection
and either reset it (no warning given) or disconnect it.
In the latter situation, the session doesn’t end. Programs
continue to run and no data is lost, but the user must
reconnect, first re-entering a password.
Call me Paranoid, But…
Here’s a final tip. If you really want to confuse your
enemies and impress your friends, configure IP Security
(IPSec). You’ll have a lot more configuration to do, and
you may want to look into special industrial-strength
network cards with onboard encryption processors to prevent
your client processors and that of the server from bogging
down. Not necessary, you say? Have more than one lock
on the doors to your house? Use a burglar alarm? To double-bolt
your admin session, IPSec allows you to encrypt all activity
between your client and the server. More on that next
month.