Vous êtes sur la page 1sur 176

LE-301 Seguridad 1 - Seguridad local

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

Forzar el cambio de contraseas.....................................................................................44


Desactivacin del acceso root..............................................................................................44
Deshabilitar el shell de root..............................................................................................44
Deshabilitar las conexiones root......................................................................................44
Deshabilitar conexiones root SSH...................................................................................45
Limitar el acceso root.......................................................................................................45
El comando su..................................................................................................................45
Super User DO (Sudo).........................................................................................................46
El fichero /etc/sudoers......................................................................................................46
Estructura del archivo sudoers.........................................................................................46
Definiciones de alias........................................................................................................47
Ajuste de opciones...........................................................................................................47
Reglas de acceso.............................................................................................................48
Consideraciones de seguridad.........................................................................................50
Funcionalidades que no se han comentado....................................................................50
Pluggable Authentication Module.........................................................................................52
Introduccin a PAM..............................................................................................................53
Archivos de configuracin de PAM......................................................................................53
Sintaxis del archivo de configuracin...................................................................................54
Los archivos *-auth...............................................................................................................55
Poltica por defecto...............................................................................................................56
Mdulos PAM........................................................................................................................57
Mdulo pam_access........................................................................................................57
Grupos de gestin........................................................................................................57
Dependencias..............................................................................................................57
Argumentos reconocidos.............................................................................................58
Ejemplos/uso sugerido.................................................................................................58
Mdulo pam_cracklib.......................................................................................................59
Grupos de gestin........................................................................................................59
Dependencias..............................................................................................................59
Argumentos reconocidos.............................................................................................59
Ejemplos/uso sugerido.................................................................................................60
Modulo pam_limits............................................................................................................60
Grupos de gestin........................................................................................................60
Dependencias..............................................................................................................60
Argumentos..................................................................................................................62
Ejemplos/uso sugerido.................................................................................................62
Mdulo pam_deny............................................................................................................62
Grupos administrativos................................................................................................63
Ejemplos/uso sugerido.................................................................................................63
Mdulo pam_lastlog.........................................................................................................63

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

Generar un certificado de revocacin................................................................................104


Intercambiar claves.............................................................................................................105
Exportar una clave pblica.............................................................................................105
Importar una clave pblica.............................................................................................106
Cifrar y descifrar documentos.............................................................................................107
Firmar y verificar firmas......................................................................................................107
Documentos con firmas ASCII.......................................................................................108
Firmas acompaantes....................................................................................................108
Incorporacin de gpg al cliente de correo electrnico.......................................................109
Incorporando gpg a Mozilla Thunderbird.......................................................................109
Incorporando gpg a Evolution........................................................................................112
Recuperacin ante desastres..............................................................................................115
Introduccin........................................................................................................................116
La herramienta de reporte del sistema cfg2html................................................................116
Instalacin y configuracin de cfg2html.........................................................................117
Ejecucin de cfg2html....................................................................................................117
Mondo Rescue....................................................................................................................117
Mindi....................................................................................................................................118
Instalacin de Mondo.........................................................................................................118
Respaldando datos con Mondo..........................................................................................118
Restaurando datos con Mondo..........................................................................................122
Security Enhanced Linux.....................................................................................................123
Introduccin........................................................................................................................124
Contextos de seguridad......................................................................................................126
Examinando los contextos de seguridad.......................................................................126
Modelo de seguridad basado en dominios........................................................................126
Control de acceso TE.........................................................................................................127
Ejemplo de TE................................................................................................................127
Transicin de dominios.......................................................................................................128
Transicin de dominio por defecto.................................................................................130
La funcin de los roles........................................................................................................130
Contexto de seguridad del sistema de archivos...............................................................131
Copiar o mover archivos................................................................................................131
Re-etiquetar un archivo o directorio ..............................................................................132
Haciendo los cambios de contexto de seguridad permanente......................................133
Poltica SELinux Targeted..................................................................................................133
Administracin de SELinux.................................................................................................134
Verificacin del estado de SELinux...............................................................................134
Modificando el modo de operacin de SELinux............................................................134
Booleans.........................................................................................................................135
Dominios permisivos......................................................................................................135

Habilitar o deshabilitar SELinux.....................................................................................136


Realizando copias de seguridad de atributos extendidos.............................................136
Entendiendo un mensaje avc: denied............................................................................137
Setroubleshoot...............................................................................................................138
Realizando personalizaciones menores a una poltica existente..................................138
Utilizando audit2allow Red Hat/CentOS Enterprise 5 o superior .............................138
SELinux y los servicios de red.......................................................................................140
NIS y SELinux............................................................................................................140
NFS y SELinux...........................................................................................................140
Samba y SELinux ......................................................................................................141
Apache y SELinux......................................................................................................142
FTP y SELinux...........................................................................................................142
Seguridad del sistema de archivos.....................................................................................143
Opciones de montado de sistema de archivos..................................................................144
Permisos por defecto de los archivos................................................................................145
Grupos de usuario privado.................................................................................................146
Directorios de grupos.....................................................................................................147
Archivos SUID y SGID........................................................................................................148
Directorios Sticky................................................................................................................148
Permisos de escritura global..............................................................................................148
Archivos hurfanos.............................................................................................................149
Archivos peligrosos.............................................................................................................149
Archivos extraos...............................................................................................................149
El comando chattr...............................................................................................................150
Listas de acceso con ACL..................................................................................................151
Modificando las listas de acceso....................................................................................152
ACLs por defecto............................................................................................................153
Deshaciendo los cambios de las listas de acceso.........................................................153
Copias de seguridad de archivos con ACLs..................................................................153
Borrado de datos del disco de forma segura.....................................................................153
Implementacin de cuotas de disco...................................................................................154
Configuracin de cuotas de disco..................................................................................155
Volver a montar un sistema de archivos........................................................................155
Creacin de archivos de cuotas.....................................................................................155
Asignacin de cuotas por usuario..................................................................................156
Asignacin de cuotas por grupo.....................................................................................158
Establecimiento del periodo de gracia por defecto........................................................158
Informe de cuotas de disco............................................................................................158
Mantenimiento de la precisin de las cuotas.................................................................158
Activacin y desactivacin de cuotas.............................................................................159
Tcnicas para mantener la seguridad del sistema...........................................................160

El shell restringido .............................................................................................................161


Configuracin de un shell restringido bash....................................................................162
Administracin de los registros de eventos........................................................................162
Servidor de registro de eventos.....................................................................................163
Configuracin del servidor central syslog .................................................................163
Configuracin de syslog para el envo a un sistema remoto.....................................163
Logwatch........................................................................................................................164
La herramienta swatch...................................................................................................164
Archivo de registro de sesiones de usuarios.................................................................166
El archivo utmp, wtmp y btmp....................................................................................166
El archivo lastlog........................................................................................................166
El archivo faillog.........................................................................................................166
Configuracin del acceso de consola.................................................................................167
Deshabilitar el apagado a travs de Ctrl-Alt-Supr..........................................................167
Deshabilitar el acceso desde la consola a programas..................................................168
Deshabilitar el apagado del sistema desde GDM..............................................................168
Herramientas de integridad de archivos.............................................................................169
Cifrado de informacin en disco.........................................................................................169
El Device Mapper y DM-Crypt........................................................................................169
Linux Unified Key Setup (LUKS)....................................................................................170
Encriptacin de un disco................................................................................................170
Montado de un disco encriptado durante el inicio del sistema......................................173
The Center for Internet Security CIS Benchmark...........................................................174

1
Introduccin a la seguridad computacional

Introduccin a la seguridad computacional

Definicin de Seguridad computacional


La seguridad de computacin es un trmino general que cubre una gran rea de
computacin y procesamiento de la informacin. Las industrias que dependen de
sistemas computarizados y redes para ejecutar sus operaciones y transacciones de
negocios diarias, consideran sus datos como una parte importante de sus activos
generales. Muchos trminos y medidas se han incorporado a nuestro vocabulario
diario en los negocios, tales como costo total de propiedad (total cost of ownership,
TCO) y calidad de servicios (QoS). Con estas medidas, las industrias calculan
aspectos tales como integridad de los datos y alta disponibilidad como parte de los
costos de planificacin y administracin de procesos. En algunas industrias, como el
comercio electrnico, la disponibilidad y confianza de los datos pueden hacer la
diferencia entre el xito y el fracaso.

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:

Confidencialidad - La informacin confidencial slo debera estar disponible


a un conjunto de individuos predefinido. Las transmisiones no autorizadas y el
uso de informacin debera ser restringido. Por ejemplo, la confidencialidad de
la informacin asegura que la informacin personal o financiera de un cliente
no sea obtenida por individuos no autorizados para propsitos maliciosos,
tales como robo de identidad o fraude con tarjetas de crdito.

Integridad - La informacin no debera ser alterada en formas que la hagan


incompleta o incorrecta. Los usuarios no autorizados deberan ser restringidos
de la habilidad de modificar o destruir informacin confidencial.

Disponibilidad - La informacin debera estar disponible para los usuarios


autorizados en cualquier momento que estos la requieran. La disponibilidad es
una garanta de que la informacin pueda ser obtenida con la frecuencia
acordada y en el momento previsto. Esto es medido a menudo en trminos de
porcentajes y acordado de manera formal en los Acuerdos de nivel de servicio
(SLAs) usados por los proveedores de servicios de red y sus clientes
corporativos.

Controles de seguridad
La seguridad computacional a menudo se divide en tres categoras maestras
Ing. Ivan Ferreira

10

Introduccin a la seguridad computacional

distintas, comnmente llamadas controles:

Fsico

Tcnico

Administrativo

Estas tres amplias categoras definen los objetivos principales de una


implementacin de seguridad apropiada. Dentro de estos controles hay subcategoras que detallan an ms los controles y como estos se implementan.

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:

Cmaras de circuito cerrado

Sistemas de alarmas trmicos o de movimiento

Guardias de seguridad

Identificacin con fotos

Puertas de acero con seguros especiales

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

Autenticacin a nivel de la red

Listas de control de acceso (ACLs)

Software de auditoria de integridad de archivos

Red Hat Certified Engineer

Introduccin a la seguridad computacional

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

Planes de recuperacin y preparacin para desastres

Estrategias de seleccin de personal y separacin

Registro y contabilidad de personal

Una breve historia sobre los hackers


El significado moderno del trmino hacker tiene sus origenes en los aos 60 y en el
Club de Modelaje de Trenes del Instituto de Tecnologa de Massachusetts (MIT), que
diseaban conjuntos de trenes de gran escala y detalle. Hacker fue el nombre usado
para nombrar aquellos miembros del club que descubran un truco brillante o que
resolvan un problema muy complicado.
Desde ese momento el trmino hacker se ha utilizado para describir cualquier cosa
desde un aficionado a las computadoras hasta un programador virtuoso. Un rasgo
caracterstico de un hacker es su disposicin de explorar en detalle cmo funcionan
los sistemas de computacin con poca o ninguna motivacin externa. Los
desarrolladores de software de la comunidad de Cdigo Abierto (Open Source), a
menudo se consideran a ellos mismos y a sus colegas como hackers, como una
forma de respeto.
Tpicamente, los hackers siguen una forma de tica de hackers que dicta que la
bsqueda de informacin y experiencia es esencial y que compartir ese
conocimiento es el compromiso de todo hacker con la comunidad. Durante esa
bsqueda de conocimiento, algunos hackers disfrutan los retos acadmicos de burlar
los controles de seguridad en sistemas de computacin. Por esta razn, la prensa
usualmente utiliza este trmino para describir aquellos que accesan sistemas y redes
ilegalmente sin escrpulos, con intenciones maliciosas o criminales. El trmino ms
adecuado para este tipo de hacker de computadoras es cracker o maleante
informtico (tambin se les conoce como pirata informtico, ciberpirata, etc.) un
trmino creado por los hackers en la mitad de los 80 para diferenciar a las dos
comunidades.

Amenazas de seguridad de servidores


Una de las amenazas ms grandes a la seguridad de los servidores son los
administradores distrados que olvidan parchar sus sistemas. De acuerdo al Instituto
Ing. Ivan Ferreira

12

Introduccin a la seguridad computacional

de Seguridad y Administracin de Sistemas de Redes (System Administration


Network and Security Institute, SANS), la causa primaria de la vulnerabilidad de
seguridad de los sistemas es asignar personal poco entrenado para mantener la
seguridad y no proporcionar ni el entrenamiento ni el tiempo para permitir que
ejecuten su trabajo Esto aplica tanto a los administradores nuevos como a aquellos
demasiado confiados o poco motivados.
Algunos administradores fallan en parchar sus servidores y estaciones de trabajo,
mientras que otros fallan en leer los mensajes del registro de eventos del kernel del
sistema o trfico de la red. Otro error comn es dejar las contraseas o llaves a
servicios sin modificar. Por ejemplo, algunas bases de datos tienen contraseas
administrativas por defecto porque sus desarrolladores asumen que el administrador
de sistemas cambiar estas contraseas inmediatamente luego de la instalacin. Si
un administrador de bases de datos no cambia las contraseas, hasta un cracker sin
mucha experiencia puede utilizar una contrasea conocida por todo el mundo para
ganar acceso con privilegios administrativos a la bases de datos. Estos son slo
unos ejemplos de como una administracin descuidada puede llevar a servidores
comprometidos.
Es muy comn entre los administradores de sistemas realizar una instalacin del
sistema operativo sin prestar atencin a qu programas estn siendo realmente
instalados. Esto puede ser problemtico puesto que se pueden instalar servicios
innecesarios, configurados con sus valores por defecto y, posiblemente activados
por defecto.
Adems, las malas contraseas son una de las formas ms fciles para que un
atacante obtenga el acceso a un sistema.
El robo de informacin corporativa es altamente peligroso. El robo de unos pocos
archivos puede destruir, de la noche a la maana, la reputacin que tanto esfuerzo
cost construir (imagine un banco que pierde un archivo con el monto de depsitos
de cada uno de sus clientes). En otros casos, la filtracin de datos confidenciales
puede revelar decisiones estratgicas a la competencia y hasta generar problemas
legales.

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

Red Hat Certified Engineer

Introduccin a la seguridad computacional

encriptacin es una serie de carcteres, de determinado largo, que se utiliza para


encriptar y desencriptar la informacin que se quiere proteger. El largo de la llave
depende del algoritmo. Existen llaves privadas y pblicas, que sern detalladas ms
adelante. Veamos los siguientes escenarios.

Escenario 1: Necesito almacenar informacin crtica que deber poder


descifrarse, y ser yo el nico que haga todo el proceso. Nadie ms tendr
acceso a la llave con que se encriptar y desencriptar la informacin.

Escenario 2: Necesito que me enven informacin crtica que yo


desencriptar posteriormente, pero necesito que las personas que me van a
enviar informacin pueden encriptarla libremente, pero no desencriptarla. En
este caso, se deja disponible una llave pblica para que ellos encripten y yo
tendr mi llave privada de encriptacin en forma segura.

Escenario 3: Necesito almacenar o enviar informacin crtica de forma


segura, pero que no requerir ser desencriptada para su validacin, o que es
extremadamente importante verificar que no haya sido modificada en el
camino.

Estos son los tres escenarios ms comunes. Los tres escenarios calzan con los
algoritmos listados a continuacin:

Escenario 1: Encriptacin simtrica

Escenario 2: Encriptacin asimtrica

Escenario 3: Hash de informacin

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.

Ing. Ivan Ferreira

14

Introduccin a la seguridad computacional

Las principales desventajas de los mtodos simtricos son la distribucin de las


claves, el peligro de que muchas personas deban conocer una misma clave y la
dificultad de almacenar y proteger muchas claves diferentes.
Algoritmos simtricos

Dentro de los algoritmos de encriptacin simtrica podemos encontrar los siguientes,


algunos ms seguros que otros.

15

DES (Digital Encryption Standard) Creado en 1975 con ayuda de la NSA


(National Security Agency); en 1982 se convirti en un estndar. En el cifrado
DES, se usa una clave de 64 bits para cifrar los bloques, aunque en realidad
slo se usan 56 bits. Los 8 bits restantes de la clave son usados para
comprobar la paridad y despus son descartados. En 1999 logr ser quebrado
(violado) en menos de 24 horas por un servidor dedicado a eso. Esto lo
calific como un algoritmo inseguro y con falencias reconocidas.

3DES (Three DES o Triple DES) Antes de ser quebrado el DES, ya se


trabajaba en un nuevo algoritmo basado en el anterior. Este funciona
aplicando tres veces el proceso con tres llaves diferentes de 56 bits. La
importancia de esto es que si alguien puede descifrar una llave, es casi
imposible poder descifrar las tres y utilizarlas en el orden adecuado. Hoy en
da es uno de los algoritmos simtricos ms seguros.

IDEA (International Data Encryption Algorithm) Ms conocido como un


componente de PGP, trabaja con llaves de 128 bits. Realiza procesos de
intercambio, copiado y pegado de los 128 bits, dejando un total de 52 sub

Red Hat Certified Engineer

Introduccin a la seguridad computacional

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.

AES (Advanced Encryption Standard) Este fue el ganador del primer


concurso de algoritmos de encriptacin realizado por la NIST (National
Institute of Standards and Technology) en 1997. Despus de 3 aos de
estudio y habiendo descartado a 14 candidatos, este algoritmo, tambin
conocido como Rijndael por Vincent Rijmen y Joan Daemen, fue elegido como
ganador. Desde 2006, el AES es uno de los algoritmos ms populares usados
en criptografa simtrica.

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:

IV (Vector de inicializacin) Esta cadena se utiliza para empezar cada


proceso de encriptacin. Esto permite que textos planos idnticos resulten en
textos cifrados completamente diferentes.

Key (llave) Esta es la principal informacin para encriptar y desencriptar en


los algoritmos simtricos. Toda la seguridad del sistema depende de dnde
est esta llave, cmo est compuesta y quin tiene acceso. El nmero de
posibles llaves que cada algoritmo puede soportar depende del nmero de
bits en la llave. Por ejemplo, una llave de 8 bits slo permite 2^8=256 posibles
combinaciones numricas, cada una de las cuales tambin es llamada llave.
Entre mayor sea el nmero de posibles llaves, ms difcil ser descifrar un
mensaje encriptado. El nivel de dificultad depende, por lo tanto, de la longitud
de la llave. Una computadora no necesita mucho tiempo para probar
secuencialmente cada una de las 256 llaves posibles (menos de un
milisegundo) y desencriptar el mensaje para ver si ste cobra sentido. Sin
embargo, si se usara una llave de 100 bits (que equivale a examinar 2^100
llaves), una computadora que pruebe un milln de llaves cada segundo podra
tardar muchos siglos en descubrir la llave correcta.

La forma ms antigua de criptografa basada en llave se denomina "llave secreta" o


"encriptamiento simtrico". En este esquema, el emisor y el receptor poseen la
misma llave, lo que significa que ambas partes pueden encriptar y desencriptar datos
con la llave.

Ing. Ivan Ferreira

16

Introduccin a la seguridad computacional

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

Red Hat Certified Engineer

Introduccin a la seguridad computacional

Algoritmos asimtricos

Los algoritmos de encriptacin asimtrica ms conocidos son RSA, DSA, DH y ECC.

Diffie-Hellman (& Merkle) El algoritmo Diffie-Hellman permite que dos partes,


comunicndose mediante un canal no cifrado, se pongan de acuerdo en un
valor numrico sin que un tercero, que tiene acceso completo a la
conversacin, pueda conocerlo o calcularlo, al menos en un tiempo prctico.

RSA (Rivest, Shamir, Adleman) Creado en 1978, hoy es el algoritmo de


mayor uso en encriptacin asimtrica. El sistema criptogrfico con clave
pblica RSA es un algoritmo asimtrico cifrador de bloques, que utiliza una
clave pblica, la cual se distribuye (en forma autenticada preferentemente), y
otra privada, la cual es guardada en secreto por su propietario. Cuando se
quiere enviar un mensaje, el emisor busca la clave pblica de cifrado del
receptor, cifra su mensaje con esa clave, y una vez que el mensaje cifrado
llega al receptor, ste se ocupa de descifrarlo usando su clave oculta. RSA
puede adems ser utilizado para autenticacin de la informacin a travs de
firmas digitales, aunque resulta ms til a la hora de implementar la
confidencialidad el uso de sistemas simtricos, por ser ms rpidos.

DSA (Digital Signature Algorithm o Algoritmo de Firma digital) es un


algoritmo creado por el NIST (National Institute of Standards and Technology
o Instituto Nacional de Normas y Tecnologa de EE.UU.), publicado el 30 de
agosto de 1991, como propuesta para el proceso de firmas digitales. Este
algoritmo como su nombre lo indica, sirve para firmar y no para cifrar
informacin. Una desventaja de este algoritmo es que requiere mucho ms
tiempo de cmputo que RSA.

Elgamal El algoritmo ElGamal es un algoritmo para criptografa asimtrica el


cual est basado en Diffie-Hellman. Fue descripto por Taher Elgamal en 1984.
El algoritmo de ElGamal puede ser utilizado tanto para generar firmas
digitales como para cifrar o descifrar.

ECC (Elliptical Curve Cryptography) ECC es un algoritmo de encriptacin


de claves pblicas basado en la teora de curva elptica que puede ser
utilizada para crear claves de criptografa ms pequeas, rpidas y eficientes.
ECC genera curvas por medio de las propiedades de la ecuacin de la curva
elptica en lugar del mtodo tradicional de generacin como el producto de
nmeros primos grandes. De acuerdo con algunos investigadores, ECC
puede proporcionar un nivel de seguridad equivalente a 1024 bits de otros
sistemas con simplemente 164 bits.

El tamao de la llave es el siguiente:

Ing. Ivan Ferreira

18

Introduccin a la seguridad computacional

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.

Escenario 1: Almacenar contraseas de un sistema. Las contraseas de


cualquier sistema serio jams debieran poder desencriptarse. El motivo es
simple. Si se pueden desencriptar, el riesgo de que alguien conozca la llave y
tenga acceso a todo el sistema con todos los usuarios es muy grande.
Entonces, si no puedo desencriptar una contrasea, Cmo puedo saber
entonces si una contrasea entregada es vlida? La respuesta es muy simple.
Se encripta la contrasea entregada y se compara el resultado de la
encriptacin con la contrasea previamente almacenada.

Escenario 2: Validar que cierta informacin no se haya modificado. Si se


desea enviar un bloque de datos y se quiere estar seguro de que nadie lo ha
modificado durante el camino, lo que se hace es enviar el bloque de
informacin sin encriptar y adems se enva un Hash/Digest de este mismo
bloque de datos. Entonces, nuestro receptor al tener la informacin sin
encriptar, le aplica un Hash y con el mismo criterio del Escenario 1, determina
si ambos bloques son iguales. Si lo son, el bloque que no est con Hash es el
original. Porqu no usar un algoritmo de encriptacin reversible? Porque ste
podra ser desencriptado, modificado y vuelto a encriptar y el receptor jams
sabra que fue modificado en el camino. Como el Hash no es reversible, esto
ltimo no podr suceder jams.

