0% encontró este documento útil (0 votos)
111 vistas75 páginas

Seguridad en Sistemas Linux: Guía Completa

El documento trata sobre los sistemas Linux y la seguridad en los mismos. Explica conceptos clave como el kernel de Linux, la importancia de la autenticación del usuario root, el proceso de arranque GRUB, las diferentes distribuciones Linux, los cortafuegos, copias de seguridad, registros, compartición de archivos a través de NFS, cifrado RAID, protocolo SSH, y hosts bastión.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
111 vistas75 páginas

Seguridad en Sistemas Linux: Guía Completa

El documento trata sobre los sistemas Linux y la seguridad en los mismos. Explica conceptos clave como el kernel de Linux, la importancia de la autenticación del usuario root, el proceso de arranque GRUB, las diferentes distribuciones Linux, los cortafuegos, copias de seguridad, registros, compartición de archivos a través de NFS, cifrado RAID, protocolo SSH, y hosts bastión.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Sistemas Linux

[2.1] ¿Cómo estudiar este tema?

[2.2] Introducción a Linux

[2.3] Seguridad en la instalación

[2.4] Seguridad en la autenticación

[2.5] Securizar el acceso a la consola

[2.6] Securizar el acceso por red

[2.7] Otras medidas de seguridad

[2.8] Proxies

[2.9] Sistemas de detección de intrusos

2
TEMA
Sistemas Linux
Esquema

Linux Seguridad local Seguridad en red

TEMA 2 – Esquema
Sistema operativo de software Seguridad en las funciones que no Seguridad en las funciones que
libre muy popular cuyo código requieren acceso a la red requieren acceso a la red
puede ser modificado libremente
Seguridad en la autentificación Seguridad en el acceso a la red:
Introducción • TCP Wrapper
• El kernel • Cortafuegos
• El sistema de archivos Seguridad en el acceso a la consola: • Netfilter
• Los permisos • BIOS
• GRUB Proxies
Instalación • Bloqueo de sesión • Squid
• Particionado • Teclas de petición del sistema • WPAD
• Memoria swap • Terminales virtuales • SARG
• Cifrado con LUKS • Usuarios
• Postinstalación y gestión de
paquetes Técnicas de detección de intrusos
Otras medidas de seguridad

© Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos
Seguridad en Sistemas Operativos

Ideas clave

2.1. ¿Cómo estudiar este tema?

Linux es conocido mundialmente por sus ventajas sobre otros sistemas operativos
propietarios, como su mayor rendimiento, menor tasa de fallos, seguridad y gran
soporte para todo tipo de hardware. Aunque, por encima de todo, la mayor ventaja que
ofrece es que el sistema operativo Linux es software libre, es decir, cualquier persona
puede descargarse el código fuente de Internet o adquirir un DVD de bajo coste con la
imagen, por lo que es el sistema operativo líder en el mundo de los servidores

El funcionamiento de Linux se basa principalmente en el kernel, el cual se puede definir


como el núcleo del sistema. Cualquier persona puede descargar el kernel de Linux de
Internet y compilarlo él mismo o descargar un parche que contiene información sobre
las últimas actualizaciones realizadas desde la anterior versión del kernel.

En Linux, el usuario administrador es root, que dispone de todos los privilegios del
sistema. Cualquier atacante desearía tener el control de root, ya que de esta forma tendría
acceso a todos los servicios, dispositivos y cuentas de usuario.

Para arrancar Linux o cualquier otro sistema operativo en un host se debe de configurar
un proceso de inicio. El proceso de inicio empleado por Linux es: GRUB o LILO, aunque
este último se usa cada vez menos, el cual puede arrancar Linux o cualquier otro sistema
operativo instalado en el host.

La gran variedad de distribuciones existentes de Linux, como Slackware, Debian,


Ubuntu, SuSE, CentOS, Fedora o Red Hat, permiten al usuario encontrar la
distribución que más se ajuste a sus necesidades. Incluso existen distribuciones Linux
especializadas en la seguridad, como Tails o Kali Linux

Actualmente se producen millones de comunicaciones entre host de todo el mundo, y


en esas comunicaciones puede haber intrusos que intenten recolectar datos ajenos.
Para detectar esas intrusiones existen los IDS, los cuales presentan dos tipos:

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Basados en host Residen y protegen un host en particular.

Residen en uno o más host y protegen a todos los host conectados


Basados en red
a su red.

A veces puede ser interesante analizar el tráfico que genera un ordenador para
decidir si bloquear o dejar pasar la comunicación. Para ello existen los cortafuegos
(firewalls en inglés), que son programas que examinan el tráfico que atraviesa una
interfaz y toman decisiones de filtrado basándose en una serie de reglas.

Los cortafuegos pueden ser dispositivos software o hardware. Los cortafuegos suelen
confundirse con los listas de control de acceso (ACLs - access control lists en
inglés), pero no son lo mismo. Los cortafuegos incluyen la función de filtrado de
paquetes estática, como las ACLs, pero algunos cortafuegos pueden examinar algo más
que simples encabezados de paquete; también pueden examinar los datos (o la carga
útil) de los paquetes, o recordar paquetes previos del mismo flujo para decidir si son
bloqueados o no.

Hoy en día, la información es un activo de gran valor, tanto para las empresas como
para los particulares. Si se produjera un accidente que dañara dicha información, como
por ejemplo la infección por un virus o ransomware, las consecuencias podrían ser
fatales. Para intentar evitar esta tragedia existen los backups o copias de seguridad,
los cuales permiten restaurar un sistema de ficheros dañado al estado guardado en la
última copia de seguridad realizada. Por eso es importante realizar copias de seguridad
periódicamente y comprobar que pueden restaurarse correctamente.

Los archivos de registro de Linux (logs en inglés), que por defecto se encuentran
almacenados en el disco duro local, contienen datos generados por los demonios del
sistema, el kernel, etc. Estos datos deben gestionarse mediante políticas de registro,
ya que tienen una vida útil limitada. En estas políticas de registro se define cómo se
va a tratar a estos registros, si se tienen que mantener o no, durante cuánto tiempo se
mantienen, el almacenamiento de estos registros, etc. En la mayoría de las
distribuciones de Linux los registros se almacenan en el directorio /var/log.

Los sistemas de archivos en red, NFS (network file system), permiten que dos hosts
Linux compartan un sistema de archivos (file system en inglés), por lo tanto, varias
máquinas en una misma red pueden acceder a ficheros remotos como si se tratara de
archivos locales de una forma totalmente transparente para el usuario.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

En la arquitectura de NFS intervienen al menos dos personajes:


Servidor Clientes

Almacena Acceden de forma remota


los archivos compartidos a los datos del servidor

Para asegurar los datos que se encuentran almacenados dentro de los discos locales
se suele utilizar la tecnología RAID (Redundant Array of Inexpensive Disks). La
tecnología RAID permite utilizar varios discos como si fueran un único disco,
distribuyendo y/o replicando los datos almacenados, con lo que se mejorará la
seguridad y disponibilidad de los datos.

El protocolo de consola segura, más conocido como SSH (secure shell en inglés),
permite la conexión desde un equipo cliente a un servidor remoto, para realizar
acciones en el servidor de igual forma que si se hicieran en la consola del equipo local,
con lo que se ofrecen infinidad de posibilidades. Para mantener la seguridad en todas
estas acciones entre el cliente y el servidor, el protocolo SSH autentica tanto al cliente
como al servidor, y cifra todos los datos que viajan entre las dos máquinas, de manera
que, si alguien intercepta la conversación, no pueda extraer los datos que intervienen
en ella.

Un host bastión consiste en un host altamente securizado o bastionado, ejecutando


una aplicación con el fin de asegurar una red de computadores. Esta aplicación permite
convertir casi cualquier máquina en un cortafuegos, router u máquina de salto a
otros equipos de la red.

Hay varias distribuciones de Linux gratuitas que están específicamente configuradas


para ser utilizadas como bastión, pudiéndose ejecutar desde DVD, USB o desde una
instalación completa en un host.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Un hacker puede intentar atacar un


sistema que esté ofreciendo un
servicio, por ejemplo una página web
o un servidor de correo, con el fin de
causar daños en el sistema o conseguir
datos a los que no tenga acceso.

Para conseguir esto, el atacante


utilizará diversos métodos, como
usurpaciones de identidad, scripts maliciosos, troyanos, etc. El administrador
del sistema debe intentar proteger al sistema lo máximo posible frente a estos ataques,
y cuando sucedan, se debe de rastrear las huellas dejadas por el atacante para obtener
información sobre quién, cómo y qué ha hecho sobre el sistema.

Este tema está dedicado a la seguridad en Linux. Nos hemos basado en las
distribuciones Kali Linux 2018.4 (9 de octubre de 2018), Ubuntu Server 18.04.2
Bionic Beaver (14 de febrero de 2019) y CentOS 7.6-1810 (3 de diciembre de 2018).
Las tres distribuciones son gratuitas y se pueden descargar de sus respectivas páginas
web.
Para detalles sobre los comandos visite la correspondiente documentación oficial de
cada distribución:
Kali Linux: [Link]
Ubuntu Server 18.04: [Link]
CentoOS: [Link]

Para estudiar este tema, lee las ideas clave.

Se recomienda tener un sistema Kali Linux 2018.4, o al menos algún sistema operativo
basado en Debian (como Ubuntu), instalado en una partición del sistema operativo o
bien en una máquina virtual para poder practicar las diferentes lecciones de este tema.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

2.2. Introducción a Linux

El sistema operativo Linux se divide en tres capas: hardware, kernel y aplicaciones.

El kernel

El kernel, situado entre el hardware y las aplicaciones, puede ser considerado como el
núcleo de los sistemas Linux, y su función es la de hacer que el software y el hardware
trabajen juntos. Las funciones más importantes del kernel son administrar la memoria
y el tiempo de ejecución de los programas que están ejecutándose, y gestionar el acceso
a los periféricos a través de controladores (drivers en inglés).

El kernel puede ser descargado de numerosos servidores en Internet y sus


actualizaciones pueden ser realizadas a base de parches (si no son muy grandes) o
descargando y recompilando nuevamente el kernel, si se trata de grandes cambios
respecto a la versión anterior del kernel. Mantener el kernel actualizado es vital si
queremos mantener un sistema seguro y estable.

Con respecto a la seguridad en el núcleo de Linux tendremos que tener claro los
siguientes aspectos:

Las opciones de red.


Los algoritmos de cifrado que soporta.
Hardware de cifrado que soporta.
El sistema de archivos.
Las herramientas del proyecto GNU.

En ciertos casos, será necesario informarse si nuestra distribución actualiza ciertos


aspectos de nuestro interés que afectan a la seguridad del kernel. En caso contrario
habría que pensar en compilar (como medida de emergencia) el kernel o parche del
kernel que necesitemos.

Para ver las versiones del kernel que podemos tener acceso desde nuestro repositorio,
usaremos el siguiente comando:
# apt-cache search linux-image

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Una buena fuente de información del núcleo de Linux se podría encontrar en la web
de Debian [Link] o en la web de Ubuntu
[Link]

Para instalar la versión del kernel que necesitamos usaremos el comando:


# apt-get install linux-image-version

La actualización o elección de un nuevo kernel, es un proceso muy delicado, pues puede


conllevar una nueva configuración del sistema. Es muy importante leer lo que la
instalación del nuevo kernel nos pregunta.

El sistema de archivos

El sistema de archivos de Linux, como el de otros sistemas operativos, es en forma de


árbol. Hay un único tronco o directorio raíz (/) del que salen todas las ramas, o
directorios. Un directorio puede contener archivos u otros directorios.

En la siguiente tabla se pueden ver algunos de los diferentes sistemas de archivos


soportados en Linux:

Sistema de Tamaño máximo Tamaño máximo de


Notas
archivos de archivo la partición
Fat16 2 GB 2 GB Soportado
Fat32 4 GB 8 TB Soportado

NTFS 2 TB 256 TB Sistema de archivos de


Windows
ext2 2 TB 32 TB Soportado

ext3 2 TB 32 TB Sistema de archivos


estándar de Linux
ext4 16 TB 1 EB La evolución de ext3
reiserFS 8 TB 16 TB No está mantenido

JFS 4PB 32PB Creado por IBM. No


está mantenido
XFS 8 EB 8 EB Creado por SGI

Tabla 1: Tipos de sistema de archivos.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

En Linux, y en toda la familia de sistema operativos UNIX, la mayoría de los elementos


se modelan como un fichero. Así en un sistema operativo Linux podemos tener
diferentes tipos de archivos:

