|
Softpanorama |
May the source be with you, but remember the KISS principle ;-)
|
Any installation of Solaris loads many packages that are not needed for a server to function. However, even if you remove unneeded packages, there are several startup services which can be disabled. As part of your minimalization process, you want to reduce number of processes and services running on your server. Some of these unneeded services can pose a potential security risk. There are two main places to configure which services are active: the /etc/inetd.conf file and the /etc/rc.X/ directories.
inetd.conf
This file specifies which ports the inetd daemon will listen for. You eliminate
uneccessary services by commenting them out. There are many web tutorials on configuring
the inetd.conf file.
rcX.d services
/etc/rcX.d contains startup and shutdown scripts. (The startup scripts start with
"S", the shutdown with "K". The standard recommendation is to rename the uppercase
S to a lowercase one. However,
Jeff Campione recommends renaming files with a prefix of "NO". My friend
Jeff Veiss moves files into
a subdirectory called "disabled".
The following table displays each of the Solaris Startup files, where they are placed, and which distribution and package they are part of. (I left out the "K" files for brevity. A list of resources which recommend which scripts can be disabled follows):
directory |
filename |
installed with package | package description | MetaCluster | comments |
| rcS.d | S10cvc | SUNWcvcr | Network Console daemon and rc script | SUNWCXall | For E10000? |
| S10initpcmcia | SUNWpcmci | PCMCIA Card Services, (Root) | SUNWCreq | Initialize pcmcia cards | |
| S15initpcihpc | SUNWcsr | Core Solaris, (Root) | SUNWCreq | ?? | |
| S30network.sh | SUNWcsr | Core Solaris, (Root) | SUNWCreq | start up networking; plumb each interface | |
| S30rootusr.sh | SUNWcsr | Core Solaris, (Root) | SUNWCreq | does configuration needed to mount /usr via nfs | |
| S33keymap.sh | SUNWcsr | Core Solaris, (Root) | SUNWCreq | loads keyboard mappings and initializes keyboard defaults | |
| S35cacheos.sh | SUNWcsr | Core Solaris, (Root) | SUNWCreq | configure devices before setting up cache disk | |
| S40standardmounts.sh | SUNWcsr | Core Solaris, (Root) | SUNWCreq | mount /usr, /usr/platform, etc | |
| S41cachefs.root | SUNWcsr | Core Solaris, (Root) | SUNWCreq | if root is cachefs file system, startup cachefsd | |
| S42coreadm | SUNWcsr | Core Solaris, (Root) | SUNWCreq | Restore the core file configuration that was in effect before reboot. | |
| S42ncakmod | SUNWncar | Solaris Network and Cache Accelerator(Root) | SUNWCall | ?? | |
| S50devfsadm | SUNWcsr | Core Solaris, (Root) | SUNWCreq | configure /dev directory | |
| S70buildmnttab.sh | SUNWcsr | Core Solaris, (Root) | SUNWCreq | mount file systems in mnttab | |
| S01MOUNTFSYS | SUNWcsr | Core Solaris, (Root) | SUNWCreq | Mount all local filesystems | |
| rc0.d? | S01MOUNTFSYS | ||||
| rc1.d? | S01MOUNTFSYS | ||||
rc2.d |
S01MOUNTFSYS | SUNWcsr | Core Solaris, (Root) | SUNWCreq | Mount all local filesystems |
| S05RMTMPFILES | SUNWcsr | Core Solaris, (Root) | SUNWCreq | remove files in /tmp and /var/tmp | |
| S20sysetup | SUNWcsr | Core Solaris, (Root) | SUNWCreq | print the system configuration upon startup | |
| S21perf | SUNWaccr | System Accounting, (Root) | SUNWCall | enable system activity data gathering | |
| S30sysid.net | SUNWadmr | System & Network Administration Root | SUNWCreq | configures basic network functions | |
| S40llc2 | SUNWllcr | LLC2 driver and its initialization programs | SUNWCuser | ?? | |
| S47asppp | SUNWapppr | PPP/IP Asynchronous PPP daemon configuration files | SUNWCall | start the PPP daemon | |
| S69inet | SUNWcsr | Core Solaris, (Root) | SUNWCreq | configure ip routing, the default route;domain name | |
| S70uucp | SUNWbnur | Networking UUCP Utilities | SUNWCall | clean up uucp lock files | |
| S71ldap.client | SUNWcsr | Core Solaris, (Root) | SUNWCreq | starts ldap_cachemgr | |
| S71rpc | SUNWcsr | Core Solaris, (Root) | SUNWCreq | start rpc | |
| S71sysid.sys | SUNWadmr | System & Network Administration Root | SUNWCreq | if /.UNCONFIGURED exists reconfigure the system | |
| S72autoinstall | SUNWadmr | System & Network Administration Root | SUNWCreq | if /.UNCONFIGURED exists reconfigure the system | |
| S72inetsvc | SUNWcsr | Core Solaris, (Root) | SUNWCreq | start inetd | |
| S72slpd | SUNWslpr | SLP, (Root) | SUNWCuser | ?? | |
| S73cachefs.daemon | SUNWcsr | Core Solaris, (Root) | SUNWCreq | starts up cachefs file systems | |
| S73nfs.client | SUNWcsr | Core Solaris, (Root) | SUNWCreq | start lockd and statd;mount remote file systems | |
| S74autofs | SUNWatfsr | System & Network Administration Root | SUNWCreq | start the automounter daemon | |
| S74syslog | SUNWcsr | Core Solaris, (Root) | SUNWCreq | start the system logger daemon | |
| S74xntpd | SUNWntpr | NTP, (Root) | SUNWCuser | startup network time protocol | |
| S75cron | SUNWcsr | Core Solaris, (Root) | SUNWCreq | start cron daemon | |
| S75flashprom | SUNWuxflr | Sun4u System FLASH PROM Update (?) | SUNWCXall | Install FLASH PROM Update for Sun4u Systems (?) | |
| S75savecore | SUNWcsr | Core Solaris, (Root) | SUNWCreq | save core | |
| S76nscd | SUNWcsr | Core Solaris, (Root) | SUNWCreq | start up the name service cache daemon | |
| S80lp | SUNWpsr | SunSoft Print - LP Server, (root) | SUNWCreq | start the line printer scheduler | |
| S80PRESERVE | SUNWcsr | save edit files in /usr/preserve | SUNWCuser | recovers data from unsaved vi sessions | |
| S80spc | SUNWpcr | SunSoft Print - Client, (root) | SUNWCuser | something to do with printing | |
| S85power | SUNWpmr | Power Management config file and rc script | SUNWCuser | power management | |
| S88sendmail | SUNWsndmr | Sendmail root | SUNWCreq | start sendmail | |
| S88utmpd | SUNWcsr | Core Solaris, (Root) | SUNWCreq | start up utmpd to clean up utmp entries | |
| S89bdconfig | SUNWdial | Buttons/Dials Streams Module | SUNWCall | ||
| S90wbem | SUNWwbcor | WBEM Services (root) | SUNWCuser | ?? | |
| S91afbinit | SUNWafbr | Elite3D Device Drivers and Pipelines | SUNWCXall | For systems with Elite3D Graphics(?) | |
| S91ifbinit | SUNWifbr | Sun Expert3D (IFB) Graphics System Software (Root) | SUNWCXall | For systems with Elite3D Graphics(?) | |
| S92volmgt | SUNWvolr | SUNWCuser | start the volume management daemon | ||
| S93cacheos.finish | SUNWcsr | Core Solaris, (Root) | SUNWCreq | ?? | |
| S94ncalogd | SUNWncar | Solaris Network and Cache Accelerator(Root)? | SUNWCall | ?? | |
| S95ncad | SUNWncar | Solaris Network and Cache Accelerator(Root)? | SUNWCall | ?? | |
| S99audit | SUNWcsr | Core Solaris, (Root) | SUNWCreq | starts up auditd | |
| S99dtlogin | SUNWdtlog | SUNWCuser | automatically start the CDE login window on the console | ||
rc3.d |
S15nfs.server | SUNWcsr | Core Solaris, (Root) | SUNWCreq | startup remote file sharing daemons |
| S50apache | SUNWapchr | Apache Web Server (root) | SUNWCall | startup http daemon | |
| S76snmpdx | SUNWsacom | Solstice Enterprise Agents 1.0.3 files for root file system | SUNWCuser | startup snmp | |
| S77dmi | SUNWsacom | Solstice Enterprise Agents 1.0.3 files for root file system | SUNWCuser | startup snmp | |
| S80mipagent | "SUNWmipmr(?) or SUNWmipa" |
Mobile IP mobility agent | SUNWCall? | x86 only? | |
| rc?.d | S10init1394 | SUNW1394h | IEEE 1394 Video Conferencing Support | SUNWCxall? | x86 Only? |
| rc?.d | S95picld | SUNWpiclr | sunfire and sunblade | SUNWCXall | Needed for thermal diagnostics? |
Many of these scripts need to be disabled, some need to be modified, and a few need to be created.
Which ones can be disabled?
Unless you are absolutely sure, don't delete a startup file, just disable it. There
is a difference between deleting a file and preventing them from starting up...
If sure are sure you don't need a file, then change its name or move it to a subdirectory
called "disabled":
There are many discussions on which startup files can be disabled (Sabernet, Roble, Jeff Campione/Sans , Sage, and others); and several scripts (Titan, YASSP-Post installation steps).
mkdir /etc/rc1.d/disabled/
mkdir /etc/rc2.d/disabled/
mkdir /etc/rc3.d/disabled/
mv -f /etc/rc2.d/S*asppp /etc/rc2.d/disabled/
Which ones need to be modified?
Some of the existing rc files should be modified to add additional logging or increase
security. For example, The line in /etc/rc2.d/S72inetsvc: /usr/sbin/inetd -s
should be modified to read /usr/sbin/inetd -s -t in order for inetd to
trace the incoming connections. Syslog will now log the client's ip address and
port number, along with the name of the service. You probably also should comment
out the multicast route (224.0.0.0) located within this file.
Additional Startup Files
The experts recommend creating /etc/rc3.d/S70nddconfig (and a link to
/etc/init.d/nddconfig). This file will contain ndd commands designed to
increase network security. (Solaris
Operating Environment: Network Settings for Security).
Jeff Campione also recommends creating an /etc/rc2.d/S75sshd startup
script. If you have any static routes or proxy arp entries, create a file /etc/rc2.d/S99static_routes
and place the arp and "route" commands in it. (Source:
YASSP-Post installation
steps))
Titan also creates a /etc/rc3.d/S79tmpfix (/etc/init.d/tmpfix) to change the "sticky bit" on the /tmp directory.
http://www.securityfocus.com/focus/sun/articles/install.html- Securityfocus
http://www.roble.com/docs/secure_solaris.html-
Roble
http://www.ist.uwaterloo.ca/security/howto/2000-09-19.html - Univ of Waterloo
(good discussion of services, also a script to shut them off)
http://www.usenix.org/sage/sysadmins/solaris/solaris/services.html#startups-
Sage
http://www.sabernet.net/papers/Solaris.html-
Sabernet
http://www.fish.com/titan-
Titan
http://www.sans.org/y2k/practical/Jeff_Campione_GCUX.htm- Jeff Campione/Sans
http://www.sun.com/blueprints/1200/network-updt1.pdf,
http://www.sun.com/solutions/blueprints/1299/network.pdf - Solaris Operating
Environment: Network Settings for Security
http://www.yassp.org/after.html- YASSP:
Post installation steps
Copyright © 1996-2008 by Dr. Nikolai Bezroukov. www.softpanorama.org was created as a service to the UN Sustainable Development Networking Programme (SDNP) in the author free time. Submit comments This document is an industrial compilation designed and created exclusively for educational use and is placed under the copyright of the Open Content License(OPL). Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.
Standard disclaimer: The statements, views and opinions presented on this web page are those of the author and are not endorsed by, nor do they necessarily reflect, the opinions of the author present and former employers, SDNP or any other organization the author may be associated with. We do not warrant the correctness of the information provided or its fitness for any purpose.
Last modified: June 05, 2008