Los algoritmos para hacer Hash mas conocidos son los siguientes:

19

Red Hat Certified Engineer

Introduccin a la seguridad computacional

Algoritmo

Longitud del hash (bits)

MD5

128

SHA-1

160

SHA-256

256

SHA-384

384

SHA-512

512

La robustez de un algoritmo de Hash es comparable a la mitad del largo del


resultado en bits. Entonces, pensar que con MD5 se est seguro puede ser un error.
SHA-256 es el indicado para obtener seguridad de 128 bits.
Pero a pesar de parecer muy efectivo, existe un problema con el Hash para cada
uno de los escenarios indicados anteriormente.

Problemas Escenario 1: Si bien el problema no est tan relacionado con el


Hash, debido a la utilizacin de contraseas de escasa dificultad, haciendo un
ataque de fuerza bruta o por diccionario se podran encontrar valores de Hash
que coinciden con el Hash de las contraseas almacenadas. Para esto se
pueden ejecutar dos planes de accin independientes, pero obtenindose el
mejor resultado con la utilizacin de ambos.
La Solucin 1 consiste en realizar varias pasadas de Hash sobre los datos,
aplicndole el Hash al resultado del Hash anterior.
La Solucin 2 requiere agregar un texto adicional a la contrasea. Esto se
conoce como Salt. Entonces, cada vez que un usuario cambie o est
validando una contrasea, hay que concatenarle a la contrasea este Salt y
de ah generar el Hash. De esta forma le agrega variacin a las contraseas
pobremente definidas.

Problemas Escenario 2: Si alguien puede ejecutar un Hash sobre un


conjunto de datos y obtener el resultado, Porqu no podra modificar el
contenido del documento que estamos enviando y generar el Hash
nuevamente, reemplazando el contenido del Hash anterior? Cmo se puede
diferenciar mi proceso de Hash del proceso de Hash impostor? No es posible
a menos que haya alguna llave de por medio.

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.

Ing. Ivan Ferreira

20

Introduccin a la seguridad computacional

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

Bugtraq - Sin duda la mejor lista de seguridad informtica que existe en la


actualidad. Es imprescindible suscribirse a ella, especialmente en el caso de
administradores de sistemas Linux/Unix. Para suscribirse, enve un mensaje a
bugtraq-suscribe@securityfocus.com. El contenido del asunto o el mensaje no
importa. Recibir una solicitud de confirmacin a la cual deber responder.

Algunos sitios web tiles donde puede encontrar amplia informacin relacionada a
seguridad son:

21

http://www.linuxsecurity.com - El sitio web de Linux-Specific Security


(Seguridad especfica) tiene una coleccin de enlaces Linux relacionados con
la seguridad, la documentacin y mucho ms.

http://www.cert.org - El sitio web de CERT ofrece una lista actualizada de


incidentes y vulneralibilidades de seguridad de gran impacto, adems de
informacin detallada sobre cada aviso de seguridad y sobre cmo
restablecer un sistema despus de que haya sido comprometido.

http://www.sans.org - El sitio web del Instituto de Seguridad, Redes y


Administracin de Sistemas (SANS) proporciona alertas de seguridad en
forma de resumen, e incluye enlaces convenientes hacia RPMs actualizados
(cuando estn disponibles).

Red Hat Certified Engineer

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.

Portal de Clientes, Red Hat Network y RHN Classic


Alguna vez ha ledo acerca de una nueva versin de un paquete, deseo instalarlo y
no pudo encontrarlo?
Alguna vez encontr un paquete RPM por medio de un motor de bsqueda de
Internet que lo deriv a un sitio desconocido?
Alguna vez intent encontrar un RPM, sin embargo nicamente encontr archivos
que debe compilarlo usted mismo?
Alguna vez ha pasado horas o das visitando diferentes sitios para saber si los
ltimos paquetes estn instalados en su sistema, sabiendo que pronto tendr que
volver a hacerlo?
El Portal de Clientes y Red Hat Network proporcionan la solucin a todas las
necesidades de administracin de software. Estos servicios determinan cules
paquetes RPM son necesarios para el sistema, los descarga desde repositorios
seguros, verifica la firma del RPM para asegurarse de que no han sido daados y los
actualiza. La instalacin del paquete puede ocurrir de inmediato o puede ser
planificada durante un cierto perodo de tiempo.
Red Hat Enterprise Linux 5.7 introdujo una nueva administracin de suscripciones.

23

Red Hat Certified Engineer

Actualizaciones de seguridad

El administrador de suscripciones Subscription Manager, le permite registrar


sistemas y gestionar suscripciones usando certificados digitales. Subscription
Manager est totalmente integrado con el Portal de Clientes.
El Portal de Clientes habilita a los clientes con suscripciones desde una nica
ubicacin acceder a servicios como:

Descargas actualizaciones y productos de evaluacin

Herramientas de gestin de cuentas y suscripciones

Sistema de reportes de errores y apertura de tickets

Soluciones, preguntas frecuentes y documentacin oficial del producto

Contenido educacional valioso, incluyendo whitepapers, presentaciones


multimedia, etc.

RHN Classic, servicio predecesor del Portal de Clientes, tambin proporciona


actualizaciones, sin embargo, el Portal de Clientes proporciona mayor facilidad de
uso y funcionalidades integradas.
Para acceder al portal de clientes utilizando el navegador web conctese al siguiente
sitio web:
https://access.redhat.com/

Ing. Ivan Ferreira

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:

Self-support Subscription: Acceso al Portal de Clientes y actualizaciones.


No es posible realizar apertura de casos de soporte.

Standard Subscription: Soporte soporte web y telefnico en horarios de


oficina, incidentes ilimitados. Tiempo de respuesta de indidentes:

25

Severidad 1: 1 hora (en horarios de oficina)


Red Hat Certified Engineer

Actualizaciones de seguridad

Severidad 2: 4 horas (en horarios de oficina)

Severidad 3: 1 da (en horarios de oficina)

Severidad 4: 2 das (en horarios de oficina)

Premium Subscription: Soporte soporte web y telefnico 7x24, incidentes


ilimitados. Tiempo de respuesta de indidentes:

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:

Suscripcin para 1 guest

Suscipcin para 4 guests

Suscripcin para guests ilimitados

Por tanto, en base a la necesidad de su negocio, usted podra seleccionar adquirir


una suscripcin Red Hat Enterprise Linux Standard para guests ilimitados. Deber
adquirir una suscripcin de este tipo por cada 2 procesadores fsicos (sockets) que
tendr el servidor.

Utilizacin del Red Hat Network


Para utilizar Red Hat Network, primero debe activar una suscripcin. Para iniciar el
asistente de suscripciones ejecute en la lnea de comandos:
# suscription-manager-gui

La ventana principal de Red Hat Subscription Manager aparece.

Ing. Ivan Ferreira

26

Actualizaciones de seguridad

Red Hat Subscription Manager tiene tres reas principales para administrar
productos y subscripciones:

Mis suscripciones: Muestra todos los sistemas actualmente registrados.

Todas las suscripciones: Muestra las suscripciones disponibles para el


sistema.

Mi software instalado: Muestra los productos instalados actualmente en el


sistema, junto con el estado de la suscripcion.

Si el sistema an no fue registrado, aparecer el botn Registrar el sistema.


Al presionar el botn Registrar el sistema, ingrese el usario y la contrasea para el
servicio de suscripcin. El usuario y contrasea es el utilizado para acceder al Portal
de Clientes.

27

Red Hat Certified Engineer

Actualizaciones de seguridad

En caso de requerir de la configuracin de un servidor proxy para acceder a internet,


presione el botn Configuracin de Proxy e ingrese el nombre de host y puerto del
servidor proxy:

Para suscribir el sistema directamente desde la lnea de comandos, ejecute:


# subscription-manager register --username admin-example --password secret

Puede adems indicar las opciones --proxy=, --proxyuser= y --proxypass=


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.

Ing. Ivan Ferreira

instalar y

28

Actualizaciones de seguridad

Utilizacin de RHN Classic


Red Hat Enterprise Linux proporciona una aplicacin llamada rhn_register. Esta
aplicacin es utilizada para registrar el sistema en RHN Classic.
Para registrar el sistema en RHN Classic, ejecute el siguiente comando:
# rhn_register

Puede
adems
indicar las opciones
--proxy=, --proxyUser=
--proxyPassword= para utilizar un servidor proxy desde la lnea de comandos.

La pantalla inicial de rhn_register aparece, haga clic en Adelante.

Seleccione la fuente de actualizacin. Si obtendr las actualizaciones directamente


de RHN Classic, seleccione Me gustara recibir actualizaciones desde la Red de Red
Hat.

29

Red Hat Certified Engineer

Actualizaciones de seguridad

Introduzca el nombre de usuario y contrasea para acceso a RHN Classic:

Finalmente en la pgina Crear perfil del sistema, puede activar el envo de


informacin de software y hardware a RHN. Esto es recomendado para que RHN
pueda suscribir el sistema automticamente en base a los canales apropiados para
el sitema.
Ing. Ivan Ferreira

30

Actualizaciones de seguridad

Para suscribir el sistema directamente desde la lnea de comandos, ejecute:


# rhn_register nox

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

Yellow Dog Updater, Modified (YUM)


Yum es un programa automtico para instalar y desinstalar los paquetes del sistema.
Una caracterstica muy interesante es que obtiene automticamente dependencias.
Adems actualiza el sistema aplicando los ms recientes parches de seguridad y
correctivos al sistema operativo de una manera simple y solo requiere de un buen
ancho de banda (conexin a internet) o bien muchsima paciencia. Con Yum no hay
muchas ms excusas para no aplicar los parches de seguridad y correctivos al
sistema.
Antes de utilizar yum, deber importar la clave pblica para verificar la firma de los
paquetes:
# rpm --import /media/cdrom/RPM-GPG-KEY*

Si utiliza un servidor proxy para el acceso a Internet, deber configurar la informacin


del servidor en el archivo /etc/yum.conf:
proxy=http://host:puerto

La utilizacin del comando yum es sencilla, para instalar un paquete ejecute:


# yum install <paquete>

Para eliminar un paquete ejcute:


# yum remove <paquete>

Para ver qu actualizaciones hay disponibles, ejecute:


# yum check-update

Para obtener informacin acerca de un paquete ejecute:


# yum info <paquete>

Para actualizar algn software, ejecute:


# yum update <paquete>

31

Red Hat Certified Engineer

Actualizaciones de seguridad

Para actualizar todo el sistema, ejecute:


# yum update

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 buscar un paquete en base a su nombre, descripcin o resumen, puede


utilizar la opcin search, por ejemplo:
# yum search kernel

Yum deja como resultado de su uso cabeceras y paquetes RPM almacenados en el


interior del directorio localizado en la ruta /var/cache/yum/. Particularmente los
paquetes RPM que se han instalado pueden ocupar mucho espacio y es por tal
motivo conviene eliminarlos una vez que ya no tienen utilidad. Igualmente conviene
hacer lo mismo con las cabeceras viejas de paquetes que ya no se encuentran en la
base de datos. A fin de realizar la limpieza correspondiente, puede ejecutarse lo
siguiente:
# yum clean all

Si desea descargar un paquete sin instalarlo, debe tener instalado el paquete yumdownloadonly. Para instalar el paquete ejecute:
# yum install yum-downloadonly

Asegrese que este


plugin est habilitado
/etc/yum/pluginconf.d/downloadonly.conf

verificando

el

archivo

[main]
enabled=1

Para descargar un paquete sin instalarlo, ejecute:


# yum install --downloadonly <paquete>

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>

Ing. Ivan Ferreira

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

Luego de instalar el paquete yum-security, ejecute el siguiente comando para


descargar e instalar las actualizaciones de seguridad de RHN:
# yum update --security

Para visualizar las actualizaciones de seguridad sin instalarlos ejecute:


# yum list-security

Si desea una informacin detallada de cada paquete ejecute:


# yum info-sec

Con yum puede adems bloquear la actualizacin de paquetes especficos en el


sistema, evitando as que se modifiquen las versiones de los mismos. Esto podra
ser necesario en caso de tener alguna aplicacin que tiene una dependencia de una
versin especfica de un paquete. Para lograr esto, necesita el plugin yumversionlock:
# yum install yum-plugin-versionlock

Luego de instalar el paquete yum-plugin-versionlock, ejecute el siguiente


comando para obtener informacin detallada de los paquetes instalados:
# rpm -qa --queryformat "%{NAME}-%{VERSION}-%{RELEASE}\n"

Luego edite el archivo /etc/yum/pluginconf.d/versionlock.list y agregue


los paquetes que no desea que se actualicen, por ejemplo, para evitar la
actualizacin del kernel agregue las siguientes lneas y asegrese que la versin
coincide con el resultado del comando anterior:
kernel-2.6.18-164.9.1.el5
kernel-headers-2.6.18-164.9.1.el5

Consideraciones especiales cuando actualiza el sistema


Cuando se actualiza un sistema deber tomar algunas precauciones clave:

33

Asegrese de tener un buen respaldo del sistema: Puede realizar una


copia de seguridad del sistema utilizando la herramienta Mondo.

Verifique los archivos de configuracin en conflicto: Durante la


actualizacin del sistema, es posible que archivos de configuracin
Red Hat Certified Engineer

Actualizaciones de seguridad

personalizados sean reemplazados por versiones nuevas, esto ocurre cuando


existe cambios mayores en los paquetes que hacen que los archivos de
configuracin no sean compatibles.
Los archivos de configuracin personalizados sern renombrados y se
agregar .rpmsave al nombre del archivo, y ser instalado una nueva versin
del archivo de configuracin con valores por defecto.
Debe asegurarse de encontrar y revisar todos los archivos .rpmsave que
puedieran haber sido generados y adaptar la nueva configuracin segn sea
necesario.
Para encontrar los archivos puede utilizar el comando find. Tambin es
recomendado que redireccione la salida del comando yum a un archivo de log
para luego utilizar el comando grep para obtener la lista de archivos
.rpmsave que pudieran haberse generado durante la actualizacin.
# yum update > /var/log/yum_update.log 2>&1
# egrep "rpmnew|rpmsave" /var/log/yum_update.log

Verifique y elimine los archivos .rpmnew y .rpmsave antes y despus de la


actualizacin.

Configuraciones de SELinux: Durante la actualizacin del sistema, es


posible que existan cambios en los booleans de SELinux. Asegrese de
guardar una lista de los booleans y sus valores antes de realizar la
actualizacin del sistema y comprelos posteriormente.

Actualizacin del Kernel: Existen algunos mdulos de kernel y drivers que


son requeridos e instalados por programas de otros fabricantes, como HP o
IBM. Luego de una actualizacin del kernel, si el nuevo kernel no incluye el
driver o mdulo, deber reinstalar el programa o sus drivers y mdulos para
esa versin especfica del Kernel.

Zona horaria: Mantenga siempre actualizado el paquete tzdata, el cual


contiene la informacin de cuando inicia y finaliza el horario de verano.

Aplique primero las actualizaciones en un equipo de pruebas: Se


recomienda que tenga un entorno de pruebas o pre-produccin, con la misma
configuracin de software que el equipo de produccin, y aplique las
actualizaciones primero en este equipo y realice pruebas funcionales de los
servicios. Si los servicios se encuentran operando correctamente, aplique la
actualizacin al equipo de produccin.

Utilizacin del sitio web de seguridad de Red Hat


El Portal de Clientes de Red Hat proporciona acceso a una seccin especfica de
Ing. Ivan Ferreira

34

Actualizaciones de seguridad

seguridad.

En esta seccin puede obtener informacin acerca de las vulnerabilidades que


afectan a los productos de Red Hat.
Adems, puede hacer clic en el enlace Notificaciones & Avisos, para configurar una
cuenta de correo donde sern enviadas las alertas de seguridad.

Seguridad de los paquetes RPM


Paquetes firmados digitalmente
Todos los paquetes de Red Hat/CentOS Linux estn firmados con la llave GPG.
GPG viene de GNU Privacy Guard, o GnuPG, un paquete de software libre utilizado
para asegurarse de la autenticidad de los paquetes distribuidos. Por ejemplo, una
llave privada (llave secreta) bloquea el paquete mientras que la llave pblica
desbloquea y verifica el paquete. Si la llave pblica distribuida no coincide con la
llave privada durante la verificacin de RPM, puede que el paquete haya sido
alterado y por lo tanto no se puede confiar en el.
Verificar paquetes firmados

La utilidad de RPM trata automticamente de verificar la firma GPG de un paquete

35

Red Hat Certified Engineer

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*

La salida incluir lo siguiente:


gpg-pubkey-db42a60e-37ea5438

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

Es extremadamente importante que verifique la firma de sus archivos RPM antes de


instalarlos para asegurarse de que no fueron alterados. Para verificar todos los
paquetes descargados de una vez, escriba el comando siguiente:
# rpm -K /tmp/updates/*.rpm

Para cada paquete, si se verifica exitosamente la llave GPG, el comando devuelve


gpg OK. Si no es as, asegrese de estar utilizando la llave pblica correcta, as
como tambin verificar la fuente del contenido. No se deberan instalar paquetes que
no pasan las verificaciones de GPG pues pueden haber sido alterados por terceros.
Despus de verificar la llave GPG y descargar todos los paquetes asociados con el
informe de errores, instlelos como usuario root.
Instalacin de paquetes firmados

La instalacin para la mayora de los paquetes se puede hacer sin percances


(excepto para los paquetes kernel), con el comando siguiente:
# rpm -Uvh /tmp/updates/*.rpm

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

Ing. Ivan Ferreira

36

Actualizaciones de seguridad

Verificacin de paquetes rpm


La verificacin de un paquete tiene que ver con comparar la informacin sobre
archivos instalados de un paquete con la misma informacin del paquete original.
Entre otras cosas, la verificacin compara el tamao, la suma MD5, los permisos, el
tipo, el dueo y el grupo de cada archivo.
El comando rpm -V verifica un paquete. Usted puede utilizar cualquiera de las
Opciones de seleccin de paquete de la lista para pedir que se especifiquen los
paquetes que desea verificar. Un modo sencillo de verificar es rpm -V foo, que
verifica si todos los archivos en el paquete foo se encuentran en el mismo estado en
que estaban cuando originalmente fueron instalados. Por ejemplo:
Para verificar un paquete que contiene un determinado archivo:
# rpm -Vf /bin/vi

Para verificar todos los paquetes instalados:


# rpm -Va

Para verificar un paquete instalado contra un archivo de paquete RPM


# rpm -Vp foo-1.0-1.i386.rpm

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

MD5 suma de verificacin

Tamao del archivo

Enlace simblico

Hora de modificacin de archivo

Dispositivo

Usuario propietario

Red Hat Certified Engineer

Actualizaciones de seguridad

Prueba

Descripcin

Grupo propietario

Modo

Archivo que no se puede leer

Si ve alguna salida, use su buen juicio para determinar si debera quitar o reinstalar
el paquete o resolver el problema de otra manera.

Ing. Ivan Ferreira

38

3
Seguridad de inicio, contraseas y la cuenta root

Seguridad de inicio, contraseas y la cuenta root

Seguridad del BIOS y del gestor de arranque


La proteccin con contraseas para el BIOS (o equivalentes al BIOS) y el gestor de
arranque, pueden ayudar a prevenir que usuarios no autorizados que tengan acceso
fsico a sus sistemas, arranquen desde medios removibles u obtengan acceso como
root a travs del modo monousuario. Pero las medidas de seguridad que uno
debera tomar para protegerse contra tales ataques dependen tanto de la
confidencialidad de la informacin que las estaciones tengan como de la ubicacin
de la mquina.

Contraseas del BIOS


Las siguientes son las dos razones bsicas por las que proteger la BIOS de una
computadora con una contrasea:

Prevenir cambios a las configuraciones del BIOS Si un intruso tiene


acceso a la BIOS, puede configurarlo para que arranque desde un disquete,
USB, o CD-ROM. Esto les permite entrar en modo de rescate o monousuario,
lo que a su vez les permite plantar programas dainos en el sistema o copiar
datos confidenciales.

Prevenir el arranque del sistema Algunas BIOSes le permiten proteger el


proceso de arranque con una contrasea. Cuando est funcionalidad est
activada, un atacante esta forzado a introducir una contrasea antes de que el
BIOS lance el gestor de arranque.

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.

Contraseas del gestor de arranque


A continuacin se muestran las razones principales por las cuales proteger el gestor
de arranque Linux:

Previene el acceso en modo monousuario Si un atacante puede


arrancar en modo monousuario, se convierte en el superusuario de forma
automtica sin que se le solicite la contrasea de acceso.

Previene el acceso a la consola de GRUB Si la mquina utiliza GRUB

Ing. Ivan Ferreira

40

Seguridad de inicio, contraseas y la cuenta root

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.

Protegiendo GRUB con contraseas


Puede configurar GRUB para solucionar los problemas listados anteriormente
aadiendo una directiva de contrasea a su archivo de configuracin. Para hacer
esto, primero seleccione una contrasea, luego abra un indicador de comandos del
shell, conctese como root y escriba:
# /sbin/grub-md5-crypt

Cuando se le pida, escriba la contrasea GRUB y presione [Enter]. Esto retornar un


hash MD5 para la contrasea.
Luego, modifique el archivo de configuracin GRUB /boot/grub/grub.conf.
Abra el archivo y debajo de la lnea timeout en la seccin principal del documento,
aada la siguiente lnea:
password --md5 <password-hash>

Reemplace <password-hash> con el valor retornado por /sbin/grub-md5crypt.


La prxima vez que el sistema arranque, el men de GRUB no le permitir acceder
el editor o la interfaz de comandos sin primero presionar la tecla p seguido por la
contrasea de GRUB.

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

Red Hat Certified Engineer

Seguridad de inicio, contraseas y la cuenta root

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.

Creacin de contraseas robustas


Cuando se cree una contrasea segura, es una buena idea seguir las siguientes
pautas:

Cree contraseas de al menos ocho caracteres Mientras ms larga sea la


contrasea, mejor.

Mezcle letras maysculas y minsculas Linux es sensitivo a las maysculas


y minsculas, por la tanto mezcle las letras para reenforzar su contrasea.

Mezcle letras y nmeros Agregando nmeros a las contraseas,


especialmente cuando se aaden en el medio (no solamente al comienzo o al
final), puede mejorar la fortaleza de su contrasea.

Incluya caracteres no alfanumricos Los caracteres especiales tales como


&, $, y > pueden mejorar considerablemente su contrasea (esto no es
posible si esta usando contraseas DES).

No utilice palabras reconocibles Como nombres propios, palabras que


existen en el diccionario o trminos comunes.

No utilice palabras reconocibles de otros lenguajes Programas que realizan


ataques de contraseas pueden utilizar diccionarios en cualquier lenguaje.