Archivos regulares (texto, ejecutables, etc.).


Directorios.
Enlaces simbólicos (symlinks) o «duros» (hard links).
Dispositivo orientado a caracteres.
Dispositivo orientado a bloques.
Sockets (comunicación de red).
Pipes (comunicación entre procesos).

La seguridad del sistema de archivos reside en permisos que tienen usuarios y grupos
a nivel de archivos. Si introducimos la orden ls –la el sistema nos mostrará todo el
contenido del directorio en el que nos encontremos y los permisos de cada uno.

Figura 1: Resultado del comando ls –la.

El listado de la imagen anterior se divide en una serie de columnas:


La primera columna son una serie de 10 letras que describen el tipo de archivo, los
permisos del usuario propietario, los permisos del grupo propietario y los permisos
del resto de usuarios.
La segunda columna, es un número que nos dice el número de archivos/directorios
que contiene.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

La tercera y cuarta columna son respectivamente, el usuario y el grupo propietario


del archivo. Todos los archivos tienen un usuario y un grupo de usuarios propietario.
La quinta columna es el tamaño en bytes.
Las siguientes 3 columnas muestran la fecha y hora del último acceso al archivo.
Finalmente, la última columna el nombre del archivo o directorio.

Permisos

Volvamos a echar un vistazo a la columna de los permisos (primera columna) descrita


anteriormente. La primera letra describe el tipo de archivo. En la siguiente tabla se
muestra los valores de dicha primera letra y su significado:

Símbolo Tipo de archivo


- Archivo regular
d Directorio
l Enlace
c Dispositivos orientado a caracteres
s Socket
p Pipe
b Dispositivo orientado a bloques

Tabla 2. Valores de las letras de archivos.

Los nueve siguientes símbolos describen de tres en tres (y en este orden) los permisos
del propietario, del grupo y del resto de usuarios. Los permisos se dividen en lectura r,
escritura w y ejecución x.

Figura 2: Permisos en Linux.

En la imagen anterior, sobre el directorio bin, el usuario root tiene los permisos de
lectura, escritura, y ejecución (rwx). Seguidamente, el grupo root, tiene los permisos de
lectura y ejecución, pero no tiene el de escritura (r-x). Finalmente, el resto de usuarios
también tienen permisos de lectura y ejecución (r-x).

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Para cambiar los permisos del archivo usamos el comando chmod. Los permisos se
pueden definir mediante bits:

rwx rwx rwx = 111 111 111


rw- rw- rw- = 110 110 110
rwx --- --- = 111 000 000

De esta manera:

rwx = 111, en binario = 7


rw- = 110, en binario = 6
r-x = 101, en binario = 5
r-- = 100, en binario = 4

Los permisos más típicos suelen ser 755 (rwx r-x r-x).

Aunque lo más sencillo en versiones modernas del comando es identificar a los


permisos por su nombre:

# chmod u=rwx,g=rw,o= <nombre_archivo>

Por ejemplo, si queremos habilitar todos los permisos al propietario, asignar permisos
de lectura y escritura al grupo y quitar todos los del resto de los usuarios, ejecutaremos
una de las siguientes órdenes:
# chmod 760 <nombre_archivo>
# chmod u=rwx,g=rw,o= <nombre_archivo>

Si queremos cambiar el usuario propietario del archivo tenemos el comando chown:


# chown <nombre_usuario> <nombre_archivo>

Si queremos cambiar el grupo propietario del archivo tenemos el comando chgrp:


# chgrp <nombre_grupo> <nombre_archivo>

Para no tener que establecer los permisos de todos los ficheros nuevos que crea un
usuario, se puede utilizar el comando umask que define la máscara de los permisos a
utilizar por defecto. Aunque su uso no es intuitivo, porque en lugar de especificar los
permisos a establecer, se indican los permisos a retirar. Es decir, para dejar todos los

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

permisos al usuario, pero eliminar los permisos de escritura al grupo y al resto de


usuarios, se debe emplear el comando:

# umask 022

SETUID y SETGID

Proyecto GNU (GNU is not Unix)

En septiembre de 1983 se hizo público el proyecto por Richard Stallman. La idea era
hacer de forma altruista que un sistema operativo fuera del software propietario. El
primer desarrollo del proyecto fue el editor de texto emacs, a los que siguieron muchos
más.

En principio, Linux es simplemente el kernel del sistema operativo, pese a que hoy en
día se conoce el proyecto Linux/GNU simplemente como Linux.

2.3. Seguridad en la instalación

Se recomienda que para la instalación del sistema operativo se realice una instalación
mínima para así evitar complicaciones. Una vez esté dicha instalación realizada, se
deberán instalar solo los componentes que vamos a necesitar. Instalar servicios
innecesarios puede complicar nuestra labor de securización o bastionado del sistema.

En la siguiente pantalla, durante la instalación de Debian, se muestran las opciones


que nos da el sistema operativo y cómo aparece elegida la opción «Utilidades
estándar del sistema». Nosotros elegiremos dicha opción para no instalar software
innecesario.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Figura 3: Instalación de Debian.

De la misma manera, en la siguiente captura de pantalla de Ubuntu, no seleccionaremos


ningún programa a instalar.

Figura 4: Instalación de Ubuntu.

La instalación del sistema nunca debería realizarse usando directamente Internet. En


su lugar se deberán usar DVD o CD y solamente se conectará a Internet cuando lo
tengamos bien preparado para afrontar el riesgo. Parte de la instalación consiste en la
decisión del particionado del disco duro.

Particionado de Linux

La decisión del particionado del disco duro deberá de ser manual. Tener diferentes
directorios del sistema en distintos volúmenes lógicos permite un mayor control del

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

sistema de ficheros y aumenta el rendimiento y la seguridad del sistema. De esta manera


las particiones y el tamaño de estas atenderán a diversos factores:
Se deberá poner en una partición o volumen separado, cualquier directorio con
datos dinámicos que pudieran variar sustancialmente. Un ejemplo serían los
directorios /var o /var/log.
Los directorios donde los usuarios tengan permisos de escritura deberán estar en
volumen lógico separado. Por ejemplo los directorios: /home, /tmp y /var/tmp.
Se deberán montar en particiones de solo lectura, aquellos directorios que
contengan datos estáticos.

En la siguiente imagen se muestra cómo hemos particionado nuestra máquina virtual.

Figura 5: Particionado en Linux.

Para entender cómo aplicar el particionado, tendremos que entender los diferentes
directorios del sistema. Para realizar esta lista nos hemos basado en la distribución
Ubuntu y Debian.
/ (raíz): es el nivel más alto dentro de la jerarquía de directorios. De aquí cuelgan el
resto de carpetas, particiones y otros dispositivos.
/bin (binarios): los binarios son los ejecutables de Linux. Aquí tendremos gran parte
de los ejecutables de los programas propios del sistema operativo, aunque no es el
único directorio que contiene ejecutables.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

/boot (arranque): aquí nos encontramos los archivos necesarios para el inicio del
sistema, desde los archivos de configuración de GRUB o LILO, hasta el propio kernel
compilado del sistema.
/dev (dispositivos): en este directorio estarán los dispositivos del sistema (como si
fueran archivos); por ejemplo: usb, sda (o hda) con sus respectivos números que
indican las particiones.
/etc (configuración): aquí se guardan los ficheros de configuración de los
programas instalados, así como ciertos scripts que se ejecutan en al inicio del sistema.
Los valores de estos ficheros de configuración pueden ser complementados o
sustituidos por los ficheros de configuración de usuario que cada uno tiene en su
respectivo directorio «home».
/home (carpetas personales): cada usuario del sistema tendrá una carpeta a su
nombre dentro de este directorio. Dentro de dicho directorio el usuario tendrá
subcarpetas con su configuración y archivos personales. Cada usuario tendrá
permisos sobre su directorio home (excepto root que los tendrá sobre todos).
/lib (bibliotecas): contiene las bibliotecas del sistema (conocidas como librerías),
así como módulos y controladores (drivers).
/lost+found (archivos perdidos): es un directorio que podemos encontrar en todas
las particiones. Cuando por cualquier circunstancia se cierra mal el sistema (un
apagón por ejemplo), cuando se reinicie se llamará al programa fsck para restaurar
la integridad del sistema de archivos. En esta carpeta encontraremos la información
que se mal-guardó debido a la incidencia.
/media: es el directorio donde se montarán las unidades extraíbles como los USB,
CD/DVD y en algunas distribuciones, como Ubuntu, las particiones adicionales.
/mnt y/o /media (montaje de particiones): son directorios que se suele usar para
montajes temporales de unidades extraíbles.
/opt (opcionales): para guardar paquetes adicionales de aplicaciones.
/proc: información dinámica del kernel de Linux.
/root: es la carpeta personal del administrador. Es la única carpeta de usuario que no
se encuentra dentro del directorio /home.
/sbin (binarios de sistema): son los ejecutables de administración del sistema
(mount, shutdown…).
/tmp (temporales): es un directorio donde se almacenan ficheros temporales. Cada
vez que se inicia el sistema este directorio se limpia.
/usr: contiene la configuración y las bibliotecas de C, C++ y de aplicaciones de
escritorio. También tiene archivos compartidos y el código fuente para el kernel Linux
(en /usr/src).

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

/var (archivos variables): ficheros del sistema dinámicos como los buffers de
impresión, los logs, etc.

Figura 6: Esquema de los directorios principales de Linux.

Además de los diferentes directorios que podemos encontrar hay dos términos que
debemos conocer para una instalación óptima y una buena gestión de las particiones:

Memoria Swap (de intercambio)

Cuando nuestra memoria RAM no es suficiente para todos los procesos que están
corriendo en el sistema, Linux usa el disco duro para almacenar la información que
no nos cabe en la RAM. Para realizar esta función de swap (o de intercambio) es
necesario crear un volumen lógico, que deberá tener el mismo tamaño que la
memoria RAM del sistema. Este proceso de usar el disco duro como memoria caché
se llama memoria virtual.

Cifrado de particiones con LUKS

Cifrar la información que contienen los discos duros de un sistema Linux es vital.
Cuando se accede a un sistema sin permiso se suele dar el robo de información, es
importante protegerse ante ello por la importancia o confidencialidad que pueda

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

tener esta información o simplemente por ser datos personales que uno quiere tener
bien protegidos. LUKS (Linux Unified Key Setup) permite cifrar toda una unidad de
disco, y es la opción más segura, puesto que nos asegura que toda la información
está siempre cifrada (e.g. no deja la partición swap sin cifrar). Aunque Linux
también dispone de herramientas para cifrar ficheros individuales (e.g., con PGP o
GPG) o sistemas de ficheros completos (e.g., con EcryptFS).

Post-instalación y gestión de paquetes

En los siguientes capítulos se desarrolla toda una serie de medidas a tomar para
securizar o bastionar nuestro sistema. De todas maneras nos parece bastante
importante señalar, el empezar a utilizar el comando sudo. Es probable que el
comando sudo no aparezca instalado, por lo que quizá necesitemos acceder al sistema
como root para poder usar el comando apt-get de instalación de paquetes. A
continuación, vamos a ver la instalación de paquetes, y para permitir que un usuario
pueda utilizar el comando sudo iremos al punto Usuarios.

En Linux, los programas están divididos en paquetes individuales, lo que facilita su


mantenimiento. Según la distribución en la que nos encontremos, el formato de dichos
paquetes varía. En Debian y Ubuntu son de extensión .deb, aunque cada familia de
distribuciones suele tener su propio gestor y formato de paquetes. Por ejemplo, las
distribuciones Linux basadas en Red Hat utilizan paquetes .rpm.

Una vez instalada la base del sistema operativo necesitaremos empezar a instalar todos
los paquetes necesarios según los servicios que queramos tener en nuestro servidor.
Tanto Debian como Ubuntu utilizan APT (advanced packaging tool) como sistema
de gestión de paquetes. El fichero /etc/apt/[Link] contiene los repositorios de
los que la utilidad apt descarga los paquetes para su mantenimiento.

Hay que tener en cuenta varios puntos en la configuración de repositorios:


Usar la rama estable del repositorio, a no ser que se necesite una versión específica.
Usar un repositorio oficial de la distribución instalada o de los fabricantes del
software del sistema que garanticen las actualizaciones de seguridad.
Usar repositorios que nos faciliten el código fuente, salvo que esté documentada la
modificación del mismo o se necesite versiones inestables.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

En la instalación nos dan la posibilidad de elegir uno de los repositorios oficiales de


