Servicios.

Para ver los servicios que ofrece nuestra máquina se puede usar el comando netstat. Por ejemplo:

# netstat -atu | grep '*:*' | more
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:ftp *:* LISTEN
tcp 0 0 *:telnet *:* LISTEN
tcp 0 0 *:printer *:* LISTEN
tcp 0 0 *:6000 *:* LISTEN
udp 0 0 *:syslog *:*

En un sistema Linux con una instalación por defecto, esta lista será mucho más larga. Nuestro objetivo es hacerla lo más pequeña posible, pero de forma que cubra nuestras necesidades.

Los servicios más comunes suelen tener asociado un nombre, que aparece en la columna etiquetada como "Local Address". En el caso de que el servicio no tenga asociado un nombre, en esta columna aparecerá el número de puerto en el que el servidor se encuentra a la escucha. En este ejemplo aparece un servicio en el puerto 6000, que corresponde al servidor de X.

Durante la instalación del sistema operativo se puede seleccionar qué servidores deseamos instalar en nuestra máquina. Algunos de ellos se arrancan en el momento del arranque inicial, mientras que otros son ejecutados bajo demanda, es decir, el proceso sólo se ejecuta cuando se establece una petición de servicio.

Servicios de Arranque directo.

El mismo programa de instalación pregunta qué servicios se desea arrancar durante el inicio de la máquina.

Entre estos servicios se encuentran:

  • Servicio de impresión: si quieres utilizar una impresora desde tu estación tendrás que dejar este servicio activo.

  • Syslog: no lo quites, es el servicio encargado de registrar los eventos que ocurren en tu máquina (por ejemplo, los intentos de conexión).

  • NFS: permite exportar directorios o discos a otros sistemas Unix. Aunque en principio esto puede parecer bastante deseable, con frecuencia NFS es fuente de problemas de seguridad, así que si se instala es conveniente revisar su configuración y estar pendiente de los parches de seguridad que vayan saliendo. A menos que realmente haga falta, nosotros recomendamos desactivarlo.

  • Samba: permite exportar directorios o discos a sistemas bajo Windows. Al igual que NFS, suele estar "en el punto de mira". A menos que realmente te simplifique la vida, no lo uses.

  • Correo SMTP: el programa que hace de servidor es difícil de configurar y tiene un amplio historial de agujeros de seguridad. Si dispones de una cuenta POP, te resultará mucho más sencillo utilizar un cliente de correo compatible (por ejemplo, pine para modo texto o netscape para X). Más adelante os detallamos un poco más sobre el sendmail.

  • Web, news, DNS: cualquiera de estos servicios requiere una configuración previa que puede ayudar a restringir el acceso a los mismos. Para una estación de trabajo, no hacen falta y es mejor no instalarlos.

  • Otros servicios: los siguientes servicios son muy específicos, y es bastante improbable que los necesites.

    bootparamd
     dhcpd
     gated
     routed
     rusersd
     rwalld
     rwhod
     snmpd
     squid
     xntpd
     ypbind
     yppasswdd
     ypserv

La forma mas directa y fácil de eliminar estos servicios es utilizar alguna herramienta de administración como el control-panel o linuxconf, o en modo texto el setup.

Desde la linea de comandos siempre podremos invocar a chkconfig para que elimine los enlaces que se generan en los diferentes directorios que controlan los niveles de ejecución.

Servicios de arranque bajo demanda.

Los servicios de arranque bajo demanda son controlados en sistemas UNIX por el demonio inetd y aparecen listados en el fichero /etc/inetd.conf. Cuando inetd recibe una petición por un puerto asociado a un servicio lanza en ese momento el servicio correspondiente pasando a la escucha de nuevo.

Actualmente en RedHat, esta función la desempeña xinetd ( Extended Internet Services Daemon ). Los servicios más habituales que controla este super-daemon pueden ser los siguientes:

  • ftp: permite transferir ficheros hacia o desde nuestra estación de trabajo. Recomendamos permitir el acceso por FTP sólo desde un rango limitado de máquinas.

  • telnet: permite abrir una sesión remota en nuestra estación. También es recomendable limitar el acceso por máquinas.

  • shell (rsh), login (rlogin): es preferible quitarlos, siempre que sea posible, puesto que permiten entrar en la máquina o ejecutar comandos de forma remota sin necesidad de dar un password. Si se dejan, limitar siempre el acceso por máquinas. Otra posibilidad es utilizar un sustituto más seguro como el SSH (Secure Shell) que se discutirá en un punto posterior..

  • Gopher: se trata de un servicio de información poco usado en la actualidad; los detalles de su configuración quedan fuera del ámbito de esta guía.

  • talk, ntalk: permiten mantener una conversación interactiva con un usuario en la misma máquina o en otra remota.

  • pop-2: es una versión antigua del protocolo POP; se puede quitar.

  • pop-3: es el servidor del protocolo de correo POP3; si dispones de un a cuenta POP y simplemente quieres leer tu correo, este servicio NO hace falta para nada.

  • imap: otro protocolo de correo, similar al POP; tampoco hace falta en una estación de trabajo.

  • finger: puesto que puede dar información útil para un atacante (por ejemplo, si hay alguien conectado que pueda darse cuenta de una entrada anómala), la mayoría de los administradores suelen quitarlo.

  • time: sirve para sincronizar el reloj entre un grupo de máquinas; lo mejor es quitarlo.

  • auth: mantiene un registro de qué usuario está ejecutando qué servicio TCP. Puede ser útil para el administrador.

La configuración del super-daemon xinetd viene organizada de la siguiente forma:

  • Fichero /etc/xinietd.conf: contiene los parámetros de configuración global, como pueden ser los parámetros relativos al registro de los accesos en los ficheros del sistema.

  • Directorio /etc/xinetd.d: aquí se alojan los diferentes archivos de configuración de cada servicio controlado por xinetd. En cada uno de ellos se específican los parámetros de configuración individuales de cada daemon.

El fichero de configuración de xinetd por defecto que trae RedHat es el siguiente:

defaults
{
        instances               = 60
        log_type                = SYSLOG authpriv
        log_on_success          = HOST PID
        log_on_failure          = HOST
}
includedir /etc/xinetd.d

Donde cada opción especifica lo siguiente:

  • instance=60: especifica el nº máximo de peticiones que pueden estar simultáneamente activas para un servicio.

  • log_type= SYSLOG authpriv: la opción especifica el formato que queremos usar para capturar la salida de un servicio. Los valores son FILE o SYSLOG.

  • log_on_succes = HOST PID: esta opción especifica que información será registrada cuando se inicie el servicio. Los valores que acepta son los siguientes: PID HOST USERID EXIT DURATION

  • log_on_failure = HOST: especifica que será registrado bien cuando el servicio no pueda ser iniciado debido a falta de recursos o porque se ha denegado el acceso según las reglas establecidas. Valores: HOST USERID ATTEMPT RECORD.

  • Includedir /etc/xinetd.conf: define el directorio donde residirán los ficheros de configuración de cada servicio.