No utilice informacin personal Evite utilizar informacin personal como


nombres de familiares, de mascotas, fechas de cumpleaos o nmeros de
telfono y documentos.

Nunca escriba su contrasea Memoricela.

Seleccione una contrasea que pueda recordar La mejor contrasea en el mundo


Ing. Ivan Ferreira

42

Seguridad de inicio, contraseas y la cuenta root

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.

Metodologa para la creacin de contraseas seguras


Hay muchos mtodos que la gente utiliza para crear contraseas seguras. Uno de
los mtodos ms populares incluyen acrnimos. Por ejemplo:
Piense en una frase memorable, tal como:
"Es ms fcil creer que pensar con espritu crtico."
Luego, cmbielo a un acrnimo (incluyendo la puntuacin).
emfcqpcec.
Aada un poco de complejidad sustituyendo nmeros y smbolos por letras en el
acrnimo. Por ejemplo, sustituya 7 por e y el smbolo arroba (@) por c:
7mf@qp@7@.
Aada un poco ms de complejidad colocando mayscula al menos una letra, tal
como M.
7Mf@qp@7@.
Mientras que la creacin de contraseas seguras es imperativo, manejarlas
adecuadamente es tambin importante, especialmente para los administradores de
sistemas dentro de grandes organizaciones. La prxima seccin detalla buenos
hbitos en la creacin y manejo de contraseas de usuarios dentro de una
organizacin.

Envejecimiento de las contraseas


El envejecimiento de contraseas es una tcnica utilizada por los administradores de
sistemas para defenderse de las malas contraseas dentro de la organizacin. El
envejecimiento de contraseas significa que luego de un tiempo determinado
(usualmente 90 das) se le pide al usuario que cree una nueva contrasea. La teora
detrs de esto es que si un usuario es forzado a cambiar su contrasea
peridicamente, una contrasea que ha sido descifrada por un cracker slo le es til
por un tiempo determinado. La desventaja del envejecimiento de contraseas, es
que los usuarios tienden a escribir sus contraseas.
Existen dos programas principales usados para especificar la caducidad de
contraseas bajo Red Hat/CentOS Linux: el comando chage o la aplicacin grfica
Administrador de usuarios system-config-users.

43

Red Hat Certified Engineer

Seguridad de inicio, contraseas y la cuenta root

La opcin -M del comando chage especifica el nmero de das mximo en que la


contrasea ser vlida. Por lo tanto, si desea que la contrasea de un usuario expire
en 90 das, escriba el comando siguiente:
# chage -M 90 <username>
En el comando anterior, reemplace <username> con el nombre del usuario. Para
desactivar la expiracin de contraseas, es comn utilizar un valor de 99999
despus de la opcin -M (esto equivale a un poco ms de 273 aos).

Forzar el cambio de contraseas


El comando chage puede ser utilizado para forzar el cambio de la contrasea al
siguiente inicio de sesin. Esto es muy utilizado cuando la contrasea debi ser
restablecida por el administrador, de tal modo a que el usuario est obligado a
cambiarla al iniciar sesin con la nueva contrasea.
Para forzar el cambio de contrasea al siguiente inicio de sesin ejecute:
# chage -d 0 <usuario>

Desactivacin del acceso root


Si un administrador no est cmodo con permitir a los usuarios tener acceso como
root, entonces la contrasea de root debera mantenerse en secreto y deshabilitar el
acceso a nivel uno o en modo monousuario a travs de la proteccin con
contraseas del gestor de arranque

Deshabilitar el shell de root


Para prevenir a los usuarios de conectarse directamente como root, el administrador
del sistema puede configurar el shell de la cuenta root a /sbin/nologin en el
archivo /etc/passwd. Esto impedir el acceso a la cuenta root a travs de
comandos que requieren un shell.

Deshabilitar las conexiones root


Para limitar an ms el acceso a la cuenta root, los administradores pueden
desactivar las conexiones root en la consola, editando el archivo /etc/securetty.
Este archivo lista todos los dispositivos a los cuales el usuario root puede
conectarse. Si el archivo no existe, el usuario puede conectarse a travs de cualquier
dispositivo de comunicacin en el sistema, bien sea a travs de la consola o una
interfaz de red sin configurar. Por defecto, el archivo de Red Hat/CentOS Linux,
/etc/securetty, slo permite que el usuario root se conecte en la consola
conectada fsicamente a la mquina. Para prevenir que el usuario root se conecte,
Ing. Ivan Ferreira

44

Seguridad de inicio, contraseas y la cuenta root

elimine los contenidos de este archivo escribiendo el comando siguiente:


# echo > /etc/securetty

Deshabilitar conexiones root SSH


Para prevenir las conexiones de root a travs del protocolo SSH, modifique el
archivo de configuracin del demonio SSH /etc/ssh/sshd_config. Cambie la
lnea que dice:
# PermitRootLogin yes

Para que diga lo siguiente:


PermitRootLogin no

Limitar el acceso root


En vez de negar completamente el acceso al superusuario, el administrador puede
desear permitir el acceso solamente a travs de programas setuid, tales como su o
sudo.

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

Red Hat Certified Engineer

Seguridad de inicio, contraseas y la cuenta root


# Uncomment the following line to require a user to be in the "wheel" group.
auth
required
/lib/security/$ISA/pam_wheel.so use_uid

Descomente la lnea que corresponde con el mdulo pam_weel.so. Para mas


informacin acerca de PAM, consulte el captulo Pluggable Authentication Module.

Super User DO (Sudo)


El principal fin de sudo es reemplazar a su. En algunas circunstancias puede
utilizarse como reemplazo del SUID. La ventaja principal es que no es necesario dar
a conocer la contrasea de root o de algn otro usuario privilegiado, pudiendo
ejecutar comandos como tales usuarios.

El fichero /etc/sudoers
Desde este fichero lo controlamos todo. A continuacin una lista de las posibilidades
que nos ofrece:

Podemos crear alias de comandos, usuarios, usuarios privilegiados y hosts.

Podemos establecer opciones de comportamiento globales, por usuario, por


usuario privilegiado y por host.

La sintaxis del /etc/sudoers est pensada para entornos distribuidos; de forma


que podemos gestionar toda una red con un nico fichero. Y, cmo no, flexibilidad
absoluta a la hora de crear reglas de acceso.
Cuando nos referimos a usuarios y a usuarios privilegiados tambin es posible
referirnos a UIDs, grupos o GIDs, netgroups o alias de usuario. Para ello basta
anteponer el smbolo # para los UIDs (#1003), el smbolo % para los grupos
(%seguridad).
Para editar /etc/sudoers debemos utilizar el comando visudo puesto que aparte
de lanzar nuestro editor favorito realiza otras tareas adicionales como bloquear el
fichero para evitar edicin concurrente y comprobar la sintaxis antes de guardar los
cambios.

Estructura del archivo sudoers


El /etc/sudoers se divide en tres grandes secciones:
#
# Definiciones de alias
#
#
# Ajuste de opciones por defecto
#

Ing. Ivan Ferreira

46

Seguridad de inicio, contraseas y la cuenta root


#
# Reglas de acceso
#

Todas son opcionales. Obviamente, la ms necesaria es la ltima ya que sin sta el


uso de sudo no tiene sentido. Como se puede observar, los comentarios se insertan
igual que en los scripts del shell.

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

NOMBRE_ALIAS = elemento1, elemento2, elemento3

Donde Tipo_Alias puede ser uno de los siguientes:

Cmnd_Alias para comandos

User_Alias para usuarios

Runas_Alias para ejecutar en nombre de estos usuarios

Host_Alias para hosts

El siguiente parmetro, NOMBRE_ALIAS es el nombre del alias. Debe empezar por


letra mayscula y slo se permiten letras maysculas y nmeros.
El resto son los elementos o listas de elementos por los cuales NOMBRE_ALIAS ser
expandido.
Existe un alias especial, ALL, que se utiliza para englobar a todos los comandos,
usuarios, usuarios privilegiados o hosts.

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

Red Hat Certified Engineer

Seguridad de inicio, contraseas y la cuenta root


Defaults@host

lista_opciones

La lista_opciones es una lista de opciones separadas por comas. Existen cuatro


tipos de opciones:

Booleanos: Que se activan con slo escribir el nombre de la opcin y se


desactivan con el smbolo ! delante.

Enteros: De la forma nombre_opcion = valor

Strings: Igual que los enteros nombre_opcion = "valor"

Listas: Que pueden ser de la forma nombre_opcion = "valor1


valor2". stas opciones tambin pueden utilizar += y -= en lugar de = para
aadir elementos y quitar elementos respectivamente.

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

Estableciendo un valor a 0, se indica que la contrasea no sea recordada. Si se


establece a -1 la contrasea es recordada permanentemente.
Podra establecer tambin la cantidad de veces que puede intentarse introducir la
contrasea con la opcin passwd_tries, por ejemplo:
Defaults timestamp_timeout=0,passwd_tries=1

Podemos indicar que utilice un archivo de registro independiente en lugar de syslog


para las notificaciones:
Defaults

log_year, logfile=/var/log/sudo.log

Se puede establecer tambin que ciertos grupos de usuarios no requieran


autenticacin para la ejecucin de comandos a travs de sudo, por ejemplo:
Defaults:SERVICES

!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

Seguridad de inicio, contraseas y la cuenta root

que pueden ejecutar, bajo qu usuarios privilegiados ejecutarn los comandos y en


qu hosts pueden hacerlo.
usuario

host = (usuario_privilegiado) comando

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

host = (usuario_privilegiado) NOPASSWD: comando

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

Red Hat Certified Engineer

Seguridad de inicio, contraseas y la cuenta root


%wheel
ALL = (ALL) ALL
#
# Administradores de tiempo completo pueden ejecutar cualquier comando
# en cualquier host sin autenticarse.
#
ADMIN_UA
ALL = ALL
#
# Los usuarios listados en el alias SOPORTE_UA puede ejecutar comandos
# limitados a simples mantenimientos sin autenticarse.
#
SOPORTE_UA
ALL = NOPASSWD: BACKUP_CA
#
# Los usuarios listados en el alias SOPORTE_UA puede ejecutar comandos
# de mantenimientos avanzados autenticndose en los equipos de la DMZ
#
SOPORTE_UA
DMZ_HA = KILL_CA, INIT_CA
#
# El usuario jbritos slo puede hacer su a usuario reportes
#
jbritos
ALL = /usr/bin/su - reportes
#
# Los usuarios de SOPORTE_UA pueden cambiar la contrasea de cualquier usuario
# excepto root en los equipos del alias PROD_HA
#
SOPORTE_UA
PROD_HA = /usr/bin/passwd [A-z]*, !/usr/bin/passwd root
#
# Los usuarios de DBA puede ejecutar cualquier comando como los usuarios
# listados en el Runas_Alias ORACLE_RA ( oracle, oracle10) en los equipos del
# alias PROD_HA y DESA_HA
#
DBA_UA
PROD_HA = (ORACLE_RA) ALL : DESA_HA = (ORACLE_RA) ALL

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.

Funcionalidades que no se han comentado


Hay un varios detalles que no he mencionado. El primero es que en lugar de
ejecutables se pueden indicar rutas a directorios para indicar que cualquier binario
de dicho directorio se incluye en la regla de acceso; basta con finalizar la ruta en / y
se entender como un directorio.
El segundo es que para los comandos podemos utilizar caracteres comodn.
Ing. Ivan Ferreira

50

Seguridad de inicio, contraseas y la cuenta root

Adems, es posible controlar qu parmetros le podemos pasar a los comandos


tambin mediante caracteres comodn.

51

Red Hat Certified Engineer

4
Pluggable Authentication Module

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:

Gestin de la autenticacin (auth)

Gestin de las cuentas (account)

Gestin de sesin (session)

Gestin de contraseas (password)

La asociacin del esquema preferido de gestin con el comportamiento de una


aplicacin es hecho con entradas relevantes en los archivos de configuracin de
PAM. Las tareas de gestin son realizadas por mdulos especificados en el archivo
de configuracin.

Archivos de configuracin de PAM


PAM est diseado para proveer al administrador del sistema una gran flexibilidad
para trabajar con la configuracin de las aplicaciones con respecto a la entrega de
privilegios. La configuracin local de estos aspectos de la seguridad del sistema est
controlado por PAM en uno de dos lugares: o en un nico archivo de configuracin,

53

Red Hat Certified Engineer

Pluggable Authentication Module

/etc/pam.conf, o en el directorio /etc/pam.d.


Por defecto, Red Hat/CentOS Linux utilizan el directorio de configuracin
/etc/pam.d, donde encontrar un archivo por cada servicio que soporta PAM. Este
mtodo es mas sencillo y eficiente.

Sintaxis del archivo de configuracin


Una lnea de configuracin general tiene el siguiente formato:
tipo-modulo

argumentos

Tipo-modulo - Uno de los cuatro tipos de mdulos que pueden ser:

auth - Este mdulo provee dos aspectos de autenticacin para el


usuario. Primero establece si el usuario es quien dice ser, instruyendo a la
aplicacin que solicite una contrasea para el usuario o algn mtodo
similar. Segundo, el mdulo otorga la membresa de grupo
(independientemente del archivo /etc/groups) u otros privilegios a
travs de sus propiedades de otorgacin de credenciales.

account - este mdulo realiza gestiones de la cuenta no relacionados


con la autenticacin. Es usado tpicamente para permitir o restringir el
acceso basado en la hora, recursos del sistema (mximo nmero de
usuarios) o la ubicacin del usuario (root slo desde la consola).

session - primero, a este mdulo es asociado las tareas que necesitan


ser hechas para el usuario antes que se pueda otorgar el servicio. Estas
cosas incluyen el registro de informacin relacionada al inicio o cierre de la
sesin, montar o crear directorios, etc.

password - Este ltimo mdulo es requerido para actualizar la


autenticacin asociada con un usuario. Tpicamente, existe un mdulo
para cada mdulo de autenticacin (auth) basada en desafo/respuesta.

bandera-de-control - Es utilizada para indicar cmo la biblioteca PAM


reaccionar a el xito o fallo del mdulo asociado. Debido a que los mdulos
pueden ser apilados (stacked), donde los mdulos del mismo tipo se ejecutan
en serie, uno luego de otro, la bandera de control determina la importancia
relativa de cada mdulo. La forma simple de sintaxis para la bandera de
control es una sola palabra clave que indica la severidad respecto al xito o
fallo del mdulo especfico. Existen cuatro palabras claves:

Ing. Ivan Ferreira

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

Pluggable Authentication Module

requisite - Como requerido, sin embargo, en el caso que el mdulo


retorne fallo, el control es directamente retornado a la aplicacin y no se
contina la ejecucin de los dems mdulos.

sufficient - El xito del mdulo se considera suficiente para satisfacer


a la biblioteca PAM que este tipo-modulo ha sido satisfactorio y ningn otro
mdulo de la pila es invocado.

optional - Como el nombre sugiere, esta bandera de control marca el


mdulo como no critico para el xito o fallo de la aplicacin. En general,
PAM ignora este mdulo cuando determina si una pila de mdulos ser
exitosa o fallar. Sin embargo, en la ausencia de cualquier xito o fallo de
los mdulos previos o sucesivos, este mdulo determinar la naturaleza de
la respuesta de la aplicacin. Un caso es cuando los otros mdulos
retornan PAM_IGNORE.

ruta-modulo - La ruta del objeto dinmicamente cargable, el mdulo PAM


en s. Si el primer carcter del mdulo es /, se asume una ruta completa, si
no, la ruta se agrega a la ruta por defecto /lib/security.

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.

Cada archivo en el directorio /etc/pam.d representa un servicio.

Los archivos *-auth


Se debe tener en cuenta los archivos system-auth, password-auth,
smartcard-auth y fingerprint-auth. Estos archivos engloban polticas
comunes a muchos otros servicios que lo incluyen en su configuracin. La ventaja de
este esquema es que, en caso de querer cambiar el comportamiento comn de
varios servicios, tan solo es necesario modificar el archivo correspondiente con el
mtodo de autenticacin utilizado.
Algunos servicios incluyen al archivo system-auth, mientras que otros servicios
incluyen a los archivos relacionados al mtodo de autenticacin, como passwordauth segn la autenticacin sea local o remota. Por tanto es recomendado realizar
los cambios tanto en el archivo system-auth como en el archivo que corresponde
con el mtodo de autenticacin utilizado.
Si no se utiliza autenticacin con tarjetas inteligentes o lectores de huellas digitales,

55

Red Hat Certified Engineer

Pluggable Authentication Module

puede incluir el archivo system-auth en el archivo password-auth y de esta