Debian.

Figura 7: Configuración del gestor de paquetes.

Si queremos actualizar la base de datos de repositorios ejecutaremos la orden:


# apt-get update

Es importante actualizar la base de datos de repositorios antes de cualquier acción de


actualización o instalación de paquetes.

Y si queremos actualizar el sistema completo ejecutaremos:


# apt-get upgrade && apt-get dist-upgrade

Los paquetes tienen una estructura de dependencia y gestores de paquetes como APT
se encargan de resolver dichas dependencias. En Ubuntu y Debian esas dependencias
varían entre: paquetes necesarios, recomendados y sugeridos. Al instalar un
paquete se instalan, por defecto, los paquetes recomendados.

En la instalación de un nuevo paquete se debe especificar que no se instalen los


paquetes recomendados usando la siguiente orden:
# apt-get install <nombre_del_paquete> --no-install-recommends

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Para la eliminación de un paquete:


# apt-get remove <nombre_del_paquete>

Si queremos que además de borrar el paquete eliminemos también todos los archivos
de configuración:
# apt-get --purge remove <nombre_del_paquete>

Si queremos eliminar los paquetes que son innecesarios, usaremos:


# apt-get autoremove

No deberemos de tener paquetes que no necesitamos instalados en nuestro sistema.


Así reducimos el riesgo posibles errores de aplicaciones que no necesitamos. Cuantas
menos aplicaciones, menos posibilidad de errores.

Para realizar un listado de paquetes instalados:


# dpkg -l

Tras la desinstalación de paquetes que no queremos, tendremos que desinstalar los


paquetes innecesarios:
# apt-get autoremove

2.4. Seguridad en la Autenticación

La base de la autenticación basada en contraseñas consiste en crear contraseñas


robustas. Es ahí donde se entran en juego crear contraseñas de calidad, difícilmente
adivinables mediante la fuerza bruta o el conocimiento de su usuario.

Esta sería una lista de consejos a la hora de realizar contraseñas:


Escribir contraseñas largas, de al menos doce caracteres.
Usar números, letras mayúsculas y minúsculas, y -opcionalmente- caracteres
especiales.
Idealmente, las contraseñas deberían generarse de manera aleatoria y almacenarse
en un gestor de contraseñas. Pero si es necesario recordarlas no se debe usar una
única palabra que se pueda encontrar en el diccionario (aunque se realicen
variaciones sobre la misma), en su lugar se recomienda escribir varias palabras que
sean fáciles de recordar (passphrases).

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Evitar información pública como fechas de nacimiento, para elegir las claves tipo
PIN.

La lista de usuarios del sistema se almacena en el fichero /etc/passwd, que está


accesible a todos los usuarios del sistema, mientras que en las distribuciones modernas
sus contraseñas se almacenan el fichero /etc/shadow, al que normalmente sólo tiene
acceso root. Aunque hay diferentes formas de almacenar las contraseñas de los
usuarios (siempre de manera cifrada o en forma de hash), las distribuciones modernas
suelen utilizar un formato de hash basado en SHA-512 iterado 10.000 veces y que
utiliza una salt diferente para cada usuario, de forma que todos los hashes sean
diferentes, incluso si varios usuarios tienen la misma contraseña. Por lo que se puede
decir que el almacenamiento de las contraseñas en Linux es más robusto que en los
sistemas operativos Windows.

Para vigilar la calidad de las contraseñas podemos utilizar PAM (pluggable


authentication module). Mediante el módulo pam_cracklib se analiza dicha calidad y
puede analizar aspectos como la longitud de la contraseña, evitar que las contraseñas
sean palabras en diccionarios o que la contraseña no sea la misma que la anterior. La
configuración del módulo pam_cracklib reside en /etc/pam.d/common-password.

También podemos asignar caducidad a las contraseñas existentes desde el fichero


/etc/[Link].

2.5. Securizar el acceso a la consola

BIOS

La configuración de la BIOS debe estar protegida con una contraseña. Esto evitará los
cambios de configuración que vamos a hacer sobre ésta. Desde la BIOS se debe añadir
una contraseña al arrancar el sistema y establecer el disco duro como primera partición
de arranque desactivando el arranque de otras unidades como DVD o USB, llegando
incluso a eliminar la posibilidad si fuera posible.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

GRUB

GRUB es un gestor de arranque bastante popular en Linux desarrollado por el proyecto


GNU. Como Lilo, GRUB es capaz de iniciar varios sistemas operativos distintos, como
Linux, FreeBSD, OpenBSD y NetBSD, pero si queremos que arranque un sistema
operativo Windows deberemos utilizar un cargador en cadena.

GRUB posee la ventaja de aportar una interfaz gráfica, con lo que el usuario podrá
ver los comandos disponibles y no tendrá que recordarlos, lo que facilita enormemente
su uso.

En el caso de Debian y Ubuntu, GRUB es el cargador de inicio por defecto.

Figura 8: Error al sobrepasar el máximo de columnas.

Para una mayor seguridad, es necesario configurarlo para que no se pueda modificar
su configuración.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Para proteger el gestor de arranque desde Debian y Ubuntu lo haremos de la


siguiente manera:
1. Con la orden # grub-mkpasswd-pbkdf2 realizamos un hash PBKDF2 sobre una
contraseña.
2. En el fichero /etc/grub.d/40_custom añadiremos las siguientes líneas:
set superusers="superusuario"
password_pbkdf2 superusuario <hash_generado>
3. Editar del fichero /etc/default/grub la línea:
GRUB_TERMINAL=console
4. Actualizamos GRUB con la orden:
# update-grub

Por otro lado, en GRUB por defecto, aparecen dos entradas, una de ellas es la de
arranque normal y la otra es la de recuperación del sistema. Si el sistema tiene un usuario
root, nos pedirá la clave de dicho usuario al entrar en modo recuperación (modo single-
user). Sin embargo, si este usuario no fue creado, el sistema iniciará el sistema con el
usuario root sin pedirnos ninguna clave, por lo que se tendrá acceso completo al sistema.

Para evitar esto la solución sería asignar una clave a dicho usuario ejecutando las
órdenes:
# sudo su
# passwd

Se debe de configurar el tiempo de inactividad que tienen las consolas de texto


fuera del entorno gráfico.

Si queremos que la consola desconecte el usuario cuando se superen los 300 segundos
de inactividad tendremos que añadir en el archivo /etc/profile las líneas:
TMOUT=300
readonly TMOUT
export TMOUT

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Bloqueo de sesión

También existen herramientas para bloquear la sesión de la consola activamente.


En Debian existe la herramienta vlock y en Ubuntu la herramienta screen. Para su
instalación y uso, lea la documentación correspondiente.

Banner del Sistema

La información que aparece en el Banner de Sistema al iniciarse sobre lo que tienes


instalado, también puede identificar versiones vulnerables a la hora de atacar tu
sistema. Se pueden editar los ficheros /etc/issue y /etc/[Link].

Teclas de petición del sistema

Las teclas de petición del sistema (Magic SysRq key) y el Contr + Alt + Supr
conviene mantenerlas desactivadas. La primera permite, mediante una combinación
de teclas pasar directamente al kernel una orden de bajo nivel. Contr + Alt + Supr
permite reiniciar el sistema. Estas teclas pueden ser llamadas sin necesidad de haberse
logueado en el sistema.

Para desactivar Magic SysRq key en /etc/[Link] añadir la línea:


[Link] = 0

Para desactivar Contr + Alt + Supr

En Debian, en el fichero /etc/inittab comentar la línea:


ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

En Ubuntu, en el fichero /etc/init/[Link] comentar la línea:


exec shutdown -r now "Control-Alt-Delete pressed"

Terminales virtuales

Linux viene por defecto con 6 Terminales virtuales. Para acceder a cada una de ellas se
utiliza la combinación de teclas Alt + (F1, F2, F3, F4, F5 o F6). De esta manera,
podemos en un proceso de instalación de paquetes en la terminal tty1 mientras leemos
un archivo en la tty2.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Figura 9: Terminal virtual tty2 en Debian.

Deberemos limitar el número de Terminales virtuales a una sola.

En Debian, para deshabilitar todas las terminales virtuales excepto una tendremos que
comentar, del fichero /etc/inittab las siguientes líneas:
[Link]respawn:/sbin/getty 38400 tty2
[Link]respawn:/sbin/getty 38400 tty3
[Link]respawn:/sbin/getty 38400 tty4
[Link]respawn:/sbin/getty 38400 tty5
[Link]respawn:/sbin/getty 38400 tty6

En Ubuntu tendremos que eliminar los ficheros que configuran estas terminales
virtuales. Para esto usaremos desde la Shell de Linux el comando rm:
# rm /etc/init/[Link]
# rm /etc/init/[Link]
# rm /etc/init/[Link]
# rm /etc/init/[Link]
# rm /etc/init/[Link]

Usuarios

Al finalizar la instalación, según el sistema operativo, se crean distintos usuarios. En


Debian se crea un usuario root y un usuario sin privilegios de administración. En

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Ubuntu un usuario root deshabilitado y un usuario con privilegios de administración.


Los usuarios deberían de ser los siguientes:

Usuario con privilegios de administrador sin permisos de acceso remoto.


Este usuario deberá poder ejecutar el comando sudo.
Usuario normal con permisos para acceder de manera remota y que
pudiera ejecutar el comando su. En caso de acceder de forma remota, el usuario
podrá ejecutar el comando su para usar el administrador.

El comando su nos permitirá usar el intérprete de comandos de otro usuario sin salir
de nuestra sesión. Nos pedirá la contraseña de la cuenta de usuario a la que queremos
acceder.

El comando sudo nos permitirá ejecutar un comando como si fuéramos otro usuario.
Nos pedirá la contraseña de nuestro usuario.

La ventaja que tiene sudo sobre su, es que solo ejecuta un comando como
administrador, estando al instante siguiente de nuevo como usuario sin privilegios.
Además, en equipos con múltiples administradores, permite identificar a la persona
que ha ejecutado dicho comando. Pero este comando tiene a veces un «período de
gracia», un pequeño tiempo en el que no necesitará pedir la contraseña para ejecutar
de nuevo un comando como el otro usuario, pasado este tiempo volverá a requerir la
contraseña. Es aconsejable desactivar este «período de gracia» para evitar que si
alguien se apodera de nuestra máquina durante el tiempo que esté activado pueda
ejecutar comandos de administrador.

Para desactivar este «período de gracia»:


1. sudo nano /etc/sudoers
2. Agregar la siguiente línea:
Defaults:ALL timestamp_timeout=0

Para limitar el acceso al comando su, realizar los siguientes pasos:


1. Crear el grupo «wheel».
# addgroup wheel
2. Añadir el usuario que queremos que pueda ejecutar el comando su al grupo recién
creado.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

3. Verificar que en el fichero /etc/pam.d/su aparece la siguiente línea:


auth required pam_wheel.so

Para limitar el uso de sudo hay que realizar los siguientes pasos:
1. Logarnos como root o utilizar el comando su.
2. Probar si el comando sudo está instalado mediante la orden sudo –V que comprueba
la versión. Si no nos muestra la versión del comando, tendremos que instalarlo.
3. Visualizar la lista los grupos que existen en el sistema:
# vi /etc/group
4. Todos los usuarios que vayan a usar el comando sudo tendrán que estar en el grupo
admin. Crear el grupo admin si no está creado:
# addgroup admin
5. Para mostrar los grupos a los que pertenece un usuario:
# groups <nombre_de_usuario>
6. Para añadir un usuario al grupo admin:
# usermod -a -G admin <nombre_de_usuario>
7. Se ha de modificar el fichero /etc/sudoers. Para modificarlo usaremos el comando:
# visudo
8. Añadiremos la línea:
%admin ALL=(ALL) ALL
9. Guardaremos los cambios.

Figura 10: Archivo /etc/[Link].

Finalmente, es necesario que las cuentas del sistema estén bloqueadas y no se les
permita acceso a la consola o shell. Hay que tener en cuenta que no puede aplicarse

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

al usuario root. Esto evita la posibilidad de que un intruso pueda beneficiarse de una
de estas cuentas. Sigue los siguientes pasos:

1. Obtener todos los usuarios del sistema. Para ello seleccionaremos los usuarios con
un UID inferior a 500. Para obtener todos los usuarios con sus nombres UID y
Shell correspondientes, ejecutar el siguiente comando:
# awk -F: '{print $1 ":" $3 ":" $7}' /etc/passwd
2. Seguidamente bloquear cada uno de los usuarios del sistema con la orden:
# usermod -L <usuario>
3. Deshabilitaremos la Shell de cada uno de los usuarios del sistema con la orden:
# usermod -s /usr/sbin/nologin <usuario>

