2011-07-13 (v1.0)
PortantierInformationSecurityIntroduccinaGNU/Linux
Fabian Portantier
Consultor en Seguridad Informtica Fantico de GNU/Linux (Debian) Mail: fabian@portantier.com Web: www.portantier.com
PortantierInformationSecurityIntroduccinaGNU/Linux
Servicio syslogd
Modelo cliente/servidor
Protocolo Syslog
Estndar de facto Mensajes no mayores a 1024 bytes Por defecto, puerto UDP 514 http://es.wikipedia.org/wiki/Syslog
PortantierInformationSecurityIntroduccinaGNU/Linux
PortantierInformationSecurityIntroduccinaGNU/Linux
Nmero de 8 bits
PortantierInformationSecurityIntroduccinaGNU/Linux
Recursos habituales
Severidades
0 1 2 3 4 5 6 7 Emergencia: el sistema est inutilizable Alerta: se debe actuar inmediatamente Crtico: condiciones crticas Error: condiciones de error Peligro: condiciones de peligro Aviso: normal, pero condiciones notables Informacin: mensajes informativos Depuracin: mensajes de bajo nivel
PortantierInformationSecurityIntroduccinaGNU/Linux
PortantierInformationSecurityIntroduccinaGNU/Linux
Dividido en informacin del proceso y mensaje Separados por el primer espacio en blanco wpa[1236]: Group rekeying ok ----------------------------| Proceso | Mensaje | -----------------------------
PortantierInformationSecurityIntroduccinaGNU/Linux
Servidores de Syslog
sysklogd
rsyslog
syslog-ng
PortantierInformationSecurityIntroduccinaGNU/Linux
Configuracin rsyslog
/etc/rsyslog.conf /etc/rsyslog.d
PortantierInformationSecurityIntroduccinaGNU/Linux
Configuracin rsyslog
Recurso.Severidad Accin
PortantierInformationSecurityIntroduccinaGNU/Linux
Escribir en el log
El comando: logger -p local5.info "Mensaje de prueba" Genera: Jul 15 19:14:26 debian fabian: Mensaje de prueba
PortantierInformationSecurityIntroduccinaGNU/Linux
PortantierInformationSecurityIntroduccinaGNU/Linux
Ejemplos de acciones
A una tty o consola: /dev/console Lista de usuarios: root,fabian Todos los usuarios: * Descartar ~
PortantierInformationSecurityIntroduccinaGNU/Linux
Rotacin de logs
Logrotate
Configuracin de logrotate
/etc/logrotate.conf /etc/logrotate.d
PortantierInformationSecurityIntroduccinaGNU/Linux
PortantierInformationSecurityIntroduccinaGNU/Linux
Automatizacin de tareas
PortantierInformationSecurityIntroduccinaGNU/Linux
Cron
crond
crontab
PortantierInformationSecurityIntroduccinaGNU/Linux
Comando 'crontab'
Ver o editar las tablas de tareas Uso: crontab [opciones] e l r ux Edita interactivamente (por defecto, con 'vi') Muestra el contenido de la tabla Elimina la tabla Opera sobre la tabla del usuario 'x'
PortantierInformationSecurityIntroduccinaGNU/Linux
Configuracin de cron
/etc/crontab /etc/cron.d /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.montly
PortantierInformationSecurityIntroduccinaGNU/Linux
Comando 'at'
Permite ejecutar tareas a determinadas horas Uso: at [-f archivo] tiempo at [opciones] d l Borra trabajos Lista trabajos
PortantierInformationSecurityIntroduccinaGNU/Linux
Criptografa de Hash
PortantierInformationSecurityIntroduccinaGNU/Linux
Algoritmos de Hash
Resultado de tamao fijo A mismo origen, mismo resumen resultante Aplicable a grandes cantidades de datos Pequeas probabilidades de colisin Funcionan en un slo sentido
PortantierInformationSecurityIntroduccinaGNU/Linux
Administracin de usuarios
PortantierInformationSecurityIntroduccinaGNU/Linux
/etc/passwd
Texto plano
/etc/passwd (campos)
Nombre de usuario (login) Contrasea encripada ('x' para shadow) UID de la cuenta GID del grupo principal de la cuenta Descripcin del usuario Directorio 'home' del usuario Shell por defecto
PortantierInformationSecurityIntroduccinaGNU/Linux
/etc/shadow
Base de datos segura de usuarios Texto plano Campos separados por dos puntos (:) Slo legible por el usuario 'root' (en algunos sistemas, por el grupo shadow)
PortantierInformationSecurityIntroduccinaGNU/Linux
/etc/shadow (campos)
Nombre de usuario (login) Contrasea encriptada (o valor especial) ltimo cambio contrasea (Fecha Unix) Das hasta permitir el cambio de contrasea Das hasta requerir cambio de contrasea Das de aviso de expiracin de contrasea Das hasta desactivar la cuenta Das desde la Fecha Unix en que la cuenta expira Reservado
PortantierInformationSecurityIntroduccinaGNU/Linux
/etc/shadow (campo 1)
Si guarda contrasea, primero define el algoritmo: "$1$" MD5 "$5$" SHA-256 "$6$" SHA-512
PortantierInformationSecurityIntroduccinaGNU/Linux
/etc/shadow (campo 1)
El campo tambin puede contener lo siguiente: ! NP * LK !! La cuenta no tiene contrasea La cuenta no tiene contrasea La cuenta est bloqueada La cuenta est bloqueada La contrasea ha expirado
PortantierInformationSecurityIntroduccinaGNU/Linux
/etc/group
Texto plano
/etc/group (campos)
Nombre del grupo Contrasea (no suele ser utilizada) GID (identificador nico del grupo) Miembros del grupo (lista separada por comas)
PortantierInformationSecurityIntroduccinaGNU/Linux
/etc/gshadow
Base de datos segura de grupos Texto plano Campos separados por dos puntos (:) Slo legible por el usuario 'root' (en algunos sistemas, por el grupo shadow)
PortantierInformationSecurityIntroduccinaGNU/Linux
/etc/gshadow (campos)
Nombre del grupo Contrasea encriptada Administradores del grupo Miembros del grupo (no-administradores)
PortantierInformationSecurityIntroduccinaGNU/Linux
/etc/skel
Es un directorio Contiene el esqueleto para nuevos usuarios Al crear un usuario, se copia en su 'home' Los cambios no aplican a usuarios existentes
PortantierInformationSecurityIntroduccinaGNU/Linux
Comando 'chage'
Modifica la expiracin de contraseas Uso: chage [opciones] login Ejemplo: chage fabian
PortantierInformationSecurityIntroduccinaGNU/Linux
Comando 'groupadd'
Crea un nuevo grupo Uso: groupadd [opciones] grupo Ejemplo: groupadd administradores
PortantierInformationSecurityIntroduccinaGNU/Linux
Comando 'groupdel'
PortantierInformationSecurityIntroduccinaGNU/Linux
Comando 'groupmod'
PortantierInformationSecurityIntroduccinaGNU/Linux
Comando 'groupmod'
Opciones comunes: g GID n NEW p PWD Define el nuevo GID del grupo * Define el nuevo nombre del grupo Define la nueva contrasea del grupo
PortantierInformationSecurityIntroduccinaGNU/Linux
Comando 'passwd'
Modifica la contrasea de un usuario Uso: passwd [opciones] login Ejemplo: passwd fabian
PortantierInformationSecurityIntroduccinaGNU/Linux
Comando 'passwd'
Opciones comunes: d e l S u Deja la contrasea en blanco Expira la contrasea Bloquea la cuenta (NO la deshabilita) Muestra el estado de la cuenta Desbloquea la cuenta
PortantierInformationSecurityIntroduccinaGNU/Linux
Comando 'useradd'
Crea un nuevo usuario o modifica los defaults Uso: useradd [opciones] login useradd -D [opciones]
PortantierInformationSecurityIntroduccinaGNU/Linux
Comando 'useradd'
Opciones comunes: d g x G x1, x2 -k dir s SHELL u UID Directorio Home Nombre o GID del grupo principal Grupo o grupos secundarios Cual es el directorio esqueleto La shell por defecto Define el ID de usuario (UID)
PortantierInformationSecurityIntroduccinaGNU/Linux
Comando 'userdel'
PortantierInformationSecurityIntroduccinaGNU/Linux
Comando 'userdel'
Opciones comunes: f r Elimina aunque est logueado Elimina el Home y los correos electrnicos
PortantierInformationSecurityIntroduccinaGNU/Linux
Comando 'usermod'
PortantierInformationSecurityIntroduccinaGNU/Linux
Comando 'usermod'
Opciones comunes: d dir g grp l lgn L s shell u UID U Nuevo directorio home Nuevo grupo primario (GID o nombre) Nuevo nombre de usuario (login) Bloquea la cuenta Nueva shell por defecto Nuevo UID Desbloquea la cuenta
PortantierInformationSecurityIntroduccinaGNU/Linux
Administracin de la Seguridad
PortantierInformationSecurityIntroduccinaGNU/Linux
find /bin -perm -4000 -type f find /usr/bin -perm -4000 -type f
PortantierInformationSecurityIntroduccinaGNU/Linux
find /bin -perm -2000 -type f find /usr/bin -perm -2000 -type f
PortantierInformationSecurityIntroduccinaGNU/Linux
Localizacin e internacionalizacin
PortantierInformationSecurityIntroduccinaGNU/Linux
Utiliza servidores para consultar la hora Slo UTC (Universal Coordinated Time) Puerto UDP 123 www.ntp.org ntpd
PortantierInformationSecurityIntroduccinaGNU/Linux
/etc/ntp.conf
PortantierInformationSecurityIntroduccinaGNU/Linux
Comando 'hwclock'
Consulta o modifica la hora del hardware clock Uso: hwclock [funciones] [opciones]
PortantierInformationSecurityIntroduccinaGNU/Linux
/etc/localtime
tzselect
Comando 'date'
Muestra o define la hora del sistema Uso: date [opcin] [formato] date [--utc] [MMDDhhmm]
PortantierInformationSecurityIntroduccinaGNU/Linux
Variables de idioma
LANG Define todas la configuraciones a la vez LC_COLLATE Define el orden alfabtico de los caracteres LC_TYPE Define las propiedades de gestin de caracteres LC_MESSAGES Define la localizacin de los programas
PortantierInformationSecurityIntroduccinaGNU/Linux
Variables de idioma
LC_MONETARY Define las unidades de moneda utilizadas LC_NUMERIC Define las unidades numricas no monetarias LC_TIME Define el formato de horas y fechas LC_ALL Sobreescribe todos los otros valores
PortantierInformationSecurityIntroduccinaGNU/Linux
Comando 'locale'
PortantierInformationSecurityIntroduccinaGNU/Linux
PortantierInformationSecurityIntroduccinaGNU/Linux
BASH Scripting
PortantierInformationSecurityIntroduccinaGNU/Linux
#!/bin/bash
Primera lnea del archivo Indica con qu programa debe ser interpretado En este caso, bash
PortantierInformationSecurityIntroduccinaGNU/Linux
Variables locales
PortantierInformationSecurityIntroduccinaGNU/Linux
Condicional if
PortantierInformationSecurityIntroduccinaGNU/Linux
Condicional if
if [expresin] then cdigo a ejecutar si la expresin es verdadera else cdigo a ejecutar si la expresin es falsa fi
PortantierInformationSecurityIntroduccinaGNU/Linux
Condicional if (ejemplo)
VAR=1 if [ $VAR = 1 ] then echo La expresin es verdadera! else echo La expresin es falsa! fi
PortantierInformationSecurityIntroduccinaGNU/Linux
Bucle for
Tomo los valores de una lista Reemplazo var para los valores de esa lista Ejecuto el bucle una vez por valor for var in lista do echo item: $item done
PortantierInformationSecurityIntroduccinaGNU/Linux
PortantierInformationSecurityIntroduccinaGNU/Linux
PortantierInformationSecurityIntroduccinaGNU/Linux
Comparadores
De texto: s1 = s2 (es igual?) s1 != s2 (es distinto?) Numricos: -lt (<) -gt (>) -le (<=) -ge (>=) -eq (==) -ne (!=) Menor a Mayor a Menor o igual a Mayor o igual a Igual a Distinto a
PortantierInformationSecurityIntroduccinaGNU/Linux
Entorno Grfico
PortantierInformationSecurityIntroduccinaGNU/Linux
Modelo Cliente / Servidor El servidor X se comunica con varios clientes Enva datos a los clientes (programas) Toma datos de interfaces (teclado, mouse, etc) Permite aplicaciones remotas (por red)
PortantierInformationSecurityIntroduccinaGNU/Linux
PortantierInformationSecurityIntroduccinaGNU/Linux
Gestores de Ventanas
Apariencia de ventanas y otros componentes Gestionan la aparicin de iconos Combinaciones de teclas Trabajan como cliente del servidor X
PortantierInformationSecurityIntroduccinaGNU/Linux
Gestor de Sesiones
Sesin: Estado de todo el entorno X Almacenan el estado de las sesiones Permiten recuperar un estado anterior Suele combinarse con el Gestor de Pantalla
PortantierInformationSecurityIntroduccinaGNU/Linux
Gestores de Pantalla
Entornos de Escritorio
/etc/X11/xorg.conf
xorg.conf - Fuentes
Section "Files" FontPath "/usr/share/X11/fonts/misc" FontPath "/usr/share/X11/fonts/cyrillic" FontPath "/usr/share/X11/fonts/100dpi/:unscaled" FontPath "/usr/share/X11/fonts/75dpi/:unscaled" FontPath "/usr/share/X11/fonts/Type1" FontPath "/usr/share/X11/fonts/100dpi" EndSection
PortantierInformationSecurityIntroduccinaGNU/Linux
xorg.conf - Mdulos
Section "Module" Load "bitmap" Load "ddc" Load "dri" Load "extmod" Load "int10" Load "type1" Load "vbe" EndSection
PortantierInformationSecurityIntroduccinaGNU/Linux
xorg.conf - Teclado
Section "InputDevice" Identifier "Generic Keyboard" Driver "kbd" Option "CoreKeyboard" Option "XkbRules" "xorg" Option "XkbModel" "pc105" Option "XkbLayout" "us" Option "XkbOptions" "lv3:ralt_switch" EndSection
PortantierInformationSecurityIntroduccinaGNU/Linux
xorg.conf - Mouse
Section "InputDevice" Identifier "Configured Mouse" Driver "mouse" Option "CorePointer" Option "Device" "/dev/input/mice" Option "Protocol" "ExplorerPS/2" Option "ZAxisMapping" "4 5" Option "Emulate3Buttons" "true" EndSection
PortantierInformationSecurityIntroduccinaGNU/Linux
Section "Device" Identifier "VMware SVGA II PCI Display Adapter" Driver "vmware" BusID "PCI:0:15:0" EndSection
PortantierInformationSecurityIntroduccinaGNU/Linux
xorg.conf - Monitor
Section "Monitor" Identifier "Generic Monitor" Option "DPMS" HorizSync 28-51 VertRefresh 43-60 EndSection
PortantierInformationSecurityIntroduccinaGNU/Linux
xorg.conf - Pantalla
Section "Screen" Identifier "Default Screen" Device "VMware SVGA II PCI Display Adapter" Monitor "Generic Monitor" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1024x768" "800x600" "640x480" EndSubSection EndSection
PortantierInformationSecurityIntroduccinaGNU/Linux
xorg.conf - Entorno
Section "ServerLayout" Identifier "Default Layout" Screen "Default Screen" InputDevice "Generic Keyboard" InputDevice "Configured Mouse" EndSection
PortantierInformationSecurityIntroduccinaGNU/Linux
Xorg -configure
PortantierInformationSecurityIntroduccinaGNU/Linux
Instalacin de GDM
PortantierInformationSecurityIntroduccinaGNU/Linux
Otras utilidades
xwininfo Muestra informacin de una ventana xdpyinfo Muestra informacin de X xhost Controla el acceso al servidor X
PortantierInformationSecurityIntroduccinaGNU/Linux
Encripcin de Datos
PortantierInformationSecurityIntroduccinaGNU/Linux
Permiten copiar archivos y administrar equipos El trfico viaja en texto plano Es fcil capturar usuarios y contraseas Se vuelven extremadamente inseguros
PortantierInformationSecurityIntroduccinaGNU/Linux
Permite la administracin remota Permite la copia de datos entre equipos Permite el redireccionamiento de puertos Encripta TODO el trfico La implementacin ms popular es OpenSSH
PortantierInformationSecurityIntroduccinaGNU/Linux
PortantierInformationSecurityIntroduccinaGNU/Linux
Configuracin SSH
/etc/ssh/sshd_config
PortantierInformationSecurityIntroduccinaGNU/Linux
# Ejemplo de configuracion Port 22 Protocol 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key PermitRootLogin no RSAAuthentication yes PubkeyAuthentication yes PermitEmptyPasswords no Subsystem sftp /usr/lib/openssh/sftp-server
PortantierInformationSecurityIntroduccinaGNU/Linux
Se componen de una parte pblica y otra privada La pblica la utilizan los dems para verificar nuestra identidad. La privada la utilizamos SOLO nosotros, para demostrar que la clave pblica es nuestra
PortantierInformationSecurityIntroduccinaGNU/Linux
Es una forma criptogrfica muy fuerte Basa totalmente su seguridad en la clave privada La privada, es preferible perderla que compartirla
PortantierInformationSecurityIntroduccinaGNU/Linux
DSA y RSA
Son algoritmos de criptografa asimtrica Digital Signature Algorithm (DSA) Rivest, Shamir, Adleman (RSA)
PortantierInformationSecurityIntroduccinaGNU/Linux
Generacin de Claves
ssh-keygen -t dsa ssh-keygen -t rsa Los certificados se crean en: ~/.ssh/id_dsa y ~/.ssh/id_dsa.pub ~/.ssh/id_rsa y ~/.ssh/id_rsa.pub
PortantierInformationSecurityIntroduccinaGNU/Linux
PortantierInformationSecurityIntroduccinaGNU/Linux
PortantierInformationSecurityIntroduccinaGNU/Linux
GPG
GNU Privacy Guard La implementacin abierta de PGP Utiliza criptografa asimtrica Permite encriptar datos
PortantierInformationSecurityIntroduccinaGNU/Linux
PortantierInformationSecurityIntroduccinaGNU/Linux
Generacin de Claves
PortantierInformationSecurityIntroduccinaGNU/Linux
Encriptando Archivos
PortantierInformationSecurityIntroduccinaGNU/Linux
Encriptar / Desencriptar
PortantierInformationSecurityIntroduccinaGNU/Linux