forma solo tendr que actualizar un archivo.
El archivos /etc/pam.d/*-auth son en realidad enlaces simblicos los archivo
/etc/pam.d/*-auth-ac, el cual es modificado y los valores modificados cada vez
que ejecuta la herramienta system-config-authentication o authconfig.
Para definir una configuracin personalizada que no se sobrescriba
automticamente, modifique el enlace simblico para que apunte a un archivo
personalizado, por ejemplo *-auth-local:
# ln -sf /etc/pam.d/system-auth-local /etc/pam.d/system-auth
# ln -sf /etc/pam.d/password-auth-local /etc/pam.d/password-auth

Si no desea mantener los archivos por separado, edite el archivo password-auth e


incluya al mdulo system-auth:
# vi /etc/pam.d/password-auth
auth
include
system-auth
auth
required
pam_env.so
auth
sufficient
pam_unix.so nullok try_first_pass
auth
requisite
pam_succeed_if.so uid >= 500 quiet
auth
required
pam_deny.so
account
account
account
account
account

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

De esta forma, solo deber realizar los cambios en el archivo system-auth.

Poltica por defecto


Si el sistema ser considerado seguro, es necesario tener una entrada other
Ing. Ivan Ferreira

56

Pluggable Authentication Module

razonablemente segura. La entrada other ser utilizada si la aplicacin es


consciente de PAM y no existe una entrada para esta aplicacin.
El siguiente es el valor por defecto:
# cat /etc/pam.d/other
auth
required
account required
password required
session required

/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

El mdulo puede ser utilizado en los siguientes grupos de gestin:

account

Dependencias

Requiere un archivo de configuracin, por defecto /etc/security/access.conf.


El formato del archivo es:
permiso:usuarios:origenes

Los valores para cada campo son:


Campo
permiso

57

Descripcin
Debe ser + (acceso otorgado) o (acceso
denegado).

Red Hat Certified Engineer

Pluggable Authentication Module

Campo

Descripcin

usuarios

Una lista de usuarios, grupos, o ALL (todos). Un


patrn del formato usuario@host concuerda
cuando usuario concuerda con la parte de usuario
y host concuerda con la nombre de la mquina
local.

origenes

Lista de uno o mas nombres tty, nombres de host,


nombres de dominio, direcciones IP, ALL, NONE,
LOCAL.

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

Es recomendado para mquinas como servidores LDAP, NIS, NIS+, y de correo,


donde necesita muchas cuentas de usuarios pero no desea que inicien sesin
interactiva.
Agregue la siguiente lnea al archivos /etc/pam.d/system-auth:
account required pam_access.so

Un ejemplo del
/etc/security.

archivo

access.conf

se

encuentra

en

el

directorio

# Disallow console logins to all but a few accounts.


#
#-:ALL EXCEPT wheel shutdown sync:LOCAL
# Disallow non-local logins to privileged accounts (group wheel).
#
#-:wheel:ALL EXCEPT LOCAL
#
# Some accounts are not allowed to login from anywhere:
#
#-:wsbscaro wsbsecr wsbspac wsbsym wscosor wstaiwde:ALL

Ing. Ivan Ferreira

58

Pluggable Authentication Module

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:

Palindromo: es la nueva contrasea un palindromo de la anterior.

Cambio de capitalizacin: es la misma contrasea con cambio de


capitalizacin (Mayusculas/Minusculas).

Similar: Se parece la nueva contrasea a la anterior. Es controlado por el


argumento difok el cual es el nmero de caracteres que deben diferir de la
contrasea anterior. Por defecto nmero de caracteres deben ser
diferentes.

Rotado: Es la contrasea una rotacin de una contrasea anterior.

Utilizado: Ya fue usada anteriormente. Las contraseas anteriores de


guardan en /etc/security/opasswd.

Grupos de gestin

El mdulo puede ser utilizado en los siguientes grupos de gestin:

password

Dependencias

Requiere la biblioteca del sistema


/usr/lib/cracklib_dict*.

libcrack y el diccionario del sistema

Argumentos reconocidos

Argumento
type=<XXX>

59

Descripcin
Reemplaza la frase New UNIX password: con New XXX
password

retry=<N>

Numero de intentos para introducir la nueva contrasea.

difok=<N>

Nmero de caracteres diferentes de la contrasea anterior.

minlen=<N>

Tamao mnimo de la contrasea.

dcredit=<N>

El mximo crdito por tener dgitos en la contrasea.

ucredit=<N>

El mximo crdito por tener maysculas en la contrasea.

Red Hat Certified Engineer

Pluggable Authentication Module

Argumento
lcredit=<N>

Descripcin
El mximo crdito por tener minsculas en la contrasea.

ocredit=<N>

El mximo crdito por tener otros caracteres contrasea.

remember=<N>

La cantidad de contraseas previas a recordar

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

Para requerir contraseas seguras, agregue/modifique la siguiente lnea en el


archivo /etc/pam.d/system-auth:
password required pam_cracklib.so
dcredit=1 ocredit=1

retry=3

minlen=11

difok=3

lcredit=0

ucredit=1

En el ejemplo anterior la contrasea debe tener al menos 11 caracteres y debe tener


3 caracteres diferentes a la contrasea anterior. Para cada combinacin de
caracteres obtiene un crdito excepto por utilizar minsculas. Si combina
maysculas, minsculas y caracteres especiales, la contrasea podra tener 8
caracteres.

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

El mdulo puede ser utilizado en los siguientes grupos de gestin:

session

Dependencias

Requiere un kernel que soporte lmites de recursos y del archivo de configuracin


/etc/security/limits.conf.
Ing. Ivan Ferreira

60

Pluggable Authentication Module

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>

El campo <domain> puede ser:

Un usuario

Un grupo

El comodn *, como la entrada por defecto

El comodn %, para lmites de inicios de sesin solamente.

El campo <type> puede ser:

hard - El usuario no puede pasar los requerimientos por encima de este


valor.

soft - Valores que el usuario puede sobrepasar hasta un rango permitido por
una entrada hard. Seran los valores por defecto.

El campo <item> puede ser:

61

core - limita el tamao del archivo core (KB)

data - tamao mximo de dato (KB)

fsize - tamao mximo de archivo (KB)

memlock - mximo espacio de memoria que podra estar bloqueado (KB)

nofile - mximo nmero de archivos abiertos

rss - tamao mximo resident set (KB)

stack - tamo mximo del stack (KB)

cpu - Tiempo mximo de CPU (MIN)

nproc - Nmero mximo de procesos

as - Lmite del espacio de direcciones o address space

maxlogins - mximo nmero de inicios de sesin para el usuario


Red Hat Certified Engineer

Pluggable Authentication Module

maxsyslogins - mximo nmero de inicios de sesin en el sistema

priority - la prioridad para ejecutar procesos

locks - nmero mximo de archivos llaveados

Argumentos

Argumento
debug
conf=<archivo>

Descripcin
Mayor informacin registrada en syslog.
Un
archivo
de
configuracin
/etc/security/limits.conf.

alternativo

al

Ejemplos/uso sugerido

Asegrese que el archivo /etc/pam.d/system-auth contiene la lnea:


session

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>

Los comodines * y % tienen el siguiente significado con maxlogins siendo * cada


usuario y % el total de los usuarios.
# <domain>
<type>
<item>
<value>
# Cada usuario puede tener dos sesiones como mximo
*
maxlogins
2
# El sistema soporta como mximo 30 usuarios concurrents
%
maxlogins
30
# Los miembros del grupo soporte pueden iniciar 4 sesiones como mximo
%soporte
maxlogins
4

El archivo /etc/security/limits.conf contiene ejemplos de utilizacin.

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).

Ing. Ivan Ferreira

62

Pluggable Authentication Module

Grupos administrativos

El mdulo puede ser utilizado en los siguientes grupos de gestin:

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

Tambin es utilizado como poltica por defecto en el archivo /etc/pam.d/other


auth
account
password
session

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

Este mdulo adems actualiza el archivo /var/log/lastlog.


Grupos administrativos

El mdulo puede ser utilizado en los siguientes grupos de gestin:

authentication

Dependencias del sistema

El mdulo depende del archivo /var/log/lastlog.


63

Red Hat Certified Engineer

Pluggable Authentication Module

Argumentos

Argumento
debug

Descripcin
Mayor informacin registrada en syslog.

nodate

No muestra la fecha del ltimo inicio de sesin.

noterm

No muestra la terminal del ltimo inicio de sesin.

nohost

No muestra el host del ltimo inicio de sesin.

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

El mdulo puede ser utilizado en los siguientes 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.

item=<user|tty|rhost| Identifica el tem especificado, user es el nombre del


ruser|group|shell>
usuario (PAM_USER), tty especifica el nombre de la
terminal remota (PAM_TTY), rhost especifica el
nombre del host remoto (PAM_RHOST) y ruser
identifica
el
nombre
del
usuario
remoto
(PAM_RUSER), y busca la instancia del tem en el
archivo especificado.
Ing. Ivan Ferreira

64

Pluggable Authentication Module

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

Usuarios listados en el archivo /etc/ftpusers no se permite el acceso por ftp


(sense=deny). Si ocurre un error, el acceso ser denegado.

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

El mdulo puede ser utilizado en los siguientes grupos de gestin:

session

Argumentos

65

Argumento
debug

Descripcin
Escribe informacin a syslog.

dir=<ruta>

Verifica el correo del usuario en un directorio alternativo.

empty

Indica que el directorio de mail est vaco si es el caso.

Red Hat Certified Engineer

Pluggable Authentication Module

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

Solo reporta cuando existe un correo nuevo.

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

El mdulo puede ser utilizado en los siguientes grupos de gestin:

session

Argumentos

Argumento
debug

Descripcin
Escribe informacin a syslog

skel=<directorio> El directorio skeleton a utilizar para copiar los archivos


predeterminados al directorio
umask
El valor octal el cual define los permisos por defecto del
directorio
Ejemplos/uso sugerido

Este mdulo es til cuando se utiliza un sistema de autenticacin basada en


directorio, como NIS, NIS+ o LDAP, de tal forma que cuando el usuario inicia sesin
en cualquier sistema, si el directorio HOME no existe es automticamente creado.
Para lograr esto edite el archivo /etc/pam.d/system-auth y agregue una lnea
como la siguiente:
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022

Ing. Ivan Ferreira

66

Pluggable Authentication Module

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

El mdulo puede ser utilizado en los siguientes grupos de gestin:

authentication

Ejemplos/uso sugerido

El siguiente es un ejemplo de un archivo /etc/pam.d/login por defecto.


auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth
include
system-auth
account
required
pam_nologin.so

Mdulo pam_permit
Este mdulo es muy peligroso. Debe usarse con extrema precaucin. Su funcin es
permitir acceso.
Grupos de gestin

El mdulo puede ser utilizado en los siguientes grupos de gestin:

account

authentication

password

session

Ejemplos/uso sugerido

Si un administrador desea desactivar la autenticacin para el uso de una estacin de


trabajo puede configurar el archivo /etc/pam.d/login como sigue:
account

67

required

pam_permit.so

Red Hat Certified Engineer

Pluggable Authentication Module

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

El mdulo puede ser utilizado en los siguientes grupos de gestin:

authentication

Ejemplos/uso sugerido

En el caso de la aplicacin su, se permite al root adoptar la identidad de cualquier


usuario sin especificar una contrasea. El archivo /etc/pam.d/su contiene una
lnea como la siguiente:
auth
auth

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

El mdulo puede ser utilizado en los siguientes grupos de gestin:

authentication

Ejemplos/uso sugerido

El archivo /etc/pam.d/login por defecto contiene una lnea como la siguiente:


auth required pam_securetty.so

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.

Ing. Ivan Ferreira

68

Pluggable Authentication Module

Grupos de gestin

El mdulo puede ser utilizado en los siguientes grupos de gestin:

authentication

account

Dependencias

El mdulo depende del archivo /var/log/tallylog.


Argumentos

Los argumentos generales del mdulo son:


Argumento
onerr=succeed|fail

Descripcin
Si ocurre un error, cmo el mdulo debe reaccionar.

file=<ruta/al/archivo> Especifica el archivo para mantener la cuenta de


inicio de sesin. Por defecto el
/var/log/tallylog.
audit

Si el usuario no es encontrado mostrara el nombre


en syslog

Componente authentication

Verifica si el acceso al usuario debe ser denegado e incrementa el contador de


inicios de sesin.
Los argumentos para el componente authentication son:
Argumento

69

Descripcin

deny=n

Denegar acceso cuando los intentos fallidos son n.

lock_time=n

Denegar durante n segundos

unlock_time=n

Permite el acceso transcurrido de n segundos luego


del ltimo inicio de sesin invlido.

magic_root

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.

even_deny_root

Tiene la posibilidad de bloquear la cuenta root.

Red Hat Certified Engineer

Pluggable Authentication Module

Argumento
root_unlock_time=n

Descripcin
Igual a unlock_time pero solo afecta a la cuenta
root.

Para acerar manualmente el contador puede utilizar el comando pam_tally2, la


sintaxis del comando es como sigue:
pam_tally2 [--file rooted-filename] [-u usuario] [-r] [--reset[=n]] [--quiet]

Componente account

El componente account es opcional y reinicia los contadores. Adems, verifica que el


archivo existe y no es escribible por todos.
Los argumentos para el componente account son:
Argumento
magic_root

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

Para denegar el acceso luego de 5 intentos de inicio de sesin invlidos configure el


archivo /etc/pam.d/system-auth como sigue:
auth required pam_tally2.so onerr=fail deny=5

Si un usuario se ha equivocado la contrasea mas de cinco veces, la cuenta es


bloqueada y en el archivo /var/log/secure podr encontrar una lnea como la
siguiente:
Aug 4 17:33:42 serv1 pam_tally[31348]: user jperez (1241) tally 6, deny 5

Para desbloquear la cuenta del usuario debe reiniciar a 0 la cantidad de intentos


errneos para la cuenta con el siguiente comando:
# pam_tally2 -u jperez -r

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

Pluggable Authentication Module

basados en su nombre, hora del da o da de la semana y terminal que solicita el


servicio.
Grupos de gestin

El mdulo puede ser utilizado en los siguientes grupos de gestin:

account

Dependencias

Requiere de un archivo de configuracin /etc/security/time.conf. Cada regla


del archivo tiene la siguiente forma:
servicios;ttys;usuarios;tiempos
En palabras, cada lnea es una regla. Consta de cuatro campos separados por punto
y coma, ;, Los campos son:

servicios - Lista de servicios afectados por esta regla.

ttys - Lista de terminales afectadas por la regla

usuarios - Lista de usuarios a los cuales se aplica la regla.


La lista no puede contener ms de un comodn y opcionalmente, el operador
de negacin al principio !. Cada secuencia es concatenada por el operador
AND & o el operador OR | . Por ejemplo:
!morgan&!root
Indica que la regla no se aplica a morgan o root
tty*&!ttyp*
Indica que la regla se aplica solamente a terminales consola, no a pseudo
terminales.

tiempos - Lista de tiempos que se aplica esta regla. Cada elemento es un


rango de da/tiempo. Los das son especificados por una secuencia de dos
caracteres, por ejemplo:
MoTuSa
Indica Lunes, Mircoles, Viernes.
Das repetidos son eliminados, por ejemplo:

71

Red Hat Certified Engineer

Pluggable Authentication Module

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

El archivo /etc/pam.d/system-auth podra configurarse como sigue:


account

required

pam_time.so

El archivo /etc/security/time.conf puede ser:


login;*;!root;Al0800-1800
ssh;*;!root;Al0800-1800
Todos los usuarios, excepto root, se permite el inicio de sesin desde las 08:00
hasta las 18:00. Fuera de ese horario, el inicio de sesin ser denegado.

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

El mdulo puede ser utilizado en los siguientes grupos de gestin:

account

authentication

password

Ing. Ivan Ferreira

72

Pluggable Authentication Module

session

Componente account

Basado en los elementos del shadow: expire, last_change, max_change,


min_change y warn_change el mdulo realiza las tareas de establecer el estado de
la cuenta de un usuario y su contrasea. Puede avisar al usuario que su contrasea
debera ser cambiada.
Por ejemplo, la siguiente lnea del archivo /etc/pam.d/system-auth verifica que
la cuenta y la contrasea estn an activas
account

required

pam_unix.so broken_shadow

El argumento broken_shadow ignora errores en la lectura de la informacin


shadow.
Componente authentication

Este componente autentica al usuario.


Los argumentos vlidos para el componente authentication son:
Argumento
debug

Descripcin
Enva informacin adicional a syslog.

nullok

Permite contraseas en blanco

use_fist_pass

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

El mdulo debera intentar una autenticacin con la


contrasea previa, si no funciona, se solicita al usuario una
contrasea.

nodelay

Evita la espera de un segundo entre intentos de


autenticacin.

Por ejemplo, la siguiente lnea del archivo /etc/pam.d/system-auth autentica al


usuario:
auth

sufficient

pam_unix.so nullok try_first_pass

Componente password

Esta parte del mdulo actualiza la contrasea del usuario.


73

Red Hat Certified Engineer

Pluggable Authentication Module

Los argumentos vlidos para el componente password son:


Argumento

Descripcin

md5

En el caso de una base de datos de usuario convencional de


usuarios del unix, el argumento md5 es utilizado para utilizar
el mtodo de encriptacin md5 en oposicin al tracicional
crypt. Esto permite contraseas mayores a 8 caracteres.

nullok

Permite el cambio de contraseas que estn en blanco, de


otro modo se considera una cuenta con contrasea en
blanco como bloqueada.

use_fist_pass

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

El mdulo debera intentar una autenticacin con la


contrasea previa, si no funciona, se solicita al usuario una
contrasea.

use_authok

Es utilizado para forzar al mdulo a establecer la contrasea


a la proveda por el mdulo anterior.

remember=n

El nmero de contraseas ms recientes a guardar para


cada usuario. El archivo en el que son almacenadas las
contraseas anteriores es /etc/security/opasswd.

Por ejemplo, las siguientes lneas del archivo /etc/pam.d/system-auth indican


al mdulo pam_unix que utilice la contrasea proporcionada por el mdulo
pam_cracklib, permita el cambio de contraseas en blanco, utilice md5 para la
encriptacin contraseas y que recuerde 6 contraseas anteriores.
passwd
passwd

password
password

required
required

pam_cracklib.so retry=3 minlen=6 difok=3


pam_unix.so use_authtok nullok md5 remember=6

Componente session

No se reconoce argumentos en este componente. Su funcin es simplemente


registrar el usuario y el tipo de servicio a syslog. Los mensajes son registrados al al
final de una sesin.
Por ejemplo, el valor por defecto del archivo /etc/pam.d/system-auth es el
siguiente:
session

Ing. Ivan Ferreira

required

pam_unix.so

74

Pluggable Authentication Module

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

El mdulo puede ser utilizado en los siguientes grupos de gestin:

authentication

password

Ejemplos/uso sugerido

Cada servicio que no tiene configurado un fichero en /etc/pam.d utilizar las


reglas de /etc/pam.d/other. Por defecto, se establece deny para mayor
seguridad. Sin embargo, es util agregar mayor informacin a ser registrada:
auth
auth
account
account
password
password
session
session

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

El mdulo puede ser utilizado en los siguientes grupos de gestin:

authentication

Argumentos

Argumento
debug

75

Descripcin
Enva informacin adicional a syslog.

Red Hat Certified Engineer

Pluggable Authentication Module

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>

En lugar de verificar el grupo wheel, utiliza el groupo


<nombre> para la autenticacin.

root_only

Verifica si es miembro del grupo wheel solamente si el UID


de la cuenta solicitada es 0.

use_uid

La verificacin de membresa de grupo se realizar en base


al usuario actual en lugar del original (por ejemplo cuando
utiliza su para cambiarse de una cuenta a otra).

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

pam_wheel.so trust use_uid

Mdulo pam_ldap
El mdulo pam_ldap proporciona autenticacin, autorizacin y cambio de
contraseas en cuentas almacenadas en un servidor LDAP.
Grupos de gestin

El mdulo puede ser utilizado en los siguientes grupos de gestin:

authentication

password

session

Dependencias

El mdulo requiere del archivo /etc/ldap.conf y /etc/openldap/ldap.conf.


Argumentos

Argumento
debug

Ing. Ivan Ferreira

Descripcin
Enva informacin adicional a syslog.

76

Pluggable Authentication Module

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

El mdulo debera intentar una autenticacin con


la contrasea previa, si no funciona, se solicita al
usuario una contrasea.

ignore_unknown_user

Permite configurar el mdulo de tal forma a


requerir la autenticacin de cuentas que existan
en LDAP, pero permitir la autenticacin de
cuentas que no existen usando otro mdulo, por
ejemplo pam_unix.

ignore_authinfo_unavail

Indica que el mdulo no debe retornar error en


caso de no poder contactar con el servidor LDAP.

use_authok

Anlogo a use_first_pass pero slo para el


grupo de gestin password.

Ejemplo/uso sugerido

El mdulo es utilizado para autenticar usuarios Linux contra un controlador de


directorio LDAP. Puede configurar la autenticacin LDAP usando authconfig o
system-config-authentication.

Mdulo pam_smb_auth
El mdulo pam_smb_auth permite la autenticacin de de servidores Linux usando
un servidor Windows.
Grupos de gestin

El mdulo puede ser utilizado en los siguientes grupos de gestin:

authentication

Argumentos

Argumento
debug

77

Descripcin
Enva informacin adicional a syslog.

Red Hat Certified Engineer

Pluggable Authentication Module

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

El mdulo es utilizado para autenticar usuarios Linux contra un controlador de


dominio Windows. Puede configurar la autenticacin SAMBA usando authconfig o
system-config-authentication.

Ing. Ivan Ferreira

78

5
Auditoria del sistema

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.

Uso del subsistema de auditoria


El Perfil de Proteccin de Acceso Controlado (Controlled Access Protection Profile
CAPP) especifica los requerimientos de auditoria que el sistema debe soportar. La
configuracin evaluada descrita aqu esta basada en estos requerimientos.
Un sistema CAPP es aquel que ha sido diseado y configurado para cumplir el
CAPP para la evaluacin de seguridad de acuerdo al Criterio Comn (Common
Criteria). El CAPP especifica los requerimientos funcionales del sistema, similar al
anterior TSEC C2 estndar (tambin conocido como el libro naranja).
Algunos requerimientos CAPP pueden conflictuar con los requerimientos especficos
de su sistema. Por ejemplo, un sistema que cumple con CAPP debe deshabilitar los
inicios de sesin si el sistema de auditoria no est funcionando.
CAPP es diseado para un sistema multiusuario, con mltiples usuarios nicos que
mantienen recursos compartidos y privados. Es menos til para un servidor de
aplicaciones o que no cuenta con usuarios interactivos.
Tenga en cuenta que cuando el subsistema de auditoria es activado, provoca cierta
degradacin de rendimiento para las aplicaciones en el servidor. El impacto depende
de que est realizando la aplicacin y cmo es configurado el subsistema de
auditoria. Como regla general, las aplicaciones que abren un gran nmero de
archivos son los ms afectados, mientras que programas CPU intensivo no deberan
ser notablemente afectados.
Para utilizar el subsistema de auditoria el paquete audit debe estar instalado, para
verificar si el paquete esta instalado ejecute el comando:
# rpm -qi audit

Si no esta instalado instale el subsistema de auditoria con el comando:


# rpm -Uvh audit-<version>.rpm audit-libs-<version>.rpm

Ing. Ivan Ferreira

80

Auditoria del sistema

Seleccin de eventos a ser auditados


Es posible realizar cambios al conjunto de llamadas del sistema y eventos que sern
auditados. CAPP requiere que el sistema tenga la capacidad de auditar eventos
relativos a la seguridad, pero depende de usted seleccionar como utilizar estas
capacidades.
El paquete audit proporciona una configuracin sugerida para sistemas CAPP en el
archivo /usr/share/doc/audit-*/capp.rules. Este archivo contiene una
configuracin sugerida para un sistema multiusuario, todos los accesos de seguridad
relevantes son auditados, adems de otros eventos relevantes de seguridad como la
reconfiguracin
del
sistema.
Podra
copiar
este
archivo
a
/etc/audit/audit.rules y modificar la configuracin de acuerdo a sus
requerimientos locales.
Podra selectivamente habilitar y deshabilitar la auditoria para eventos o usuarios
especficos modificando el archivo audit.rules. Es recomendado que siempre
reconfigure
el
sistema
de
auditoria
modificando
el
archivo
/etc/audit/audit.rules y luego ejecutar el siguiente comando para recargar
las reglas:
# auditctl -R /etc/audit/audit.rules

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

En este ejemplo, un monitoreo es ubicado sobre el archivo /etc/hosts (-w


81

Red Hat Certified Engineer

Auditoria del sistema

/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]

Especifica el comportamiento ante un fallo, siendo


0=silent, 1=printk 2=panico.

-k

Indica una clave de filtro para la regla de auditoria.

-p [r|w|x|a]

Establece el filtro de permisos para el monitoreo siendo


r=read, w=write, x=execute, a=attribute change.

-R <archivo>

Lee las reglas del archivo.

-s

Reporta el estado.

-D

Borra todas las reglas y monitoreos.

-w <ruta>

Inserta un monitoreo para un objeto del sistema de


archivos. Si desea monitorear un directorio, es
recomendado que defina un monitoreo para cada archivo
del directorio.

-a <lista,accion>

Agrega la regla al final de la lista con la accin indicada.


Las listas comnmente utilizadas son entry y exit. Las
acciones pueden ser never, always. Para mas
informacin consulte la pgina de man de auditctl.

-S [syscall|all]

El nombre de la llamada al sistema a monitorear.

-F

Construye un campo de regla: nombre, operacin, valor.

-l

Lista las reglas

Algunas de las llamadas del sistema podran ser:


Syscall
open, creat

Abre y posiblemente crea un archivo o dispositivo.

execve

Ejecutar un programa.

exit

Termina el proceso actual.

mkdir

Crea un directorio.

unlink

Borra un nombre y posiblemente el archivo al que refiere.

mknod

Crea un directorio, archivo especial o regular.

Ing. Ivan Ferreira

Descripcin

82

Auditoria del sistema

Syscall

Descripcin

rmdir

Borra un directorio

chown, lchown

Cambia el propietario de un archivo

chmod

Cambia los permisos de un archivo

symlink, link

Crea un nuevo nombre a un archivo

rename

Cambia el nombre o la ubicacin de un archivo

truncate

Trunca un archivo al tamao especificado

chroot

Cambia el directorio root

setuid

Estableder la identidad de un usuario

setreuid

Estableder el ID real o efectivo de un usuario

setresuid

Estableder el ID real o efectivo de un usuario

setgid

Establecer la identidad de grupo

setregid

Establecer el ID de grupo real/efectivo

socketcall

Funciones de red, incluyendo connect y accept

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

Para ver todos los archivos abiertos por un usuario especfico:


# auditctl -a exit,always -S open -F auid=510

Para ver llamadas open no exitosas:


# auditctl -a exit,always -S open -F success!=0

Si se auditan las llamadas al sistema al momento de entrada, se almacenan


informacin tales como el nmero de syscall y marcas de tiempo, pero no los
argumentos. Si se auditan las llamadas al sistema al momento de salida, se incluye
informacin tal como nombre de archivo y nmero de inodo (si esta disponible).

Leyendo y buscando registros de auditoria


Use la herramienta ausearch para obtener informacin de los registros de
auditoria. La informacin disponible para obtener depende de la configuracin del

83

Red Hat Certified Engineer

Auditoria del sistema

filtro. La sintaxis general del comando es:


ausearch [opciones]

Las opciones mas comunes son:


Opcin

Descripcin

-a <id de evento>

Busca un evento basado en el ID.

-f <archivo>

Busca un evento basndose en el nombre de un archivo.

-gi <GID>

Busca un evento basndose en el GID.

-if <archivo>

Utilice el archivo especificado en lugar de los logs.

-k <clave>

Busca un evento basndose en la clave.

-p <PID>

Buscan un evento basndose en el PID.

-sc

Busca un evento que concuerde con la llamada del sistema


especificada.

-sv <yes|no>

Busca un evento que concuerde con el valor de xito.

-te [fecha] [hora]

Busca eventos con marcas de tiempo igual o anteriores al


especificado.

-ts [fecha] [hora]

Busca eventos con marcas de tiempo igual o posteriores al


especificado.

-ui <UID>

Busca un evento basndose en el UID.

-ul <login>

Busca un evento basndose en el login ID del usuario.

-x <ejecutable>

Busca un evento que concuerde con el nombre del


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

Con la regla indicada se monitorear todo intento de acceso al archivo


/etc/shadow.
Ing. Ivan Ferreira

84

Auditoria del sistema

Suponga que un usuario intenta editar el archivo /etc/shadow con el comando


vim, para listar los eventos registrados utilice el comando ausearch como sigue:
# ausearch -f /etc/shadow
---time->Mon Feb 19 06:25:38 2007
type=PATH msg=audit(1171877138.275:112): item=0 name="/etc/shadow" inode=620370
dev=fd:00 mode=0100400 ouid=0 ogid=0 rdev=00:00
type=CWD msg=audit(1171877138.275:112): cwd="/home/iferreira"
type=SYSCALL
msg=audit(1171877138.275:112):
arch=40000003
syscall=5
success=no
exit=-13 a0=90e5b08 a1=8000 a2=0 a3=8000 items=1 ppid=6699 pid=6717 auid=4294967295
uid=500 gid=500 euid=500 suid=500 fsuid=500 egid=500 sgid=500 fsgid=500 tty=pts3
comm="vim" exe="/usr/bin/vim" key="security-file"

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