IMPORTANTE: No aplicar al usuario root

Consolas remotas SSH

El protocolo de administración remota por excelencia de servidores Linux es SSH


(Secure Shell), y aunque es un protocolo seguro, es necesario prestar especial atención
a su configuración (por ejemplo, deshabilitando la versión 1 del protocolo, que se
considera insegura), puesto que es una fuente continua de ataques.

En particular, es muy recomendable que las máquinas no expongan su servicio de SSH


a Internet, sino que se disponga de una red dedicada para la administración, y que el
demonio de SSH solo pueda recibir conexiones desde dicha red. En el caso de necesitar
administración remota por SSH a través de Internet, lo ideal sería desplegar una
solución de VPN que dé acceso a la red de administración y/o utilizar un host bastión
o máquina de salto, fuertemente securizado, que sea el único que expone su demonio
SSH a Internet, y que permita conectarse al resto de máquinas.

Para prevenir ataques, ciertos autores también recomiendan cambiar el puerto por
defecto de SSH del 22 a otro puerto (por ejemplo 2222), aunque hay que tener en
cuenta que esta es una solución de «seguridad mediante oscuridad», por lo que puede
evitar ataques automatizados, pero un atacante determinado puede realizar un escaneo
de puertos e identificar rápidamente el puerto alternativo de SSH. Así que hay que
evaluar la seguridad de cambiar el número de puerto, frente a los problemas operativos
que puede conllevar.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Adicionalmente, se recomienda impedir que el usuario root se conecte directamente


por SSH, sino que se conecte como un usuario sin privilegios y luego utilice su o sudo
para escalar privilegios o ejecutar comandos de administración. Del mismo modo, dado
que la gran mayoría de los ataques por SSH se basan en la utilización de contraseñas
débiles, robadas mediante técnicas de phishing, o reutilizadas en otros servicios que
han sufrido brechas de seguridad, es muy recomendable evitar la autenticación
mediante usuario y contraseña únicamente, y utilizar la autenticación de SSH basada
en claves asimétricas. De forma que el usuario crea un par de claves público-privadas
(típicamente RSA) y le indica al servidor que se fie de su clave pública
(~/.ssh/authorized_keys), de forma que puede utilizar su clave privada para
autenticarse de manera segura. Además, gracias a la flexibilidad del sistema de
autenticación PAM, también es posible utilizar un segundo factor de autenticación
como un código TOTP (time-based one-time password) para proteger el acceso por
SSH.

2.6. Securizar el acceso por red

Para restringir el acceso por red utilizaremos TCP Wrapper y un cortafuegos. Para
configurar el cortafuegos usaremos el comando iptables, aunque hay herramientas
más amigables como Shorewall en Debian y UFW en Ubuntu.

TCP Wrapper

TCP Wrapper ofrece un control de acceso a nivel de aplicación. No todas las


aplicaciones están preparadas para usar TCP Wrapper y para averiguarlo tendremos
que comprobar que el servicio hace uso de la librería libwrap.

Para comprobar si el servicio hace uso de libwrap ejecutaremos el comando:


# ldd /ruta/ejecutable/servicio | grep [Link]
En el caso de querer saber que paquetes funcionan con libwrap ejecutar:
$ apt-cache rdepends libwrap0

Por defecto TCP Wrapper admite toda conexión a los servicios. Para su configuración
específica podremos usar los ficheros /etc/[Link], para permitir los servicios y
/etc/[Link] para denegar los servicios.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Configuraremos TCP Wrapper para bloquear todas las conexiones a servicios privados
y permitir el acceso a servicios públicos. Realizaremos los siguientes pasos:
1. Encontrar los servicios públicos y privados que usan la librería libwrap. Usaremos el
comando:
# strings /ruta/ejecutable/servicio | grep libwrap

Si el comando anterior devuelve texto significará que el servicio habrá que configurarlo.
2. Si encontramos dos servicios portmap y sshd que queremos que sean privados y
encontramos otro, por ejemplo, vsftpd que sea público:
a) en el fichero /etc/[Link] pondríamos las líneas:
vsftpd: ALL
portmap, sshd: .[Link]
ALL: localhost
b) y en el fichero /etc/[Link] añadiríamos la línea:
ALL: ALL

La estructura de las líneas dentro de /etc/[Link] y /etc/[Link] es:


“demonio1 [,demonio2, …]: cliente”

Por defecto, las conexiones realizadas a través de TCP Wrapper se registran en el fichero
/var/log/[Link]

Sobre los cortafuegos

Como dijimos anteriormente, también es necesario un cortafuegos o firewall. Se


puede definir cortafuegos como «un programa que examina el tráfico de red para
filtrarlo o dejarlo pasar». Un cortafuegos puede ser un dispositivo hardware con el
programa encapsulado o un software para instalar en un host, pero ambos tienen la
misma función. La función del cortafuegos es bloquear el acceso no autorizado,
permitiendo al mismo tiempo comunicaciones autorizadas.

Los cortafuegos pueden ser confundidos con las listas de control de acceso (ACLs
– access control lists, en inglés), ya que los dos filtran paquetes, pero los cortafuegos
son capaces de analizar los datos dentro de los paquetes o recordar paquetes anteriores
del mismo flujo.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Un cortafuegos no sirve para nada si no está bien configurado. El administrador de


sistemas debe configurar unas reglas en el firewall para definir qué tráfico se debería
permitir y cuál se debería denegar en la red. Los cortafuegos permiten filtrar el tráfico
según: el tipo de protocolo, la dirección IP y el puerto de origen, la dirección IP y el
puerto de destino, el tipo de mensaje ICMP y el código, los flags TCP y la interfaz de
red a la que llega el paquete. Existen dos tipos de cortafuegos: con estado y sin
estado. La diferencia entre ambos radica en que los cortafuegos sin estado solo pueden
examinar un paquete cada vez, sin tener en cuenta paquetes anteriores del mismo flujo,
mientras que un cortafuegos con estado analiza además el contexto del paquete dentro
del tráfico y para un determinado protocolo.

Los cortafuegos pueden desarrollar además funciones extra, como la traducción de


direcciones de red (NAT), la redirección de puertos, la creación de redes privadas
virtuales (VPN), o el análisis del tráfico web o de correo electrónico para detectar y
filtrar spam, virus u otro tipo de malware. A ese tipo de dispositivos con múltiples
mecanismos de seguridad se denominan unified threat management (UTM).

Netfilter (iptables)

Netfilter es el cortafuegos que viene en el núcleo de Linux y que se controla desde la


herramienta iptables.

iptables es la evolución de la herramienta ipchains, y mantiene el funcionamiento


basado en cadenas de reglas, pero en iptables las cadenas son parte de agrupaciones
lógicas llamadas tablas, que permiten realizar operaciones diferentes, y son de tres
tipos: filter, NAT y mangle.

Filter es la tabla por defecto, formada por las cadenas INPUT, OUTPUT y
FORWARD. Las reglas de cada cadena se ejecutan dependiendo del tipo de tráfico.
La cadena INPUT solo se aplica al tráfico destinado a dicho host. La cadena OUTPUT
solo se aplica al tráfico originado por dicho host. Mientras que las reglas de la cadena
FORWARD sólo se aplican al tráfico que atraviesan al host (entran por un interfaz de
red y salen por otor), cuando este funciona como un router o encaminador.

La tabla NAT está formada por las cadenas PREROUTING, POSTROUTING y


OUTPUT. Esta tabla está diseñada para la traducción de direcciones de red (NAT) y

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

se puede aplicar a todo el tráfico entrante (PREROUTING), saliente


(POSTROUTING) o generado por la máquina (OUTPUT).

Mangle se encarga de marcar los paquetes interesantes para capturarlos después.


También se ocupa de cambiar las opciones de tiempo de vida y tipo de servicio.

Estos serían los parámetros típicos de una regla de iptables:

-s: dirección IPv4 de origen.


-d: dirección IPv4 de destino.
-i: interfaz de entrada.
-o: interfaz de salida.
-p {tcp|udp|icmp}: protocolo de transporte.
--sport: puerto de origen.
--dport: puesto de destino.
-m state: consultar el estado del paquete.
-m limit: limitar el número de paquetes.

Para una buena configuración de un cortafuegos básico, queremos que primeramente


descarte los paquetes que no tienen asignada ninguna regla. Estos serían los pasos:
1. Eliminar las reglas existentes:
# iptables -F
2. Filtrar todos los paquetes por defecto en todas las cadenas:
# iptables -P INPUT DROP
# iptables –P OUTPUT DROP
# iptables –P FORWARD DROP
3. Permitir la entrada y salida de la interfaz loopback:
# iptables –A INPUT -i lo -j ACCEPT
# iptables –A OUTPUT -o lo -j ACCEPT
4. Añadir los permisos de entrada y salida de aquellas conexiones ya establecidas:
# iptables –A INPUT -m state -–state ESTABLISHED,RELATED -j ACCEPT
# iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Con estas reglas básicas empezaremos a añadir reglas que necesitaremos para nuestros
permisos. Por ejemplo, podremos realizar las siguientes reglas:

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

1. Permitir la resolución DNS:


# iptables -A OUTPUT -p udp -d [Link] --dport 53 -j ACCEPT

2. Permitir la actualización o instalación desde los repositorios de paquetes de Debian:


# iptables -A OUTPUT -d [Link] -p tcp --dport http -j ACCEPT
# iptables -A OUTPUT -d [Link] -p tcp --dport http -j ACCEPT
# iptables -A OUTPUT -d [Link] -p tcp --dport http -j ACCEPT

3. Permitir la conexión SSH en la IP [Link]


# iptables -A INPUT -p tcp -s [Link] --dport 22 –j ACCEPT

4. Permitir la conexión con el servidor NTP


# iptables -A OUTPUT -p udp -d [Link] --dport 123 -j ACCEPT

Siempre podremos ver la configuración del cortafuegos con el comando # iptables –


L. Una vez terminado la configuración nos interesaría guardar dicha configuración en
un archivo y ejecutar dicho archivo al inicio del sistema. Si no hacemos esto, al reiniciar
el servidor perderemos toda la configuración del cortafuegos.

Para guardar la configuración en un archivo usaremos el comando:


# iptables-save > /etc/[Link]

Y para ejecutarlo al inicio del sistema añadiremos al fichero /etc/[Link] la siguiente


línea:
iptables-restore < /etc/[Link]

Antes de la línea:
exit 0

Para saber más sobre Netfilter puedes consultar: [Link]

También existen otras herramientas que manejan la configuración de manera más


amigable. Shorewall (en Debian) y UFW (en Ubuntu) son dos de estas
herramientas. Tanto Shorewall como UFW manejan por detrás comandos de iptables
por lo que siempre se puede usar el comando # iptables –L para ver la configuración
que se ha aplicado.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Para saber más sobre el Shorewall puedes visitar [Link]


Para saber más de UFW puedes visitar [Link]

2.7. Otras medidas de seguridad

Deshabilitar servicios innecesarios

Para el manejo de los servicios en Debian se utiliza la utilidad sysv-rc-conf. Dicha


utilidad tiene que ser previamente instalada.
# apt-get install sysv-rc-conf

Ejecutaremos la utilidad:
# sysv-rc-conf

Figura 11: Utilidad sysv-rc-conf para la gestión de servicios.

En la imagen podemos ver varias columnas. Cada una de ellas es un run level. Los
servicios en Linux se ejecutan por run levels. Los run levels determinan cuando se
ejecutan los servicios. Van del 0 al 6 y la letra S. Los niveles 0, 6 y S están reservados
para el comienzo y finalización del sistema. El run level 1 se ejecuta en modo single-
user (modo recuperación). Los run level del 2 al 5 son para modo multi-user, con
diferentes capacidades de red y de entorno gráfico. Con la utilidad sysv-rc-conf

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

marcaremos con una X (usando la barra espaciadora) en qué run levels queremos que
funcione cada servicio.

Para cambiar el modo actual de ejecución, por ejemplo al run level 4, se usaría la
instrucción:

# telinit 4

Figura 12: Cambiar el modo actual de ejecución.

En Ubuntu se usará para listar los servicios el siguiente comando:


# service --status-all

Y el siguiente comando para deshabilitarlo:


# update-rc.d -f <nombre_servicio> remove

La siguiente lista, describe los servicios más habituales y si se recomienda


