installation can be secured: the object is to have a box which can be accessed remotely via SSH and therefore used as a general purpose Unix server.
1.1. Patch and Firewall
First <ilnk=”patchsolaris”>patch and <ilnk=”firewallsolaris”>firewall the machine.
1.2. Network-Related Daemons
In this section, our aim is to permanently stop network-related daemons which are not required, or better still, remove all software related to them. (Removal means fewer tools for intruders to play with.)
Whilst there are high-level, graphical tools which help with Solaris software package administration, we require something more fine-grained; in addition, it is beneficial to understand the Solaris package system so we opt for use of the command-line tools such as pkginfo and pkgrm. And /var/sadm/install/contents tells us which files belong to which packages.
The remainder of this section reflects the rough journal of the securing of and a real installation. As such it is not a textbook example, but a real one!
Initial Scan of Open Ports
Scanning the Solaris box with nmap shows a scary number of possible entry points for would-be hackers:
7/tcp open echo
9/tcp open discard
13/tcp open daytime
19/tcp open chargen
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
37/tcp open time
79/tcp open finger
111/tcp open sunrpc
512/tcp open exec
513/tcp open login
514/tcp open shell
515/tcp open printer
540/tcp open uucp
587/tcp open submission
898/tcp open unknown
4045/tcp open lockd
6112/tcp open dtspc
7100/tcp open font-service
32771/tcp open sometimes-rpc5
32772/tcp open sometimes-rpc7
32773/tcp open sometimes-rpc9
32774/tcp open sometimes-rpc11
32775/tcp open sometimes-rpc13
32776/tcp open sometimes-rpc15
32777/tcp open sometimes-rpc17
32778/tcp open sometimes-rpc19
32779/tcp open sometimes-rpc21
32780/tcp open sometimes-rpc23
inetd
Start simple: SSH does not run out of the super-server, inetd, so we comment out almost everything from /etc/inetd.conf and
kill -HUP <inetd pid>
Network-Related Packages (r-commands; finger)
Next, look for network-related packages.
pkginfo | grep -i network
yields three SUNW packages to uninstall — shown also are packages which depend on those we want to remove (indentation indicates a package dependency — an indented package depends on the above, less indented package):
SUNWrcmdc Remote Network Client Commands
SUNWppm Solaris Print Manager
SUNWmp MP Print Filter
SUNWscpu Source Compatibility, (Usr)
SUNWbcp SunOS 4.x Binary Compatibility
SUNWscbcp SPARCompilers Binary Compatibility Libraries
SUNWrcmdr Remote Network Server Commands (Root)
SUNWrcmds Remote Network Server Commands (Usr)
Removing all the above, and bringing the machine into single-user mode and backup, the following are gone (good!):
79/tcp open finger
512/tcp open exec # rexec
513/tcp open login # rlogin
514/tcp open shell # rsh
Printer Daemon
Next, we target the printer daemon:
pkginfo | grep -i printer
yields candidates: SUNWpsu Solaris Print – LP Server, (usr) SUNWpsr Solaris Print – LP Server, (root) SUNWpcu Solaris Print – Client, (usr) SUNWscplp Solaris Print – Source Compatibility SUNWpcr Solaris Print – Client, (root) Removal, moving to single-user mode and bringing the system back up we find
515/tcp open printer
has gone.
UUCP, FTP, Telnet and NTP
And now, UUCP, FTP, Telnet and NTP:
pkginfo | grep -i uucp
pkginfo | grep -i ftp
pkginfo | grep -i telnet
pkginfo | grep -i ntp
yielded
SUNWbnur Networking UUCP Utilities, (Root)
SUNWbnuu Networking UUCP Utilities, (Usr)
SUNWftpr FTP Server, (Root)
SUNWftpu FTP Server, (Usr)
SUNWtnetr Telnet Server Daemon (Root)
SUNWtnetc Telnet Command (client)
SUNWtnetd Telnet Server Daemon (Usr)
SUNWntpr NTP, (Root)
SUNWntpu NTP, (Usr)
eliminating
540/tcp open uucp
21/tcp open ftp
23/tcp open ftp
# The ntp daemon was not actually listening.
X Font Server
The X font server:
SUNWxwfs X Window System Font server
7100/tcp open font-service
YP, NIS+, NFS, Samba, PPP, HTTP and DHCP
More Services: YP/NIS, NIS+, NFS, Samba, PPP, Web, DHCP
SUNWypr NIS Server for Solaris (root)
SUNWypu NIS Server for Solaris (usr)
SUNWnisr Network Information System, (Root)
SUNWnisu Network Information System, (Usr)
SUNWnfscr Network File System (NFS) client support (Root)
SUNWvolu Volume Management, (Usr)
SUNWvolg Volume Management Graphical User Interface
SUNWnfscu Network File System (NFS) client support (Usr)
SUNWnfscx Network File System (NFS) client support (Root) (64-bit)
SUNWnfssr Network File System (NFS) server support (Root)
SUNWnfssu Network File System (NFS) server support (Usr)
SUNWnfssx Network File System (NFS) server support (Root) (64-bit)
SUNWsmbac samba - A Windows SMB/CIFS fileserver for UNIX (client)
SUNWsmbar samba - A Windows SMB/CIFS fileserver for UNIX (Root)
SUNWsmbau samba - A Windows SMB/CIFS fileserver for UNIX (Usr)
SUNWpppd Solaris PPP Device Drivers
SUNWpppdr Solaris PPP configuration files
SUNWpppdt Solaris PPP Tunneling
SUNWpppdu Solaris PPP daemon and utilities
SUNWpppdx Solaris PPP Device Drivers (64-bit)
SUNWpppg GNU utilities for PPP
SUNWapchr Apache Web Server (root)
SUNWapchu Apache Web Server (usr)
SUNWapchd Apache Web Server (usr)
SUNWtcatr Tomcat Servlet/JSP Container (root)
SUNWtcatu Tomcat Servlet/JSP Container
SUNWdhcm DHCP Manager
SUNWdhcsb Binary File Format Data Module for BOOTP/DHCP Services
SUNWdhcsr BOOTP/DHCP Server Services, (Root)
SUNWdhcsu BOOTP/DHCP Server Services, (Usr)
What’s Left?
So what’s left?
22/tcp open ssh
25/tcp open smtp
111/tcp open sunrpc
587/tcp open submission
6112/tcp open dtspc
7100/tcp open font-service
32771/tcp open sometimes-rpc5
32772/tcp open sometimes-rpc7
32773/tcp open sometimes-rpc9
32774/tcp open sometimes-rpc11
32775/tcp open sometimes-rpc13
32776/tcp open sometimes-rpc15
32777/tcp open sometimes-rpc17
32778/tcp open sometimes-rpc19
We have removed the X-font-server package and no XFS-type daemon is running, but the machine is still listening on 7100!?!? Aha! The font-server entry in inetd.conf is still there... Comment out.
Sendmail
Next up, Sendmail: we want to be able to send email but not receive it so rename and chmod 400 the sendmail init script in/etc/init.d and remove S88sendmail from rc2.d:
mv sendmail __sendmail.orig_install.no_start
and eliminated
25/tcp open smtp
Hmmm, port 587 also closed, I wonder what did that? Google [port 587 solaris]:
If you are using sendmail to receive messages (on port 25), you should turn off the Message Submission port (587/tcp). In /etc/mail/sendmail.cf, comment out
O DaemonPortOptions=Port=587, Name=MSA, M=E
with a hashmark
So we got one for free!
CDE (/usr/dt)
There is a load of RPC-related stuff to get rid of. CDE uses RPC and its crap anyway... There’s also dtspc on 6112:
fgrep dtspc /var/sadm/install/contents
yields
/usr/dt/bin/dtspcd f none 0555 root bin 27376 27505 1016069365 SUNWdtdmn
/usr/dt/config/dtspcdenv f none 0444 root bin 1183 21978 1016069365 SUNWdtdmn
/usr/dt/share/man/man1m/dtspcd.1m f none 0444 root bin 5230 44603 1016073808 SUNWdtma
/usr/dt/share/man/man4/dtspcdenv.4 f none 0444 root bin 5316 53514 1016073844 SUNWdtma
so remove
SUNWdtma CDE man pages
SUNWdtdmn CDE daemons
SUNWscgui Solaris Smart Card Administration GUI
SUNWjmfp Java Media Framework Player
SUNWpdas PDA Synchronization for Solaris
SUNWdtjxt Java Extensions
SUNWdtdst CDE Desktop Applications
SUNWpmowu Power Management OW Utilities, (Usr)
SUNWdtnsc Netscape Componentization Support for CDE
SUNWpmowm Power Management OW Utilities Man Pages
SUNWdthe CDE HELP RUNTIME
SUNWdtezt Solaris Desktop Extensions Applications
SUNWdtmaz Desktop Power Pack man pages
SUNWdtim Solaris CDE Image Viewer
SUNWdtwm CDE DESKTOP WINDOW MANAGER
SUNWdtab CDE DTBUILDER
SUNWdthev CDE HELP VOLUMES
SUNWdthez Desktop Power Pack Help Volumes
SUNWdtdem CDE DEMOS
Solaris Management Tools
Noticed this on a restart:
Shutting down Solaris Management Console server on port 898.
so
pkginfo | grep -i management
so
SUNWmcex Solaris Management Console 2.1 (Examples)
SUNWmcdev Solaris Management Console 2.1 (Development Kit)
SUNWmc Solaris Management Console 2.1 (Server Components)
SUNWwbmc Solaris Management Console 2.1 (WBEM Components)
SUNWmga Solaris Management Applications
SUNWdclnt Solaris Diskless Client Management Application
SUNWlvmg Solaris Volume Management Application
SUNWrmui Resource Management User Interface Components
SUNWpmgr Solaris Patch Management Applications
SUNWlvma Solaris Volume Management APIs
SUNWmga Solaris Management Applications
SUNWmcc Solaris Management Console 2.1 (Client Components)
SUNWmccom Solaris Management Console 2.1 (Common Components)
then init s, init 3 had no effect! Try a reboot — eliminated:
898/tcp open unknown
Solaris Web Management Tools
A netstat -a | grep LIST shows up
*.5987 *.* 0 0 49152 0 LISTEN
Google [port 5987 solaris]
The CIM Object Manager listens for remote method invocation (RMI) connections on RMI port 5987 and now listens for XML/HTTP connections on HTTP port 5988. (In the Solaris 8 software release and updates of the Solaris 8 release, the CIM Object Manager listened for XML/HTTP connections on default HTTP port 80.)
Solaris documentation indicates that CIM is part of WBEM.
fgrep -i WBEM /var/sadm/install/contents
yields up
SUNWmgapp WBEM Management Applications
SUNWrmwbu Resource Management WBEM Instrumentation (usr)
SUNWrmwbx Resource Management WBEM Instrumentation (64-bit
SUNWwbcou WBEM Services (usr)
Restart; eliminated!
Nearly There!
Aside from SSH, only RPC-related stuff left:
22/tcp open ssh
111/tcp open sunrpc
32771/tcp open sometimes-rpc5
32772/tcp open sometimes-rpc7
32773/tcp open sometimes-rpc9
32774/tcp open sometimes-rpc11
The Last Few RPC-Related Daemons
What processes are running?
ps -ef
reveals
rpc.ttdbserverd
snmpXdmid
dmispd
Of ToolTalk Google says:
CDE ToolTalk database server (ttdbserver) allows remote attackers to overwrite arbitrary memory locations with a zero, and possibly gain
and we know about SNMP...
fgrep -i tooltalk /var/sadm/install/contents
gives candidates:
SUNWtltk ToolTalk runtime
SUNWolrte OPEN LOOK toolkits runtime environment
SUNWtltkd ToolTalk developer support
SUNWtltkm ToolTalk manual pages
SUNWdtct UTF-8 Code Conversion Tool
SUNWxwdem X Window System demo programs
SUNWlpmsg LP Alerts
# ...and for SNMP :
SUNWsacom Solstice Enterprise Agents 1.0.3 files for root file system
SUNWmipr Mobile-IP (Root)
SUNWmipu Mobile-IP (Usr)
Inetd and RPC: Finally
A final consideration of inetd and RPC — we don’t need the former since SSH runs independently and we don’t want the latter, so:
/etc/init.d/inetsvc stop (to stop inetd)
/etc/init.d/rpc stop
cd /etc/init.d
mv inetsvc __inetsvc.orig_install.no_start
mv rpc __rpc.orig_install.no_start
chmod 400 __inetsvc.orig_install.no_start
chmod 400 __rpc.orig_install.no_start
syslogd
That leaves no TCP listeners and one UDP listener:
*.syslog Idle
The man page for syslogd indicates that the default behaviour is to listen.
/etc/init.d/syslog: # ...and /etc/rc?.d/S??syslog
## /usr/sbin/syslogd >/dev/msglog 2>&1 &
/usr/sbin/syslogd -t >/dev/msglog 2>&1 &
/etc/default/syslogd:
LOG_FROM_REMOTE=NO # ...from "YES"
and restart.
Recent Comments