Obtener la informacin del usuario con UID=500.


# ausearch -k security-file

Obtener la informacin usando el filtro security-file


#

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]

Las opciones mas comunes son:


Opcin
-c

85

Descripcin
Reporta cambios de configuracin.

Red Hat Certified Engineer

Auditoria del sistema

Opcin

Descripcin

-f

Reporta acerca de archivos.

-l

Reporta acerca de logins.

-p

Reporta acerca de procesos.

-u

Reporta acerca de usuarios.

-s

Reporta llamadas del sistema.

-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.

Almacenamiento de los registros de auditoria


La configuracin del sistema de auditoria es realizada a travs del archivo
/etc/audit/auditd.conf. En este archivo se especifican los valores de
almacenamiento del los registros de auditoria. Entre las opciones del archivo de
configuracin se encuentran:
Opcin

Descripcin

log_file=<archivo>

La ruta completa al archivo de registro.

log_format=<raw|nolog>

El formato de registro. Por defecto se utiliza raw, si


se indica nolog el sistema descarta los eventos.

max_log_file=<tamao MB>

El tamao mximo del archivo en MB. Cuando se


alcanza el lmite, se iniciar una accin configurable.

max_log_file_action=<accion>

La accin a tomar cuando se alcanza el tamao


mximo del registro, puede ser ignore, syslog,
suspend, rotate, keep_logs.

num_logs=<n>

Especifica el nmero de archivos de registro a


mantener si rotate ha sido dado como
max_log_file_action. El nmero debe ser menor
a 99.

space_left=<tamao MB>

Cuando el espacio disponible en disco alcanza el


valor especificado el demonio de auditoria ejecuta
una accin.

space_left_action=<tamao MB>

Indica la accin a ejecutar cuando el espacio el


espacio disponible del disco alcanza el lmite
establecido. Las acciones son ignore, syslog,
email, suspend, single, halt.

Ing. Ivan Ferreira

86

Auditoria del sistema

Opcin

Descripcin

admin_space_left=<tamao MB>

Cuando el espacio disponible en disco alcanza el


valor especificado el demonio de auditoria ejecuta
una accin.

admin_space_left_action

Indica la accin a ejecutar cuando el espacio el


espacio disponible del disco alcanza el lmite
establecido. Las acciones son ignore, syslog,
email, suspend, single, halt.

disk_full_action

Este parmetro indica al sistema la accin a tomar


cuando el sistema detecta que el sistema de archivos
donde se registran los eventos est lleno. Las
acciones son ignore, syslog, email, suspend,
single, halt.

disk_error_action

Este parmetro indica al sistema la accin a tomar


cuando el sistema detecta un error durante la
escritura de los eventos o rotacin de logs. Las
acciones son ignore, syslog, email, suspend,
single, halt.

El valor por defecto del archivo de configuracin /etc/audit/auditd.conf es el


siguiente:
#
# This file controls the configuration of the audit daemon
#
log_file = /var/log/audit/audit.log
log_format = RAW
priority_boost = 3
flush = INCREMENTAL
freq = 20
num_logs = 4
dispatcher = /sbin/audispd
disp_qos = lossy
max_log_file = 5
max_log_file_action = ROTATE
space_left = 75
space_left_action = SYSLOG
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND

87

Red Hat Certified Engineer

Auditoria del sistema

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.

Ing. Ivan Ferreira

88

Auditoria del sistema

En la pestaa General puede establecer un nombre diferente a la lista y ordenar los


resultados por hora o un campo diferente, de manera ascendente o descendente.

En la pestaa Columnas puede establecer la lista de columnas que sern mostradas


en el informe.

89

Red Hat Certified Engineer

Auditoria del sistema

En la pestaa Filtrar por Fecha, puede establecer un rango de fecha y hora para la
bsqueda en los registros de auditora.

En la pestaa Expresin puede escribir el filtro de bsqueda utilizando los comandos


de ausearch.

Ing. Ivan Ferreira

90

Auditoria del sistema

Almacenamiento remoto de los registros de auditoria


Si la seguridad del sistema ha sido comprometida, es posible que los registros de
auditora sean desactivados o eliminados. Por este motivo, es importante almacenar
los registros de auditora en un servidor remoto. An cuando el atacante remueva los
registros o desactive la auditora, los eventos ya habrn sido transferidos al sistema
remoto.
El paquete audisp-plugins debe ser instalado en el cliente y los parmetros para
remote_server y port deben ser establecidos en el archivo de configuracin
/etc/audisp/audisp-remote.conf.
En el servidor, el cual almacenar los registros, el parmetro tcp_listen_port
debe ser establecido con el mismo valor que en los clientes.
Debido a que el demonio auditd est protegido por SELinux, semanage debe
adems tener el puerto listado en su base de datos. Si el servidor y el cliente han
sido configurados para usar un puerto diferente a 60, por ejemplo 2000, ejecute el
siguiente comando para configurar SELinux:
# semanage port -a -t audit_port_t -p tcp 2000

91

Red Hat Certified Engineer

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%]

El paquete instalar un archivo de configuracin de ejemplo, /etc/aide.conf, el


cual deber personalizar.

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

Red Hat Certified Engineer

AIDE

Lneas macro: Definen variables dentro del archivo de configuracin

Lneas de configuracin: Utilizadas para establecer parmetros de


configuracin.

Lneas de seleccin: Indican que archivos deben ser agregados a la base de


datos

Lneas macro
Las lneas macro definen variables utilizando la siguiente sintaxis:
@@define VARIABLE valor

Para eliminar la definicin de la variable, utilice:


@@undefine VARIABLE valor

Puede definir lneas de configuracin dependiendo de la existencia de otras


variables, con la siguientes sintaxis:
@@ifdef VARIABLE | @@ifndef VARIABLE
@@else
@@endif

Las lneas entre @@ifdef y @@endif son utilizadas si VARIABLE es definida. La


declaracin @@ifndev indica que VARIABLE no debe estar definida.
@@ifhost <hostname> | @@ifnhost <hostname>

Estas declaraciones verifican si el nombre de hsot es igual al que AIDE se est


ejecutando.
Para utilizar el valor de una variable, indiquela utilizando la siguiente sintaxis:
@@{VARIABLE}

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

Ing. Ivan Ferreira

94

AIDE

file::/archivo

Los parmetros mas comunes son:

Parmetro database: El URL de donde la base de datos es leda.

Parmetro database_out: El URL de donde la base de datos es escrita.

Parmetro database_new: El URL de donde la otra base de datos es leda


cuando se utiliza la opcin --compare.

Parmetro verbose: El nivel de mensajes a ser desplegados en la salida.

Parmetro report_url: El URL donde reporte es escrito.

Parmetro gzip_dbout: Si la base de datos es compresa o no.

Parmetro acl_no_symlink_follow: Establece si se verifican ACLs para


enlaces simblicos.

Parmetro warn_dead_symlinks: Advertir acerca de enlaces simblicos


muertos.

Parmetro report_attributes: Lista de parmetros que siempre sern


mostrados al final del reporte.

Parmetro config_version: El valor es mostrado en el reporte para


propsitos informativos.

El archivo de configuracin por defecto define las siguientes macro y parmetros:


@@define DBDIR /var/lib/aide
@@define LOGDIR /var/log/aide
database=file:@@{DBDIR}/aide.db.gz
database_out=file:@@{DBDIR}/aide.db.new.gz
gzip_dbout=yes
verbose=5
report_url=file:@@{LOGDIR}/aide.log
report_url=stdout

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

Red Hat Certified Engineer

AIDE

definiciones de grupo. Los grupos por defecto son:


#p:
#i:
#n:
#u:
#g:
#s:
#b:
#m:
#a:
#c:
#acl:
#selinux
#xattrs:
#S:
#md5:
#sha1:
#sha256:
#sha512:
#rmd160:
#tiger:

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

#haval: haval checksum (MHASH only)


#gost:
gost checksum (MHASH only)
#crc32: crc32 checksum (MHASH only)
#whirlpool:
whirlpool checksum (MHASH only)
#R:
#L:
#E:
#>:

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

Es posible crear definiciones de grupo personalizadas, por ejemplo:


DIR = p+i+n+u+g+acl+xattrs

El grupo DIR verifica permisos, inodo, nmero de enlaces, usuario, grupo, ACLs y
atributos extendidos.
NORMAL = R+rmd160+sha256

El grupo NORMAL incluye todas las verificaciones realizadas por el grupo R


(p+i+n+u+g+s+m+c+acl+selinux+xattrs+md5) adems de checksum rmd160 y
sha256.
PERMS = p+i+u+g+acl

El grupo PERMS verifica los permisos, inodo, usuario, grupo y ACLs.

Ing. Ivan Ferreira

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 el directorio /dev sea ignorado.


Las lneas que comienzan con = indican que el directorio indicado debe ser
agragado, pero no los subdirectorios. Por ejemplo la regla:
=/tmp DIR

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

Red Hat Certified Engineer

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

Ing. Ivan Ferreira

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

Para actualizar cambios en el archivo de configuracin o la base de datos, ejecute el


comando:
# aide --update

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

Red Hat Certified Engineer

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

Red Hat Certified Engineer

GnuPG

La llave pblica del receptor asegura la confidencialidad; la llave privada del emisor
verifica la identidad del emisor.

Generar un nuevo par de claves


Para generar un par de claves, debe asegurarse de tener instalado el paquete
pinentry.
# yum install

pinentry

Adems deber asegurarse de que su usuario es el propietario del tty en el cual se


encuentra trabajando:
# ls -la $(tty)

Si no es el propietario del tty, probablemente ha realizado su al usuario, deber salir


de esa sesin e iniciar una nueva desde una terminal virtual o realizando ssh
usuario@localhost.
Para generar un par de claves, utilice el comando gpg con la opcin --gen-key.
$ gpg --gen-key
gpg (GnuPG) 2.0.14; Copyright (C) 2009 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Por favor seleccione tipo de clave deseado:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (slo firmar)
(4) RSA (slo firmar)
Su eleccin:

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

Red Hat Certified Engineer

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.

Introduzca frase contrasea

Frase contrasea ________________________________________

<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.

En este momento, puede presionar aleatoriamente las teclas de su teclado.

Generar un certificado de revocacin


Despus de haber generado un par de claves, el usuario debe, de forma inmediata,
generar un certificado de revocacin para la clave pblica primaria, mediante el uso
de la opcin --gen-revoke. Si el usuario olvidara la contrasea, o si su clave
privada estuviera en peligro o extraviada, este certificado de revocacin podra ser
hecho pblico para notificar a otros usuarios que la clave pblica no debe ser usada
nunca ms. Una clave pblica revocada puede ser usada para verificar firmas
hechas por el usuario en el pasado, pero no puede ser usada para cifrar datos. Esto
tampoco afecta a la capacidad de descifrar mensajes que hayan sido cifrados con la
Ing. Ivan Ferreira

104

GnuPG

clave antes de su revocacin, siempre y cuando el usuario todava tenga acceso a la


clave privada.
$ gpg --output jperez_gpg_revoke.gpg --gen-revoke
sec

jperez@linux.com.py

2048R/4A67F73D 2012-05-04 Juan Perez <jperez@linux.com.py>

Crear un certificado de revocacin para esta clave? (s/N) s


Por favor elija una razn para la revocacin:
0 = No se dio ninguna razn
1 = La clave ha sido comprometida
2 = La clave ha sido reemplazada.
3 = La clave ya no est en uso
Q = Cancelar
(Probablemente quera seleccionar 1 aqu)
Su decisin? 3
Introduzca una descripcin opcional; acbela con una lnea vaca:
>
Razn para la revocacin: La clave ya no est en uso
(No se di descripcin)
Es correcto? (s/N) s
Necesita una frase contrasea para desbloquear la clave secreta
del usuario: "Juan Perez <jperez@linux.com.py>"
clave RSA de 2048 bits, ID 4A67F73D, creada el 2012-05-04
Certificado de revocacin creado.
Por favor consrvelo en un medio que pueda esconder; si alguien consigue
acceso a este certificado puede usarlo para inutilizar su clave.
Es inteligente imprimir este certificado y guardarlo en otro lugar, por
si acaso su medio resulta imposible de leer. Pero precaucin: el sistema
de impresin de su mquina podra almacenar los datos y hacerlos accesibles
a otras personas!

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

Exportar una clave pblica


Para poder enviar una clave pblica a un interlocutor, antes hay que exportarla. Para
ello se usar la opcin de la lnea de rdenes --export. Es necesario un
argumento adicional para poder identificar la clave pblica que se va a exportar.
105

Red Hat Certified Engineer

GnuPG

Como en la opcin anterior --gen-revoke, hay que usar el identificador de clave o


cualquier parte del identificador de usuario para identificar la clave que se desea
exportar.
Por defecto, la clave se exporta en formato binario, y esto puede no ser conveniente
cuando se enva la clave por correo electrnico o se publica en una pgina web. Por
tanto, GnuPG ofrece una opcin de la lnea de rdenes --armor que fuerza que la
salida de la orden sea generada en formato armadura-ASCII, parecido a los
documentos codificados con uuencode. Por regla general, cualquier salida de una
orden de GnuPG, v.g.. claves, documentos cifrados y firmas, pueden ir en formato
armadura-ASCII aadiendo a la orden la opcin -armor.
$ gpg --output jperez_pub.gpg --armor --export jperez@linux.com.py -sign-key

Importar una clave pblica


Se puede aadir una clave pblica al anillo de claves pblicas mediante la opcin
--import.
$ gpg --import plopez.gpg

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

Cifrar y descifrar documentos


Cada clave pblica y privada tiene un papel especfico en el cifrado y descifrado de
documentos. Se puede pensar en una clave pblica como en una caja fuerte de
seguridad. Cuando un remitente cifra un documento usando una clave pblica, ese
documento se pone en la caja fuerte, la caja se cierra, y el bloqueo de la
combinacin de sta se gira varias veces. La parte correspondiente a la clave
privada, esto es, el destinatario, es la combinacin que puede volver a abrir la caja y
retirar el documento. Dicho de otro modo, slo la persona que posee la clave privada
puede recuperar un documento cifrado usando la clave pblica asociada al cifrado.
Con este modelo mental se ha mostrado el procedimiento de cifrar y descifrar
documentos de un modo muy simple. Si el usuario quisiera cifrar un mensaje para
Javier, lo hara usando la clave pblica de Javier, y l lo descifrara con su propia
clave privada. Si Javier quisiera enviar un mensaje al usuario, lo hara con la clave
pblica del usuario, y ste lo descifrara con su propia clave privada.
Para cifrar un documento se usa la opcin -encrypt (-e). El usuario debe tener las
claves pblicas de los pretendidos destinatarios. El programa espera recibir como
entrada el nombre del documento que se desea cifrar o, si ste se omite, una
entrada tpica. El resultado cifrado se coloca en la salida tpica o donde se haya
especificado mediante la opcin -output (-o). El documento se comprime como
medida adicional de seguridad, aparte de cifrarlo. La opcin -recipient (-r) se
usa una vez para cada destinatario, y lleva un argumento extra que especifica la
clave pblica con la que ser cifrado el documento. El documento cifrado slo puede
ser descifrado por alguien con una clave privada que complemente uno de las claves
pblicas de los destinatarios. El usuario, en este caso el remitente, no podr
descifrar un documento cifrado por s mismo a menos que haya incluido su propia
clave pblica en la lista de destinatarios.
$ gpg -e -o mensaje_privado.gpg -r plopez@linux.com.py mensaje_privado.txt

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

Firmar y verificar firmas


Una firma digital certifica un documento y le aade una marca de tiempo. Si

107

Red Hat Certified Engineer

GnuPG

posteriormente el documento fuera modificado en cualquier modo, el intento de


verificar la firma fallara. La utilidad de una firma digital es la misma que la de una
firma escrita a mano, slo que la digital tiene una resistencia a la falsificacin. Por
ejemplo, la distribucin del cdigo fuente de GnuPG viene firmada con el fin de que
los usuarios puedan verificar que no ha habido ninguna manipulacin o modificacin
al cdigo fuente desde que fue archivado. Para la creacin y verificacin de firmas,
se utiliza el par pblico y privado de claves en una operacin que es diferente a la de
cifrado y descifrado. Se genera una firma con la clave privada del firmante. La firma
se verifica por medio de la clave pblica correspondiente.
La opcin de lnea de rdenes --sign (-s) se usa para generar una firma digital. El
documento que se desea firmar es la entrada, y la salida es el documento firmado.
$ gpg -o mensaje_firmado.sig --sign mensaje.txt

El documento se comprime antes de ser firmado, y la salida es en formato binario.


Con un documento con firma digital el usuario puede llevar a cabo dos acciones:
comprobar slo la firma o comprobar la firma y recuperar el documento original al
mismo tiempo. Para comprobar la firma se usa la opcin -verify. Para verificar la
firma y extraer el documento se usa la opcin -decrypt. El documento con la firma
es la entrada, y el documento original recuperado es la salida.
$ gpg --output mensaje.txt --decrypt mensaje_firmado.sig

Documentos con firmas ASCII


Las firmas digitales suelen usarse a menudo para firmar mensajes de correo
electrnicos o en los grupos de noticias. En estas situaciones no se debe comprimir
el documento al firmarlo, ya que para aquellos que no dispongan de un sistema para
procesarlo sera ininteligible.
$ gpg -o mensaje_firmado.txt --clearsign mensaje.txt

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

Incorporacin de gpg al cliente de correo electrnico


Entre los clientes de correo electrnico ms populares se encuentran Mozilla
Thunderbird y Evolution. Es posible utilizar gpg desde estas aplicaciones para firmar
y encriptar mensajes de correo electrnico.

Incorporando gpg a Mozilla Thunderbird


Enigmail es una extensin del cliente Mozilla Thunderbird el cual permite a los
usuarios acceder a las caractersticas de autenticacin y encriptacin
proporcionadas por GnuPG. Enignail puede ser obtenido de:
http://enigmail.mozdev.org/
Con Enigmail es posible:

Encriptar/desencriptar/firmar/autenticar mensajes de correo

Seleccin automtica de la clave del recipiente

Interfaz de administracin de claves

Una vez descargada la extensin de Thunderbird, se instalada desde el desde el


gestor de extensiones de Thunderbird : Herramientas/Extensiones/Instalar. Al
reiniciar Thunderbird, aparecer una nueva pestaa en la barra de herramientas
(openPGP). La extensin puede ser traducida instalando el paquete de lenguaje y
puede ser obtenido de:
http://enigmail.mozdev.org/langpack.html
La instalacin se realiza tambin desde el gestor de extensiones de Thunderbird.
Se debe realizar la configuracin inicial de Enigmail indicando la ruta al programa
gpg seleccionando OpenGPG/Preferencias, completando el cuadro de texto Ruta
al ejecutable...

109

Red Hat Certified Engineer

GnuPG

Opcionalmente, si an no ha creado un par de claves puede hacerlo desde el men


OpenGPG/Administracin de claves.
Finalmente se debe activar el servicio, en el men Editar/Configuracin de las
cuentas.../Seguridad OpenGPG y marcar la casilla de verificacin Activar el
soporte OpenPGP (Enigmail) para esta identidad.

Ing. Ivan Ferreira

110

GnuPG

Una vez activado Enigmail, puede componer mensajes, firmarlos y encriptarlos al ser
enviados.

111

Red Hat Certified Engineer

GnuPG

Incorporando gpg a Evolution


Configurar Evolution para usar GPG es simple, en el men de Evolution, seleccione
Editar/Preferencias/Cuentas de correo. Seleccione su cuenta y haga clic en el
botn Editar y seleccione la pestaa Seguridad.

Ing. Ivan Ferreira

112

GnuPG

Introduzca el ID de su clave gpg, el ID puede ser obtenido ejecutando el comando


gpg list-keys. Si desea firmar digitalmente todos los mensajes salientes,
marque la primera casilla.
La seleccin de la tercera casilla de verificacin encripta la copia del mensaje en la
carpeta Enviados. Esto es til si su casilla de correos no es tan segura como debera
ser.
La cuarta casilla de verificacin debera permanecer desmarcada debido a que se
contradice con el propsito de firmar claves pblicas. Claro, si confa en cada clave
que ingresa al anillo gpg, puede seleccionar esta opcin y no molestarse en firmar
ninguna clave.
Seleccione Aceptar para utilizar GPG.
Para enviar un mensaje firmado y encriptado, en la ventana de composicin del
mensaje, seleccione Seguridad/Firmar con GPG y Seguridad/Encriptar con GPG.

113

Red Hat Certified Engineer

8
Recuperacin ante desastres

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.

Implementar sistemas RAID para evitar la perdida informacin y aumentar la


disponibilidad de los sistemas que almacenan dicha informacin.

5. Hacer copias de seguridad con frecuencia de toda la informacin y


almacenarla en lugar seguro y a ser posible en otro lugar fsico al que se
encuentra el sistema.

La herramienta de reporte del sistema cfg2html


Obtener informacin completa y detallada del hardware y software de un servidor
Linux podra ser un proceso que lleva mucho tiempo. Sin embargo, existe la
herramienta cfg2html la cual obtiene una multitud de datos y genera una pgina html
con toda la informacin recolectada. La herramienta cfg2html puede ser obtenida de:
http://www.cfg2html.com/

Ing. Ivan Ferreira

116

Recuperacin ante desastres

Instalacin y configuracin de cfg2html


Una vez descargado el paquete de instalacin, ejecute el comando rpm para
instalarlo:
# rpm -Uvh cfg2html-linux-<version>.rpm
Edite el archivo /etc/cfg2html/systeminfo y configure las variables:
Host:
Descripcion:
Compaia:
Ubicacion:
Contacto:
Base de datos:
URL:

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

Puede indicar archivos adicionales que deben incluirse en el reporte editando el


archivo /etc/cfg2html/files, por ejemplo, para incluir en el reporte los archivo
/etc/sysconfig/clock, /etc/ldap.conf, /etc/openldap/ldap.conf y
/etc/pam.d/system-auth agregue la siguiente lnea:
FILES="/etc/sysconfig/clock /etc/ldap.conf /etc/ldap/ldap.conf"

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

El programa crear un archivo HTML y un archivo TXT con la configuracin del


sistema llamado nombre-host.html y nombre-host.txt respectivamente.

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

Red Hat Certified Engineer

Recuperacin ante desastres

http://www.mondorescue.org
Mondo Rescue requiere de:

afio: La herramienta de empaquetado de archivos

gzip: El compresor utilizado por Mondo Rescue

mkisofs: La herramienta para crear imagenes ISO