deshabilitarlos.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Nombre del servicio Descripción Acción


Configuración avanzada e interfaz de energía. Se utiliza para la
acpid Deshabilitar
gestión de la energía
cron Ejecuta trabajos programados. Dejar activo
Limpia la información de DNS en conexiones por red telefónica
dns-clean Deshabilitar
(dial-up).
[Link] Inicio de los scripts locales. Dejar activo
grub-common Muestra información en el menú de GRUB. Dejar activo
Configura el gestor de escala de frecuencias de CPU debajo
ondemand Dejar activo
demanda.
pppd-dns Limpia el fichero /[Link] cuando el sistema falla. Deshabilitar
rmnologin Elimina el fichero /etc/nologin al inicio. Dejar activo
rsync Permite la copia de ficheros a o desde máquinas remotas. Deshabilitar
rsyslog Permite el envío de mensajes. Dejar activo
Deshabilitar en
ssh Servidor de SSH. caso de tener
acceso físico
stopbootlogd Para el demonio de registro de logs enviados a la consola. Dejar activo
watchdog Inicia el demonio de "watchdog". Deshabilitar
wd_keepalive Inicia el demonio de "keepalive" de "watchdog". Deshabilitar

Figura 13: Lista de servicios principales de Linux.

Comprobar cuentas de usuarios

Para obtener la lista de usuarios del sistema podrás usar el siguiente comando:
# cat /etc/passwd

Figura 14: Archivo /etc/passwd con los usuarios del sistema.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

En la anterior imagen se ve como línea a línea se describen los usuarios del sistema con
los diferentes UID o la carpeta HOME de cada uno de ellos. Debian define en su
documentación, los siguientes usuarios por defecto:

root: es el superusuario.
daemon: algunos demonios (procesos) sin privilegios que necesitan escribir en
archivos del disco utilizan este usuario (como portmap, atd, etc.). Otros demonios
que no necesitan acceso a archivos usan el usuario nobody, nogroup o usan un
usuario específico.
bin: este usuario se mantiene por razones históricas.
sys: al igual que el usuario bin.
sync: se usa con el comando sync.
games: muchos juegos usan este usuario para poder escribir su high score.
man: el programa «man» usa este usuario para que puedan escribir las páginas del
manual en el disco duro (/var/cache/man).
lp: usado por los demonios de las impresoras.
mail: los clientes de correo electrónico del sistema, usa el usuario y grupo mail para
escribir en /var/mail. Varios servicios de correo electrónico también usa este
usuario por otras razones.
news: varios servidores de noticias y otros programas asociados a estos, usan este
usuario y grupo.
uucp: este usuario y su grupo, son usados por el subsistema del protocolo UUCP. Los
usuarios en este grupo pueden utilizar el comando uucico.
proxy: los demonios proxy que no tienen un usuario dedicado usan este usuario. Los
proxies pdnsd y squid usan este usuario.
majordom: majordomo tiene este usuario por motivos históricos. No se instala en
sistemas nuevos.
postgres: postgresql usa este usuario y grupo. Los archivos en /var/lib/postgresql
pertenecen a este usuario.
www-data: algunos servidores web usan este usuario. Se usa al escribir en sus ficheros
log o cualquier información escrita en el disco duro. Hay que tener en cuenta que el
contenido web no debería pertenecer a este usuario o el servidor web podría
modificarlo.
backup: se puede asignar al encargado de las copias de respaldo del sistema.
operator: históricamente es el usuario que puede conectarse remotamente sin
depender de NIS/NFS.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

list: los archivos y datos de las listas de correo pertenecen a este usuario. Algunos
programas asociados también usan este usuario.
irc: usado por demonios IRC.
gnats: usado por el servicio de control de errores de GNU.
nobody (usuario), nogroup (grupo): demonios que no necesitan archivos usan este
usuario/grupo. Ningún archivo del sistema debería pertenecer a este usuario/grupo.

Se ha evaluado que, si no se usan las funciones asociadas, se pueden borrar los


usuarios: proxy, www-data, list, irc, gnats, uucp, news y lp.

Para eliminar un usuario se puede usar la orden:


# userdel <nombre_usuario>

Por otro lado, hay que verificar y bloquear los accesos a la consola a los usuarios cuya
clave estuviera vacía.

Para ello ejecutar la orden:


# awk -F: '($2 == "") {print}' /etc/shadow

Si la orden anterior ha mostrado alguna línea, habrá que bloquear el usuario


correspondiente.

Tal y como ya se ha explicado:


# usermod -L <cuenta>
# usermod -s /usr/sbin/nologin <cuenta>

En el sistema existe el UID, un número asignado a cada usuario y que se almacena


junto a la lista de usuarios en el fichero /etc/passwd. El UID con valor 0 (cero) es el
asignado a la cuenta root.

Es importante comprobar que no existen varios usuarios con un UID igual a 0 (cero).
Para ello ejecutar el siguiente comando:
# awk -F: '($3 == "0") {print}' /etc/passwd

El anterior comando nos debería devolver únicamente la cuenta root.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

También tendremos que tener en cuenta el crear un grupo único por cada usuario
nuevo que creemos. Por defecto, el comando “useradd” crea un grupo con el nombre
igual al usuario. Por esto, con el comando “useradd” nunca deberemos usar la opción
“-g” y usar el funcionamiento por defecto del comando.

Opciones de montaje de ficheros

En el fichero /etc/fstab se definen las opciones de cómo se montan las particiones y


dispositivos del sistema. Los puntos de montaje pueden estar referenciados por un
UUID o por el nodo de montaje. Por ejemplo, el nodo de montaje del CDROM, en la
siguiente captura de pantalla es /dev/sr0. Para recorrer los archivos del CDROM
tendremos que ir al punto de montaje es /media/cdrom0.

Figura 15: Archivo /etc/fstab con la configuración de las particiones por defecto.

