To ensure that my CentOS machines run as efficiently and securely as possible, I disable a number of services after each installation. The end result is a system that accepts ssh connections on TCP port 22, and on one or more service ports that are in use by the applications hosted on the platform. To get to this state, I go through and disable numerous services that come enabled by default. Here is the default list of services that are enabled after a CentOS 4.4 installation: 
$ chkconfig –list | grep on 
atd             0 ff   1 ff   2 ff   3 n    4 n    5 n    6 ff 
messagebus      0 ff   1 ff   2 ff   3:on    4:on    5:on    6:off 
smartd          0:off   1:off   2:on    3:on    4:on    5:on    6:off 
portmap         0:off   1:off   2:off   3:on    4:on    5:on    6:off 
sendmail        0:off   1:off   2:on    3:on    4:on    5:on    6:off 
netfs           0:off   1:off   2:off   3:on    4:on    5:on    6:off 
cups            0:off   1:off   2:on    3:on    4:on    5:on    6:off 
irqbalance      0:off   1:off   2:off   3:on    4:on    5:on    6:off 
rpcgssd         0:off   1:off   2:off   3:on    4:on    5:on    6:off 
xfs             0:off   1:off   2:on    3:on    4:on    5:on    6:off 
isdn            0:off   1:off   2:on    3:on    4:on    5:on    6:off 
autofs          0:off   1:off   2:off   3:on    4:on    5:on    6:off 
gpm             0:off   1:off   2:on    3:on    4:on    5:on    6:off 
apmd            0:off   1:off   2:on    3:on    4:on    5:on    6:off 
crond           0:off   1:off   2:on    3:on    4:on    5:on    6:off 
acpid           0:off   1:off   2:off   3:on    4:on    5:on    6:off 
microcode_ctl   0:off   1:off   2:on    3:on    4:on    5:on    6:off 
pcmcia          0:off   1:off   2:on    3:on    4:on    5:on    6:off 
cpuspeed        0:off   1:on    2:on    3:on    4:on    5:on    6:off 
xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off 
rpcidmapd       0:off   1:off   2:off   3:on    4:on    5:on    6:off 
readahead_early 0:off   1:off   2:off   3:off   4:off   5:on    6:off 
readahead       0:off   1:off   2:off   3:off   4:off   5:on    6:off 
sshd            0:off   1:off   2:on    3:on    4:on    5:on    6:off 
anacron         0:off   1:off   2:on    3:on    4:on    5:on    6:off 
network         0:off   1:off   2:on    3:on    4:on    5:on    6:off 
kudzu           0:off   1:off   2:off   3:on    4:on    5:on    6:off 
syslog          0:off   1:off   2:on    3:on    4:on    5:on    6:off 
nfslock         0:off   1:off   2:off   3:on    4:on    5:on    6:off 
rawdevices      0:off   1:off   2:off   3:on    4:on    5:on    6:off 
mdmonitor       0:off   1:off   2:on    3:on    4:on    5:on    6:off 
haldaemon       0:off   1:off   2:off   3:on    4:on    5:on    6:off 
Several of these services are required, but several others serve no purpose in my environment, and use CPU and memory resources that would be better allocated to my applications. Since I don’t use RPC services, autofs or NFS, those are the first to get disabled: 
$ /sbin/chkconfig –level 0123456 portmap off 
$ /sbin/chkconfig –level 0123456 nfslock off 
$ /sbin/chkconfig –level 0123456 netfs off 
$ /sbin/chkconfig –level 0123456 rpcgssd off 
$ /sbin/chkconfig –level 0123456 rpcidmapd off 
$ /sbin/chkconfig –level 0123456 autofs off 
I also don’t allow individual hosts to receive mail from the outside world, so sendmail gets nixed next: 
$ /sbin/chkconfig –level 0123456 sendmail off 
On server platforms, who needs printing?: 
$ /sbin/chkconfig –level 0123456 cups off 
Now we get to the font server, isdn capabilities, console mouse and pcmcia support. I don’t use these services on my servers, so they get disabled as well: 
$ /sbin/chkconfig –level 0123456 xfs off 
$ /sbin/chkconfig –level 0123456 isdn off 
$ /sbin/chkconfig –level 0123456 gpm off 
$ /sbin/chkconfig –level 0123456 pcmcia off 
Once these services are disabled (and optionally stopped with the service command or a reboot), my netstat output looks nice and clean: 
$ netstat –tcp –udp –listening 
Active Internet connections (only servers) 
Proto Recv-Q Send-Q Local Address               Foreign Address             State 
tcp        0      0 *:ssh                       *:*                         LISTEN 
This has served me well over the years, since it reduces boot time (less rc scripts to run), and frees up additional resources for my applications (while this isn’t substantial, every page of memory helps!). |