mindi-busybox: Todos los comandos requeridos por mindi

mindi: El constructor de la mini-distribucin del proyecto

mondo: La herramienta de recuperacin de desastres

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

Respaldando datos con Mondo


Antes de iniciar la copia de seguridad, debe modificar el archivo /usr/sbin/mindi y
configurar el tamao mximo del disco RAM, de lo contrario tendr problemas
durante el inicio del CD creado. Para ello, edite el archivo /usr/sbin/mindi y agregue
a las opciones de arranque indicadas en ADDITIONAL_BOOT_PARAMS:
ramdisk_blocksize=1024

Para iniciar la copia de seguridad del sistema, ejecute como root el siguiente
comando:
# /usr/sbin/mondoarchive

Ing. Ivan Ferreira

118

Recuperacin ante desastres

Seleccione una opcin de la lista de medios de respaldo soportados. Si desea


realizar una copia de seguridad o restaurar a travs de la red utilice NFS. Si desea
realizar una copia de respaldo o restaurar desde una particin local o si desea
almacenar imgenes ISO en un directorio local para grabarlos posteriormente,
seleccione hard disk. Si seleccione CD/DVD+-R[W] o tape en general el hardware
ser detectado y configurado automticamente.

Seleccione el grado de compresin que desea. Si su dispositivo de cinta realiza


compresin por hardware, seleccione None. Seleccione Maximum si tiene una CPU
muy rpida, Average debera ser apropiado para la mayora de las situaciones.

119

Red Hat Certified Engineer

Recuperacin ante desastres

Si desea respaldar todo el equipo, utilice la opcin por defecto /. De lo contrario,


especifique un conjunto de directorios a respaldar separados por un espacio.

Si desea excluir ciertos directorios, especifique la lista de directorios a ser excluidos


separados por un espacio.

Ing. Ivan Ferreira

120

Recuperacin ante desastres

El programa solicita confirmacin de si el kernel es estndar, los usuarios de Red


Hat debe seleccionar yes debido a que el proveedor produce kernels confiables.

Si esta seguro de continuar, seleccione yes para iniciar la copia de seguridad en la


ventana de confirmacin.

121

Red Hat Certified Engineer

Recuperacin ante desastres

Mondo llama a Mindo, que genera imgenes de discos iniciables e imgenes de


discos auxiliares basados en su distribucin y sistema de archivos existente.
Finalmente, Mondo inicia la copia de seguridad de los datos. Este proceso puede
llevar mucho tiempo dependiendo de la cantidad de informacin a respaldar, la
velocidad de la CPU y la cantidad de memoria.
Una vez finalizada la copia de seguridad, se solicitar que se creen los discos de
arranque. Los discos de arranque no son necesarios si realiza copia de seguridad a
CD/DVD, pero son necesarios si respalda a cinta o NFS.

Restaurando datos con Mondo


Si por algn motivo no puede iniciar desde el CD/DVD generado, el primer CD/DVD
de backup contiene un conjunto de imgenes de disquete que le proporciona la
misma funcionalidad que el CD.
Es posible seleccionar los siguientes modo de restauracin:

Interactive Restauracin Interactiva, permite restaurar paso a paso el


sistema o un subconjunto de archivos.

Nuke Destruye los distos del disco y restaura todo el sistema, de forma
automtica y desatendida.

Expert Modo experto, inicia un shell.

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

Ing. Ivan Ferreira

122

9
Security Enhanced Linux

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.

Ing. Ivan Ferreira

124

Security Enhanced Linux

Adems de ejecutarse en un modo impositivo, SELinux puede ejecutarse en un


modo permisivo, donde el AVC es verificado y se registran los rechazos, pero
SELinux no hace cumplir esta poltica.
En una mquina no SELinux, cada proceso que se ejecuta como root puede acceder
al archivo /etc/shadow. Esto quiere decir que cualquier problema de seguridad con
un binario que tiene SETUID root o demonio de red que se ejecuta como root puede
ser catastrfico. SELinux permite restringir a los demonios y permitir el acceso
solamente a los archivos que necesitan, por ejemplo, BIND solamente puede leer
sus archivos de configuracin y proporcionar servicios en el puerto 53, pero no
puede acceder al /etc/shadow, /home, /root o cualquier otro recurso significante
ni proporcionar servicios en otro puerto de red. De tal forma que en un sistema
SELinux, si BIND fue explotado, lo peor que puede realizar es enviar paquetes DNS
falsos, esto es mucho mejor que un control remoto como root.
La implementacin de SELinux utiliza control de acceso basado en rol (role-based
access control RBAC), el cual proporciona control basado en roles y Aplicacin
de Tipo (Type enforcement TE). TE utiliza la matriz para manejar el control de
acceso, aplicando las reglas de las polticas basados en los tipos de los procesos y
objetos.
125

Red Hat Certified Engineer

Security Enhanced Linux

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.

Examinando los contextos de seguridad


SELinux modifica los comandos del sistema agregando la opcin -Z para mostrar el
contexto de seguridad para objetos y sujetos. Por ejemplo:
# ls -Z

Muestra el contexto de seguridad de objetos del sistema de archivos y el comando:


# ps -Z

Muestra el contexto de seguridad de los procesos.


Otro comando til es id, el cual muestra el contexto de seguridad de su shell, esto
es, el usuario actual, el papel y el tipo. Por ejemplo:
# id -Z
user_u:system_r:unconfined_t

Modelo de seguridad basado en dominios


En un modelo de seguridad basado en dominios, cada proceso se ejecuta en un
dominio de seguridad, y cada recurso (archivo, directorio, socket, etc) tiene un tipo
Ing. Ivan Ferreira

126

Security Enhanced Linux

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:

Tipo(s) origen: Normalmente el tipo de dominio de un proceso

Tipo(s) destino: El tipo de un objeto siendo accedido por el proceso

Clase(s) de Objeto: La clase de objeto a la que el acceso especificado es


permitido

Permiso(s): El tipo de acceso que es permitido al tipo origen hacia el tipo


destino para la clase de objeto indicada.

Por ejemplo, considere la siguiente regla:


allow unconfined_t bin_t : file

{ read execute getattr };

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

Red Hat Certified Engineer

Security Enhanced Linux

root permite cambiar cualquier contrasea. En Linux, el archivo /etc/shadow tiene


permiso de lectura solamente para el usuario root, los usuarios pueden cambiar sus
contraseas debido a que el programa tiene el bit SETUID activado, de tal forma que
cuando se ejecuta por cualquier usuario, se ejecuta bajo el usuario root (el
propietario del programa passwd).
Esto significa que cualquier programa que se ejecuta como root tiene la posibilidad
de modificar el archivo shadow. Lo que permite TE es asegurar que solamente el
programa passwd (o programas confiables similares) puedan acceder al archivo
shadow, sin importar que usuario ejecuta el programa.
Observe el contexto de seguridad del archivo /etc/shadow:
# ls -laZ /etc/shadow
-r-------- root root system_u:object_r:shadow_t

/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

Como podr observar en el resultado del comando, el programa passwd se ejecuta


en el tipo de dominio passwd_t.
Examine la siguiente regla allow:
allow passwd_t shadow_t : file { ioctl read write create getattr setattr lock
relabelfrom relabelto append unlink link rename };

El propsito de la regla es permitir al tipo de dominio del programa passwd


(passwd_t) el acceso necesario al tipo del archivo shadow (shadow_t) para mover
y crear un nuevo archivo shadow.

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

Security Enhanced Linux

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

El programa /usr/bin/passwd pertenece al tipo passwd_exec_t.


Para lograr la transicin de dominio, se necesitan reglas TE adicionales.
allow user_t passwd_exec_t : file { getattr execute };
allow passwd_t passwd_exec_t : file entrypoint;
allow unconfined_t passwd_t : process transition;

La primera regla permite al shell de jperez (user_t) ejecute el programa passwd


que pertenece al tipo de dominio passwd_exec_t.
La segunda regla proporciona un punto de entrada (entrypoint) al dominio
passwd_t. El permiso entrypoint define qu archivos ejecutables (programas)
pueden entrar en un dominio. Para una transicin de dominio, el nuevo dominio al
cual se entra (en este caso passwd_t) debe tener una regla de acceso
entrypoint que permita al archivo ejecutable transicionar al nuevo dominio.
En este caso, asumiendo que solamente en el archivo passwd est etiquetado con
passwd_exec_t, y que solamente el tipo passwd_t tiene un punto de acceso
(entrypoint) para passwd_exec_t, tenemos una situacin en la cual solamente
el programa passwd puede ejecutarse en el dominio passwd_t.

129

Red Hat Certified Engineer

Security Enhanced Linux

En la ltima regla, la clase de objeto es process, significando que la clase de objeto


representa procesos. Esta regla permite el acceso transition. Este permiso es
necesario para permitir a un tipo de dominio de un proceso cambiar el contexto de
seguridad. El tipo original (user_t) debe tener el permiso de transicin al nuevo tipo
(passwd_t) para que se permita la transicin de dominio.
Cuando las tres reglas son permitidas por la poltica TE, una transicin de dominio
puede ocurrir.
Ahora, el problema es cmo jperez indica que desea realizar una transicin de
dominio. Las reglas anteriores permiten la transicin de dominio, pero no lo
requieren. En general, no se desea que los usuarios realicen la transicin de dominio
explcitamente. Se necesita una forma para que la transicin de dominio ocurra por
defecto.

Transicin de dominio por defecto


Para permitir que la transicin de dominios ocurra por defecto, necesitamos una
nueva regla, la regla type_transition. Esta regla permite indicar en la poltica
SELinux transiciones por defecto que deberan ser intentadas si una transicin
explcita no se ha solicitado. Una regla de transicin podra ser:
type_transition user_t passwd_exec_t : process passwd_t;

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.

La funcin de los roles


SELinux proporciona una forma de control de acceso basado en roles (RBAC). Los
roles limitan los tipos a los cuales un proceso puede transicionar basndose en el
identificador de rol del contexto de seguridad de un proceso. De esta forma, una
poltica puede tener un rol que permita transicionar a un conjunto de tipos de
dominios, definiendo as los lmites del rol.
An cuando las reglas TE permitan que el programa passwd se ejecute por el tipo
de dominio user_t e ingrese al nuevo dominio passwd_t, al rol de jperez debe
asociarse al nuevo dominio para que la transicin ocurra. Una regla de rol sera
como la siguiente:
role user_r type passwd_t;
Esta declaracin role define el rol user_t y asocia el tipo passwd_t al rol. Esta
asociacin indica que el tipo passwd_t puede coexistir en el contexto de seguridad
Ing. Ivan Ferreira

130

Security Enhanced Linux

con el rol user_r. Sin este rol, el nuevo contexto user_u:user_r:passwd_t no


podra ser creado.
Una poltica puede definir roles an ms restringidos para usuarios especficos. Por
ejemplo, imagine una poltica que crea un rol llamado restricted_user_r,
idntico a user_r excepto que no est asociado con el tipo passwd_t. Si el rol de
jperez es restricted_user_r en lugar de user_r, jperez no estara autorizado a
ejecutar el programa passwd an cuando las reglas TE permitan a su tipo de
dominio el acceso.
El rol por defecto al cual pertenece un usuario est establecido en el archivo
/etc/selinux/<politica>/contexts/default_contexts.

Contexto de seguridad del sistema de archivos


SELinux almacena el contexto de seguridad en atributos extendidos (xattrs). Xattrs
son almacenados como una propiedad nombre-valor asociado con los archivos.
SELinux utiliza el atributo security.selinux.
Un sistema de archivos podra necesitar ser re-etiquetado. Esto normalmente ocurre
cuando se etiqueta un sistema de archivos SELinux por primera vez, o cuando se
cambia entre distintos tipos de polticas.
El mejor mtodo para etiquetar un sistema de archivos es dejando al proceso init
realizarlo durante el inicio. Para ello, debe crear el archivo /.autorelabel:
# touch /.autorelabel
# reboot

Permitiendo que el etiquetado se realice durante el arranque, se asegura que las


aplicaciones tienen las etiquetas adecuadas cuando son iniciadas, y que adems
son iniciadas en el orden correcto.
Es posible re-etiquetar un sistema de archivos usando el comando fixfiles, o reetiquetarlo basndose en la base de datos RPM:
# fixfiles relabel
# fixfiles -R <nombre_paquete> restore

Existe un tercer mtodo que es la ejecucin del comando make relabel.

Copiar o mover archivos


En operaciones de sistema de archivos, el contexto de seguridad debe ser
considerado en trminos de la etiqueta de un archivo, el proceso que lo accede y los
directorios en los que la operacin se realiza. Debido a esto, copiar o mover un

131

Red Hat Certified Engineer

Security Enhanced Linux

archivo podra tener resultados inesperados.


A menos que indique lo contrario, cp sigue el comportamiento por defecto cuando
crea un nuevo archivo, basndose en el dominio del proceso creador y el tipo del
directorio destino. A menos que exista una regla especfica para establecer la
etiqueta, el archivo hereda el tipo del directorio destino. La opcin -Z
user:role:type permite especificar una etiqueta para el nuevo archivo.
Por ejemplo, la creacin de archivos en el HOME del usuario resulta de la siguiente
forma:
# cd $HOME
# touch archivo1
# ls -Z archivo1
-rw-r--r-- root
-rw-r--r-- root

archivo2
archivo2
root user_u:object_r:user_home_t
root user_u:object_r:user_home_t

archivo1
archivo2

A los archivos creados en los directorios HOME se establece el tipo user_home_t


por defecto.
La copia de un archivo a otro directorio crea un archivo en la nueva ubicacin con el
nuevo tipo basado en el proceso que lo crea y el directorio destino:
# cp $HOME/archivo1 /tmp
# ls -Z /tmp/archivo1
-rw-r--r-- root root user_u:object_r:user_tmp_t

/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

Al mover archivos con el comando mv, el archivo mantiene el contexto de seguridad.


Esto podra provocar inconvenientes, por ejemplo, si mueve archivos de tipo
user_home_t al directorio /var/www/html, httpd no podr servir el archivo hasta
que re-etiquete el archivo. Es posible re-etiquetar un archivo con el comando chcon.

Re-etiquetar un archivo o directorio


Utilice el comando chcon cuando tiene un archivo que no es del tipo de desea.
Debe conocer el nuevo tipo:
# ls -Z /var/www/html/welcome.html
-rw-r--r-- root root user_u:object_r:user_home_t

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

Security Enhanced Linux


# chcon -t httpd_sys_content_t /var/www/html/welcome.html

Puede utilizar la opcin -R para cambiar el contexto de forma recursiva.


Utilice el comando restorecon cuando desea restaurar los archivos al contexto por
defecto definido en la poltica. Por ejemplo, para restaurar el contexto de todos los
archivos del directorio /var/www/html ejecute el siguiente comando:
# restorecon -R /var/www/html

Haciendo los cambios de contexto de seguridad permanente


La modificacin del contexto de seguridad de los archivos es persistente
entre reinicios del sistema a menos que el sistema de archivos sea reetiquetado. Para hacer que el contexto de seguridad de los archivos no
cambien, debe establecer el contexto de seguridad por defecto de los
archivos agregando la especificacin de archivo, tipo y contexto de
seguridad SELinux al archivo:
/etc/selinux/<politica>/contexts/files/file_contexts.local

No cree o modifique este archivo manualmente, utilice la herramienta


semanage. Para establecer que todos los archivos que existen en el
directorio /web/html sean etiquetados con httpd_sys_content_t ejecute
el siguiente comando:
# semanage fcontext -a -t httpd_sys_content_t '/web/html(/.*)?'

La opcin -a indica que se desea agregar una definicin de contexto


especificado con -t para los archivos indicados con la expresin regular.
Para verificar los contextos definidos, utilice el comando con semanage
con la opcin -l.
# semanage fcontext -l

Poltica SELinux Targeted


La poltica SELinux es altamente configurable. Bajo la poltica targeted, cada sujeto y
objeto se ejecuta en el dominio unconfined_t excepto ciertos demonios
especficos. Los objetos en el sistema que se encuentran en el dominio
unconfined_t no tienen restricciones SELinux y utilizan el control de acceso
discrecional de Linux normal (DAC). Esta poltica es lo suficientemente flexible para
utilizarse en una infraestructura empresarial. Los demonios que son parte de la
133

Red Hat Certified Engineer

Security Enhanced Linux

poltica targeted se ejecutan en su propio dominio y estn restrictos en cada


operacin que el demonio puede hacer en el sistema. De esta forma, demonios que
son explotados estn limitando en el dao que podran provocar.
La poltica opuesta a la targeted es la poltica stritct. Esta poltica no se distribuye
con Red Hat/CentOS Enterprise Linux pero puede ser descargada. En la poltica
strict, cada sujeto y objeto se encuentra en un dominio de seguridad especfico, con
todas las interacciones y transiciones individualmente considerada en las reglas de
la poltica. Este es un entorno mucho mas complejo.
Esta seccin se enfoca en la administracin de un sistema que utiliza la poltica
targeted.

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.

Verificacin del estado de SELinux


El comando sestatus proporciona una visin del estado de SELinux. El comando
muestra el estado, el punto de montaje del sistema de archivos selinuxfs, el modo de
operacin actual, el nombre de la poltica y la versin.
# sestatus
SELinux status:
SELinuxfs mount:
Current mode:
Mode from config file:
Policy version:
Policy from config file:

enabled
/selinux
permissive
enforcing
21
targeted

Modificando el modo de operacin de SELinux


Es posible habilitar y deshabilitar SELinux durante la ejecucin del sistema o durante
el arranque usando la lnea de comandos o la interfaz GUI. SELinux puede operar en
modo permissive o enforcing, o puede esta deshabilitado. En modo permissive,
SELinux registra lo que debera hacer pero no deniega ninguna operacin. En modo
enforcing, SELinux deniega la operacin.
Para cambiar el modo de operacin con el sistema en ejecucin ejecute el comando
setenforce:
setenforce [0|1]

La opcin 0 establece el modo permissive, la opcin 1 establece el modo enforcing.


Ing. Ivan Ferreira

134

Security Enhanced Linux

Para visualizar el estado actual puede utilizar el comando getenforce o


sestatus.
Es posible desactivar el modo enforcing para un servicio en particular en lugar de
todo el sistema, por ejemplo, si tiene problemas con el demonio named, puede
deshabilitar el modo enforcing para ese demonio solamente utilizando los Dominios
Permisivos.

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

El comando getsebool -a lista todos los booleans y su estado actual:


# getsebool -a

Si especifica un boolean en particular obtendr el valor del mismo, o puede indicar


una lista separada por espacios:
# getsebool allow_console_login allow_daemons_dump_core

Para cambiar el valor de un boolean, utilice el comando setsebool:


# setsebool httpd_can_network_connect_db on

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

Red Hat Certified Engineer

Security Enhanced Linux

Para resolver estos problemas, Red Hat Enterprise/CentOS 6 introduce el concepto


de dominios permisivos. Los dominios permisivos permiten a un administrador
configurar a un nico proceso (dominio) ejecutarse de manera permisiva, en lugar de
dejar a todo el sistema en modo permisivo o con SELinux desactivado.
Para hacer un dominio permisivo, ejecute el comando:
# semanage permissive -a <dominio>

Para visualizar una lista de los dominios en modo permisivo, ejecute el comando:
# semodule -l | grep permissive

Si desea que un dominio ya no se ejecute en modo permisivo, ejecute el comando:


# semanage permissive -d <dominio>

Si desea conocer los nombres de los dominios posibles, ejecute el comando:


# seinfo -adaemon -x

Habilitar o deshabilitar SELinux


Desde la lnea de comandos, puede editar el archivo /etc/sysconfig/selinux.
El archivo de configuracin es muy explicativo. Cambiando el valor de SELINUX o
SELINUXTYPE modifica el estado de SELInux y el nombre de la poltica el siguiente
reinicio del sistema.
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=enforcing
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted

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.

Realizando copias de seguridad de atributos extendidos


La utilidad tar en versiones anteriores a Red Hat Enterprise 5, no soporta el
archivado y restauracin de atributos extendidos. En lugar de tar, puede usar la
utilizad star, con las opciones -xattr -H=exustar, por ejemplo:
# star -xattr -H=exustar -c -f archivos_web.star /var/www/html

Ing. Ivan Ferreira

136

Security Enhanced Linux

Para restaurar, simplemente utilice la opcin

xattr:

# star -xattr -x -f archivos_web.star

Red Hat Enterprise 5 proporciona nuevas opciones que permiten el archivado de


atributos extendidos con el comando tar. Actualmente, tar tiene las siguientes tres
opciones:

--selinux

--acls

--xattrs

Archiva los atributos SELinux de archivos y directorios.

Archiva los atributos ACL de archivos y directorios

Archiva todos los atributos extendidos de archivos y directorios.


Esto incluye SELinux, ACLs y cualquier otro xattrs.

Por defecto, tar no archiva los xattrs, asi que estas opciones son necesarias para
mantener buenas copias de seguridad.

Entendiendo un mensaje avc: denied


Cuando SELinux deniega una operacin, un mensaje es registrado en los registros
del sistema /var/log/messages y /var/log/audit/audit.log. El siguiente
ejemplo muestra una denegacin generado cuando el demonio httpd intenta
acceder a un archivo que no tiene la etiqueta correcta:
Feb
23
02:42:00
localhost
kernel:
audit(1172209320.397:78):
avc:
denied
{ getattr } for
pid=2631 comm="httpd" name="welcome.html" dev=dm-0 ino=1275217
scontext=root:system_r:httpd_t:s0
tcontext=system_u:object_r:user_home_t:s0
tclass=file
Feb
23
02:42:00
localhost
kernel:
audit(1172209320.409:79):
avc:
denied
{ getattr } for
pid=2631 comm="httpd" name="welcome.html" dev=dm-0 ino=1275217
scontext=root:system_r:httpd_t:s0
tcontext=system_u:object_r:user_home_t:s0
tclass=file

El mensaje se compone de los siguientes campos:

137

Fecha: Feb 23 02:42:00

Nombre de host: localhost

Mensaje de auditora del kernel: audit(1172209320.409:79)

Operacin denegada: avc:

Operacin realizada: { getattr }

ID del proceso: pid=2631

Aplicacin: comm="httpd"

denied

Red Hat Certified Engineer

Security Enhanced Linux

Archivo al cual intent acceder la aplicacin: name="welcome.html"

Dispositivo que contiene el archivo: dev=dm-0

Nmero de inodo del archivo: ino=1275217

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):

Clase de objeto: tclass=file

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

Realizando personalizaciones menores a una poltica existente


Puede resolver denegaciones SELinux usando nuevas reglas de poltica para
permitir ciertos comportamientos. Las ramificaciones de seguridad son imposibles de
predecir. En el peor de los casos, la seguridad quedara controlada por el control de
acceso discrecional.
El programa audit2allow, proporcionado por el paquete rpm policycoreutils,
permite agregar reglas personalizadas menores a una poltica existente. Es
importante destacar que aunque audit2allow genera una regla, no implica que
sea una buena regla o que sea segura, debe verificar la regla para mayor seguridad.
Utilizando audit2allow Red Hat/CentOS Enterprise 5 o superior

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