En la primera línea de la anterior imagen, se puede ver que la partición raíz “/” tiene la
opción de montaje “errors=remount-ro”, que el CDROM tiene user y noauto y que
el resto de puntos de montaje tienen la opción “defaults”. Hay que tener en cuenta
que las líneas que empiezan por almohadilla (“#”) son comentarios.

Para securizar las particiones del sistema modificaremos el fichero /etc/fstab


utilizando nuestro editor favorito (se recomienda nano).

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Tendremos que modificar las opciones de montaje de la siguiente manera:

1. Asignar la opción “nodev” a las particiones distintas a la raíz del sistema “/”. De esta
manera evitamos que, pese a crearse nodos de dispositivos dentro de la partición, no
puedan tratarse como tales y montar otros dispositivos dentro de estos. De esta manera
no podremos crear y utilizar un punto de montaje dentro de /home.

2. Asignar la opción “nosuid” a las particiones distintas a la raíz del sistema “/”. SUID
(Set owner User ID up on execution) es un tipo especial de permiso de los ejecutables
que permite al usuario que lo ejecuta, ejecutarlo como su usuario propietario (Suele ser
muy peligroso). Las particiones con la opción “nosuid” no podrán tener ficheros SUID
y así evitamos que los posibles problemas de una aplicación afecten al sistema.

3. Asignar las opciones “nodev”, “nosuid” y “noexec” a las particiones de medios


extraíbles como CDs. De esta manera evitamos cualquier ejecución desde medios
externos al sistema.

En la siguiente captura de pantalla puedes ver el estado de la configuración del fichero


/etc/fstab:

Figura 16: Archivo /etc/fstab con la configuración de las particiones modificado.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

También se puede evitar el montaje de discos a través del USB al añadir al final del
fichero /etc/modprobe.d/[Link] la siguiente línea:
blacklist usb-storage

Logs

Los sistemas Linux guardan un registro de los eventos más importantes ocurridos en
un sistema de logs o registro de auditoría, que suele almacenarse en el directorio
/var/log/, donde cada tipo de evento se almacena en un fichero diferente. Por
ejemplo, aunque el archivo de log principal es /var/log/messages, todos los eventos
relacionados con la autenticación (inicios de sesión válidos, intentos fallidos) se
almacenan en /var/log/[Link], los mensajes del kernel al arrancar se almacenan
en /var/log/dmesg, y los logs de los servidores importantes (como el servidor web
Apache) se almacenan en directorios separados, como por ejemplo /var/log/httpd/ o
/var/log/apache2/.

Los logs de Linux se almacenan en un formato de texto, con una línea de texto por
evento registrado, que consiste en la fecha y hora en la que ocurrió el evento, el nombre
del host donde ocurrió y el usuario o proceso que generó el evento, seguido de ‘:’ y una
cadena de texto con el mensaje del evento en sí. Un ejemplo de entrada de log Linux
podría ser:

May 3 [Link] localhost login[714]: ROOT LOGIN on '/dev/tty1'

Los logs de Linux son compatibles con el protocolo syslog, por lo que es muy fácil
recibir o enviar los logs a otros servidores Linux para centralizar la información. El
protocolo syslog es un protocolo muy simple basado en UDP o TCP (puerto 512),
donde, además de la fecha, la máquina origen y el mensaje, se define la severidad del
evento (en una escala de 0 a 7, donde el 0 emergency es el nivel más crítico y 7 debug,
el menos importante), y el código de recurso o facility que lo ha generado (e.g. Auth,
Kern, User, o Local0-local7). De esta forma es posible controlar la importancia de
los eventos que se desean registrar y enviarlos a ficheros o destinos diferentes en
función del tipo de eventos, mediante la definición de reglas. Un ejemplo del fichero
/etc/[Link] sería:

#; /etc/[Link]
#;
#; Send general messages to the console.
*.err;[Link] /dev/console

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

[Link];[Link] /dev/console

#; Next, we define where most daemons and applications


*.notice /var/log/messages

#; Do not log auth/authpriv messages here; rather log them to


#; a separate file for processing by security staff.
auth,[Link] /var/log/messages
auth,[Link] /var/log/[Link]

Security Enhanced Linux (SELinux), AppArmor y Grsecurity

SELinux es un módulo de seguridad del kernel de Linux desarrollado por la NSA


(National Security Agency) para proporcionar mandatory access control (MAC) y
control de acceso basado en roles (RBAC – role-based access control) en Linux.

El sistema de permisos en el que se basa la seguridad de Linux se conoce como


Discretionary Access Control (DAC), porque el dueño de cada fichero es el responsable
de otorgar o cambiar los permisos a sus ficheros. De este modo, aunque el
administrador del sistema quiera que los usuarios no tengan ficheros accesibles a otros
usuarios diferentes fuera de sus grupos, no hay forma de forzar esa política de manera
obligatoria (de ahí el nombre ‘discreccional’), y cualquier usuario puede otorgar
permisos de lectura a sus ficheros a cualquier otro usuario del sistema (chmod o+r *).
Por otro lado, el usuario root tiene permisos completos sobre el sistema, así que si
algunos de los demonios del sistema que ejecutan como root resulta comprometido y
permite ejecutar código, el atacante tiene control completo sobre el sistema.

SELinux permite definir una serie de políticas de seguridad obligatorias que


permiten, por ejemplo, definir a qué ficheros puede acceder cada demonio o usuario,
independientemente de sus permisos, incluso root. Para ello, en SELinx se asocian una
serie de etiquetas a los usuarios, ficheros y procesos (Nombre de usuario, Rol,
Tipo/Nivel/Dominio) que definen su contexto de seguridad. Las políticas de
seguridad definen, por tanto, las restricciones de los usuarios y procesos para acceder
a los recursos del sistema basadas en sus respectivos contextos de seguridad. SELinux
es una herramienta extremadamente potente, pero es difícil de configurar y
administrar.

AppArmor tiene un objetivo similar a SELinux (restringir a qué recursos puede


acceder un proceso), pero es mucho más simple de configurar y administrar. En
particular, en lugar de tener que etiquetar todos y cada uno de los usuarios y recursos

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

del sistema, con AppArmor solo es necesario definir para cada comando a proteger los
privilegios que se desean otorgar a cada aplicación, definiendo un simple fichero de
texto en /etc/apparmor.d/.

Grsecurity es un conjunto de parches para el Kernel de Linux que implementan


mejoras de seguridad, como un sistema de control de acceso basado en roles (RBAC),
capacidades de auditoría mejoradas, y sobre todo medidas para prevenir exploits y
escaladas de privilegio, con técnicas como la aleatorización del espacio de direcciones
(ASLR – address space layout randomization), páginas de memoria de solo-lectura, o
pila no ejecutable.

2.8. Proxies

Los proxies son un punto de conexión entre un ordenador y un sitio remoto de Internet.
Ofrecen un filtro mediante el cual se permite conexiones externas a la red.

La implantación de un proxy en una red tiene múltiples propósitos:


Restringir que los usuarios entren a ciertas zonas de la red.
Evitar los ataques a nivel de protocolo o aplicación desde el exterior.
Permitir/denegar el acceso a Internet de los usuarios de la red.
Evitar la divulgación de datos personales dese el exterior de la red.

Existen varios tipos de proxy:


Proxy de aplicación: consiste en un servidor que a su vez es un filtro de la
aplicación a utilizar. El protocolo de proxy más utilizado es el HTTP (web). El
Servidor proxy decide si permite o no, que esa aplicación conecte con un servidor
en el Internet público.
Gateway o Proxy de circuito: funciona redirigiendo paquetes pero no es capaz
de procesar o filtrar paquetes. Monitoriza los paquetes TCP y UDP.
Proxy NAT o Enmascaramiento de IP: implementa una serie de IP’s privadas
de red local y el enrutador se encarga hacer la conversión de las direcciones IP y los
puertos. Mantiene el anonimato de una red privada.
Proxy web cache: este proxy mantiene en caché las páginas más visitadas para,
de esta manera disminuir el tráfico de datos y mejorar la velocidad de la red. Este
proxy no permite el acceso libre de Internet filtrando y bloqueando contenido
potencialmente peligroso, como pueden ser ciertas páginas web.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Proxy transparente: encamina las conexiones para que sean realizadas desde el
proxy sin intervención del cliente. Este tipo de servidores refuerzan la seguridad del
uso de la red y también proveen de servicios de caché.
Proxy inverso: Muy utilizada para balancear la carga en granjas con varios
servidores web. Proporciona un punto común para todas las peticiones web y
redirecciona las llamadas entre varios servidores según la carga y disponibilidad de
los mismos.

Squid

Debido al gran crecimiento que ha tenido Internet en estos últimos años, se hace
necesario la replicación para transmitir páginas web de manera más rápida y
económica. Una solución a esto puede ser los servidores proxy basados en Squid, los
cuales son un intermediario entre el cliente e Internet. Los clientes mandan su petición
al servidor proxy y éste tramita la petición a Internet o le responde directamente con el
objeto si se encuentra almacenado en su memoria caché (debido a una petición similar
anterior).

Squid es un tipo de Proxy Caché que puede terminar como servidor intermedio y como
caché del contenido web. Admite protocolos HTTP, HTTPS, FTP, WWCP, WAIS,
Gopher, etc.

Las características más importantes de Squid son las siguientes:


Almacena en memoria RAM los objetos más frecuentes y sus metadatos.
Cachea las consultas DNS.
Implementa políticas de control de acceso.
Soporta conexiones SSL/TLS.
Puede reescribir consultas.
Permite el protocolo SNMP.

Se integra con el directorio activo de Microsoft.

Instalación de Squid

Para la instalación, ejecutad el siguiente comando en la consola:


# apt-get install squid

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Configuración de Squid: Acceso por autentificación

Para poder acceder a Internet, Squid puede denegar o permitir acceso basándose en
la dirección IP o usuario que demanda el servicio. Controlar el acceso a Internet
viene muy bien por ejemplo, en la oficina de los centros de estudio.

La configuración de Squid se realiza modificando el fichero /etc/squid/[Link].

Para probar un ejemplo de forma sencilla, vamos a utilizar el módulo NCSA, que utiliza
un archivo de texto simple creado con htpasswd para autenticar a los usuarios del
proxy.

1. Para la poder usar el comando htpasswd necesitamos instalar apache2-utils:


# apt-get install apache2-utils

2. Crearemos nuestro archivo de claves:


# touch /etc/squid/usrpass

3. Ajustamos los permisos para que solamente Squid tenga permisos de lectura y
escritura.
# chmod 600 /etc/squid/surpass
# chown proxy:proxy /etc/squid/surpass

4. Empezaremos a añadir usuarios. Hay que tener en cuenta que todos los usuarios
creados son independientes de los usuarios del sistema. Para añadir usuarios usaremos
htpasswd:
# htpasswd /etc/squid/usrpass valentin

5. Tras introducir la línea anterior, nos pedirá introducir una clave.

6. Descomentar y editar del archivo /etc/squid/[Link], la línea que empieza por:


“#auth_param basic program” por la siguiente línea:
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/surpass

7. En el mismo archivo de configuración, buscamos un texto descomentado parecido a:

#
# Recommended minimum configuration:

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

acl all src all


acl manager proto cache_object
acl localhost src [Link]/32
acl to_localnet dst [Link]/8 [Link]/32

8. Y añadiremos la línea:
acl password proxy_auth REQUIRED

9. También buscaremos el texto parecido a:


# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localhost
http_access deny all

10. Para que quede así:


# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet password
http_access allow localhost
http_access deny all

11. Finalmente, aplicaremos cambios con el comando:


# service squid reload

Squid también soporta autenticación a través de LDAP. Para practicar, se puede


instalar OpenLDAP y definir usuarios, aunque no cubriremos los servidores LDAP en
este temario.

Añade la siguiente línea al [Link] con la configuración de nuestro LDAP:

auth_param basic program /usr/lib/squid/squid_ldap_auth –b


"ou=Usuarios,dc=xxx,dc=zzzz" [Link]

Sustituye el valor "ou=Usuarios,dc=xxx,dc=zzzz" por el valor real del directorio y el


valor [Link] por el valor real de la IP de tu servidor de LDAP.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Configuración de Squid: Restricción de acceso a sitios de Internet

Mediante expresiones regulares con Squid, se puede determinar si el sitio de


Internet está permitido. Por ejemplo, se podría prohibir diferentes patrones de sitios
web considerados potencialmente peligrosos o bien sitios con contenidos no
recomendados en un centro de trabajo. La prohibición del acceso a YouTube podría
evitar la saturación de la red.

Para aplicar al servidor, restricciones por expresiones regulares, deberemos


realizar los siguientes pasos:

1. Crearemos un archivo con expresiones regulares. En el siguiente comando, usaremos


el editor nano para crear y editar el fichero:
# nano /etc/squid/restric-exp-reg

2. Al archivo creado añadiremos palabras clave que describirían sitios que


consideremos como inadecuados. Por ejemplo:
sex
porn
chat
virus
musica
torrent
emule
hacking

3. Ahora tendremos que configurar el archivo /etc/squid/[Link] para que pueda


identificar el archivo con nuestras expresiones regulares. Añadiremos la siguiente
línea:
acl restric-exp-reg url_regex “/etc/squid/restric-exp-reg”

Lo configurado hasta ahora, con la nueva línea, tendría un aspecto parecido a este:
# Recommended minimum configuration:
acl all src all
acl manager proto cache_object
acl localhost src [Link]/32
acl to_localnet dst [Link]/8 [Link]/32
acl password proxy_auth REQUIRED

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

acl restric-exp-reg url_regex “/etc/squid/restric-exp-reg”

4. Aplicaremos las restricciones que hemos identificado. Para esto, seguiremos


modificando el archivo /etc/squid/[Link]. Modificaremos la regla anteriormente
creada para que se muestre como en la siguiente línea:
http_access allow localnet password !restric-exp-reg

5. Terminaremos aplicando los cambios en el archivo /etc/squid/[Link] con el


siguiente comando:
# service squid reload

También podremos denegar acceso por dominio. Los pasos son parecidos a los de
la aplicación de restricciones por expresiones regulares:

6. Crearemos un archivo con los dominios a restringir. En el siguiente comando,


usaremos el editor nano para crear y editar el fichero:
# nano /etc/squid/restric-dominios

7. Al archivo creado añadiremos los dominios o extensiones web que consideremos como
inadecuados. Por ejemplo:
[Link]
.[Link]
[Link]
.[Link]
.fr

8. Configuraremos el archivo /etc/squid/[Link] para que pueda identificar el


archivo con nuestros dominios. Añadiremos la siguiente línea:
acl restric-dominios dstdomain “/etc/squid/restric-dominios”

Lo configurado hasta ahora, con la nueva línea, tendría un aspecto parecido a este:
#
# Recommended minimum configuration:
acl all src all
acl manager proto cache_object
acl localhost src [Link]/32
acl to_localnet dst [Link]/8 [Link]/32
acl password proxy_auth REQUIRED

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

acl restric-exp-reg url_regex “/etc/squid/restric-exp-reg”


acl restric-dominios dstdomain “/etc/squid/restric-dominios”

9. Aplicaremos las restricciones que hemos identificado. Para esto, seguiremos


modificando el archivo /etc/squid/[Link]. Modificaremos la regla anteriormente
creada para que se muestre como en la siguiente línea:
http_access allow localnet password !restric-exp-reg !restric-dominios

10. Terminaremos aplicando los cambios en el archivo /etc/squid/[Link] con el


siguiente comando:
# service squid reload

Es posible que las restricciones de acceso anteriores no dejen acceso a páginas que
consideramos válidas. Por esto podremos elegir una serie de dominios permitidos.
Estos serían los pasos:

1. Crearemos un archivo con los dominios permitidos. En el siguiente comando,


usaremos el editor nano para crear y editar el fichero:
# nano /etc/squid/permit-dominios

2. Al archivo creado añadiremos los dominios o extensiones web que consideremos


adecuados. Por ejemplo:
.[Link]
.[Link]
[Link]/[Link]
.edu
.gov
.org

3. Configuraremos el archivo /etc/squid/[Link] para que pueda identificar el


archivo con nuestros dominios. Añadiremos la siguiente línea:
acl permit-dominios dstdomain “/etc/squid/permit-dominios”

Lo configurado hasta ahora, con la nueva línea, tendría un aspecto parecido a este:
#
# Recommended minimum configuration:
acl all src all
acl manager proto cache_object

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

acl localhost src [Link]/32


acl to_localnet dst [Link]/8 [Link]/32
acl password proxy_auth REQUIRED
acl restric-exp-reg url_regex “/etc/squid/restric-exp-reg”
acl restric-dominios dstdomain “/etc/squid/restric-dominios”
acl permit-dominios dstdomain “/etc/squid/permit-dominios”

4. Aplicaremos las restricciones que hemos identificado. Para esto, seguiremos


modificando el archivo /etc/squid/[Link]. Añadiremos la siguiente línea:
http_access allow all permit-dominios

5. Terminaremos aplicando los cambios en el archivo /etc/squid/[Link] con el


siguiente comando:
# service squid reload

Configuración de Squid: restricción de acceso al contenido por extensión

Squid también puede restringir acceso a ciertos archivos. Podría evitar la saturación
del ancho de banda de la red. Consiste en la denegación de ciertas extensiones de
archivos que se establecerán en una Lista de Control de Acceso. Un ejemplo de
restricción de extensión de archivos sería la de archivos ejecutables .exe. Evitando la
descarga de ejecutables pondríamos más difícil la instalación de virus desde Internet.

Seguiremos con el procedimiento de crear un fichero con los filtros, declararlo y usarlo
en el archivo de configuración de Squid /etc/squid/[Link]. Estos serían los pasos
en detalle:

1. Crearemos un archivo con las extensiones que no permitiremos. En el siguiente


comando, usaremos el editor nano para crear y editar el fichero:
# nano /etc/squid/restrict-extensiones

2. Al archivo creado añadiremos extensiones de archivos que no permitiremos del


siguiente modo:
\.mp4$
\.mp3$
\.mpg$
\.mpeg$
\.wma$

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

\.wmv$
\.wav$
\.bat$
\.exe$

3. Configuraremos el archivo /etc/squid/[Link] para que pueda identificar el


archivo creado. Añadiremos la siguiente línea:
acl restrict-extensiones urlpath_regex “/etc/squid/restrict-extensiones”

Lo configurado hasta ahora, con la nueva línea, tendría un aspecto parecido a:


#
# Recommended minimum configuration:
acl all src all
acl manager proto cache_object
acl localhost src [Link]/32
acl to_localnet dst [Link]/8 [Link]/32
acl password proxy_auth REQUIRED
acl restric-exp-reg url_regex “/etc/squid/restric-exp-reg”
acl restric-dominios dstdomain “/etc/squid/restric-dominios”
acl permit-dominios dstdomain “/etc/squid/permit-dominios”
acl restrict-extensiones urlpath_regex “/etc/squid/restrict-
extensiones”

4. Aplicaremos las restricciones que hemos identificado. Para esto, seguiremos


modificando el archivo /etc/squid/[Link]. Añadiremos la siguiente línea:
http_access allow localnet password !restric-exp-reg !restric-dominios
!restrict-extensiones

5. Terminaremos aplicando los cambios en el archivo /etc/squid/[Link] con el


siguiente comando:
# service squid reload

Configuración de Squid: Restricción de acceso por horarios

La restricción de acceso a Internet a horarios es bastante importante en aspectos de


empresa. De esta manera se evita que los empleados dejen descargas de Internet
toda la noche y saturen aquellos procesos de empresa que necesitan ser ejecutados
como es el caso de las actualizaciones.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Las reglas de restricción por horarios se crean directamente en el fichero de


configuración de Squid, /etc/squid/[Link].

En el siguiente ejemplo, vamos a definir y aplicar una regla que da permiso a las
conexiones los lunes, martes, miércoles, jueves y viernes, desde las 8:30 a 19:30 en la red
local.

Esta sería la declaración de ejemplo:


acl entre_semana time MTWHF 08:30-19:30
“entre_semana”, sería el nombre del acl
“MTWHF”, donde cada letra sería un día de la semana en inglés.

S - Domingo
M - Lunes
T - Martes
W - Miércoles
H - Jueves
F - Viernes
A – Sábado
08:30-[Link] horario desde las 08:30 hasta las 19:30

La declaración esta regla de ejemplo se podría aplicar de este modo:


http_access allow entre_semana localnet

http_access, es un comando que ya hemos usado antes y que aplica la regla según sus
parámetros.
allow, cuyos posibles valores serían allow (permitir), deny (no permitir)
entre_semana, nombre declarado en el ejemplo anterior
localnet, ámbito de la red en el que se aplica. En este caso sería la red local.

Siempre que modifiquemos el /etc/squid/[Link], ejecutaremos el siguiente


comando desde consola:
# service squid reload

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Configurar Squid con soporte para direcciones MAC

Mediante las direcciones MAC se identifica de forma única una tarjeta o dispositivo
de red. Si bloqueamos o permitimos acceso a ciertas direcciones MAC estaremos
evitando que ciertos ordenadores puedan conectarse para realizar daños en la red,
aunque para eso el proxy debe estar en la misma red de área local virtual (VLAN) que
los usuarios. Un ejemplo útil sería el empleado que ha sido despedido y deja un
ordenador libre. Las direcciones MAC consisten en un identificador de 48 bits
expresada con 12 dígitos hexadecimales. De estos 12 dígitos, los 6 primeros
corresponden al fabricante de la tarjeta y los otros 6 dígitos corresponden al número
de serie que el fabricante ha puesto a ese dispositivo de red.

En los siguientes pasos vamos a configurar la restricción de acceso a la red usando las
direcciones MAC:

1. Conseguimos las direcciones MAC en nuestra red, de los ordenadores que queremos
aplicar la regla. En Windows se usa el comando ipconfig y en Linux se utiliza el
comando ifconfig, para ver la dirección MAC del equipo en el que nos encontramos.

Figura 17: Comando ipconfig en Windows.

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Figura 18: Comando ifconfig en Linux.

2. Crearemos un archivo donde vayamos a poner las direcciones MAC a las que
aplicaremos la regla.
# nano /etc/squid/permit-mac-direcciones

Tendremos que editar su contenido con las direcciones MAC para las que queremos
aplicar la regla.
[Link]
[Link]
[Link]
[Link]

3. Definiremos nuestra regla añadiendo al /etc/squid/[Link] la línea:


acl permit-mac-direcciones arp /etc/squid/permit-mac-direcciones"

4. Aplicaremos nuestra regla añadiendo al /etc/squid/[Link] la línea:


http_access allow permit-mac-direcciones

5. Aplicaremos los cambios con hechos en el /etc/squid/[Link]. Desde la consola


ejecutar el siguiente comando:
# service squid reload

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Otras configuraciones

En /etc/squid/[Link] se deben tener configurado los siguientes puntos:

http_port, que especifica el puerto por el que se comunica con el proxy, por
ejemplo:
http_port 1891 transparent

cache_dir, que es el directorio donde se especifica el directorio donde se almacena


la cache y las opciones de tamaño. En el siguiente ejemplo se define el directorio
/var/spool/squid, con formato ufs, 200 MB, dividido en 20 directorios de hasta
400 niveles cada uno:
cache_dir ufs /var/spool/squid 200 20 400

error_directory, con el directorio donde se almacenan los mensajes de error en


nuestro idioma, por ejemplo:
error_directory /usr/share/squid/errors/Spanish

WPAD

WPAD (Web Proxy Auto Discovery) es un método mediante el cual los navegadores
encuentran y se configuran automáticamente el proxy en la red que estamos,
simplemente consultando al servidor DNS local (wpad.<dominio local>). Muchas
páginas se libran de los proxies transparentes porque van cifradas a través del HTTPS.
Gracias a WPAD esto no sucede, puesto que se le puede indicar al navegador que envíe
al proxy todas las conexiones.

Para su configuración deberemos realizar los siguientes pasos:

1. Instalaremos el servidor Apache, que servirá el fichero de políticas de WPAD.


# apt-get install apache2

2. Iniciamos el servicio de Apache.


# service apache2 start

3. Tendremos que tener abierto el puerto 80 TCP y el resto de los puertos que pudieran
estar involucrados.
iptables -A INPUT -s [Link] -p tcp --dport 80 -j ACCEPT

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

iptables -A INPUT -s [Link] -p tcp --dport 3128 -j ACCEPT

En el ejemplo anterior abrimos el puerto 80 (para apache) y el puerto 3128 (para


Squid) en el protocolo TCP. [Link] es la IP del equipo local en red. Para más detalle
sobre iptables, lee el punto Netfilter (iptables).

4. En el fichero /etc/hosts añadimos la línea:


[Link] [Link] wpad

5. Crearemos el directorio /var/www/wpad dentro del root de archivos del servidor


Apache, con permisos de lectura para todos los usuarios:
# mkdir -m 0755 /var/www/wpad

6. Creamos el archivo [Link].


# nano /var/www/wpad/[Link]

7. Editamos el contenido de la política WPAD, por ejemplo, para indicar que redes locales
se pueden acceder directamente y cuales a través del proxy. Un ejemplo de [Link]
sería:

function FindProxyForURL(url, host)


{
if ( isInNet(host, "[Link]", "[Link]")
|| isInNet(host, "[Link]", "[Link]")
|| shExpMatch(host, "192.168.1.*")
|| shExpMatch(host, "127.*" )
|| shExpMatch(host, "localhost")
|| shExpMatch(host, "*.[Link]")
|| isPlainHostName(host)
|| dnsDomainIs(host, ".[Link]")
){
return "DIRECT";
}
else
{
return "PROXY [Link]:3128";
}
}

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

8. Crearemos otro archivo /etc/apache2/conf.d/[Link] con el siguiente contenido:


NameVirtualHost *:80
<VirtualHost *:80>
ServerName [Link]
ServerAlias wpad
DocumentRoot /var/www/wpad
ErrorLog logs/wpad-error_log
CustomLog logs/wpad-access_log combined
<Directory "/var/www/wpad">
AddType application/x-ns-proxy-autoconfig .dat
DirectoryIndex [Link]
Order Deny,Allow
Deny from all
Allow from [Link]/8 [Link]
</Directory>
</VirtualHost>

9. Recargamos el servicio:
service apache2 reload

A pesar de la utilidad de WPAD, hay que evaluar la seguridad de su uso en los


navegadores, puesto que, al no estar autenticado de ningún modo, un atacante puede
servir una política WPAD maliciosa para que las víctimas le envíen todo su tráfico HTTP.

SARG

Con la herramienta SARG (Squid Analysis Report Generator) se permite ver con detalle
la actividad de todos los equipos y usuarios de una red local usando los registros
(logs) de Squid.

1. Busca y modifica las líneas output_dir, 56ccess_log, date_format,


overwrite_report en el fichero /etc/sarg/[Link]. Para que queden de la
siguiente forma:
access_log /var/log/squid/[Link]
output_dir /var/www/sarg
date_format e
overwrite_report yes

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

De esta manera, decimos que el log que queremos acceder con la herramienta SARG es
/var/log/squid/[Link], que el directorio donde se generarán los informes será
/var/www/sarg (si no existe el directorio, habrá que crearlo), el formato de la fecha
(‘dd/mm/yy‘) que se usará y si sobrescribimos informes ya generados.

2. Ejecutaremos la generación de informes con el siguiente comando:


# sarg –x

3. Iremos a la URL [Link] y veremos una pantalla parecida a


la siguiente:

Figura 19: Interfaz de SARG.

2.9. Sistemas de detección de intrusos

Principios de los IDS

Existen dos tipos de sistemas de identificación de intrusos (IDS – Intrusion Detection


System en inglés): los basados en host (HIDS - Host IDS) y los basados en red (NIDS
- Network IDS).

Los sistemas de detección de intrusos basados en host (HIDS), verifican regularmente


el sistema y sus utilidades contra una base de datos de integridad, minimizando así las

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

posibilidades de que el sistema sea comprometido, e identificando rápidamente


cualquier anomalía que ocurra en el mismo.

Los sistemas de detección de intrusos basados en red (NIDS) se dividen en dos tipos
principalmente: los que se basan en firmas de ataques, y los que detectan un ataque
según las variaciones en el estado del sistema. Los basados en firmas de ataques
analizan las transacciones en la red y la comparan con las firmas de ataques que tienen
almacenadas. Si coincide, se registra el ataque en un log. Los basados en anomalías del
estado del sistema son inteligentes y pueden identificar cuando una transacción no
forma parte del comportamiento «normal» del sistema.

Tripwire, AIDE, Fcheck son algunas herramientas de control de integridad.


Tripwire es la herramienta más madura, pero es un software con licencia, AIDE es
software libre, pero es mucho más joven que Tripwire, y Fcheck es rápido y gratuito,
pero puede no satisfacer a una gran organización con altas necesidades de seguridad.
OSSEC es un HIDS completo, que además de controlar la integridad de la máquina
monitoriza los procesos y avisa de cualquier anomalía que pueda ocurrir en la misma.
Por otro lado, existe Snort que es una potente herramienta que sirve como sniffer de
paquetes, registrador de paquetes y NIDS personalizable con una librería de ataques
firmados y un motor de configuración para reglas de usuario.

Utilizar SNORT como IDS

Para la configuración de Snort se deben de analizar y modificar, según las necesidades,


las distintas partes del fichero ‘/etc/[Link]’: Definición de variables, sentencias
de pre-procesado, sentencias de salida (postproceso) y reglas.

Las reglas de Snort se identifican con un SID (Signature ID) único, y están formadas
por una cabecera, que define el tráfico de red sobre el que se deben aplicar, y una serie
de opciones que definen la forma de identificar el ataque (lo que se conoce como la
«firma»), la acción y la información a mostrar cuando se detecta el ataque, como el tipo
de ataque, los identificadores de vulnerabilidad asociados. Un ejemplo de Regla Snort
sería:

alert tcp $HOME_NET 2589 -> $EXTERNAL_NET any (msg:"MALWARE-BACKDOOR -


Dagger_1.4.0"; flow:to_client,established; content:"2|00 00 00 06 00 00

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

00|Drives|24 00|"; depth:16; metadata:ruleset community; classtype:misc-


activity; sid:105; rev:14;)

Security Information and Event Management (SIEM)

Para que las alertas de los IDSes, tanto HIDS como NIDS, sean realmente útiles, es muy
recomendable que todos los logs de seguridad, tanto de los IDSes, como del resto de
elementos de seguridad como Firewalls, proxies, o incluso los logs de todos los servidores
se consoliden en un sistema centralizado, por ejemplo, utilizando protocolos
especializados como syslog, o simplemente haciendo llegar los ficheros de log a dicho
servidor central. De esta forma los administradores pueden analizar los logs en un único
sistema, en lugar de tener que saltar de máquina en máquina para ver los logs. Esta
solución también permite mejorar las capacidades forenses frente un ataque, puesto que
es bastante habitual que los atacantes borren todos los logs locales de las máquinas que
comprometen para así borrar sus huellas.

La evolución de esta idea de centralizar todos los logs de seguridad de una organización
se denomina SIEM (Security Information and Event Management) y es un sistema
especializado en procesar eventos de seguridad, filtrarlos, correlarlos (puesto que un
mismo incidente de seguridad puede generar varias entradas de log en varios sistemas),
asignarles prioridades en función de su criticidad, generar informes, y en general permite
su tratamiento por el departamento de seguridad de la organización.

Ya existe un gran número de productos SIEM, tanto comerciales como de código abierto,
como Splunk u OSSIM de Alien Vault.

Figura 20: Interfaz de OSSIM

TEMA 2 – Ideas clave © Universidad Internacional de La Rioja (UNIR)


Seguridad en Sistemas Operativos

Lo + recomendado

Lecciones magistrales

Port Knocking

En esta lección magistral se tratará más a fondo un servicio que nos ayuda a
complementar la seguridad de nuestro Linux. Con Port Knocking se establecerá un
sistema previo de llamadas a puertos específicos si se quiere habilitar o ejecutar algo
en la máquina remota.

La clase magistral está disponible en el aula virtual.

No dejes de leer…

Host bastión Linux

VV. AA. (2008). Seguridad en Linux. Madrid: Grupo Anaya.

El capítulo 10 de este libro es un material que un administrador en


seguridad tendrá siempre a mano. Se resume todo lo que un sistema
Linux debe tener para tener unas buenas garantías en materia de
seguridad. Es ideal para repasar cuando te preguntas si te falta algo
o simplemente por verificar que tienes tu servidor en buenas
condiciones.

TEMA 2 – Lo + recomendado
Seguridad en Sistemas Operativos

Hackers en Linux

Hatch, B. y Lee, J. (2003). Hackers en Linux. Madrid: McGraw Hill.

En el capítulo 10 de este libro explica cómo y qué técnicas utilizan los


ciberdelincuentes para mantener el acceso a una máquina una vez que
ya ha sido vulnerada. Además se puede ver con más detalle qué fallos
ha habido con los servidores de correo. El capítulo 11 se dedica a los
servidores FTP.

La Biblia de administración de sistemas Linux

VV. AA. (2008). La Biblia de administración de sistemas Linux. Madrid: Grupo Anaya.

De este libro nos interesan los capítulos 16 y 21. En el capítulo 16 se


explica en profundidad el sistema de carpetas compartidas NFS. En el
capítulo 21 conocerás ampliamente el servidor por excelencia que
contiene la mayoría de las páginas de Internet.

Administración de sistemas Linux

VV. AA. (2009). Administración de sistemas Linux. Madrid: Grupo Anaya.

De este libro nos interesa el capítulo 4, donde encontrarás la


información necesaria para la administración del
almacenamiento y la recuperación ante desastres.

TEMA 2 – Lo + recomendado
Seguridad en Sistemas Operativos

Cortafuegos

VV. AA. (2007). Superutilidades hacker. Madrid: Grupo Anaya.

En el capítulo 13 podrás profundizar más en los firewalls. Podrás


aprender de una gran variedad de ellos, entre los que están los de
tipo software y los de tipo hardware. También podrás aprender
cuáles son gratuitos y cuáles no. Se centra en la configuración de
ipchains (obsoleto), iptables e IPFW2 (cortafuegos de FreeBSD).

Virtualización

VV. AA. (2011). Destripa la red. Madrid: Grupo Anaya.

El capítulo 11 de este interesante libro aborda el tema de la


virtualización, tecnología por la cual se segmentan los recursos de
un sistema para que puedan ser utilizados de manera
independiente. Gracias a esta tecnología podremos tener varios
sistemas operativos ejecutándose a la vez en una misma máquina.
En estas páginas se tratarán los tipos de virtualización, el
Hipervisor y algún software populares en el mundo de la
virtualización, como VMWare, Windows Virtual PC o Xen.
Linux

VV. AA. (2010). Linux. Madrid: Grupo Anaya.

De este libro nos interesan los capítulos 1 y 4. El primero realiza


una introducción a Linux, mientras que el cuarto habla de los
métodos de inicio. Estos métodos de inicio pueden ser
configurables para que arranque un sistema operativo por
defecto o dar la oportunidad al usuario de elegir qué sistema
operativo desea arrancar, lo que se denomina «arranque dual».

TEMA 2 – Lo + recomendado
Seguridad en Sistemas Operativos

+ Información

A fondo

Securing Debian Manual

Fernández-Sanguino, J. (2012). Securing Deabian Manual.

El siguiente documento es la guía oficial para securizar Debian.

Accede al artículo a través del aula virtual o desde la siguiente dirección web:
[Link]
[Link]

WPAD

Web-Caché (s.f). Web-Cache reviews will help you to stay safe. En [Link]
[página web].

En la siguiente dirección está definido el estándar (en inglés) de WPAD

Accede al artículo a través del aula virtual o desde la siguiente dirección web:
[Link]

SARG

La siguiente página, contiene publicado el proyecto SARG para generar informes de


ficheros los ficheros log de Squid.

TEMA 2 – + Información
Seguridad en Sistemas Operativos

Accede al artículo a través del aula virtual o desde la siguiente dirección web:
[Link]

Webgrafía

Open Source

Página web de [Link], donde podemos descargar gran cantidad de software de


forma gratuita.

Accede a la página web a través del aula virtual o desde la siguiente dirección:
[Link]

GPL

Página web de GPL, donde podemos encontrar los términos y condiciones de las licencias
GPL.

Accede a la página web a través del aula virtual o desde la siguiente dirección:
[Link]

TEMA 2 – + Información
Seguridad en Sistemas Operativos

Kernel de Linux

Página web del kernel de Linux, donde podemos descargar varias versiones del kernel e
informarnos de las modificaciones del núcleo que hayan surgido.

Accede a la página web a través del aula virtual o desde la siguiente dirección:
[Link]

Ubuntu

Página web del sistema operativo Ubuntu, donde podemos descargar el sistema
operativo y documentación relacionada.

Accede a la página web a través del aula virtual o desde la siguiente dirección:
[Link]

Debian

Página web del sistema operativo Debian, donde podemos descargar el sistema operativo
y documentación relacionada.

TEMA 2 – + Información
Seguridad en Sistemas Operativos

Accede a la página web a través del aula virtual o desde la siguiente dirección:
[Link]

Red Hat

Página web del sistema operativo Red Hat, donde


podemos descargar el sistema operativo y
documentación relacionada.

Accede a la página web a través del aula virtual o desde la siguiente dirección:
[Link]

OpenSuse

Página web del sistema operativo Suse, donde podemos descargar el sistema operativo y
documentación relacionada.

Accede a la página web a través del aula virtual o desde la siguiente dirección:
[Link]

TEMA 2 – + Información
Seguridad en Sistemas Operativos

Slackware

Página web del sistema operativo Slackware, donde podemos descargar el sistema
operativo y documentación relacionada.

Accede a la página web a través del aula virtual o desde la siguiente dirección:
[Link]

Spamassassin

Página web de Spamassassin, herramienta para bloquear los correos spam.

Accede a la página web a través del aula virtual o desde la siguiente dirección:
[Link]

GNUPG

Página web de GNUPG, herramienta para cifrar correos.

TEMA 2 – + Información
Seguridad en Sistemas Operativos

Accede a la página web a través del aula virtual o desde la siguiente dirección:
[Link]

Chrootkit

Página web de Chkrootkit, donde podemos encontrar un script para detectar rootkit y
enlaces a muchos sitios relacionados.

Accede a la página web a través del aula virtual o desde la siguiente dirección:
[Link]

Snort

Página web de Snort, donde poder descargar la popular herramienta IDS.

Accede a la página web a través del aula virtual o desde la siguiente dirección:
[Link]

TEMA 2 – + Información
Seguridad en Sistemas Operativos

Squid

Página web de Libpcap, donde poder descargar la librería.

Accede a la página web a través del aula virtual o desde la siguiente dirección:
[Link]

Iptables (Netfilter)

Página web de Netfilter, donde poder descargar el proyecto Iptables (Netfilter).

Accede a la página web a través del aula virtual o desde la siguiente dirección:
[Link]

Bacula

Página web de Bacula, donde poder descargar la popular herramienta de backup, además
de documentación relacionada.

Accede a la página web a través del aula virtual o desde la siguiente dirección:

TEMA 2 – + Información
Seguridad en Sistemas Operativos

[Link]

Red Hat Enterprise Linux 7

Ya se ha publicado la guía de securización para la última versión de Red Hat.

Accede a la página web a través del aula virtual o desde la siguiente dirección:
[Link]
US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/[Link]

VirtualBox

Desde la página de VirtualBox se puede descargar esta aplicación de máquinas virtuales


gratuitas.

Accede a la página web a través del aula virtual o desde la siguiente dirección:
[Link]

TEMA 2 – + Información
Seguridad en Sistemas Operativos

OpenLDAP

El servidor de directorios OpenLDAP, implementa el protocolo público y standard


LDAP (lightweight directory access protocol).

Accede a la página web a través del aula virtual o desde la siguiente dirección:
[Link]

Shorewall

Shorewall es un configurador intuitivo sobre iptables.

Accede a la página web a través del aula virtual o desde la siguiente dirección:
[Link]

TEMA 2 – + Información
Seguridad en Sistemas Operativos

UFW

Al igual que Shorewall, UFW ofrece una configuración más intuitiva sobre iptables.

Accede a la página web a través del aula virtual o desde la siguiente dirección:
[Link]

Alcance libre

Sitio web que trata diferentes temas de redes.

Accede a la página web a través del aula virtual o desde la siguiente dirección:
[Link]

TEMA 2 – + Información
Seguridad en Sistemas Operativos

Test

1. La herramienta Iptables nos permite configurar:


A. Un IDS.
B. Un cortafuegos.
C. Un gestor de paquetes.
D. Un NIDS.

2. Respecto a las particiones. ¿Qué es la memoria swap o de intercambio?


A. Una partición del disco duro que requiere de un servicio HTTP/S o FTP para la
transferencia de datos entre cliente y host.
B. Una partición del disco duro donde se almacenan datos de configuración de las
aplicaciones.
C. Una partición del disco duro utilizada para almacenar información compartida
por los diferentes usuarios de una máquina.
D. Una partición del disco duro usada para que el sistema operativo use memoria
virtual.

3. ¿Qué es una regla de un cortafuegos?


A. Una sentencia que prohíbe la entrada de tráfico a través de un único puerto.
B. Una sentencia que prohíbe la salida de tráfico UDP.
C. Una sentencia que prohíbe la entrada de tráfico de ciertas direcciones IP.
D. Todas las anteriores son ciertas.

4. Indica qué afirmación no es correcta:


A. Es muy importante para la seguridad que haya pocos archivos y particiones con
el SUID activado.
B. Puede haber varios usuarios con un mismo GID.
C. El usuario root tiene UID 1.
D. Un UUID puede referenciar un punto de montaje.

TEMA 2 – Test
Seguridad en Sistemas Operativos

5. Si queremos darle permisos a un archivo de lectura y ejecución para el propietario,


lectura y escritura para el grupo, y ejecución para el resto. ¿Qué comando utilizaremos?
A. chmod 561 <archivo>
B. chmod 452 <archivo>
C. chmod 542 <archivo>
D. chmod 651 <archivo>

6. Sobre los directorios de Linux indica cuál es correcta.


A. El directorio /etc guarda los archivos de arranque del sistema.
B. En el directorio /home encontramos la carpeta personal de todos los usuarios
del sistema, incluido el root.
C. En el directorio /usr están las carpetas personales de todos los usuarios del
sistema, excepto el root.
D. En el directorio /var se guardan los logs de las aplicaciones y conexiones.

7. Sobre los comandos sudo y su, indica cuál es correcta.


A. El comando su nos permite ejecutar un comando como si fuéramos otro usuario.
B. Tras introducir la contraseña del comando sudo habrá un tiempo en el que si
volvemos a ejecutar el comando no nos la vuelva a pedir.
C. El comando su nos permite conectarnos remotamente a otra máquina mediante
una conexión cifrada.
D. Para utilizar el comando sudo hace falta introducir la contraseña del usuario al
que queremos acceder.

8. ¿Qué recomendación de seguridad es correcta?


A. Tener el kernel del sistema operativo actualizado.
B. Proteger GRUB con una contraseña.
C. Controlar los usuarios que pueden realizar la orden sudo.
D. Todas las anteriores son correctas.

9. Indica cuál no es un usuario por defecto en Debian:


A. daemon.
B. nobody.
C. games.
D. guest.

TEMA 2 – Test
Seguridad en Sistemas Operativos

10. Respecto a los IDS indica cuál es correcta:


A. Utilizan reglas para bloquear tráfico entrante.
B. La herramienta Squid se usa como IDS.
C. Hay dos tipos: master IDS y slave IDS.
D. Se usan para detectar posibles ataques.

TEMA 2 – Test

También podría gustarte