Académique Documents
Professionnel Documents
Culture Documents
ndice de contenido
Introduccin a la seguridad computacional..........................................................................9
Definicin de Seguridad computacional...............................................................................10
Estandarizar la seguridad.....................................................................................................10
Controles de seguridad.........................................................................................................10
Controles fsicos...............................................................................................................11
Controles tcnicos............................................................................................................11
Controles administrativos.................................................................................................12
Una breve historia sobre los hackers...................................................................................12
Amenazas de seguridad de servidores................................................................................12
Encriptacin de datos...........................................................................................................13
Criptografa simtrica.......................................................................................................14
Algoritmos simtricos...................................................................................................15
Criptografa asimtrica.....................................................................................................17
Algoritmos asimtricos.................................................................................................18
Algoritmos Hash...............................................................................................................19
Fuentes de Seguridad..........................................................................................................21
Actualizaciones de seguridad...............................................................................................22
Introduccin..........................................................................................................................23
Portal de Clientes, Red Hat Network y RHN Classic...........................................................23
Utilizacin del Red Hat Network.......................................................................................26
Utilizacin de RHN Classic...............................................................................................29
Yellow Dog Updater, Modified (YUM)...................................................................................31
Consideraciones especiales cuando actualiza el sistema...................................................33
Utilizacin del sitio web de seguridad de Red Hat...............................................................34
Seguridad de los paquetes RPM..........................................................................................35
Paquetes firmados digitalmente.......................................................................................35
Verificar paquetes firmados.........................................................................................35
Instalacin de paquetes firmados................................................................................36
Verificacin de paquetes rpm...........................................................................................37
Seguridad de inicio, contraseas y la cuenta root..............................................................39
Seguridad del BIOS y del gestor de arranque.....................................................................40
Contraseas del BIOS.....................................................................................................40
Contraseas del gestor de arranque...............................................................................40
Protegiendo GRUB con contraseas...............................................................................41
Seguridad de contraseas....................................................................................................41
Creacin de contraseas robustas..................................................................................42
Metodologa para la creacin de contraseas seguras...................................................43
Envejecimiento de las contraseas..................................................................................43
Grupos administrativos................................................................................................63
Dependencias del sistema...........................................................................................63
Argumentos..................................................................................................................64
Ejemplos/uso sugerido.................................................................................................64
Mdulo pam_listfile...........................................................................................................64
Grupos de gestin........................................................................................................64
Argumentos..................................................................................................................64
Ejemplos/uso sugerido.................................................................................................65
Mdulo pam_mail.............................................................................................................65
Dependencias del sistema...........................................................................................65
Grupos administrativos................................................................................................65
Argumentos..................................................................................................................65
Ejemplos/uso sugerido.................................................................................................66
Modulo pam_mkhomedir..................................................................................................66
Grupos administrativos................................................................................................66
Argumentos..................................................................................................................66
Ejemplos/uso sugerido.................................................................................................66
Mdulo pam_nologin........................................................................................................67
Grupos de gestin........................................................................................................67
Ejemplos/uso sugerido.................................................................................................67
Mdulo pam_permit..........................................................................................................67
Grupos de gestin........................................................................................................67
Ejemplos/uso sugerido.................................................................................................67
Mdulo pam_rootok..........................................................................................................68
Grupos de gestin........................................................................................................68
Ejemplos/uso sugerido.................................................................................................68
Mdulo pam_securetty.....................................................................................................68
Grupos de gestin........................................................................................................68
Ejemplos/uso sugerido.................................................................................................68
Mdulo pam_tally2...........................................................................................................68
Grupos de gestin........................................................................................................69
Dependencias..............................................................................................................69
Argumentos .................................................................................................................69
Componente authentication.........................................................................................69
Componente account...................................................................................................70
Ejemplos/uso sugerido.................................................................................................70
Mdulo pam_time.............................................................................................................70
Grupos de gestin........................................................................................................71
Dependencias..............................................................................................................71
Ejemplos/uso sugerido.................................................................................................72
Mdulo pam_unix.............................................................................................................72
Grupos de gestin........................................................................................................72
Componente account...................................................................................................73
Componente authentication.........................................................................................73
Componente password................................................................................................73
Componente session...................................................................................................74
Modulo pam_warn............................................................................................................75
Grupos de gestin........................................................................................................75
Ejemplos/uso sugerido.................................................................................................75
Mdulo pam_wheel..........................................................................................................75
Grupos de gestin........................................................................................................75
Argumentos..................................................................................................................75
Ejemplo/uso sugerido...................................................................................................76
Mdulo pam_ldap.............................................................................................................76
Grupos de gestin........................................................................................................76
Dependencias..............................................................................................................76
Argumentos..................................................................................................................76
Ejemplo/uso sugerido...................................................................................................77
Mdulo pam_smb_auth....................................................................................................77
Grupos de gestin........................................................................................................77
Argumentos..................................................................................................................77
Ejemplo/uso sugerido...................................................................................................78
Auditoria del sistema..............................................................................................................79
Introduccin..........................................................................................................................80
Uso del subsistema de auditoria..........................................................................................80
Seleccin de eventos a ser auditados..................................................................................81
Reglas de auditoria...............................................................................................................81
Leyendo y buscando registros de auditoria..........................................................................83
Almacenamiento de los registros de auditoria.....................................................................86
Visor de auditora..................................................................................................................88
Almacenamiento remoto de los registros de auditoria.........................................................91
AIDE..........................................................................................................................................92
Introduccin..........................................................................................................................93
Instalacin de AIDE..............................................................................................................93
Configuracin de AIDE.........................................................................................................93
Lneas macro....................................................................................................................94
Lneas de configuracin...................................................................................................94
Lineas de seleccin..........................................................................................................95
Utilizacin de AIDE...............................................................................................................98
GnuPG....................................................................................................................................100
Introduccin........................................................................................................................101
Generar un nuevo par de claves........................................................................................102
1
Introduccin a la seguridad computacional
Estandarizar la seguridad
Muchos consultores de seguridad y fabricantes acuerdan con el modelo de
seguridad estndar conocido como CIA, o Confidentiality, Integrity, and Availability,
esto es: Confidencialidad, Integridad y Disponibilidad. Este modelo de tres niveles es
un componente aceptado en general para asesorar riesgos a la informacin
confidencial y para establecer polticas de seguridad. Lo siguiente describe el modelo
de CIA en mayor detalle:
Controles de seguridad
La seguridad computacional a menudo se divide en tres categoras maestras
Ing. Ivan Ferreira
10
Fsico
Tcnico
Administrativo
Controles fsicos
El control fsico es la implementacin de medidas de seguridad en una estructura
definida usada para prevenir o detener el acceso no autorizado a material
confidencial. Ejemplos de los controles fsicos son:
Guardias de seguridad
Biomtrica (incluye huellas digitales, voz, rostro, iris, escritura a mano y otros
mtodos automatizados utilizados para reconocer individuos)
Controles tcnicos
Los controles tcnicos utilizan la tecnologa como una base para controlar el acceso
y uso de datos confidenciales a travs de una estructura fsica y sobre la red. Los
controles tcnicos son mucho ms extensos en su mbito e incluyen tecnologas
tales como:
11
Encriptacin
Tarjetas inteligentes
Controles administrativos
Los controles administrativos definen los factores humanos de la seguridad. Incluye
todos los niveles del personal dentro de la organizacin y determina cules usuarios
tienen acceso a qu recursos e informacin usando medios tales como:
Entrenamiento y conocimiento
12
Encriptacin de datos
Existen distintos tipos de algoritmos de encriptacin, pero algo que no se ha
mencionado hasta ahora son los algoritmos que se cree que encriptan, pero que no
hacen nada ms que transformar texto (o informacin). El objetivo de hacer esta
distincin es mostrar algunas malas prcticas que se cometen, pensando que
cualquier algoritmo que cambia de cierta forma un texto, est realizando encriptacin
de datos. Estos algoritmos podremos llamarlos simplemente "Transformaciones".
Antes de revisar los escenarios, se debe aclarar el concepto de llave. La llave de
13
Estos son los tres escenarios ms comunes. Los tres escenarios calzan con los
algoritmos listados a continuacin:
Criptografa simtrica
Cuando hablamos de encriptacin y no de transformacin, ya estamos
adentrndonos en temas de mayor proteccin, de algoritmos conocidos y seguridad
real. El proceso de realizar una encriptacin es complejo para ser entendido por
nosotros mismos, pero no es limitante para conocer cules son los pasos para
utilizarlos y qu errores no se deben cometer.
Utiliza una clave para la encriptacin y desencriptacin del mensaje. Esta clave se
debe intercambiar entre los equipos por medio de un canal seguro. Ambos extremos
deben tener la misma clave para cumplir con le proceso.
14
15
llaves de 16 bits cada una. La principal razn por la que IDEA no reemplaz a
DES es simplemente porque esta patentado y debe ser licenciado para su uso
comercial.
El algoritmo ms seguro hoy el AES, aunque 3DES tambin es muy seguro. Este
ltimo se utiliza cuando hay necesidad de compatibilidad. AES 128 es
aproximadamente 15% ms rpido que DES, y AES 256 sigue siendo ms rpido
que DES.
Cualquiera de estos algoritmos utiliza los siguientes dos elementos; ninguno de los
dos debe pasarse por alto ni subestimar su importancia:
16
Algoritmo
Longitud (bits)
DES
64
TripleDES (3DES)
192
IDEA
128
AES
256
Criptografa asimtrica
La encriptacin asimtrica permite que dos personas puedan enviarse informacin
encriptada, sin necesidad de compartir la llave de encriptacin. Se utiliza una llave
pblica para encriptar el texto y una llave privada para desencriptar. A pesar de que
puede sonar extrao que se encripte con la llave pblica y desencripte con la
privada, el motivo para hacerlo es el siguiente: si alguien necesita que le enven la
informacin encriptada, deja disponible la llave pblica para que quienes le desean
enviar algo lo encripten. Nadie puede desencriptar algo con la misma llave pblica.
El nico que puede desencriptar es quien posea la llave privada, quien justamente es
el que recibe la informacin encriptada.
17
Algoritmos asimtricos
18
Algoritmo
Longitud (bits)
RSA
1024 - 4096
DSA
1024
Elgamal
1024-4096
DH
1024
ECC
512
Mientras ms larga sea la llave, ms seguro ser. La relacin con los algoritmos
simtricos no es directa. En este caso, una llave de 1024 bits de RSA es equivalente
en seguridad a una de 75 bits de un algoritmo simtrico.
Algoritmos Hash
Por ltimo, existen los algoritmos de tipo Hash. Estos son algoritmos del tipo de los
que se conocen como de slo ida, ya que no es posible desencriptar lo que se ha
encriptado. Puede ser que a primera vista no se le vea la utilidad, pero en los
siguientes dos escenarios ste es el tipo de algoritmo necesario para realizar el
proceso. El primero de ellos est dirigido a proteger informacin muy valiosa
encriptando el contenido; y el segundo busca validar que no se modifique la
informacin que se est enviando desde un lugar a otro.
Los algoritmos para hacer Hash mas conocidos son los siguientes:
19
Algoritmo
MD5
128
SHA-1
160
SHA-256
256
SHA-384
384
SHA-512
512
Debido a lo anterior, se han inventado los siguientes algoritmos de Hash, que utilizan
llaves para realizar el proceso. En este caso, si el resultado se sobrescribe, al
obtener el Hash con la llave, el resultado jams coincidir con el que viene en el
mensaje. Entre estos algoritmos se encuentran HMAC-SHA1, HMAC-MD5 y MAC3DES-CBC.
20
Fuentes de Seguridad
Existe una gran cantidad de sitios buenos sobre la seguridad de Unix en general y la
seguridad de Linux en particular. Es muy importante suscribirse a una (o ms) de las
listas de correo sobre seguridad y mantenerse al da en mejoras de seguridad. La
mayora de estas listas son de muy bajo volumen y muy informativas.
Algunas listas de correo son:
Listas de Red Hat - Red Hat proporciona varias listas de correo a las cuales
puede suscribirse. Entre la mas importante se encuentra la lista de seguridad
Enterprise-watch-list. La direccin de la pgina web de las listas disponibles
es:
http://www.redhat.com/mailman/listinfo
Algunos sitios web tiles donde puede encontrar amplia informacin relacionada a
seguridad son:
21
2
Actualizaciones de seguridad
Actualizaciones de seguridad
Introduccin
A medida que se descubren fallas de seguridad en el software, este se debe
actualizar para sellar cualquier posible riesgo de seguridad. Si el paquete es parte de
una distribucin de Red Hat Enterprise Linux actualmente soportada, Red Hat, Inc.
est obligado a producir los paquetes de actualizacin que reparen las
vulnerabilidades, tan pronto como sea posible.
Los productos de Red Hat estn disponibles a travs de suscripciones, las cuales
definen los servicios que proporcionarn (tales como envo de contenido,
actualizaciones, base de conocimientos y niveles de soporte) para esos productos.
Las suscripciones son otorgadas a servidores individuales y esto les da derecho a
recibir soporte.
Dos trminos relacionados: suscripcin y derechos. Ambos trminos se refieren al
producto de software (y todos sus servicios asociados) que estn disponibles para el
sistema. La diferencia est en la perspectiva. Una suscripcin es lo que se compra
de Red Hat. Esta suscripcin define el producto, las arquitecturas soportadas, los
mecanismos de envo de contenido, los niveles de soporte, y las cantidades. Cuando
se asigna una suscripcin a un sistema, se est autorizado a usar ese sistema o se
tiene un derecho. Un derecho, es una suscripcin asignada.
23
Actualizaciones de seguridad
24
Actualizaciones de seguridad
Para acceder a RHN Classic utilizando el navegador web, conctese al siguiente sitio
web:
https://rhn.redhat.com
Durante el proceso firstboot, existen dos opciones para el servidor de contenido: Red
Hat Network y RHN Classic. Estos sistemas son mutuamente excluyentes, sin
embargo ambos manejan el contenido de software y actualizaciones, as como las
suscripciones y el inventario del sistema.
Red Hat Network utiliza un modelo de suscripcin baseado en productos, mientras
que RHN Classic utiliza un modelo basado en canales.
Para utilizar Red Hat Network o RHN Classic, debe contar con una subscripcin. Las
subscripciones pueden ser adquiridas por periodos de 1 a 3 aos. Existen distintos
niveles de subscripcin, variando en cada uno el nivel de soporte y el precio:
25
Actualizaciones de seguridad
Severidad 1: 1 hora
Severidad 2: 2 horas
Severidad 3: 4 horas
Severidad 4: 8 horas
Las suscripciones son vendidas por par de sockets. Esto quiere decir que necesitar
adquirir una suscripcin por cada 2 procesadores fsicos instalados en el equipo.
Adems, si usted desea utilizar mquinas virtuales, existen suscripciones segn la
cantidad de guests que sern creados en el equipo:
26
Actualizaciones de seguridad
Red Hat Subscription Manager tiene tres reas principales para administrar
productos y subscripciones:
27
Actualizaciones de seguridad
instalar y
28
Actualizaciones de seguridad
Puede
adems
indicar las opciones
--proxy=, --proxyUser=
--proxyPassword= para utilizar un servidor proxy desde la lnea de comandos.
29
Actualizaciones de seguridad
30
Actualizaciones de seguridad
Puede
adems
indicar las opciones
--proxy=, --proxyUser=
--proxyPassword= para utilizar un servidor proxy desde la lnea de comandos.
Una vez registrado el sistema, puede utilizar el comando yum para
actualizar los paquetes de software.
instalar y
31
Actualizaciones de seguridad
Si desea excluir algn paquete en la actualizacin del sistema, por ejemplo el kernel,
ejecute:
# yum update -x kernel*
Puede listar paquetes de software cuyo nombre concuerda con un patrn de texto,
por ejemplo:
# yum list kernel*
Si desea descargar un paquete sin instalarlo, debe tener instalado el paquete yumdownloadonly. Para instalar el paquete ejecute:
# yum install yum-downloadonly
verificando
el
archivo
[main]
enabled=1
Los
paquetes
por
defecto
son
almacenados
en
el
directorio
/var/cache/yum/packages. Puede indicar una ubicacin alternativa con la
opcin downloaddir, por ejemplo:
# yum install --downloadonly --downloaddir=/tmp <paquete>
32
Actualizaciones de seguridad
Es adems posible indicar a yum que instale nicamente los paquetes de seguridad
(no instalar los paquetes de mejoras o correcciones de errores). Para ello, necesita
el plugin yum-security:
# yum install yum-security
33
Actualizaciones de seguridad
34
Actualizaciones de seguridad
seguridad.
35
Actualizaciones de seguridad
RPM antes de instalarlo. Si no tiene la llave GPG instalada, instlela desde una
ubicacin segura y esttica tal como un CD-ROM de instalacin de la distribucin
Linux.
Asumiendo que el CD-ROM se encuentra montado en /media/cdrom, utilice el
siguiente comando para importarla a su llavero (una base de datos de llaves
confiables en el sistema):
# rpm --import /media/cdrom/RPM-GPG-KEY*
Para desplegar una lista de todas las llaves instaladas para ser verificadas por RPM,
ejecute el comando:
# rpm -qa gpg-pubkey*
Para desplegar detalles sobre una llave especfica, utilice el comando rpm -qi
seguido de la salida del comando anterior, como se muestra en este ejemplo:
# rpm -qi gpg-pubkey-db42a60e-37ea5438
Para los paquetes del kernel, nunca utilice la opcin -U porque eliminar cualquier
versin anterior del kernel existente. Utilice el comando con la opcin -i como sigue:
# rpm -ivh /tmp/updates/kernel-*rpm
36
Actualizaciones de seguridad
Este comando puede ser til si sospecha que sus bases de datos de RPM estn
daadas.
Si todo fue verificado correctamente, no habr salida. Si se encuentran
discrepancias, sern mostradas. El formato de la salida es una cadena de ocho
caracteres (una c identifica un archivo de configuracin) seguido por el nombre del
archivo. Cada uno de los ocho caracteres seala el resultado de una comparacin
entre un atributo del archivo al valor de ese atributo escrito en la base de datos de
RPM. Un slo . (punto) significa que ha pasado la prueba. Los siguientes caracteres
sealan que ciertas pruebas no han sido pasadas:
Prueba
37
Descripcin
Enlace simblico
Dispositivo
Usuario propietario
Actualizaciones de seguridad
Prueba
Descripcin
Grupo propietario
Modo
Si ve alguna salida, use su buen juicio para determinar si debera quitar o reinstalar
el paquete o resolver el problema de otra manera.
38
3
Seguridad de inicio, contraseas y la cuenta root
Debido a que los mtodos para colocar contraseas del BIOS varan entre
fabricantes de equipos, consulte el manual de su computador para ver las
instrucciones especficas.
Si olvida su contrasea del BIOS, usualmente esta se puede reconfigurar bien sea a
travs de los jumpers en la tarjeta madre o desconectando la batera CMOS. Por
esta razn, es una buena idea bloquear el chasis del computador si es posible. Sin
embargo, consulte el manual del computador o tarjeta madre antes de proceder a
desconectar la batera CMOS.
40
como el gestor de arranque, un atacante puede usar la interfaz del editor para
cambiar su configuracin o para reunir informacin usando el comando cat.
Seguridad de contraseas
Las contraseas son el mtodo principal que Red Hat Enterprise Linux utiliza para
verificar la identidad de los usuarios. Por esta razn la seguridad de las contraseas
es de suma importancia para la proteccin del usuario, la estacin de trabajo y la
red.
Para propsitos de seguridad, el programa de instalacin configura el sistema para
usar el algoritmo Secure Hash 512 (SHA512) y contraseas shadow. Se recomienda
que no cambie estas configuraciones.
Si no se utilizara contraseas shadow, todas las contraseas seran almacenadas
como hash de una sola va en el archivo /etc/passwd, lo que hace al sistema
vulnerable a ataques de piratas fuera de lnea. Si un intruso puede obtener acceso a
la mquina como un usuario regular, puede tambin copiar el archivo /etc/passwd
a su propia mquina y ejecutar cualquier cantidad de programas de descifrado de
contraseas contra el. Si hay una contrasea insegura en el archivo, es slo una
cosa de tiempo antes de que el maleante informtico la descubra.
41
Las contraseas shadow eliminan este tipo de ataques almacenando los hash de las
contraseas en el archivo /etc/shadow, el cual slo es ledo por el usuario root.
Esto obliga al atacante potencial a intentar descubrir la contrasea remotamente
mediante la conexin a un servicio de la red en la mquina, tal como SSH o FTP.
Este tipo de ataques de fuerza bruta son mucho ms lentos y dejan rastros obvios,
pues los intentos fallidos de conexin son registrados a los archivos del sistema. Por
supuesto, si el maleante o cracker comienza un ataque durante la noche y usted
tiene contraseas dbiles, ste podra obtener acceso antes del amanecer y editar el
archivo de registro para borrar sus rastros.
Ms all de los detalles sobre el formato y almacenamiento, est el problema del
contenido. La cosa ms importante que un usuario puede hacer para proteger su
cuenta contra un ataque de piratas, es crear una contrasea robusta.
42
ser de poca utilidad si usted no puede recordarla. Por lo tanto utilice acrnimos u
otros dispositivos nemnicos que lo ayuden a memorizar las contraseas.
43
44
El comando su
Despus de escribir el comando su, se le solicita al usuario la contrasea de root y,
luego de la autenticacin, se le presenta un indicador de comandos del shell.
Una vez conectado a travs de su, el usuario se convierte en el superusuario y tiene
acceso administrativo absoluto al sistema. Adems, una vez que el usuario obtiene
acceso root, es posible, en algunos casos, usar el comando su para cambiarse a
cualquier otro usuario en el sistema sin que se le solicite una contrasea.
Debido a que este programa es tan poderoso, los administradores dentro de la
organizacin pueden desear limitar el acceso a este comando.
Una de las formas ms fciles de hacer esto es aadir usuarios al grupo
administrativo especial llamado wheel. Para hacer esto escriba el siguiente
comando como root:
# usermod -G wheel <usuario>
En el comando anterior, cambie <usuario> con el nombre del usuario que desea
aadir al grupo wheel.
Luego, deber modificar el archivo /etc/pam.d/su para activar la verificacin del
grupo al ejecutar el comando su:
45
El fichero /etc/sudoers
Desde este fichero lo controlamos todo. A continuacin una lista de las posibilidades
que nos ofrece:
46
Definiciones de alias
Los alias son abreviaciones para cualquier tipo de elemento: comandos, usuarios,
usuarios privilegiados y hosts. stos alias pueden ser utilizados en cualquier lugar
donde se espere un comando, un usuario privilegiado o un host respectivamente.
Insisto, cualquier lugar; incluida la definicin de un alias.
Veamos la sintaxis general:
Tipo_Alias
Ajuste de opciones
Como ya hemos dicho podemos definir opciones globalmente, por usuario, por
usuario privilegiado y por host. La sintaxis es la siguiente:
47
Defaults
lista_opciones
Defaults:usuario
lista_opciones
Defaults>usuario_privilegiado
lista_opciones
lista_opciones
Por ejemplo, por defecto sudo solicita la contrasea del usuario para identificarse
usando su propia contrasea. Una vez que la contrasea ha sido introducida sudo la
recuerda por 5 minutos. Utilizando la siguiente entrada Default se puede modificar
este comportamiento:
Defaults timestamp_timeout=0
log_year, logfile=/var/log/sudo.log
!authenticate
En este caso, SERVICES es una alias a usuarios de servicios los cuales no requieren
autenticarse para ejecutar comandos como usuarios privilegiados.
Para conocer la lista de opciones ejecute man sudoers.
Reglas de acceso
Ahora toca definir los usuarios a los que permitimos utilizar sudo, los comandos
Ing. Ivan Ferreira
48
Hay que decir que cada elemento puede ser tanto un alias como una lista de
elementos. La mencin del usuario_privilegiado o la lista de ellos es opcional
y por defecto se toma el root. En los ejemplos comentaremos algunos detalles
aclaratorios de la sintaxis.
Existe una ltima posibilidad, y es poder eliminar la peticin de contrasea para
ejecutar uno o varios comandos. Se trata de las etiquetas NOPASSWD y PASSWD.
Son opcionales y por defecto se asume PASSWD. Recuerde que la contrasea que
debe introducir es la del usuario que est utilizando actualmente.
usuario
Ejemplos:
#
# User alias specification
User_Alias
SOPORTE_UA = jperez, pegomez, rlopez, %soporte
User_Alias
ADMIN_UA = hvera, ivaldez, omedina
User_Alias
DBA_UA = mvazquez, gmendez, %dba
#
# Runas alias specification
Runas_Alias
ORACLE_RA = oracle, oracle10
#
# Host alias specification
Host_Alias
PROD_HA = mercurio, venus, tierra, marte :\
DESA_HA = sol, luna
Host_Alias
DMZ_HA = mail, www, ns
#
# Cmnd alias specification
Cmnd_Alias
BACKUP_CA = /usr/bin/mt, /usr/sbin/star, /bin/tar
Cmnd_Alias
KILL_CA = /usr/bin/kill, /usr/bin/killall
Cmnd_Alias
INIT_CA = /usr/sbin/shutdown, /usr/sbin/halt, /usr/sbin/init, \
/usr/sbin/reboot
#
# Override built in defaults
Defaults
syslog=auth
Defaults>root
!set_logname
Defaults:SOPORTE
!lecture
Defaults:ADMIN
!authenticate
Defaults@PROD
log_year, logfile=/var/log/sudo.log
# Permite a root y cualquier usuario en el grupo wheel ejecutar cualquier
# comando en cualquier host como cualquier usuario
#
root
ALL = (ALL) ALL
49
Consideraciones de seguridad
En /etc/sudoers cuando se especifique un comando siempre se debe poner la
ruta completa al ejecutable. Cuando ejecutamos sudo no es necesario, es decir, no
necesito escribir sudo /usr/bin/su, basta con sudo su.
El uso del alias ALL para especificar comandos es altamente peligroso.
50
51
4
Pluggable Authentication Module
Introduccin a PAM
Para entender como funciona PAM, iniciaremos con un ejemplo. Tomamos una
aplicacin que otorga algn servicio a los usuarios, login es uno de esos
programas. El programa login hace dos cosas, primero establece si el usuario es
quien realmente dice ser y luego le provee el servicio solicitado: en el caso de login
el servicio es un shell ejecutndose con la identidad del usuario.
Tradicionalmente esto era logrado por la aplicacin login solicitando al usuario una
contrasea y verificando que concuerda con la que se encuentra en el sistema,
comprobando que el usuario es quin dice ser. Esta tarea anteriormente estaba
codificada en el programa login, actualmente la tarea de autenticar el usuario es
delegada a PAM.
Para la perspectiva del programador de aplicaciones, PAM toma el control de las
tareas de autenticacin, verificando la identidad del usuario.
La flexibilidad de PAM es que usted como administrador del sistema, tiene la libertad
de estipular qu esquema de autenticacin ser usado. Tiene la libertad de
configurar el esquema a cualquiera o todas las aplicaciones que son conscientes de
PAM. Esto es, puede autenticar desde archivos locales, servicios de directorio tales
como LDAP, NIS, NIS+, Microsoft Active Directory e incluso bases de datos como
MySQL.
PAM trabaja con cuatro tipos separados de tareas de gestin. Estas son:
53
argumentos
banderas-de-control ruta-modulo
required - Esto indica que el xito del mdulo es requerido para el tipomodulo. La falla de este mdulo no se presentar al usuario hasta que
todos los mdulos restantes del mismo tipo hayan sido ejecutados.
54
argumentos - Son una lista de campos que son pasados al mdulo cuando
es invocado. Muy parecidos a argumentos de los comandos unix.
Generalmente, los argumentos vlidos son opcionales y especficos a un
mdulo dado. Los argumentos invlidos son ignorados por el mdulo, sin
embargo cuando se encuentran un argumento invlido, el mdulo escribe un
error a syslog.
55
include
required
sufficient
sufficient
required
system-auth
pam_unix.so
pam_localuser.so
pam_succeed_if.so uid < 500 quiet
pam_permit.so
password
include
system-auth
password
requisite
pam_cracklib.so try_first_pass retry=3 type=
password
sufficient
pam_unix.so sha512 shadow nullok try_first_pass
use_authtok
password
required
pam_deny.so
session
session
session
session
use_uid
session
include
optional
required
[success=1
system-auth
pam_keyinit.so revoke
pam_limits.so
default=ignore] pam_succeed_if.so service in crond quiet
required
pam_unix.so
56
/lib/security/pam_deny.so
/lib/security/pam_deny.so
/lib/security/pam_deny.so
/lib/security/pam_deny.so
Mdulos PAM
Los parmetros de cada mdulo pam pueden variar de acuerdo a la versin de PAM.
Es importante consultar la documentacin que acompaa al paquete para obtener la
informacin ms actualizada. La documentacin de PAM se encuentra en el
directorio /usr/share/doc/pam-*/txts.
Mdulo pam_access
Provee control de acceso basado en nombre de usuario, nombre de host, direccin
IP o nombre de terminales.
Grupos de gestin
account
Dependencias
57
Descripcin
Debe ser + (acceso otorgado) o (acceso
denegado).
Campo
Descripcin
usuarios
origenes
Argumentos reconocidos
Argumento
Descripcin
accessfile=</ruta/a/archivo> Indica un archivo de configuracin
alternativo.
filedsep=<separador>
Modifica el separador de campo que
pam_access reconocer cuando lee el
archivo de configuracin.
Ejemplos/uso sugerido
Un ejemplo del
/etc/security.
archivo
access.conf
se
encuentra
en
el
directorio
58
Mdulo pam_cracklib
Este mdulo puede ser agregado a la pila de password para proveer una verificacin
de seguridad de contraseas.
Se realizan las siguientes verificaciones:
Grupos de gestin
password
Dependencias
Argumentos reconocidos
Argumento
type=<XXX>
59
Descripcin
Reemplaza la frase New UNIX password: con New XXX
password
retry=<N>
difok=<N>
minlen=<N>
dcredit=<N>
ucredit=<N>
Argumento
lcredit=<N>
Descripcin
El mximo crdito por tener minsculas en la contrasea.
ocredit=<N>
remember=<N>
El argumento minlen es la longitud mnima para una contrasea que est toda en
minsculas, pero los usuarios pueden obtener crditos de longitud usando una
combinacin de maysculas, minsculas, nmeros y caracteres especiales. Por
defecto, normalmente puede obtener un mximo de 1 crdito para cada caracter. Si
desea indicar que el carcter es requerido y no otorgar ningn crdito por l, indique
el valor -1
De tal forma que si el administrador establece minlen=12, un usuario podra tener
una contrasea de 8 caracteres si ha utilizado los 4 tipos de caracteres.
Ejemplos/uso sugerido
retry=3
minlen=11
difok=3
lcredit=0
ucredit=1
Modulo pam_limits
Por
medio
del
contenido
del
archivo
de
configuracin
/etc/security/limits.conf, lmites de recursos son establecidos a las
sesiones de los usuarios. UID 0 no es afectado por esta restriccin.
Grupos de gestin
session
Dependencias
60
Debe crear un archivo solo leble por root que por defecto es
/etc/security/limits.conf. Este archivo describe los lmites de recursos a
imponer a usuarios o grupos. Cada lnea describe un lmite para un usuario de la
forma:
<domain>
<type>
<item>
<value>
Un usuario
Un grupo
soft - Valores que el usuario puede sobrepasar hasta un rango permitido por
una entrada hard. Seran los valores por defecto.
61
Argumentos
Argumento
debug
conf=<archivo>
Descripcin
Mayor informacin registrada en syslog.
Un
archivo
de
configuracin
/etc/security/limits.conf.
alternativo
al
Ejemplos/uso sugerido
required
pam_limits.so
Para la instalacin de una base de datos Oracle por ejemplo, se requiere que se
modifiquen los parmetros para el usuario oracle como sigue:
# <domain>
<type>
<item>
oracle
soft nproc 2047
oracle
hard nproc 16384
oracle
soft nofile
1024
oracle
hard nofile
65536
<value>
Mdulo pam_deny
Este mdulo puede ser utilizado para denegar acceso. Siempre indica fallo a la
aplicacin a travs de la infraestructura PAM. Este modulo es apropiado para las
entradas por defecto (other).
62
Grupos administrativos
account
authentication
password
session
Ejemplos/uso sugerido
Apilando este modulo con el tipo account no permitir al usuario obtener acceso al
sistema. Es normalmente utilizado como el ltimo mdulo de la pila en el archivo
system-auth para denegar el acceso si el usuario no puede ser autenticado.
auth
auth
auth
auth
required
sufficient
requisite
required
pam_env.so
pam_unix.so nullok try_first_pass
pam_succeed_if.so uid >= 500 quiet
pam_deny.so
required
required
required
required
pam_deny.so
pam_deny.so
pam_deny.so
pam_deny.so
Mdulo pam_lastlog
Este modulo mdulo puede desplegar informacin acerca del ltimo inicio de sesin
del usuario como el siguiente:
Ultimo inicio de sesin: jue feb 15 12:21:44 PYST 2007 en pts/3
authentication
Argumentos
Argumento
debug
Descripcin
Mayor informacin registrada en syslog.
nodate
noterm
nohost
Ejemplos/uso sugerido
Para que todos los servicios que utilizan PAM registren el inicio de sesin del
usuario, agregue la siguiente lnea al archivo /etc/pam.d/system-auth
session optional pam_lastlog.so
Mdulo pam_listfile
Este mdulo permite o deniega el acceso al servicio basndose en una lista de
usuarios obtenida de un archivo arbitrario.
Grupos de gestin
authentication
Argumentos
Argumento
sense=<allow|deny>
file=filename
Descripcin
Si sense=allow entonces se retorna PAM_SUCESS
siendo la autenticacin satisfactoria. Si sense=deny
PAM_AUTH_ERR es retornado, haciendo que la
autorizacin falle.
Indica el nombre del archivo del cual obtener la lista
de usuarios.
64
Argumento
onerr=<succeed|fail>
apply=user|@group
Descripcin
Si un error ocurre, por ejemplo el archivo no existe,
entonces onerr=succeed permitir la autenticacin,
de otro modo, si onerr=fail, se denegar la
autenticacin.
Un argumento adicional, apply=, puede ser utilizado
para restringir a un usuario especfico o un grupo
especfico de la forma apply=usuario o
apply=@grupo.
Ejemplos/uso sugerido
El clsico archivo ftpusers es utilizado para denegar acceso ftp a las cuentas
listadas en el archivo. La configuracin del archivo /etc/pam.d/vsftpd es como
sigue:
auth
required
onerr=fail
pam_listfile.so
item=user
sense=deny
file=/etc/vsftpd/ftpusers
Mdulo pam_mail
Este mdulo verifica el directorio de correo del usuario e indica si existe algn correo
en l.
Dependencias del sistema
El directorio /var/spool/mail/
Grupos administrativos
session
Argumentos
65
Argumento
debug
Descripcin
Escribe informacin a syslog.
dir=<ruta>
empty
Argumento
Descripcin
hash=<cantidad> Profundidad del directorio mail hash. Si cuenta es 2 entonces
el archivo de correo sera /var/spool/mail/u/s/user.
quiet
Ejemplos/uso sugerido
Este mdulo puede usarse para indicar al usuario si tiene correo nuevo cuando
ingresa al sistema. Por ejemplo, el archivo /etc/pam.d/login podra contener
una lnea como la siguiente:
session
optional
pam_mail.so
Modulo pam_mkhomedir
Crea directorios home para los usuarios autenticados.
Grupos administrativos
session
Argumentos
Argumento
debug
Descripcin
Escribe informacin a syslog
66
Mdulo pam_nologin
Si el archivo /etc/nologin existe, solamente se permite el inicio de sesin al
usuario root, otros usuarios no pueden iniciar sesin y se despliega el contenido del
archivo /etc/nologin.
El administrador puede configurar el archivo nologin con el argumento
file=ruta.
Grupos de gestin
authentication
Ejemplos/uso sugerido
Mdulo pam_permit
Este mdulo es muy peligroso. Debe usarse con extrema precaucin. Su funcin es
permitir acceso.
Grupos de gestin
account
authentication
password
session
Ejemplos/uso sugerido
67
required
pam_permit.so
Mdulo pam_rootok
Este mdulo es para utilizar en situaciones donde el superusuario desea obtener
acceso a un servicio sin necesidad de una contrasea.
Grupos de gestin
authentication
Ejemplos/uso sugerido
sufficient
include
pam_rootok.so
system-auth
Mdulo pam_securetty
Provee una verificacin estndar de Unix securetty, donde provoca que la
autenticacin para root falle a menos que la terminal est listada en el archivo
/etc/securetty.
Grupos de gestin
authentication
Ejemplos/uso sugerido
Mdulo pam_tally2
Este mdulo mantiene una cuenta de los intentos de acceso, puede acerar el
contador en xito, puede denegar el acceso si se fallan muchos intentos.
68
Grupos de gestin
authentication
account
Dependencias
Descripcin
Si ocurre un error, cmo el mdulo debe reaccionar.
Componente authentication
69
Descripcin
deny=n
lock_time=n
unlock_time=n
magic_root
even_deny_root
Argumento
root_unlock_time=n
Descripcin
Igual a unlock_time pero solo afecta a la cuenta
root.
Componente account
no_reset
Descripcin
Indica que si el modulo es invocado por un usuario
con uid=0, entonces no se incrementa el contador.
Para servicios lanzados por el usuario, como el su
el argumento debe ser utilizado.
No reinicia el contador luego de un inicio de sesin
correcto, lo decrementa.
Ejemplos/uso sugerido
Mdulo pam_time
Este mdulo ofrece control de tiempo para el acceso a servicios ofrecidos por un
sistema. Este mdulo puede ser configurado para denegar el acceso a usuarios
Ing. Ivan Ferreira
70
account
Dependencias
71
MoTuMo
Indica solamente Mircoles.
Los das aceptados son:
Mo Tu We Th Fr Sa Su Wk Wd Al
Siendo los tres ltimos, toda das entre semana, los fines de semana y toda la
semana respectivamente.
Un rango de horas es un par de horas en formato 24 H, HHMM separado por
un guin. Por ejemplo:
Mo1800-0300
Indica los lunes desde las 18 hasta las 3 AM del da siguiente.
Ejemplos/uso sugerido
required
pam_time.so
Mdulo pam_unix
Es el mdulo estndar de autenticacin unix. Utiliza llamadas estndar de las
bibliotecas del sistema para obtener y establecer la informacin de cuenta como
autenticacin. Usualmente es obtenido del archivo /etc/passwd y el archivo
/etc/shadow.
Grupos de gestin
account
authentication
password
72
session
Componente account
required
pam_unix.so broken_shadow
Descripcin
Enva informacin adicional a syslog.
nullok
use_fist_pass
try_first_pass
nodelay
sufficient
Componente password
Descripcin
md5
nullok
use_fist_pass
try_first_pass
use_authok
remember=n
password
password
required
required
Componente session
required
pam_unix.so
74
Modulo pam_warn
Este mdulo existe principalmente para registrar informacin acerca de una
autenticacin o solicitud de actualizacin de contrasea. Registra el servicio, la
terminal, el usuario, el usuario remoto y el host remoto.
Grupos de gestin
authentication
password
Ejemplos/uso sugerido
required
required
required
required
required
required
required
required
pam_deny.so
pam_warn.so
pam_deny.so
pam_warn.so
pam_deny.so
pam_warn.so
pam_deny.so
pam_warn.so
Mdulo pam_wheel
Permite el acceso como root solamente a usuarios miembros del grupo wheel.
Grupos de gestin
authentication
Argumentos
Argumento
debug
75
Descripcin
Enva informacin adicional a syslog.
Argumento
deny
Descripcin
Utilizado para revertir la lgica del mdulo. Si el usuario
tratando de obtener uid=0 pertenece al grupo weel, el acceso
es denegado.
group=<nombre>
root_only
use_uid
Ejemplo/uso sugerido
Para restringir el acceso a root solo a miembros del grupo wheel, descomente la
siguiente entrada del archivo /etc/pam.d/su:
auth
sufficient
Mdulo pam_ldap
El mdulo pam_ldap proporciona autenticacin, autorizacin y cambio de
contraseas en cuentas almacenadas en un servidor LDAP.
Grupos de gestin
authentication
password
session
Dependencias
Argumento
debug
Descripcin
Enva informacin adicional a syslog.
76
Argumento
use_fist_pass
Descripcin
Este mdulo no pregunta por la contrasea del
usuario, en lugar de ello, debera utilizar la
contrasea previamente digitada para el mdulo
anterior. Si no funciona el usuario no ser
autenticado.
try_first_pass
ignore_unknown_user
ignore_authinfo_unavail
use_authok
Ejemplo/uso sugerido
Mdulo pam_smb_auth
El mdulo pam_smb_auth permite la autenticacin de de servidores Linux usando
un servidor Windows.
Grupos de gestin
authentication
Argumentos
Argumento
debug
77
Descripcin
Enva informacin adicional a syslog.
Argumento
use_fist_pass
nolocal
Descripcin
ste mdulo no pregunta por la contrasea del usuario, en
lugar de ello, debera utilizar la contrasea previamente
digitada para el mdulo anterior. Si no funciona el usuario no
ser autenticado.
Permite la autenticacin de usuarios que no se encuentran
en el archivo local de contraseas.
Ejemplo/uso sugerido
78
5
Auditoria del sistema
Introduccin
El subsistema de auditoria implementa una solucin de monitoreo centralizado para
mantener registro de todos los eventos de seguridad relevantes, tales como cambios
o intentos de cambio en archivos de seguridad crticos del sistema.
Esto es realizado a travs de dos mecanismos separados. Todas las llamadas de
sistema son interceptadas y el kernel escribe los parmetros y el valor de retorno al
registro de auditoria para aquellas llamadas que fueron marcadas como relevantes
en el archivo de configuracin basado en filtros.
80
Note que recargar las reglas involucra borrar todas las reglas, y por un corto periodo
de tiempo, el sistema estar operando sin reglas o con reglas parciales de auditoria.
Reglas de auditoria
El archivo audit.rules contiene las reglas de auditoria para el sistema auditd.
El archivo audit.rules utiliza como reglas cualquier opcin que pueda ser
especificada al comando auditclt.
El comando auditclt permite crear o borrar reglas del sistema de auditoria,
establecer el comportamiento del sistema en caso de fallos.
Las reglas del sistema estn compuestas de un elemento a monitorear (watch) y una
clave de filtro (key) para identificar los registros generados por el monitoreo. La clave
de filtro puede ser usada para buscar en los registros de auditoria los eventos
relacionados a ese monitoreo.
Por ejemplo, para definir un monitoreo sobre el archivo /etc/hosts, utilice el
siguiente comando:
# auditctl -w /etc/hosts -p war -k CFG_hosts
/etc/hosts) para cualquier llamada del sistema que realizara una escritura,
lectura o cambio de atributo (-p war). Esto es registrado con la clave CFG_hosts
(-k CFG_hosts). Esta clave puede ser usada para buscar en los registros usando
el comando ausearch.
Las opciones mas comunes del comando auditctl son:
Opcin
-e [0|1]
Descripcin
Habilita o deshabilita la auditoria.
-f [0..2]
-k
-p [r|w|x|a]
-R <archivo>
-s
Reporta el estado.
-D
-w <ruta>
-a <lista,accion>
-S [syscall|all]
-F
-l
execve
Ejecutar un programa.
exit
mkdir
Crea un directorio.
unlink
mknod
Descripcin
82
Syscall
Descripcin
rmdir
Borra un directorio
chown, lchown
chmod
symlink, link
rename
truncate
chroot
setuid
setreuid
setresuid
setgid
setregid
socketcall
Para consultar las llamadas al sistema definidas y el nmero que corresponde con
cada una, consulte el archivo /usr/include/asm*/unistd.h.
A continuacin se ven algunos ejemplos del comando auditctl:
Para ver todas las llamadas del sistema hecha por un programa:
# auditctl -a exit,always -S all -F pid=1005
83
Descripcin
-a <id de evento>
-f <archivo>
-gi <GID>
-if <archivo>
-k <clave>
-p <PID>
-sc
-sv <yes|no>
-ui <UID>
-ul <login>
-x <ejecutable>
Por ejemplo, suponga un archivo de reglas para el sistema de auditoria con una
regla como la siguiente:
-w /etc/shadow -p war -k security-file
Una vez iniciado el demonio auditd, podr ver las reglas con el comando auditctl
-l:
# service auditd start
Iniciando auditd:
OK
# auditctl -l
LIST_RULES: exit,always watch=/etc/passwd perm=rwa key=security-file
84
De este comando puede ver que el usuario con uid=500 ejecuto la syscall=5
(open) sin xito sucess=no a travs del comando vim (comm=vim).
Otros mtodos para obtener la misma informacin seran podran ser:
# ausearch -ui 500
ausearch -x vim
Obtener la informacin de los eventos que fueron generados por el programa vim.
# ausearch -x vim -ui 500
Obtener informacin de los eventos que fueron generados por el programa vim
ejecutados por el usuario con UID 500.
# ausearch -x vim -ui 500 -sv no
Obtener informacin de los eventos que fueron generados por el programa vim
ejecutados por el usuario con UID 500 y el acceso fue denegado.
La herramienta aureport produce un resumen de auditora. La sintaxis del
comando es:
aureport [opciones]
85
Descripcin
Reporta cambios de configuracin.
Opcin
Descripcin
-f
-l
-p
-u
-s
-te [fecha] [hora] Reporta eventos con marcas de tiempo igual o anteriores
al especificado.
-ts [fecha] [hora] Reporta eventos con marcas de tiempo igual o
posteriores al especificado.
Descripcin
log_file=<archivo>
log_format=<raw|nolog>
max_log_file=<tamao MB>
max_log_file_action=<accion>
num_logs=<n>
space_left=<tamao MB>
space_left_action=<tamao MB>
86
Opcin
Descripcin
admin_space_left=<tamao MB>
admin_space_left_action
disk_full_action
disk_error_action
87
Visor de auditora
El visor de auditora, audit-viewer es una interfaz grfica desarrollada para
facilitar la la visualizacin de eventos. La aplicacin bsicamente ejecuta comandos
de shell y da formato a los logs de auditora.
Al ejecutar el comando audit-viewer, la ventana principal aparece con todos los
eventos de auditora registrados.
Puede abrir mltiples pestaas seleccionando del men principal Ventana, Nueva
Lista.
Para aplicar filtros de bsqueda, haga clic sobre la lista desplegable Filro.
En la pestaa Filtro puede agregar los filtros de bsqueda para los registros de
auditora.
88
89
En la pestaa Filtrar por Fecha, puede establecer un rango de fecha y hora para la
bsqueda en los registros de auditora.
90
91
6
AIDE
AIDE
Introduccin
AIDE (Advanced intrusion detection environment) es un programa de deteccin de
intrusos. Ms especficamente un verificador de integridad de archivos.
AIDE construye una base de datos con informacin acerca de los archivos y
directorios indicados en su configuracin. La base de datos de AIDE almacena
varios atributos del archivo, incluyendo permisos, nmero de inodo, usuario, grupo,
tamao, marcas de tiempo, etc. AIDE adems almacena el checksum de cada
archivo utilizando una combinacin de los siguientes algoritmos: sha1, sha256,
sha512, md5, rmd160, tiger. Adicionalmente, los atributos extendidos como ACL,
xattr y SELinux pueden ser utilizados si son habilitados al momento de la
compilacin del software.
Tpicamente, un administrador de sistemas creara una base de datos AIDE en un
nuevo sistema antes de conectarlo a la red. La primera base de datos AIDE es una
foto del sistema en su estado normal y el punto de inicio a partir del cual todos los
cambios del sistema son medidos.
La base de datos debera contener principalmente los binarios del sistema,
bibliotecas y archivos de configuracin. Podra desear excluir directorios que
cambian constantemente, como /var, /tmp y /home. Por otra parte, un atacante
podra dejar archivos en estos directorios debido a que muchas personas lo excluyen
de la base de datos IDS. Es necesario analizar el equilibrio entre seguridad y
facilidad de administracin.
Instalacin de AIDE
AIDE es distribuido como paquete en el medio de instalacin de Red Hat/CentOS.
Para instalarlo, simplemente utilice el comando rpm o el comando yum:
# rpm -ivh aide-*
Preparing...
1:aide
########################################### [100%]
########################################### [100%]
Configuracin de AIDE
El archivo aide.conf contiene la configuracin que AIDE usa para inicializar o
verificar la base de datos.
El archivo de configuracin es sensible a maysculas y minsculas. Existen tres
tipos de lneas en el archivo de configuracin:
93
AIDE
Lneas macro
Las lneas macro definen variables utilizando la siguiente sintaxis:
@@define VARIABLE valor
Lneas de configuracin
Estas lneas tienen el formato parametro=valor. Los parmetros pueden utilizar
URLs para indicar de dnde se obtendr la entrada o la salida. Los URLs pueden ser
los siguientes:
stdout
stderr
stdin
94
AIDE
file::/archivo
Lineas de seleccin
Las lneas de seleccin indican cules atributos sern verificados de cada archivo o
directorio especificado. Los atributos a ser verificados son indicados a travs de
95
AIDE
permissions
inode:
number of links
user
group
size
block count
mtime
atime
ctime
Access Control Lists
SELinux security context
Extended file attributes
check for growing size
md5 checksum
sha1 checksum
sha256 checksum
sha512 checksum
rmd160 checksum
tiger checksum
p+i+n+u+g+s+m+c+acl+selinux+xattrs+md5
p+i+n+u+g+acl+selinux+xattrs
Empty group
Growing logfile p+u+g+i+n+S+acl+selinux+xattrs
El grupo DIR verifica permisos, inodo, nmero de enlaces, usuario, grupo, ACLs y
atributos extendidos.
NORMAL = R+rmd160+sha256
96
AIDE
LOG = >
El grupo LOG indica que es un archivo que nicamente debera crecer en tamao.
AIDE soporta tres tipos de lneas de seleccin, regular, negativa e igual. Las lneas
que comienzan con / son lneas regulares. Por ejemplo la siguiente regla:
/etc
Indica que el directorio /etc y todos su contenido, ser incluido en la base de datos,
almacenando los atributos indicados por el grupo R.
Las lneas que comienzan con ! Indican que se debe ignorar ese archivo o
directorio, por ejemplo la siguiente regla:
!/dev
Indica que los atributros del grupo DIR sern aplicados al directorio /tmp, pero no a
sus subdirectorios.
Algunas reglas establecidas en el archivo de configuracin por defecto son las
siguientes:
# Next decide what directories/files you want in the database.
/boot
NORMAL
/bin
NORMAL
/sbin
NORMAL
/lib
NORMAL
/opt
NORMAL
/usr
NORMAL
/root
NORMAL
# These are too volatile
!/usr/src
!/usr/tmp
# Check only permissions, inode, user and group for /etc, but
# cover some important files closely.
/etc
PERMS
!/etc/mtab
# Ignore backup files
!/etc/.*~
97
AIDE
/etc/exports
/etc/fstab
/etc/passwd
/etc/group
/etc/gshadow
/etc/shadow
NORMAL
NORMAL
NORMAL
NORMAL
NORMAL
NORMAL
Utilizacin de AIDE
Inicialmente, debe crear una base de datos sobre la cual se realizarn las
comparaciones futuras. Esto es realizado por medio del comando:
# aide --init
AIDE, version 0.13.1
### AIDE database at /var/lib/aide/aide.db.new.gz initialized.
Este comando crea la base de datos que contienen todos los archivos que ha
seleccionado en el archivo de configuracin. La base de datos debera ser movida a
un dispositivo de slo lectura. El archivo de configuracin no debera mantenerse en
el servidor, un atacante podra leer el archivo de configuracin y alterarlo, o
identificar los directorios que AIDE no analiza.
Ubique la base de datos generada apropiadamente segn el archivo de
configuracin, para utilizar el archivo de configuracin por defecto ejecute:
# cd /var/lib/aide/
# mv aide.db.new.gz aide.db.gz
Recuerde que esto provocar que la base de datos se mantenga en el disco local
pudiendo ser comprometida su integridad.
Para realizar la verificacin de la integridad de los archivos, ejecute el comando:
# aide --check
AIDE, version 0.13.1
### All files match AIDE database. Looks okay!
AIDE leer la base de datos y comparar los archivos que existen en disco. AIDE
podra encontrar cambios y depender del administrador la accin a tomar ante
ellos.
# aide --check
AIDE found differences between database and filesystem!!
Start timestamp: 2009-03-20 11:46:24
98
AIDE
Summary:
Total number of files:
Added files:
Removed files:
Changed files:
102708
0
0
1
--------------------------------------------------Changed files:
--------------------------------------------------changed: /etc/shadow
-------------------------------------------------Detailed information about changes:
---------------------------------------------------
File: /etc/shadow
Mtime
: 2008-10-17 21:10:08
Ctime
: 2008-10-17 21:10:08
Inode
: 134339
MD5
: rttbK163hylot4JSx6oKIg==
RMD160
: DpamzSbXGM8fjkev2SEyt+8V/tQ=
SHA256
: CZ6h6GLUAjjvguUVavWHWMDpS+ODQEQJ
Puede
visualizar
el
reporte
/var/log/aide/aide.log:
,
,
,
,
,
,
2009-03-20 11:46:19
2009-03-20 11:46:19
132521
RN9e+ykQ2oOaS9va323kSw==
8wbMNHESsgcEWQwPIQtrf5T2V1g=
AAj4QTBi90B9AywuGsXi1J4waDW/WQe7
posteriormente
consultando
el
archivo
# more /var/log/aide/aide.log
Esto generar una nueva base de datos que debe ser transferida al medio de slo
lectura.
Puede adems utilizar el comando aide --compare para verificar los cambios que
existieron entre una base de datos y otra.
99
7
GnuPG
GnuPG
Introduccin
GnuPG es una herramienta de seguridad en comunicaciones electrnicas. Este
captulo es una gua rpida que cubre las funciones bsicas de GnuPG. Estas
funciones incluyen generar un par de claves, intercambiar y comprobar la
autenticidad de claves, cifrar y descifrar documentos, y firmar documentos y verificar
firmas digitales.
GnuPG utiliza criptografa de clave pblica para que los usuarios puedan
comunicarse de un modo seguro. En un sistema de claves pblicas cada usuario
posee un par de claves, compuesto por una clave privada y una clave pblica. Cada
usuario debe mantener su clave privada secreta; no debe ser revelada nunca. La
clave pblica se puede entregar a cualquier persona con la que el usuario desee
comunicarse. GnuPG implementa un esquema algo ms sofisticado en el que un
usuario tiene un par de claves primario, y ninguno o ms de un par de claves
adicionales subordinadas. Los pares de claves primarios y subordinados se
encuentran agrupados para facilitar la gestin de claves, y el grupo puede ser
considerado como un slo par de claves.
Las llaves se pueden usar de dos maneras diferentes: para proporcionar
confidencialidad al mensaje y para probar la autenticidad del originador de un
mensaje. En el primer caso, el emisor usa la llave pblica del receptor para encriptar
un mensaje, de manera que el mensaje contine siendo confidencial hasta que sea
decodificado por el receptor con la llave privada. En el segundo caso, el emisor
encripta un mensaje usando la llave privada, una llave a la cual slo tiene acceso el
emisor.
101
GnuPG
La llave pblica del receptor asegura la confidencialidad; la llave privada del emisor
verifica la identidad del emisor.
pinentry
GnuPG es capaz de crear varios tipos diferentes de pares de claves, pero debe
existir una clave primaria capaz de generar firmas. Por lo tanto, existen cuatro
opciones.
La opcin 1 genera dos pares de claves. Un par de claves RSA que es el par de
claves primario que se usar slo para firmar. Un par de claves subordinadas RSA
que se usar para el cifrado.
La opcin 1 genera dos pares de claves. Un par de claves DSA que es el par de
claves primario que se usar slo para firmar. Un par de claves subordinadas
Elgamal que se usar para el cifrado.
La opcin 3 slo genera un par de claves DSA que puede utilizarse nicamente para
Ing. Ivan Ferreira
102
GnuPG
firmar.
La opcin 4 slo genera un par de claves RSA que puede utilizarse nicamente para
firmar.
La mayora de los usuarios tienen suficiente con la opcin por defecto (1).
Luego es necesario seleccionar un tamao para la clave.
las claves RSA pueden tener entre 1024 y 4096 bits de longitud.
De qu tamao quiere la clave? (2048)
Cuanto ms larga sea la clave, ms segura ser contra ataques de fuerza bruta e
intentos de descifrado. Sin embargo, el cifrado y descifrado de mensajes tiene mejor
rendimiento a medida que se incrementa el tamao de la clave. Una vez
seleccionado, el tamao de una clave no se puede cambiar nunca.
Para terminar, hay que escoger un fecha de caducidad. Si se escogi anteriormente
la opcin 1, la fecha de caducidad se usar para ambos pares de claves.
Por favor, especifique el perodo de validez de la clave.
0 = la clave nunca caduca
<n> = la clave caduca en n das
<n>w = la clave caduca en n semanas
<n>m = la clave caduca en n meses
<n>y = la clave caduca en n aos
Validez de la clave (0)?
La clave nunca caduca
Es correcto? (s/n) s
Para la mayora de los usuarios, una clave sin fecha de caducidad es la adecuada.
Sin embargo, si se escoge con fecha de caducidad, el tiempo para sta debe ser
escogido con cuidado, ya que, aunque es posible cambiar la fecha de caducidad
posteriormente a la generacin de la clave, puede ser difcil comunicar un cambio a
aquellos usuarios que posean esta clave pblica.
Adems de los parmetros de la clave, el usuario debe dar un identificador. El
identificador de usuario se usa para asociar la clave que se est creando con una
usuario real.
GnuPG debe construir un ID de usuario para identificar su clave.
Nombre y apellidos: Juan Perez
Direccin de correo electrnico: jperez@linux.com.py
Comentario:
Ha seleccionado este ID de usuario:
"Juan Perez <jperez@linux.com.py>"
Cambia (N)ombre, (C)omentario, (D)ireccin o (V)ale/(S)alir? V
103
GnuPG
Slo se crear un identificador de usuario al generar una clave, pero es posible crear
identificadores adicionales si se desea usar la clave en dos o ms contextos, por
ejemplo, si se usa por una parte en la oficina como empleado y por otra parte en
casa como activista poltico. Hay que tener cuidado al crear un identificador de
usuario, ya que despus ste no puede ser editado para introducir cambios.
GnuPG necesita una frase clave con el fin de proteger las claves privadas, primarias
y secundarias, que posea el usuario.
<OK>
<Cancel>
No hay lmite para la longitud de una contrasea, y sta debe ser escogida con sumo
cuidado. Desde un punto de vista de seguridad, la contrasea que desbloquea la
clave privada es uno de los puntos ms dbiles en GnuPG (y en otros sistemas de
cifrado de clave pblica), ya que es la nica proteccin que tiene el usuario si alguien
se apoderara de su clave privada. Para una contrasea lo ideal es que no se usen
palabras de un diccionario, y que se mezclen maysculas y minsculas, dgitos, y
otros caracteres.
Reicibir un mensaje indicando que deber realizar actividad con el equipo para
generar entropa:
Es necesario generar muchos bytes aleatorios. Es una buena idea realizar
alguna otra tarea (trabajar en otra ventana/consola, mover el ratn, usar
la red y los discos) durante la generacin de nmeros primos. Esto da al
generador de nmeros aleatorios mayor oportunidad de recoger suficiente
entropa.
104
GnuPG
jperez@linux.com.py
Intercambiar claves
Para poder comunicarse con otros, el usuario debe intercambiar las claves pblicas.
Para obtener una lista de las claves en el fichero (anillo) de claves pblicas, se
puede usar la opcin de la lnea de rdenes -list-keys.
$ gpg -list-keys
GnuPG
Una vez que la clave haya sido importada, es necesario validarla. GnuPG usa un
potente y flexible modelo de confianza que no requiere que el usuario d validez
personalmente a cada clave que importe. Sin embargo, algunas claves pueden
necesitar que el usuario les d validez de forma personal. Una clave se valida
verificando la huella digital de la clave, y firmando dicha clave para certificar su
validez. La huella digital se puede ver con la opcin de la lnea de rdenes
--fingerprint, pero para certificar la clave hay que editarla.
$ gpg --fingerprint plopez@linux.com.py
La huella digital de una clave se verifica con el propietario de la clave. Esto puede
hacerse en persona o por telfono, o por medio de otras maneras, siempre y cuando
el usuario pueda garantizar que la persona con la que se est comunicando sea el
autntico propietario de la clave. Si la huella digital que se obtiene por medio del
propietario es la misma que la que se obtiene de la clave, entonces se puede estar
seguro de que se est en posesin de una copia correcta de la clave.
Despus de comprobar la huella digital ya se puede firmar la clave con el fin de
validarla. Debido a que la verificacin es un punto dbil en criptografa de clave
pblica, es aconsejable ser cuidadoso en extremo y siempre comprobar la huella
digital de una clave con la que nos d el propietario antes de firmar dicha clave.
$ gpg --sign-key plopez@linux.com.py
Una vez firmada, el usuario puede comprobar la clave para obtener un listado de las
firmas que lleva con la opcin --check-sigs. Cada identificador de usuario tendr
una o ms autofirmas, as como una firma por cada usuario que haya validado la
Ing. Ivan Ferreira
106
GnuPG
clave en cuestin.
$ gpg --check-sigs
Para descifrar un mensaje se usa la opcin --decrypt (-d). Para ello es necesario
poseer la clave privada para la que el mensaje ha sido cifrado. De igual modo que en
el proceso de cifrado, el documento a descifrar es la entrada, y el resultado
descifrado la salida.
$ gpg -o mensaje_privado.txt -d mensaje_privado.gpg
107
GnuPG
Firmas acompaantes
Un documento firmado tiene una utilidad limitada. Los otros usuarios deben
recuperar la versin original del documento de la versin firmada, y aun en el caso
de los documento firmados en ASCII, el documento firmado debe ser editado para
poder recuperar el original. Por tanto, existe un tercer mtodo para firmar un
documento, que genera una firma acompaante. Para generar una firma
acompaante se usa la opcin -detach-sig.
$ gpg -o firma_mensaje.sig --detach-sig mensaje.txt
Tanto el documento como la firma acompaante son necesarios para poder verificar
la firma. La opcin -verify se usar para comprobar la firma.
Ing. Ivan Ferreira
108
GnuPG
$ gpg -verify firma_mensaje.sig mensaje.txt
109
GnuPG
110
GnuPG
Una vez activado Enigmail, puede componer mensajes, firmarlos y encriptarlos al ser
enviados.
111
GnuPG
112
GnuPG
113
8
Recuperacin ante desastres
Introduccin
Cuando se habla de seguridad informtica lo primero en lo que se suele pensar es
en firewalls, exploits, parches Esta claro que la seguridad informtica cubre todos
esos campos pero tambin se centra en otros aspectos como son las copias de
seguridad y los planes de recuperacin ante desastres.
Cualquier organizacin que dependa de sistemas informticos para sus operaciones
diarias debera tener preparado un plan que le permita volver a poner su sistema
informtico en marcha en el menor tiempo posible en caso de destruccin total. Es
un plan completamente distinto al de disponibilidad (el tiempo que un sistema
informtico esta disponible) o al de continuidad (recuperacin de una parte muy
concreta del sistema). Los planes de recuperacin ante desastres no pretenden
mantener el sistema funcionando al 100%, 24 horas al da, 7 das a la semana, si no
que intentan especificar el reemplazo del sistema si hubiera que crearlo de nuevo
partiendo de cero.
Existen al menos 5 puntos a tener en cuenta en el plan de recuperacin ante
desastres:
1. Mantener diagramas actualizados de la configuracin fsica y lgica del
sistema informtico.
2. Mantener listados actualizados de todos los dispositivos que conforman el
sistema, su localizacin y su funcin.
3. Mantener una copia de todo el software que podamos necesitar para
reinstalar el sistema.
4.
116
mercurio.linux.com.py
Servidor de base de datos de produccin
Linux Paraguay
Sala de servidores, sector 3
Sistemas (sistemas@linux.com.py)
Oracle
http://www.linux.com.py
Ejecucin de cfg2html
Para colectar informacin del sistema, simplemente debe indicar al comando el
directorio donde depositar el archivo con la informacin del sistema, por ejemplo:
# mkdir /root/systeminfo
# cfg2html -o /root/systeminfo
Mondo Rescue
Mondo Rescue respalda el sistema a CD, cinta, NFS o archivos ISO. Mondo utiliza
afio como el motor de copia de respaldo. En el evento de una prdida de datos
catastrfica, puede restaurar todo el sistema inclusive si los discos estn totalmente
en blanco.
Mondo no es un programa de respaldo para todos los das. No es un reemplazo de
star, tar, afio, cpio, etc. Mondo est diseado para hacer posible recuperar el
sistema desde la nada.
Mondo Rescue puede ser obtenido de:
117
http://www.mondorescue.org
Mondo Rescue requiere de:
Mindi
Mindi Linux crea un conjunto de imgenes de discos de inicio/raz que permite
realizar un mantenimiento bsico del sistema. La principal virtud de los discos de
inicio Mindi es el hecho que contiene el kernel, los mdulos, herramientas y
bibliotecas del propio sistema.
Mindi se asegura que Mondo tenga todas las herramientas que necesita al momento
de arranque.
Instalacin de Mondo
Una vez descargado los paquetes mindi, mondo y sus dependencias, ejecute el
siguiente comando:
# rpm -Uvh *.rpm
Para iniciar la copia de seguridad del sistema, ejecute como root el siguiente
comando:
# /usr/sbin/mondoarchive
118
119
120
121
Nuke Destruye los distos del disco y restaura todo el sistema, de forma
automtica y desatendida.
Una de las cosas lindas de Mondo es que permite borrar el sistema actual y
restaurarlo bajo una configuracin de disco diferente. Puede restaurar de no RAID a
RAID, modificar el tamao de los sistemas de archivos, migrar de sistema de
archivos, etc.
Para diagnstico y solucin de problemas, visite las pginas de documentacin
mondo rescue:
http://trac.mondorescue.org/wiki/FAQ
http://www.mondorescue.org/docs.shtml
http://sourceforge.net/mailarchive/forum.php?forum_name=mondo-devel
122
9
Security Enhanced Linux
Introduccin
Security-Enhanced Linux o SELinux, es una arquitectura de seguridad integrada en
el kernel 2.6.x usando los mdulos de seguridad linux (o linux security modules,
LSM). Este es un proyecto de la Agencia de Seguridad Nacional (NSA) de los
Estados Unidos y de la comunidad SELinux. La integracin de SELinux en Red Hat
Enterprise Linux fue un esfuerzo conjunto entre al NSA y Red Hat.
SELinux proporciona un sistema flexible de control de acceso obligatorio (mandatory
access control, MAC) incorporado en el kernel. Bajo el Linux estndar se utiliza el
control de acceso a discrecin (discretionary access control, DAC), en el que un
proceso o aplicacin ejecutndose como un usuario (UID o SUID) tiene los permisos
y de ese usuario en los objetos, archivos, sockets y otros procesos. Al ejecutar un
kernel SELinux MAC se protege al sistema de aplicaciones maliciosas o daadas
que pueden perjudicar o destruir el sistema. SELinux define el acceso y los derechos
de transicin de cada usuario, aplicacin, proceso y archivo en el sistema. SELinux
gobierna la interaccin de estos sujetos y objectos usando una poltica de seguridad
que especifica cun estricta o indulgente una instalacin de Red Hat Enterprise Linux
dada debera de ser.
Cuando un sujeto, tal como una aplicacin, intenta acceder a un objeto tal como a
un archivo, el servidor de aplicacin de polticas verifica un cach de vector de
acceso (AVC), donde se registran los permisos de objeto y del sujeto. Si no se
puede tomar una decisin basado en los datos en el AVC, la peticin continua al
servidor de seguridad, el cual busca el contexto de seguridad de la aplicacin y del
archivo en una matriz. Los permisos son entonces otorgados o negados, con un
mensaje de avc: denied detallado en /var/log/messages. Los sujetos y
objetos reciben su contexto de seguridad a partir de la poltica instalada, que tambin
proporciona informacin para llenar la matriz de seguridad del servidor. Esta
arquitectura es conocida como Flask Security Architecture.
124
Contextos de seguridad
Todo el control de acceso del sistema operativo est basado en un atributo de
control de acceso asociado con los objetos y sujetos. En SELinux, el atributo de
control de acceso es llamado contexto de seguridad o security context. Todos los
objetos (dispositivo, archivos, sockets) y sujetos (procesos) tienen un nico contexto
de seguridad asociado a ellos. Un contexto de seguridad se compone de tres
elementos, un usuario (user), rol (role) e identificadores de tipo (type identifiers). El
formato normal para especificar o mostrar un contexto de seguridad es el siguiente:
user:role:type:level (usuario:rol:tipo:nivel)
El valor de cada elemento est definido en el lenguaje de poltica de SELinux.
En SELinux, el identificador de tipo (type) es la parte primaria del contexto de
seguridad que determina el acceso.
El nivel es un atributo de Multi-Level Security. Multi-Level Security no es utilizado por
la poltica targeted.
Por razones histricas, el tipo de un proceso es normalmente denominado dominio.
En general, considere dominio, tipo de dominio, tipo de sujeto y tipo de proceso
sinnimos.
126
asociado a l. Existen una serie de reglas que listan las acciones que cada dominio
puede realizar sobre cada tipo. Una ventaja del modelo de dominios es que la
poltica puede ser analizada por medio de herramientas de anlisis de polticas
SELinux para determinar que flujo de informacin es posible.
Control de acceso TE
En SELinux, todo acceso debe ser explcitamente otorgado. La forma en la que el
acceso es permitido, es otorgando a un tipo de sujeto (dominio) acceso a un tipo de
objeto usando una regla allow. Una regla allow tiene cuatro elementos:
El ejemplo muestra la sintaxis bsica de una relgla allow TE. Esta regla tiene dos
identificadores de tipo: el tipo origen (sujeto o dominio) unconfined_t; y el tipo
destino (objeto) bin_t. El identificador file es el nombre de una clase de objeto
definida en la poltica, en este caso representando un archivo cualquiera. Los
permisos encontrados entre las llaves son un conjunto de permisos vlidos para una
instancia de la clase de objeto. La traduccin de esta regla sera como sigue:
Un proceso cuyo tipo de dominio es unconfined_t puede leer, ejecutar y obtener
atributos de un archivo cuyo tipo es bin_t.
Asumiendo que unconfined_t es el tipo de dominio de un proceso comn no
privilegiado como el shell y bin_t es el tipo asociado con archivos ejecutables que
los usuarios ejecutan con privilegios normales, como /bin/vi, la regla puede estar
en la poltica para permitir a los usuarios ejecutar el comando vi.
Ejemplo de TE
Para explorar un poco mas las reglas TE, utilizaremos el ejemplo del programa
passwd. En Linux, el programa passwd debe leer y modificar el archivo
/etc/shadow donde se almacenan las contraseas. Este comando implementa su
propia seguridad interna que permite a los usuarios cambiar su propia contrasea y a
127
/etc/shadow
El contexto de seguridad del archivo /etc/shadow indica que est asociado al tipo
shadow_t. Por ahora puede ignorar los elementos usuarios y rol.
Igualmente, examinando un proceso ejecutando el programa passwd bajo la poltica
SELinux (strict):
# ps -aZ |grep passwd
user_u:user_r:passwd_t
2305 pts/1
00:00:00 passwd
Transicin de dominios
Si todo lo que se debiera hacer es proporcionar acceso de sujetos (procesos) a
objetos tales como archivos, escribir una poltica TE sera simple. Sin embargo, se
debe considerar una forma de ejecutar los programas con el tipo de dominio
correcto. Por ejemplo, no es deseable que programas que no se confan accedan el
archivo shadow o de alguna manera ejecutarse dentro del tipo de dominio
passwd_t. Este problema conlleva a las transiciones de dominios.
Por ejemplo, considere el ejemplo anterior del programa passwd y el archivo
Ing. Ivan Ferreira
128
shadow. En un sistema tpico un usuario, por ejemplo jperez, inicia sesin y obtiene
un shell, por ejemplo bash. Bajo la poltica estricta de SELinux (strict) el shell del
usuario se ejecutar bajo el dominio user_t. Como jperez puede ejecutar otros
programas desde el shell, el tipo de dominio de cualquier nuevo proceso creado por
el usuario mantendrn el tipo user_t a menos que se tome una accin. Si esto es
as, cmo jperez cambia su contrasea?
No se desea que el dominio no confiable user_t del usuario jperez tenga la
posibilidad de leer y escribir al archivo shadow directamente debido a que esto
permitira a cualquier programa ver y cambiar el contenido del archivo. Como se
discuti previamente, se desea que solamente el archivo passwd tenga acceso
sobre el archivo shadow. Entonces, la pregunta es cmo proporcionar una forma
segura y discreta de transicionar desde el shell del usuario jperez el cual se ejecuta
en el dominio user_t a un proceso ejecutando el programa passwd con el tipo de
dominio passwd_t?.
Como previamente se mostr, la regla allow asegurara que el proceso passwd de
tipo de dominio passwd_t pueda acceder el archivo shadow del tipo (shadow_t).
Ahora es necesario encontrar una forma de conseguir la transicin de dominio.
Examine el contexto de seguridad del programa passwd:
# ls -Z /usr/bin/passwd
-rwsr-xr-x root root system_u:object_r:passwd_exec_t
/usr/bin/passwd
129
Esta regla provoca que se intente una transicin de dominio por defecto, indicando
que cuando un archivo ejecutable del tipo passwd_exec_t es ejecutado por un
proceso en el tipo de dominio user_t, se intente una transicin por defecto al
dominio passwd_t. Esta regla intenta una transicin por defecto pero no la permite.
130
131
archivo2
archivo2
root user_u:object_r:user_home_t
root user_u:object_r:user_home_t
archivo1
archivo2
/tmp/archivo1
Si se desea indicar un tipo especfico para el objeto durante la copia utilice la opcin
-Z del comando cp:
# cp -Z user_u:object_r:user_home_t $HOME/archivo1 /tmp
# ls -lZ /tmp/archivo1
-rw-r--r-- root root user_u:object_r:user_home_t
/tmp/archivo1
welcome.html
En el ejemplo anterior, la etiqueta de un archivo que debe ser servidor por httpd no
es la apropiada, para cambiar la etiqueta ejecute el comando:
Ing. Ivan Ferreira
132
Administracin de SELinux
El uso de la poltica targeted hace las tareas de administracin fciles para el
administrador, por ejemplo, no es necesario considerar agregar, editar o borrar
usuarios en SELinux, ni debe considerar los roles.
enabled
/selinux
permissive
enforcing
21
targeted
134
Booleans
Los booleans permiten que parte de la poltica de SELinux sea cambiada en lnea,
sin necesidad de conocer el lenguaje de la poltica de SELinux. Esto permite
cambios simples sin tener que compilar o recargar la poltica de SELinux.
Para listar los booleans y una explicacin de lo que son, ejecute el siguiente
comando:
# semanage boolean -l
Este cambio se aplicar hasta que se reinicie el equipo. Para que el cambio sea
permanente, utilice la opcin -P del comando setsebool:
# setsebool -P httpd_can_network_connect_db on
Dominios permisivos
Cuando SELinux se ejecuta en modo permisivo, SELinux no deniega el acceso, pero
eventos sern registrados para todas aquellas acciones que deberan haber sido
denegadas si se encontrara en modo enforcing. En Red Hat Enterprise/CentOS 4 y
5, los booleans <nombre_dominio>_disable_trans estaban disponibles para
evitar que una aplicacin transicione a un dominio confinado, y por tanto, se
ejecutaba en un dominio no confinado, tal como initrc_t. Sin embargo, esto
ocasionaba algunos problemas con las etiquetas de archivos y comunicacin entre
dominios confinados.
135
Para visualizar una lista de los dominios en modo permisivo, ejecute el comando:
# semodule -l | grep permissive
Cuando habilita SELinux o realiza un cambio en la poltca, debe realizar un reetiquetado del sistema de archivos. La modificacin requiere el reinicio del sistema.
136
xattr:
--selinux
--acls
--xattrs
Por defecto, tar no archiva los xattrs, asi que estas opciones son necesarias para
mantener buenas copias de seguridad.
137
Aplicacin: comm="httpd"
denied
Contexto
de
seguridad
del
scontext=root:system_r:httpd_t:s0
origen
(sujeto):
Contexto
de
seguridad
del
destino
tcontext=system_u:object_r:user_home_t:s0
(objeto):
Setroubleshoot
El paquete setrobleshoot instala una herramienta que monitorea el archivo de
auditora y si encuentra mensajes AVC y ejecuta una bsqueda en una base de
datos para intentar encontrar una explicacin de por qu SELinux ha evitado el
acceso y una forma de solucionar el problema.
En la lnea de comandos, los mensajes sern registrados en el archivo
/var/log/messages y para obtener informacin detallada, puede ejecutar el
comando sealert como se indica en el mensaje registrado.
Apr 3 03:06:02 mercurio setroubleshoot: SELinux is preventing
the
httpd
from
using
potentially
mislabeled
files
(/var/www/html/index.html). For complete SELinux messages. run
sealert -l 0e0ac7dd-6d83-4a12-87b5-f109e66e0474
Si tiene mensajes AVC puede utilizar audit2allow para generar una archivo TE
listo para ser cargado como un mdulo de poltica. El comando requiere del paquete
Ing. Ivan Ferreira
138
Podra utilizar el comando ausearch -m avc para listar los mensajes todos los
139
El comando ausearch permite especificar rangos de tiempo con las opciones -ts
y -te.
NIS est protegido por la poltica targeted. Por defecto, esta poltica no permite
conexiones NIS. Para utilizar NIS, debe configurar el valor allow_ypbind de
SELinux a 1 con el siguiente comando:
# setsebool allow_ypbind 1
Los valores booleans de SELinux que afecta a NIS son descritos en la pgina
man ypbind_selinux.
NFS y SELinux
NFS est protegido por la poltica targeted. Por defecto, esta poltica permite
conexiones
NFS
al
servidor
estableciendo
los
valores
SELinux
nfs_export_all_ro y nfs_export_all_rw a 1.
Si desea exportar directorios home a travs de NFS usando SELinux, debe
Ing. Ivan Ferreira
140
use_nfs_home_dirs
Los valores booleans de SELinux que afecta a NIS son descritos en la pgina man
nfs_selinux.
Samba y SELinux
Samba est protegido por la poltica targeted. Si SELinux est configurado en modo
enforcing, los archivos compartidos va samba deben estar etiquetados con el
contexto de seguridad correcto. Luego de configurar SAMBA para compartir un
directorio, ejecute el siguiente comando para cambiar el contexto de seguridad de los
archivos en el directorio compartido:
# chcon -R -t samba_share_t <directorio>
samba_enable_home_dirs
141
man samba_selinux.
Apache y SELinux
Apache est protegido por la poltica targeted. Todos los archivos accedidos a travs
del servidor web deben estar etiquetados con el contexto de seguridad apropiado.
La poltica targeted permite la ejecucin de scripts CGI y la lectura de directorios
HOME al servidor Apache, sin embargo, para la lectura de directorios home, debe
establecer el contexto de seguridad de los archivos a httpd_sys_content_t con
el comando chcon. Otras funciones de Apache, tales como ejecutarse como
servidor FTP no se permiten por seguridad. SELinux debe ser configurado
explcitamente a 1 para permitir estas caractersticas adicionales.
Una lista de los contextos de seguridad y sus usos, as como los distintos valores
booleans de SELinux estn descritos en la pgina de man httpd_selinux.
FTP y SELinux
FTP est protegido por la poltica targeted. Si el servidor FTP est configurado para
permitir acceso annimo, los archivos deben estar etiquetados con el contexto de
seguridad public_content_t en el directorio /var/ftp:
# chcon -R -t public_content_t /var/ftp
Para
permitir
subir
archivos
al
directorio
upload,
allow_ftp_anon_write utilizando el comando setsebool:
debe
habilitar
# setsebool -P allow_ftpd_anon_write 1
Los valores booleans de SELinux que afecta a FTP son descritos en la pgina man
ftpd_selinux.
142
10
Seguridad del sistema de archivos
Entonces, cul es el punto de usar la opcin noexec? Esta opcin permitir evitar
ataques simples que dependen de la ejecucin de scripts en el directorio /tmp. Si el
atacante obtiene acceso a un shell podra ejecutar el programa, pero una
herramienta automatizada ser detenida.
Para montar el sistema de archivos /tmp con la opcin nosuid, edite el archivo
/etc/fstab y modifique las opciones para el sistema de archivos:
LABEL=/tmp /tmp
ext3
defaults,noexec,nosuid,nodev 0 0
144
Nunca debe haber una excusa para que los usuarios ejecuten programas
SUID/SGID desde sus directorios home. El directorio /var tampoco debe permitir la
ejecucin de programas. Modifique el archivo /etc/fstab como sigue:
LABEL=/home /home ext3
LABEL=/var /var ext3
defaults,nosuid,nodev 0 0
defaults,noexec,nosuid,nodev 0 0
Permisos predeterminados
- 022
755
145
Permisos permitidos
Esto significa que los permisos con los que el archivo ser creado sern 755 (rwxr-xr-x).
Para nuevos archivos de texto o archivos regulares no ejecutables:
666
Permisos predeterminados
- 022
644
Permisos permitidos
En el caso anterior, 666-022 = 644 , es decir , cualquier fichero que creemos con un
editor con otros comandos sern creados con permisos 644 (rw-r--r--) .
Para cambiar la mscara , usamos el comando umask con la nueva mscara que le
deseamos dar :
$ umask 077
En cuyo caso , todos los ficheros a partir del se momento , y hasta que finalice la
sesin, sern creados con sin permisos para el grupo y los otros.
Para configurar el umask por defecto para todos los usuarios, edite el archivo
/etc/bashrc:
# By default, we want this to get set.
# Even for non-interactive, non-login shells.
if [ $UID -gt 99 ] && [ "`id -gn`" = "`id -un`" ]; then
umask 007
else
umask 027
fi
146
Directorios de grupos
Muchas organizaciones de IT (del ingls Information Technologies) prefieren crear
un grupo para cada proyecto importante y luego asignar personas al grupo si estos
necesitan acceso a los archivos de ese proyecto. Usando este esquema tradicional,
el manejo de archivos ha sido difcil pues cuando alguien crea un archivo, este es
asociado con el grupo primario al cual pertenece. Cuando una persona individual
trabaja en mltiples proyectos, se hace difcil asociar los archivos correctos con el
grupo correcto. Usando el esquema UPG, sin embargo, los grupos son
automticamente asignados a archivos creados dentro de un directorio con el bit
SGID configurado, lo que hace muy simple el manejo de proyectos de grupos que
comparten un directorio comn.
Digamos, por ejemplo, que un grupo de personas trabajan con archivos en el
directorio /datos/contabilidad/. Algunas personas son de confianza como para
modificar el directorio, pero ciertamente no todos. Entonces primero cree un grupo
contab, como se muestra en el siguiente comando:
# /usr/sbin/groupadd contab
Para poder asociar los contenidos del directorio con el grupo contab, escriba:
# chown -R root.contab /datos/contabilidad/
Ahora es posible aadir los usuarios adecuados al grupo con el comando gpasswd:
# /usr/bin/gpasswd -a <nombre_usuario> contab
Permita a los usuarios crear archivos dentro del directorio y configure el bit SGID, el
cual asigna que todo lo que se cree en el directorio el mismo grupo del directorio
padre (contab). Use el comando siguiente:
# chmod 2775 /datos/contabilidad
En este punto, puesto que cada usuario tiene por defecto su umask en 002, todos
los miembros del grupo contab pueden crear y modificar archivos en el directorio
/datos/contabilidad/ sin que el administrador tenga que cambiar los permisos
de los archivos cada vez que un usuario escriba nuevos archivos.
147
Directorios Sticky
El permiso Sticky en directorio provoca que los archivos contenidos dentro de ese
directorio puedan ser borrados nicamente por el usuario propietario y por el usuario
root.
Debe establecer el permiso Sticky en cualquier directorio que tenga el permiso de
escritura para todos.
148
que permiten a un cracker aadir y borrar los ficheros que quiera. Para localizar los
ficheros con permiso de escritura global, use el siguiente comando:
# find / ! -type l -perm -2 -fstype ext3 -ls
y est seguro de saber por qu tienen esos permisos de escritura global. En el curso
normal de una operacin algunos ficheros tendrn permisos de escritura global,
incluidos algunos de /dev y enlaces simblicos.
Archivos hurfanos
Los archivos sin propietario tambin pueden ser un indicio de que un intruso ha
accedido a su sistema. Puede localizar los archivos de su sistema que no tienen
propietario o que no pertenecen a un grupo con el comando:
# find / \( -nouser -o -nogroup \) -ls
Archivos peligrosos
Los archivos .rhosts y .netrc ubicado en el HOME de los usuarios almacenan
usuarios y contraseas y pueden representar un riesgo de seguridad. Para evitar que
estos archivos puedan ser creados utilice la siguiente tcnica:
Cree un directorio con el nombre .rhosts y .netrc en el HOME de los usuarios:
# mkdir ~/.rhosts ~/.netrc
Establezca como propietario root y remueva todos los permisos permisos apropiados
para los directorios:
# chown -R root.root ~/.rhosts ~/.netrc
# chmod -R 0000 ~/.rhosts ~/.netrc
Archivos extraos
Debe tener cuidado de archivos extraos que pudieran estar instalados en su
149
sistema de archivos. Tome por ejemplo la salida del siguiente comando ls:
# ls tmp/
#
El directorio aparentemente se encuentra vaco, si utilizamos la opcin -a para
listar los archivos ocultos se obtiene el siguiente resultado:
# ls -a tmp/
. ..
#
Nuevamente, solo aparecen los directorio . y ... Sin embargo, si sed ejecuta el
comando ls -la se obtiene:
# $ ls -la tmp/
total 8
-rw-r--r-- 1 root root
drwxr-xr-x 2 root root
drwx------ 28 root root
#
El comando chattr
Este es un comando muy interesante, ya que permite, entre otras cosas, hacer que
un archivo no sea modificable ni siquiera por root en tanto tenga una bandera
habilitada, lo que puede ayudarnos a mejorar la seguridad de un equipo o servidor.
chattr viene por defecto en la mayora de las distribuciones de Linux y trabaja en
sistemas de archivos Ext2 y Ext3.
150
Descripcin
-R
-V
Descripcin
151
El resultado del comando getfacl muestra que ahora el usuario jperez tiene
permisos para leer y ejecutar el archivo script.bash.
Si desea eliminar los permisos para el usuario jperez, utilice la opcin -x del
comando setfacl:
#
#
#
#
#
152
153
154
bloques de disco pero tambin el nmero de inodos. Debido a que los inodos son
usados para contener informacin relacionada a los archivos, esto permite controlar
el nmero de archivos que pueden ser creados.
El RPM quota debe estar instalado para implementar las cuotas de disco.
/home
ext3
defaults,usrquota,grpquota 1 2
archivos con cuotas activadas, la opcin -u especifica que se debe verificar por
cuotas de usuario, y la opcin -g indica verificar por cuotas de grupo.
Si no se especifican ninguna de las opciones -u ni -g, slo se crear el archivo de
cuota de usuario. Si nicamente se especifica la opcin -g, slo se crear el archivo
de cuota de grupo.
Despus de creados los archivos, ejecute el comando siguiente para generar la tabla
del uso actual del disco duro por el sistema de archivos con cuotas activadas:
# quotacheck -avugM
Descripcin
Ejecute este paso para cada usuario para el cual desea implementar una cuota. Por
ejemplo, si una cuota es activada en /etc/fstab para la particin /home y se
ejecuta el comando edquota jperez, se mostrar lo siguiente en el editor
configurado como predeterminado en su sistema:
Ing. Ivan Ferreira
156
hard
0
inodes
37418
soft
0
hard
0
La primera columna es el nombre del sistema de archivos que tiene una cuota
activada. La segunda columna muestra cuntos bloques est usando el usuario
actualmente. Las prximas dos columnas son usadas para colocar lmites de
bloques duros y suaves para el usuario del sistema de archivos. La columna inodes
muestra cuntos inodos est usando el usuario actualmente. Las ltimas dos
columnas son usadas para colocar los lmites duros y suaves para los inodos del
usuario en el sistema de archivos.
Un lmite duro (hard) es la cantidad mxima absoluta de espacio en disco que un
usuario o grupo puede usar. Una vez que se alcance el lmite, no se puede usar ms
espacio.
El lmite suave (soft) define la cantidad mxima de espacio en disco que puede ser
usado. Sin embargo, a diferencia del lmite duro, el lmite suave puede ser excedido
durante cierto tiempo. Este tiempo es conocido como perodo de gracia. El perodo
de gracia puede ser expresado en segundos, minutos, horas, das, semanas o
meses.
Si cualquiera de los valores est especificado a 0, ese lmite no est configurado.
En el editor de texto, cambie los lmites deseados. Por ejemplo:
Disk quotas for user jperez (uid 501):
Filesystem
blocks
soft
/dev/mapper/rootvg-lvhome 440436
500000
hard
550000
inodes
37418
soft
0
hard
0
Para verificar que la cuota para el usuario ha sido configurada, use el comando:
# quota jperez
157
Cambie el perodo de gracia del bloque o inodo, guarde los cambios del archivo y
salga del editor.
158
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
Para activar cuotas para un sistema de archivos especfico, tal como /home:
# quotaon -vug /home
159
11
Tcnicas para mantener la seguridad del sistema
El shell restringido
El shell restringido es diseo para imponer a un usuario un entorno en el cual si
posibilidad de moverse o escribir a archivos se encuentra severamente limitado.
Puede hacer un shell restringido configurando el shell del usuario con el nombre
rbash.
Si el shell bash es invocado con el nombre rbash o con la opcin -r, bash se
ejecutar en modo restringido. Los lmites impuestos por el shell restricto evitan que
el usuario pueda realizar lo siguiente:
Redirigir la salida usando los operadores de redireccin >, <, >& y >>
exec
SHELL
o de PATH
Estas restricciones entran en vigor despus de que se lean los ficheros de arranque
que hubiera. Esto significa que el entorno total del usuario est configurado en el
archivo .bash_profile. Debido a que no puede sobreescribir este archivo, permite
al administrador configurar el entorno del usuario segn sus requerimientos.
Dos mtodos comunes para configurar entornos restrictos es establecer un directorio
de comandos seguros, por ejemplo $HOME/bin, y que este sea el nico directorio en
el PATH del usuario. Tambin es posible configurar un men de comandos del cual
el usuario no puede escapar a un shell.
161
Cree un directorio seguro donde ubicar todos los comandos que el usuario tiene
permitido ejecutar:
# mkdir /home/jperez/bin
# chown root.root /home/jperez/bin
Cree enlaces simblicos en este directorio a los comandos que el usuario tiene
permitido ejecutar:
# cd /home/jperez/bin
# ln -s /bin/ls
# ln -s /bin/cat
En este caso, el usuario solo tiene permitido la ejecucin de los comandos ls y cat.
Edite el bash_profile del usuario y establezca el PATH para que incluya
nicamente el directorio seguro:
# vi .bash_profile
PATH=$HOME/bin
162
Debe configurar los dems sistemas de la red para que enven los mensajes de
registros de eventos al servidor syslog remoto.
En el fichero de configuracin /etc/syslog.conf se le indica dnde (archivo,
consola, o host remoto) ha de escribir cada uno de los eventos en funcin de la
importancia. La hoja de manual syslog.conf explica la sintaxis.
La opcin ms segura consiste en registrar todos los eventos en el servidor central,
de tal forma que un atacante no pueda modificar los registros de su actividad. Para
esto, configure una lnea en el archivo /etc/syslog.conf como sigue:
*.*
163
@servidor_syslog.linux.com.py
Logwatch
Desafortunadamente hay demasiada informacin en los diferentes archivos de
registro para que el administrador lo pueda asimilar, por lo que se puede recurrir a
Logwatch. Logwatch (http://www.logwatch.org/), segn lo describen sus autores,
"procesa los archivos de registro para un determinado periodo de tiempo y crea un
informe analizando las reas que especifiques, con tanto detalle como se requiera."
Logwatch est instalado por defecto en las distribuciones ms comunes y
normalmente generar por defecto informes diarios envindolos al correo electrnico
del usuario root. Dado que estos informes son normalmente muy cortos deberan ser
ledos cada da. Resaltarn, dependiendo de la configuracin, informacin del tipo
intentos de inicio de sesin invlidos, conexiones de red a varios demonios como
SSHD, posibles escaneos de puertos, etc.
El archivo de configuracin de logwatch por defecto de Logwatch es
/usr/share/logwatch/default.conf/logwatch.conf. Las opciones de este
archivo de configuracin pueden ser personalizadas por medio del archivo
/etc/logwatch/conf/logwatch.conf. El archivo de configuracin por defecto
se encuentra bien documentado.
La herramienta swatch
La herramienta swatch est desarrollada en PERL y permite monitorear logs y
actuar en consecuencia de algn patrn detectado.
La herramienta swatch no se instala por defecto y generalmente no se incluye en la
distribucin Red Hat/CentOS. Debe descargar la aplicacin, ya sea desde la pagina
web o via yum.
Puede ejecutar cualquier cantidad de instancias swatch, pero cada instancia puede
monitorear solo un archivo de registro.
La configuracin de swatch es bastante simple. Una declaracin tpica de algo a ser
monitoreado inicia con la palabra clave watchfor. La palabra clave watchfor toma
una expresin regular perl que debe concordar en el archivo de registro para ejecutar
la accin que desea. Por ejemplo, el archivo de configuracin
/etc/swatch/swatchrc puede contener lo siguiente:
watchfor /Failed password/
164
Descripcin
Indica que la lnea que concuerda debe ser mostrada en la
salida estndar. El modo puede ser normal, bold, inverse o
algn color (red, green, magenta, etc).
bell [N]
exec comando
--tail-file /var/log/secure
165
El archivo faillog
166
de sesin fallidos. El contenido del archivo est en formato binario y puede ser
visualizado con el comando faillog, por ejemplo:
# faillog -u <usuario>
Para que el archivo registre los intentos de inicio de sesin fallidos, debe configurar
el mdulo pam_tally.
167
el
fichero
168
y modifique en la seccin
SystemMenu=false
169
Encriptacin de un disco
A continuacin se describir el procedimiento requerido para encriptar un disco, ya
sea fijo o removible como un disco USB.
Para discos removibles se recomienda que utilice un sistema de archivos sin journal
como ext2.
El procedimiento es destructivo. Por tanto, si desea encriptar los discos del sistema
operativo, la mejor opcin es realizarla durante el proceso de instalacin marcando
la casilla de verificacin Sistema de cifrado en la ventana de particionamiento del
disco.
170
Start
1
End
1019
Blocks
252681
Id
83
System
Linux
171
Una vez creada la particin, LUKS debe crear inicialmente una estructura de datos
en la particin fsica que ser utilizada. El siguiente comando instala una cabecera
LUKS en el dispositivo /dev/sdc1:
# cryptsetup luksFormat /dev/sdc1
WARNING!
========
This will overwrite data on /dev/sdc1 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase: [Introduzca una frase de paso]
Verify passphrase: [Confirme la frase de paso]
Command successful.
Una vez que la cabecera LUKS existe, un dispositivo dm-crypt puede ser creado
para la particin encriptada.
# cryptsetup luksOpen /dev/sdc1 cryptodisk
Enter LUKS passphrase:
key slot 0 unlocked.
Command successful.
Cada vez que desea volver a utilizar el disco, debe ejecutar el comando
Ing. Ivan Ferreira
172
<dispositivo>
<ruta_archivo_contrasea>
<opciones>
<opciones> - Lista de opciones separadas por coma. Para ver todas las
opciones disponibles, ejecute el comando man cypttab. De las opciones
disponibles, las siguientes requieren especial mencin:
tmp El dispositivo encriptado ser preparado para ser utilizado como una
particin tmp. Ser formateado como ext2 y se establecer permisos
1777.
/home
ext3
defaults
1 2
Si desea que el sistema de archivos se monte automticamente sin que tenga que
especificar la frase de paso, deber agregar un archivo de clave al dispositivo y
especificar la ruta al archivo que contiene la clave en el archivo /etc/crypttab.
Esto implica un riesgo de seguridad y el archivo debera ser almacenado en un
sistema de archivos tambin encriptado. La ventaja de esto es que si almacena
todas las claves en un sistema de archivos encriptado, durante el inicio solo deber
indicar una nica frase de paso, que servir para abrir el sistema de archivos que
conotiene los dems archivos de clave.
Para agregar un archivo de clave ejecute los siguientes comandos:
#
#
#
#
174
benchmark son:
Las herramientas de benchmark pueden ser descargadas del sitio web de CIS para
distintos sistemas operativos, aplicaciones, dispositivos de red y mviles.
De la seccin benchmark para Linux, podr descargar los documentos con las
recomendaciones que deben ser aplicadas a los sistemas.
175
Registro de cambios
Versin
2.6
Fecha
Seccin
Cambios
Modificado el tamao de
particiones.
Realizado por
Ivn Ferreira
Agregada seleccin de
seleccin de paquetes.
2.7
20-04-2012 PAM
Actualizacin de la seccin
a la versin 6
Ivn Ferreira
2.8
03-05-2012 GPG
Actualizacin de la seccin
a la versin 6
Ivn Ferreira
2.9
23-05-2012 SELinux
Actualizacin de la seccin
a la versin 6
Ivn Ferreira
2.9
23-05-2012 LUKS
Actualizacin de la seccin
a la versin 6
Ivn Ferreira