Security Enhanced Linux

checkpolicy, asegrese que el paquete esta instalado.


Los mensajes AVC pueden ser vistos en el resultado del comando sealert -l si el
servicio setroubleshoot est activo.
# mkdir -p /root/selinux/local_rules
# cd /root/selinux/local_rules/

Copie el mensaje avc: denied mostrado en el archivo de registro a un archivo


temporal, por ejemplo, /tmp/avc.msg y ejecute:
# audit2allow -M local < /tmp/avc.msg

El comando generar dos archivos, local.te y local.pp.


El archivo local.te consta de tres partes. La llamada module introduce
declaraciones que permiten al mdulo funcionar, incluyendo la declaracin del
mdulo y el requerimiento de roles, clases y permisos. Asegrese que el nombre
declarado aqu concuerda con el nombre del archivo (en este caso local.te).
El bloque require lista los smbolos que este mdulo utiliza y deben ser declarados
en otros mdulos.
El resto del archivo es la poltica. Si ha modificado manualmente el archivo
local.te luego de su verificacin, debe volver a compilar el mdulo, para ello,
ejecute el comando:
# checkmodule -M -m -o local.mod local.te
# semodule_package -o local.pp -m local.mod

Instale el mdulo ejecutando el siguiente comando:


# semodule -i local.pp

El cambio es permanente y se mantendr al reiniciar el sistema.


Los mdulos son identificados por un nombre nico. Esto significa que si inserta otro
mdulo local.pp, reemplazar el actual. Por tanto debera mantener este archivo
local.te y agregar a l las reglas que necesita para otras personalizaciones.
Para listar los mdulos SELinux cargados, ejecute el comando:
# semodule -l

Para descargar un mdulo ejecute semodule -r <nombre_modulo>, por ejemplo:


# semodule -r local

Podra utilizar el comando ausearch -m avc para listar los mensajes todos los

139

Red Hat Certified Engineer

Security Enhanced Linux

mensajes avc y combinarlo con el comando audit2allow, por ejemplo:


# ausearch -m avc | audit2allow -M local

El comando ausearch permite especificar rangos de tiempo con las opciones -ts
y -te.

SELinux y los servicios de red


La configuracin por defecto de SELinux puede impedir que ciertos servicios no
funcionen como se espera o se est acostumbrado.
En muchas ocasiones, es necesario habilitar explcitamente una funcionalidad sobre
un servicio dado utilizando system-config-securitylevel, system-configselinux o setsebool.
NIS y SELinux

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

Para verificar la configuracin, ejecute el comando:


# getsebool allow_ypbind

Otros valores para NIS incluyen los siguientes:

yppasswdd_disable_trans: Deshabilita SELinux para yppasswd si se


configura a 1.

ypxfr_disable_trans: Deshabilita SELinux para ypxfr si se configura a 1.

ypbind_disable_trans: Deshabilita SELinux para ypbind si se configura a


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

Security Enhanced Linux

establecer use_nfs_home_dirs a 1 en cada cliente utilizando el servidor NFS,


para ello, ejecute el siguiente comando como root:
# setsebool -P use_nfs_home_dirs 1

Para verificar la configuracin, ejecute el comando:


# getsebool

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>

Si el directorio est dentro de un directorio HOME, posiblemente deba establecer el


contexto de seguridad samba_share_t a todo el directorio home.
Cuidado: Si el sistema de archivos es re-etiquetado por SELinux, los cambios en el
contexto de seguridad sern sobreescritos. Para realizar los cambios permanentes
incluso luego de un re-etiquetado, consulte la seccin Haciendo los cambios de
contexto de seguridad permanente.
Ejecute el siguiente comando para permitir directorios home o subdirectorios de
estos ser compartidos:
# setsebool -P samba_enable_home_dirs 1

Para verificar la configuracin, ejecute el comando:


# getsebool

samba_enable_home_dirs

Si se comparte datos por ms de un protocolo, por ejmplo FTP y Samba, el contexto


de seguridad de los archivos debe ser establecido a public_content_t o
public_content_rw_t.
Para utilizar recursos Samba como directorios home, debe establecer
use_samba_home_dirs a 1 en cada sistema cliente que desea montar los
directorios home.
Los valores booleans de SELinux que afecta a Samba son descritos en la pgina

141

Red Hat Certified Engineer

Security Enhanced Linux

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

Si est configurando un directorio para uploads, debe establecer el contexto de


seguridad a public_content_rw_t, por ejemplo:
# chcon -R -t public_content_rw_t /var/ftp/upload

Para
permitir
subir
archivos
al
directorio
upload,
allow_ftp_anon_write utilizando el comando setsebool:

debe

habilitar

# setsebool -P allow_ftpd_anon_write 1

Para verificar la configuracin, ejecute el comando:


# getsebool allow_ftpd_anon_write

Para permitir el acceso a directorios HOME ejecute:


# setsebool -P ftp_home_dir 1

Los valores booleans de SELinux que afecta a FTP son descritos en la pgina man
ftpd_selinux.

Ing. Ivan Ferreira

142

10
Seguridad del sistema de archivos

Seguridad del sistema de archivos

Opciones de montado de sistema de archivos


Muchos ataques de seguridad que son utilizadas contra los equipos, dependen de
que puedan ejecutarse comandos en el directorio /tmp. Si este directorio es una
particin separada, puede incrementar la proteccin marcndolo como no ejecutable.
Cuando monta una particin, existen muchas opciones que pueden ser utilizadas,
las ms interesantes desde el punto de vista de seguridad son:

nosuid No permite la ejecucin de programas con el bit SUID

noexec No permite programas ejecutables

nodev No permite la creacin de dispositivos

Montando un sistema de archivos con estas opciones aumenta la proteccin, pero


no detiene la ejecucin de archivos. El linker y loader de Linux permitir que binarios
se ejecuten.
Por ejemplo, si se monta el sistema de archivos /tmp con la opcin noexec:
# mount -o remount,noexec /tmp

Y se copia un ejecutable a este directorio:


# cp -p /bin/ls /tmp

Si probamos la ejecucin del archivo debera fallar:


# /tmp/ls
bash: /tmp/ls: Permission denied

Sin embargo, es posible ejecutarlo utilizando la loader de Linux:


# /lib/ld-linux.so.2 /tmp/ls

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

Para que los cambios tomen efecto inmediatamente, ejecute el comando:


# mount -o remount /tmp

Ing. Ivan Ferreira

144

Seguridad del sistema de archivos

El directorio /var/tmp debera ser adems reemplazado por un enlace simblico al


directorio /tmp:
# rm -fr /var/tmp
# ln -s /tmp /var/tmp

Un problema que podra presentarse al agregar la opcin noexec al directorio /tmp


es que el servicio logrotate no podr rotar los logs correctamente. Para solucionar
esto, edite el archivo /etc/cron.daily/logrotate para utilizar otro directorio
temporal:
#!/bin/sh
if [ ! -e "/logrotate_tmp" ]; then
mkdir /logrotate_tmp
fi
export TMPDIR=/logrotate_tmp

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 por defecto de los archivos


Cuando se crea un archivo o directorio, ste se crea con ciertos permisos por
defecto. Los permisos por defecto estn dados por la configuracin del umask.
El comando umask permite definir qu permisos tendrn por defecto los archivos y
directorios son creados.
El comando umask sin parmetros nos devuelve dicho valor :
$ umask
022

Los permisos se calculan en base al umask de la siguiente manera:


Para nuevos archivos ejecutables (Programas compilados):
777

Permisos predeterminados

- 022

Se resta el valor de umask

755

145

Permisos permitidos

Red Hat Certified Engineer

Seguridad del sistema de archivos

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

Se resta el valor de umask

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

Grupos de usuario privado


Red Hat Linux utiliza un esquema de Grupo de Usuario Privado (User Private
Group - UPG), lo que hace ms fcil de manejar los grupos.
Se crea un UPG siempre que se aade un nuevo usuario al sistema. Un UPG tiene
el mismo nombre que el usuario para el cual se crea y ese usuario es el nico
miembro de ese UPG.
Los UPGs hacen que sea ms seguro configurar los privilegios por defecto para un
nuevo archivo o directorio lo que permite a ambos, tanto el usuario como al grupo de
ese usuario hacer modificaciones al archivo o directorio.
El parmetro que determina qu permisos son aplicados a un nuevo archivo o
directorio es llamado un umask y es configurado en el archivo /etc/bashrc.
Ing. Ivan Ferreira

146

Seguridad del sistema de archivos

Tradicionalmente, en sistemas Linux el umask es configurado a 022, lo que slo


permite al usuario que crea el archivo o directorio realizar modificaciones. Bajo este
esquema, todos los dems usuarios incluyendo miembros del grupo del creador no
tienen derecho a realizar ninguna modificacin. Sin embargo, bajo el esquema UPG,
esta "proteccin de grupo" no es necesaria puesto que cada usuario tiene su propio
grupo privado.

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

Red Hat Certified Engineer

Seguridad del sistema de archivos

Archivos SUID y SGID


Los archivos SUID y SGID de su sistema son potenciales riesgos de seguridad y
deberan ser controlados. Como estos programas garantizan privilegios especiales al
usuario que los ejecuta, es necesario estar seguro que no hay instalados programas
inseguros. Un truco favorito de los crackers es explotar programas con el bit SUID, y
entonces dejar un programa SUID como puerta trasera para entrar la prxima vez,
incluso aunque el agujero original ya est tapado.
Encuentre todos los programas SUID/SGID de su sistema y mantener la pista de lo
que son, para que est prevenido de cualquier cambio que podra indicar un
potencial intruso. Use el siguiente comando para localizar todos los programas
SUID/SGID en su sistema:
# find / -type f \( -perm -04000 -o -perm -02000 \)

Incluso podra crear una base de datos de programas SUID con


# find / -type f \( -perm -04000 -o -perm -02000 \) > /root/programas_suid

y posteriormente verificar si ha aparecido alguno nuevo con el siguiente script:


#!/bin/bash
DB=/root/programas_suid
for ARCHIVO in `find / -type f \( -perm -04000 -o -perm -02000 \)`
do
if ! grep $ARCHIVO $BD
then
echo "$ARCHIVO es un nuevo fichero con SUID"
fi
done
echo "Actualiza la base de datos si es necesario"

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.

Permisos de escritura global


Los ficheros con permiso de escritura global, particularmente los del sistema, pueden
ser un agujero de seguridad si un cracker obtiene acceso a su sistema y los
modifica. Adems, los directorios con permiso de escritura global son peligrosos, ya
Ing. Ivan Ferreira

148

Seguridad del sistema de archivos

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

Puede establecer un nuevo propietario para esos archivos con el comando:


# find / \( -nouser -o -nogroup \) -exec chown root:root {} \;

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

Cree un archivo vaco dentro del directorio:


# touch ~/.rhosts/lock ~/.netrc/lock

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

De esta forma, como el directorio no se encuentra vaco, el usuario no podr borrarlo


de su HOME, como no tiene los permisos apropiados, no podr borrarlo de forma
recursiva, tampoco podr crear archivos con el mismo nombre.

Archivos extraos
Debe tener cuidado de archivos extraos que pudieran estar instalados en su
149

Red Hat Certified Engineer

Seguridad del sistema de archivos

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
#

93560 feb 25 09:35


1024 feb 25 09:35 .
4096 feb 25 09:35 ..

Es posible notar la presencia de un archivo cuyo nombre contiene caracteres no


imprimibles, en este caso, el nombre del archivo est compuesto nicamente de
espacios en blanco. Otro ejemplo podra ser un archivo cuyo nombre est
compuesto solamente por puntos, para engaar a la vista, como el siguiente:
# ls -la tmp/
total 101
drwxr-xr-x 2 root root
drwx------ 28 root root
drwxr-xr-x 1 root root

1024 feb 25 09:45 .


4096 feb 25 09:35 ..
93560 feb 25 09:45 ...

Para encontrar archivos extraos como este en el sistema de archivos ejecute el


comando find de la siguiente forma:
# find /usr/share/terminfo/ ! -name "*[a-zA-Z0-9]*" ! -name ".*[a-zA-Z0-9]*" \
! -name "." -ls

El comando buscar archivos cuyo nombre contenga nicamente caracteres


especiales.

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.

Ing. Ivan Ferreira

150

Seguridad del sistema de archivos

La sintaxis bsica del comando es la siguiente:


chattr [ -RV ] [ -v version ] [ modo ] archivos

Las opciones son:


Opcin

Descripcin

-R

Cambia atributos de forma recursiva.

-V

Muestra mayor informacin.

Los atributos o modo son puede otorgarse o quitarse anteponiendo el signo + o -,


algunos atributos son:
Modo

Descripcin

Solo puede abrirse para agregar datos (append).

El archivo es inmutable, no puede borrarse o moverse, no


puede crearse enlaces simblicos y ningn dato puede ser
escrito en el archivo.

Los bloques de disco que ocupaba el archivo son rellenados


con ceros cuando el archivo es borrado.

Para establecer los atributos a un archivo ejecute:


# chattr +a /var/log/messages

Para verificar los atributos de un archivo utilice el comando lsattr:


# lsattr /var/log/messages

Listas de acceso con ACL


En algunos casos, el sistema de permisos de GNU/Linux puede resultar insuficiente
para nuestras necesidades. El sistema de ACL's (listas de acceso) extiende las
posibilidades de el clsico sistema pudiendo aadir permisos de acceso a archivos a
varios usuarios o grupos especficos, en lugar de uno slo.
Para poder utilizar ACLs, es necesario que el sistema de archivos se monte con la
opcin -o acl. Para ello, edite el archivo /etc/fstab y agregue acl a la lista de
opciones de montado y luego ejecute:
# mount -o acl,remount <punto_de_montaje>

Para hacer que los cambios surjan efecto inmediatamente.

151

Red Hat Certified Engineer

Seguridad del sistema de archivos

Modificando las listas de acceso


El comando getfacl nos permite ver las listas de acceso de un archivo. Por
ejemplo, para ver los atributos del archivo script.bash:
# getfacl script.bash
# file: script.bash
# owner: root
# group: root
user::rwx
group::--other::---

Si listamos los permisos del archivo1.txt con el comando ls obtenemos:


# ls -la script.bash
-rwx------ 1 root root 0 Feb 23 10:23 script.bash

Como se puede ver, la lista de acceso a archivo1.txt marca los mismos


permisos que el comando ls -l, ya que no se ha establecido ningn permiso
especial. Suponga que ahora se desea que el solamente usuario jperez, miembro
del grupo operadores, pueda tambin ejecutar el archivo, pero no ningn otro
miembro del grupo operadores.
Para lograr esto, que no es posible a travs de permisos estndar de Linux, ejecute
el comando setfacl con la opcin -m:
# setfacl -m user:jperez:r-x script.bash
# getfacl script.bash
# file: script.bash
# owner: root
# group: root
user::rwx
user:jperez:r-x
group::--mask::r-x
other::---

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:
#
#
#
#
#

setfacl -x jperez script.bash


getfacl script.bash
file: script.bash
owner: root
group: root

Ing. Ivan Ferreira

152

Seguridad del sistema de archivos


user::rwx
group::--mask::--other::---

ACLs por defecto


Las ACLs por defecto nos permiten indicar cul es la lista de control de acceso que
se desea aplicar automticamente a los nuevos ficheros y directorios que se creen
dentro de un directorio dado. Se dice en estos casos que los permisos se heredan
desde el directorio padre.
La sintaxis del comando setfacl es similar con la diferencia de que debe
especificar adems la opcin -d:
# setfacl -d -m user:jperez:r-x /soporte

Cualquier archivo creado dentro del directorio /soporte permitir la lectura y


escritura para el usuario jperez.

Deshaciendo los cambios de las listas de acceso


Si desea quitar los atributos extendidos de un archivo utilice la opcin -b que deja
los permisos por defecto:
# setfacl -b script.bash
# getfacl script.bash
# file: script.bash
# owner: root
# group: root
user::rwx
group::--other::---

Copias de seguridad de archivos con ACLs


Los ACLs se almacenan en atributos extendidos del archivo. Para informacin
acerca de cmo respaldar los atributos extendidos, consulte la pgina 136,
Realizando copias de seguridad de atributos extendidos.

Borrado de datos del disco de forma segura


Normalmente los problemas vienen cuando perdemos datos y queremos
recuperarlos, rara vez se nos presentar la ocasin en la que queramos eliminar
completamente los datos del disco duro. Sin embargo, si se prentende vender el
equipo, decomisionarlo, donarlo o devolverlo, lo ms probable es que contenga

153

Red Hat Certified Engineer

Seguridad del sistema de archivos

informacin sensible que debera borrar definitivamente.


Si el archivo se elimina con /bin/rm, sus contenidos permanecen en disco, hasta
que sean sobreescritos por otros archivos.
El sistema de archivos ext3 acera los bloques punteros en el inodo, mientras que
ext2 solamente los marca como no utilizados en el mapa de bloques y marca el
inodo como borrado, dejando los bloques de punteros en disco. Esto hace que en
ext2 sea mucho mas fcil recuperar datos borrados con herramientas tales como
e2undel y Midnight Commander.
El comando shred permite borrar de forma segura un archivo o toda una particin o
volmen.
Para borrar un archivo con el comando shred utilice:
# shred -vz <archivo>

Este comando realizar una destruccin total de la informacin contenida en los


bloques de disco que ocupaba el archivo, posteriormente puede borrar el archivo con
el comando rm. La opcin -v mostrar el progreso y la opcin -z indica que
finalmente rellene con ceros.
Tambin puede borrar toda una particin o volumen con el comando shred, esto
demorar mucho tiempo dependiendo del tamao, por ejemplo, para borrar toda un
disco ejecute:
# shred -n 5 -vz /dev/sdb

Para borrar una volumen lgico ejecute:


# shred -n 5 -vz /dev/datosvg/lvdatos

La opcin -n indica que se realicen 5 iteraciones sobre la unidad.

Implementacin de cuotas de disco


El almacenamiento en disco se puede restringir mediante la implementacin de
cuotas de disco y de esta manera el administrador es notificado antes de que un
usuario consuma mucho espacio en disco o que una particin se llene.
Las cuotas se pueden configurar para usuarios individuales o para grupos. Este tipo
de flexibilidad hace posible darle a cada usuario una pequea porcin del disco para
que maneje sus archivos personales, mientras que se le permite tener ms espacio
para manejar los proyectos en los que estn trabajando o cuotas ms grandes
(asumiendo que a los proyectos se les da sus propios grupos).
Adems, se puede configurar las cuotas no slo para que controlen el nmero de
Ing. Ivan Ferreira

154

Seguridad del sistema de archivos

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.

Configuracin de cuotas de disco


Como usuario root, use el editor de texto de su preferencia, aada las opciones
usrquota y/o grpquota al sistema de archivos que requiere cuotas:
LABEL=/home

/home

ext3

defaults,usrquota,grpquota 1 2

En este ejemplo, el sistema de archivos /home tiene cuotas de usuario y grupo


ambas activadas.

Volver a montar un sistema de archivos


Despus de agregar las opciones userquota y grpquota, vuelva a montar cada
sistema de archivos cuyas entradas fstab hayan sido modificadas. Si el sistema de
archivo no est siendo usado por ningn proceso, use el comando mount -o
remount para volver a montar el sistema de archivos. Si el sistema de archivos est
siendo usado actualmente, el mtodo ms fcil para volver a montar el sistema de
archivos es reiniciando el sistema.

Creacin de archivos de cuotas


Despus de volver a montar cada sistema de archivos con cuotas, el sistema puede
funcionar con cuotas de disco. Sin embargo, el sistema de archivos mismo no est
listo para soportar cuotas. El prximo paso es ejecutar el comando quotacheck.
El comando quotacheck examina los sistemas de archivos con cuotas activadas y
construye una tabla del uso del disco por sistema de archivo. La tabla es luego
usada para actualizar la copia del uso del disco del sistema operativo. Adems, los
archivos de cuotas de disco del sistema de archivos, son actualizados.
Para crear los archivos de cuotas (aquota.user y aquota.group) en el sistema
de archivos, use la opcin -c del comando quotacheck. Por ejemplo, si las cuotas
del usuario y grupos estn activadas para la particin /home, cree los archivos en el
directorio /home:
# quotacheck -acug

La opcin -a significa que todos los sistemas de archivos no NFS montados en


/etc/mtab son chequeados para ver si las cuotas estn activadas. La opcin -c
especifica que los archivos de cuota deberan ser creados para cada sistema de
155

Red Hat Certified Engineer

Seguridad del sistema de archivos

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

Las opciones usadas son como se muestra a continuacin:


Opcin

Descripcin

Verifica todos los sistemas de archivos montados localmente


con cuotas activadas.

Muestra detalles informativos a medida que la verificacin de


cuotas se ejecuta.

Verifica la informacin de cuota de disco.

Verifica la informacin de cuota de disco del grupo.

Evita que se inente montar el sistema de archivos como slo


lectura para la verificacin de quotas

Despus que quotacheck ha finalizado, los archivos de cuotas correspondiente a


las cuotas activas (usuario y/o grupos) son poblados con datos para cada sistema de
archivos con cuotas activadas, tal como /home.
Finalmente, para activar las quotas en el sistema de archivos ejecute:
# quotaon -a

Asignacin de cuotas por usuario


El ltimo paso es asignar las cuotas de disco con el comando edquota.
Para configurar la cuota por usuario, como usuario root en el intrprete shell, ejecute
el comando:
edquota <usuario>

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

Seguridad del sistema de archivos


Disk quotas for user jperez (uid 501):
Filesystem
blocks
soft
/dev/mapper/rootvg-lvhome 440436
0

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

Es posible adems copiar los valores de quota de un usuario a otro, utilizando la


opcin -p. La opcin -p toma como prototipo el usuario origen y aplica las mismas
restricciones de quota al usuario destino. Por ejemplo, el comando:
# edquota -p jperez plopez

Aplicar la misma configuracin de quota del usuario jperez al usuario plopez. De


esta forma sera posible definir un usuario prototipo y definir los valores de quota
para ste, luego, aplicar esta configuracin a mltiples usuarios. Por ejemplo, para
aplicar la misma configuracin de quota para todos los usuarios del sistema con UID
mayor a 500 utilizando la configuracin de quota del usuario qproto como prototipo
ejecute:
# edquota -p qproto $(getent passwd | awk -F ":" '$3 > 500 { print $1 }')

157

Red Hat Certified Engineer

Seguridad del sistema de archivos

Asignacin de cuotas por grupo


Las cuotas tambin pueden ser asignadas por grupos. Por ejemplo, para configurar
una cuota de grupo para el grupo devel, use el comando (el grupo debe existir antes
de configurar la cuota):
edquota -g devel

Establecimiento del periodo de gracia por defecto


Para establecer el periodo de gracia por defecto para el cual los lmites de cuota
dura sern impuestos, use el comando:
# edquota -t
Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
Filesystem
Block grace period
/dev/mapper/rootvg-lvhome
7days

Inode grace period


7days

Cambie el perodo de gracia del bloque o inodo, guarde los cambios del archivo y
salga del editor.

Informe de cuotas de disco


Para crear un informe del uso del disco debe usar la utilidad repquota. Por ejemplo
utilice:
# repquota -a
# repquota /home

An cuando el informe es fcil de leer, es importante resaltar algunos puntos. La


marca -- mostrada luego de cada usuario es una forma rpida de determinar si los
lmites del bloque o inodo han sido excedidos. Si el lmite suave es excedido
aparecer un smbolo + en lugar del correspondiente -; el primer - representa el
lmite del bloque, y el segundo el lmite del inodo.
La columna grace est normalmente en blanco. Si se ha excedido el lmite suave, la
columna contiene una especificacin de tiempo igual al tiempo restante en el perodo
de gracia. Si el perodo de gracia ha expirado, aparecer none en su lugar.

Mantenimiento de la precisin de las cuotas


Cada vez que el sistema de archivos se desmonta de forma inadecuada (debido a
una falla del sistema, por ejemplo), es necesario ejecutar quotacheck. Sin
embargo, quotacheck puede ser ejecutado de forma regular, an cuando el
sistema no haya fallado. Mediante la ejecucin regular de este comando se ayuda a
mantener la exactitud de las cuotas.
Ing. Ivan Ferreira

158

Seguridad del sistema de archivos

La forma ms fcil de ejecutar esto peridicamente es usando cron. Como root,


puede bien sea usar el comando crontab -e para planificar un quotacheck
peridicamente, o colocar un script que ejecute quotacheck en alguno de los
directorios siguientes (usando el intervalo que ms le convenga):

/etc/cron.hourly

/etc/cron.daily

/etc/cron.weekly

/etc/cron.monthly

Las estadsticas de cuotas ms exactas pueden se obtenidas cuando el sistema de


archivos analizado no est en uso activo. Por tanto, la tarea cron debera ser
planificada cuando se est usando lo menos posible el sistema de archivos. Si esta
hora vara para diferentes sistemas de archivos con cuotas, ejecute quotacheck
para cada sistema de archivos en las diferentes horas mediante mltiples tareas
cron.

Activacin y desactivacin de cuotas


Es posible desactivar cuotas sin tener que colocarlas a 0. Para desactivar todos los
usuarios y grupos, use el comando siguiente:
# quotaoff -vaug

Si ninguna de las opciones -u o -g son especificadas, solamente se desactivarn


las cuotas de usuarios. Si nicamente se especifica -g, slo se desactivarn las
cuotas de grupo.
Para activar las cuotas nuevamente, use el comando quotaon con las mismas
opciones.
Por ejemplo, para activar las cuotas de usuarios y grupos para todos los sistemas de
archivos:
# quotaon -vaug

Para activar cuotas para un sistema de archivos especfico, tal como /home:
# quotaon -vug /home

Si no se especifican ninguna de las opciones -u ni tampoco -g, slo se activarn las


cuotas de usuarios. Si slo se escribe la opcin -g, nicamente las cuotas de grupo
sern activadas.

159

Red Hat Certified Engineer

11
Tcnicas para mantener la seguridad del sistema

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:

Cambiar de directorio con cd

Establecer o anular los valores de

Especificar nombres de rdenes que contengan /

Especificar un nombre de fichero que contenga al menos una / como un


argumento de la orden interna . (source)

Importar definiciones de funciones desde el entorno del shell en el arranque

Analizar el valor de SHELLOPTS desde el entorno del shell en el arranque

Redirigir la salida usando los operadores de redireccin >, <, >& y >>

Utilizar la orden interna

Aadir o eliminar rdenes incorporadas con las opciones -f o -d de la orden


interna enable.

Dar la opcin -p a la orden interna command.

Desactivar el modo restringido con set +r o set +o restricted.

exec

SHELL

o de PATH

para reemplazar el shell por otro programa

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

Red Hat Certified Engineer

Tcnicas para mantener la seguridad del sistema

Configuracin de un shell restringido bash


Para establecer un shell restringido a un usuario basado en un directorio de
comandos seguro utilice el siguiente procedimiento.
Cree un enlace simblico para el shell bash con el nombre rbash:
# ln -s /bin/bash /bin/rbash

Asigne el shell rbash al usuario:


# adduser -s /bin/bash jperez

Si el usuario ya existe, modifique el shell de la cuenta:


# usermod -s /bin/rbash jperez

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

Al iniciar sesin, el usuario nicamente podr realizar el comando ls y el comando


cat, no podr especificar otro comando especificando la ruta completa y tampoco
podr cambiarse de directorio de trabajo. Las redirecciones estn prohibidas por
tanto no podr reemplazar ningn archivo.

Administracin de los registros de eventos


La gestin correcta de los registros de eventos es crtica para mantener la seguridad
del sistema. Toda actividad desarrollada en el sistema es registrada y debe ser
controlada.

Ing. Ivan Ferreira

162

Tcnicas para mantener la seguridad del sistema

En esta seccin se proporcionan algunas recomendaciones para gestionar los


registros de eventos del sistema.

Servidor de registro de eventos


El demonio syslog puede configurarse para ir enviando los mensajes de la consola a
un equipo central donde se deben almacenar durante un periodo razonable de
tiempo, de forma que se puedan comprobar los intentos de conexin no autorizados
y las cadas que se producen en estos equipos. Este monitoreo es muchas veces
muy sencilla de establecer y la recepcin y almacenamiento de los registros no
requiere mucha carga del procesador.
Esto permite adems establecer una separacin entre la administracin del sistema
y la auditoria de seguridad, de tal forma a que los registros de eventos no puedan ser
manipulados y los auditores de seguridad no necesiten acceso a cada servidor para
obtener el registro de eventos.
Configuracin del servidor central syslog

La configuracin por defecto de syslogd rechaza mensajes desde sistemas


remotos.
Para configurar un sistema Red Hat/CentOS para que acepte mensajes log desde
otros sistemas un la red, edite el archivo /etc/sysconfig/syslog. Agregue la
opcin -r a SYSLOGD_OPTIONS:
SYSLOGD_OPTIONS="-m 0 -r"

Reinicie el servicio syslogd para aplicar los cambios:


# /sbin/service syslog restart

Configuracin de syslog para el envo a un sistema remoto

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

Red Hat Certified Engineer

Tcnicas para mantener la seguridad del sistema

Anteponiendo el smbolo @ al destino de los registros de eventos se indica al


demonio syslogd que los mensajes deben ser enviados a un host remoto. Luego
de modificar el archivo de configuracin, debe recargar el servicio syslogd:
# service syslogd reload

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/

Ing. Ivan Ferreira

164

Tcnicas para mantener la seguridad del sistema

Si swatch detecta una concordancia en el archivo de registro, ejecuta una accin


configurable. Algunas de las acciones que puede efectuar las siguientes acciones:
Accin
echo [modes]

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]

Indica que la lnea que concuerda debe ser mostrada en la


salida estndar y que sonar la campana del sistema N
veces.

exec comando

Ejecuta el comando o script indicado. Los campos de la lnea


que concuerda se almacenan en variables siendo $0 toda la
lnea, $1 el primer campo, etc.

mail

Enva un correo a direcciones especificadas.

El archivo de configuracin /etc/swatch/swatchrc completo sera:


watchfor /Failed password/
echo magenta
bell 3
mail addressses=root\@linux.com.py,subject="Intento de inicio de sesion invalido"

Puede tener mltiples reglas en el archivo de configuracin siempre y cuando se


est monitoreando el mismo archivo de registro, por ejemplo:
watchfor /Failed password/
echo magenta
bell 3
mail addressses=seguridad\@linux.com.py,subject=Intento de inicio de sesion
invalido
watchfor /session opened for user root/
echo magenta
bell 3
mail addressses=seguridad\@linux.com.py,subject="Inicio de sesion interactivo con
usuario root"

Una vez creado el archivo de configuracin puede ejecutar swatch en primero o


segundo plano. Para ejecutar swatch en primer plano utilice el siguiente comando:
# swatch --config-file /etc/swatch/swatchrc

--tail-file /var/log/secure

Para utilizar swatch en segundo plano utilice la opcin daemon:


# swatch --config-file /etc/swatch/swatchrc

165

--tail-file /var/log/secure daemon

Red Hat Certified Engineer

Tcnicas para mantener la seguridad del sistema

Archivo de registro de sesiones de usuarios


Adems de los archivos de registro generados por el demonio syslog, existen otros
archivos que permiten detectar actividades relacionadas a usuarios que suceden en
el sistema.
El archivo utmp, wtmp y btmp

El archivo /var/log/wtmp es un archivo binario (no se puede leer su contenido


directamente con cat o similares) que almacena informacin relativa a cada conexin
y desconexin al sistema. Puede visualizar ver su contenido con el comando last.
El comando las muestra una lista de los usuarios que iniciaron sesin. Puede iniciar
como argumento el nombre de usuario para ver los inicios de sesin de un usuario
especfico, por ejemplo:
# last <usuario>

Los registros guardados en este archivo (y tambin en el fichero utmp) tienen el


formato de la estructura utmp, que contiene informacin como el nombre de usuario,
la lnea por la que accede (tty), el lugar desde donde lo hace y la hora de acceso.
El comando who tambin utiliza este archivo para mostrar la lista de usuario
conectados al sistema.
Este archivo tambin mantiene informacin acerca de los apagados y reinicios del
sistema, puede visualizar la fecha del apagado o reinicio del sistema con los
comandos:
# last shutdown
# last reboot

El comando lastb es similar al comando last con la excepcin que muestra


nicamente los intentos de conexin fallidos y esta informacin la obtiene del archivo
/var/log/btmp.
El archivo lastlog

El archivo /var/log/lastlog contiene informacin acerca del ltimo inicio de


sesin exitoso de un usuario. El contenido del archivo est en formato binario y
puede ser visualizado con el comando lastlog, por ejemplo:
# lastlog -u <usuario>

El archivo faillog

El archivo /var/log/faillog contiene informacin acerca de los intentos de inicio


Ing. Ivan Ferreira

166

Tcnicas para mantener la seguridad del sistema

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.

Configuracin del acceso de consola


Cuando los usuarios normales (que no son root) se conectan a un ordenador
localmente, se les dan dos tipos de permisos:

Pueden ejecutar ciertos programas que de otra manera no seran capaces de


ejecutar.

Pueden acceder a ciertos ficheros (generalmente ficheros de dispositivos


especiales usados para acceder a diskettes, CD-ROMS, etc) a los que, de lo
contrario, no les sera posible acceder.

Ya que existen mltiples consolas en un solo ordenador y mltiples usuarios pueden


conectarse al ordenador localmente al mismo tiempo, uno de los usuarios tiene que
"ganar" la carrera para acceder a los ficheros. El primer usuario que se conecte a la
consola posee esos ficheros. Una vez que el primer usuario se desconecta, el
siguiente usuario que se conecte tendr esos archivos.
Por el contrario, a cada usuario que se conecte a la consola se le permitir ejecutar
programas que realicen tareas restringidas normalmente al usuario root. Si se est
ejecutando X, estas acciones pueden incluirse como men de items en la interfaz
grfica de usuario. Los programas accesibles a consolas incluyen halt y reboot.

Deshabilitar el apagado a travs de Ctrl-Alt-Supr


Por defecto, /etc/inittab especifica que su sistema est configurado para
apagarse y rearrancar el sistema como respuesta a la combinacin de teclas usadas
en la consola Ctrl-Alt-Supr. Si quiere deshabilitar esta funcin, deber comentar la
siguiente lnea en /etc/inittab:
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

Otra alternativa, es la de conceder a ciertos usuarios no que no son root, el derecho


a apagar el sistema desde la consola mediante Ctrl-Alt-Supr. Puede restringir este
privilegio a ciertos usuarios, siguiendo los siguientes pasos:
1. Aada una opcin -a a la lnea /etc/inittab mostrada anteriormente, de
manera que quede as:

167

Red Hat Certified Engineer

Tcnicas para mantener la seguridad del sistema

ca::ctrlaltdel:/sbin/shutdown -a -t3 -r now


2. El indicador -a le pide a shutdown que busque
/etc/shutdown.allow, que crear en el siguiente paso.

el

fichero

3. Cree un fichero llamado shutdown.allow en /etc. El fichero


shutdown.allow debera listar los nombres de usuario de cualquier usuario
al que se le permita apagar el sistema usando Ctrl-Alt-Supr. El formato del
fichero /etc/shutdown.allow es una lista de nombres de usuarios, uno
por lnea, como sigue a continuacin:
jperez
hlopez
mgimenez

De acuerdo con este ejemplo de fichero shutdown.allow, jperez, hlopez y


mgimenez estn autorizados a apagar el sistema desde la consola usando
Ctrl-Alt-Supr. Cuando se usa esa combinacin de claves, el shutdown -a
comprueba que cualquiera de los usuarios en /etc/shutdown.allow (o
root) estn conectados a una consola virtual. Si es uno de ellos, el apagado
del sistema continuar; de lo contrario, aparecer un mensaje de error escrito
en la consola del sistema.

Deshabilitar el acceso desde la consola a programas


Para deshabilitar el acceso de usuario a programas de consola, debera ejecutar el
siguiente comando como root:
# rm -f /etc/security/console.apps/*

En entornos donde la consola se encuentra asegurada ( BIOS y tienen contrasea,


Ctrl-Alt-Suprimir est deshabilitado, los interruptores de encendido y reinicio estn
desactivados, etc.), puede que no desee permitir a ningn usuario que ejecute en la
consola poweroff, halt, y reboot, que son accesibles desde la consola por
defecto.
Para desactivar estas habilidades, hay que ejecutar los siguientes comandos como
root:
# rm -f /etc/security/console.apps/poweroff
# rm -f /etc/security/console.apps/halt
# rm -f /etc/security/console.apps/reboot

Deshabilitar el apagado del sistema desde GDM


Para evitar que usuarios no root apaguen el sistema desde la consola GDM, edite el
archivo /etc/X11/gdm/gdm.conf en Red Hat/CentOS 4 o el archivo
Ing. Ivan Ferreira

168

Tcnicas para mantener la seguridad del sistema

/etc/gdm/custom.conf en Red Hat/CentOS 5


[greeter] estableciendo:

y modifique en la seccin

SystemMenu=false

Herramientas de integridad de archivos


Las herramientas md5sum y sha1sum son utilitarios que calcula el checksum de un
archivo. Para propsitos de solucin de problemas, pude asumir que cada archivo
tiene un checksum nico.
Debido a el checksum de un archivo cambiar si cualquier parte del archivo es
modificado, puede usar estos utilitarios para verificar que un archivo no ha
cambiado. Puede utilizarlo para verificar si dos archivos son exactamente iguales.
Puede adems generar una base de datos con el checksum de los archivos y
utilizarla posteriormente para comparar los archivos, por ejemplo, para generar una
base de datos con los archivos y sus correspondientes checksums del directorio
actual ejecute:
# md5sum * > md5sum.db

Para verificar si el checksum ha variado (indicando que el archivo fue modificado)


ejecute:
# md5sum -c md5sum.db

Cifrado de informacin en disco


En estos das, los datos son mviles. Cada da, informacin sensible d ella
corporacin deja la compaa en un disco flash o en una laptop. Que sucede si la
informacin es robada o perdida?. La informacin robada o perdida de un dispositivo
puede ser mucho mas valiosa que el dispositivo en s.
La encriptacin de dispositivos es una forma de reducir los riesgos de datos mviles.

El Device Mapper y DM-Crypt


Iniciando con la versin 2.6, el kernel de linux proporciona la interfaz Device
Mapper. Esta interfaz permite la creacin de capas de dispositivos de bloques
virtuales por encima de dispositivos de bloques reales. Estos dispositivos son
utilizados para funciones como RAID, LVM y encriptacin. El mdulo DM-Crypt para
el Device Mapper proporciona acceso a funciones de criptografa.

169

Red Hat Certified Engineer

Tcnicas para mantener la seguridad del sistema

Linux Unified Key Setup (LUKS)


LUKS proporciona un formato en disco estndar para particiones encriptadas que
facilita la compatibilidad entre distribuciones, permite mltiples usuarios/contraseas,
revocacin de contraseas y otras caractersticas de seguridad.

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.

Posteriormente, deber ingresar la contrasea de encriptacin:


Ing. Ivan Ferreira

170

Tcnicas para mantener la seguridad del sistema

Luego podr continuar la instalacin normalmente.


Para configurar un dispositivo encriptado desde la lnea de comandos, inicialmente
debe determinar el nombre de dispositivo para su disco, esto puede hacerlo con el
comando dmesg o con el comando fdisk -l para listar los discos detectados por
el sistema.
Suponiendo que el disco USB es el dispositivo /dev/sdc, debe crear una particin
en el dispositivo:
# fdisk -cu /dev/sdc
Command (m for help): n
Command action
e
extended
p
primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1019, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1019, default 1019):
Using default value 1019
Command (m for help): p
Disk /dev/sdc: 258 MB, 258998272 bytes
8 heads, 62 sectors/track, 1019 cylinders
Units = cylinders of 496 * 512 = 253952 bytes
Device Boot
/dev/sdc1

Start
1

End
1019

Blocks
252681

Id
83

System
Linux

Command (m for help): w


The partition table has been altered!

171

Red Hat Certified Engineer

Tcnicas para mantener la seguridad del sistema

Calling ioctl() to re-read partition table.


Syncing disks.

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.

El comando crear el dispositivo /dev/mapper/cryptodisk, puede verificarlo con


el comando ls:
# ls -la /dev/mapper/cryptodisk
brw-rw---- 1 root disk 253, 4 feb 27 22:19 /dev/mapper/cryptodisk

Debe crear el sistema de archivos sobre el dispositivo cryptodisk utilizando el


comando mkfs:
# mkfs -t ext4 /dev/mapper/cryptodisk
# tune2fs -m 0 -i 0 -c 0 /dev/mapper/cryptodisk

Una vez creado el sistema de archivos la particin puede ser montada.


# mount /dev/mapper/cryptodisk /mnt/cryptodisk

Al terminar de usar el dispositivo debe desmontar y cerrar para eliminar el dispositivo


de bloques encriptado antes de extraerlo:
# umount /mnt/cryptodisk
# cryptosetup luksClose cryptodisk

Cada vez que desea volver a utilizar el disco, debe ejecutar el comando
Ing. Ivan Ferreira

172

Tcnicas para mantener la seguridad del sistema

cryptosetup luksOpen como se describi anteriormente para crear el dispositivo


de bloques encriptado.
Existe un problema que impide que GNOME monte un disco USB encriptado
(reportado en buzilla ID 209590). Para solucionar el problema, edite el archivo
/etc/udev/rules.d/50-udev.rules y comente la siguiente lnea:
# KERNEL=="dm-[0-9]*", ACTION=="add", OPTIONS+="ignore_device"

Montado de un disco encriptado durante el inicio del sistema


Para montar discos encriptados durante el inicio del sistema, puede configurar el
archivo /etc/crypttab. Este archivo describe los volmenes encriptados que
deben ser configurados durante el inicio del sistema.
El formato del archivo es el siguiente:
<nombre>

<dispositivo>

<ruta_archivo_contrasea>

<opciones>

Los campos del archivo son:

<nombre> - El nombre del dispositvo de bloques resultante. El dispositivo


puede ser accedido a travs de /dev/mapper/<nombre>

<dispositivo> - La ruta al dispositivo de bloques, por ejemplo /dev/sdc1.


Se recomienda utilizar el UUID del dispositivo, por ejemplo UUID=76ea19450e6f-4a6a-a8ef-96e8c6da19d6. El UUID puede obtenerlo con el comando
blk_id.

<ruta_archivo_contrasea> - La ruta a un archivo que contiene la


contrasea de encriptacin. Si no se especifica uno, la contrasea ser
solicitada durante el inicio del sistema.

<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:

swap El dispositivo encriptado ser utilizado como dispositivo swap y


ser formateado como swap luego de haber configurado el dispositivo
encriptado. Puede indicar /dev/urandom como archivo de contrasea.

tmp El dispositivo encriptado ser preparado para ser utilizado como una
particin tmp. Ser formateado como ext2 y se establecer permisos
1777.

Luego de configurar el archivo /etc/crypttab, adems deber configurar el


archivo /etc/fstab. Por ejemplo:
173

Red Hat Certified Engineer

Tcnicas para mantener la seguridad del sistema


# cat /etc/crypttab
cryptoHome UUID=76ea1945-0e6f-4a6a-a8ef-96e8c6da19d6
# cat /etc/fstab
/dev/mapper/cryptoHome

/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:
#
#
#
#

echo "frase de paso" > /root/cryptoHome.key


chown root /root/cryptoHome.key
chmod 600 /root/cryptoHome.key
cryptsetup luksAddKey /dev/sdc1 /root/cryptoHome.key

Cuando se solicite, introduzca la frase de paso actual. Luego, edite el archivo


/etc/crypttab e indique la ruta al archivo:
# cat /etc/crypttab
cryptoHome UUID=76ea1945-0e6f-4a6a-a8ef-96e8c6da19d6 /root/cryptoHome.key

The Center for Internet Security CIS Benchmark


El Centro para Seguridad de Internet (CIS) es una organizacin sin fines de lucro
que proporciona herramientas de benchmark (puntos de referencia), software,
scripts, datos, informacin, recomendaciones/ sugerencias y otros servicios y
materiales en su sitio web como un servicio publico a los usuarios de Internet. Las
recomendaciones contenidas en los productos son resultado de un proceso de
construccin consensuado que involucra la colaboracin de muchos expertos en
seguridad y son genricos. El uso apropiado de las recomendaciones requieren un
anlisis y adaptacin a los requerimientos especficos de la empresa,
preferentemente, deben ser aplicados inicialmente en entornos de prueba.
El sitio web de CIS es:
http://cisecurity.org
Las herramientas de benchmark son distribuidas sin cargo. Las herramientas de
Ing. Ivan Ferreira

174

Tcnicas para mantener la seguridad del sistema

benchmark son:

Valores, controles y reglas tcnicas recomendadas para proteger el sistema


operativo, aplicaciones de software y dispositivos de red

Unicos, debido a que las recomendaciones son definidas por medio de un


consenso entre cientos de profesionales de seguridad alrededor del mundo

Descargadas aproximadamente un millon de veces por ao

Distribuidas gratuitamente en formato PDF

Utilizado en miles en empresas como la base para las polticas de


configuracin de seguridad y estndares de facto contra los cuales
compararse

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

Red Hat Certified Engineer

Registro de cambios
Versin
2.6

Fecha

Seccin

03-17-2011 Introduccin a la seguridad


computacional

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

Vous aimerez peut-être aussi