Está en la página 1de 146

Juan Carlos Guel Lpez

cguel@asc.unam.mx
Monitoreo del Sistema
Tiger
Instalacin y Configuracin
Cops
Instalacin y Configuracin
Seguridad en Red
TCP-Wrappers
Instalacin y Configuracin
Secure Shell
Instalacin y Configuracin
Cifrado de Datos
PGP
Instalacin y Configuracin
Monitoreo del
Sistema
Descripcin General
Versiones de Tiger
Cmo Funciona
Descripcin General
TIGER, o los scripts de 'tiger', son un conjunto de scripts en
Bourne Shell, se compone de programas en C y archivos de
datos que se usan para realizar una revisin de seguridad en
sistemas UNIX producido por el Centro de Cmputo de la
Univesidad A&M de Texas. Es una herramienta de fcil uso,
que es fcil de comprender, analizar y adecuar. Actualmente
soporta sistemas SunOS 4.x y SunOS 5.x y posteriores y NeXT
3.x. Otros sistemas que se incluyen en los archivos de
configuracin son sistemas IRIX 4.x, AIX 3.x, UNICOS 6.x,
Linux 0.99.x y HP/UX. Estas configuraciones no han sido
probadas completamente como en sistemas SunOS y en algunos
casos no funcionan de forma adecuada.
Objetivo
El objetivo primario de TIGER es reportar la manera en que
'root' pueden ser comprometido. La primera verificacin que
realiza es en los uid, solo root debe tener un uid igual a 0, de
igual forma se verifican los gid del sistema.
Versiones de Tiger
En este momento hay tres distribuciones de Tiger.
tiger-2.2.3p1 es la ltima distribucin de TAMU,
incluyendo los check_devs y check_rhosts.
tiger-2.2.3p1-ARSC es una contribuicin por el Centro de
Supercomputo de la Regin Artica.
tiger-2.2.4p1 es la distribucin de TAMU con algunos
cambios para su uso en Linux.
Cmo Funciona
TIGER verifica los directorios pertenecientes a 'root junto con
los archivos, verifica tambin archivos cron, inetd, archivos con
setuid encendido, PATHs, etc, para ver si estos pueden estar
alterados. De igual forma, realiza un chequeo en los paths en
otras cuentas para detectar alguna vulnerabilidad, pero 'root'
recibe la atencin especial.
Al ejecutar TIGER en una forma sencilla se
realizarian los siguientes pasos:
Se verifican los archivos de datos de usuarios del
sistema.
Se verifican las entradas del cron.
Se verifican los alias del Mail.
Se verifican Sistemas de Archivos exportados por NFS.
Se verifican las entradas del inetd.
Se verifican las variables PATH.
Se verifican archivos rhosts y netrc.
Se verifican permisos en Archivo y Directorios.
Se verifica la localizacin de archivos inusuales en los
sistemas de Archivos.
La cantidad de tiempo requerida para ejecutar TIGER vara
dependiendo de el tamao del sistema y la forma en que est
configurado TIGER. Por ejemplo, sobre una sparcStation LX
con 1GB de disco, con menos de 20 usuarios, y una
configuracin completa DE TIGER, toma aproximadamente
sobre 90 minutos. Una configuracin ms sencilla de TIGER
puede tardar aproximadamente 25 minutos. La mayor parte del
tiempo TIGER verifica los pathnames. Sobre sistemas con un
nmero grande de usuarios, la verificacin tardar mucho
mayor tiempo.
Qu es COPS?
Qu verifica cops?
Dnde obtener cops?
Instalacin de cops
Ejecucin de cops
Interpretacin de resultados
COPS (Computer Oracle and Password System)
Herramienta de seguridad desarrollado por Daniel Farmer y Eugene H.
Spafford, cuyo principal objetivo es la deteccin de una gran variedad
de problemas de seguridad particulares de Unix.
Este paquete se divide en tres partes:
Un conjunto de programas que intentan de forma automtica detectar
potenciales riesgos de seguridad. Estas pueden ser ejecutadas de manera
individual o mediante un script.
Documentacin, la cual detalla la ejecucin, operacin e interpretacin
de los resultados del programa.
El Script COPS de ejecucin en shell y perl.
Adems incluye algunos documentos de varios tpicos relacionados con
la seguridad en Unix.
La ltima versin liberada de COPS es la 1.04
Qu es Cops?
Permisos de archivos, directorios y dispositivos del sistema.
Cuentas sin password.
Contenido, formato y seguridad de los archivos de grupos y
password
Los programas y archivos que corren en /etc/rc* y en la tabla
de cron.
La existencia de archivos SUID propiedad de root, si estos
pueden ser escritos por cualquiera o si estos son shell scripts.
Verificacin CRC de binarios importantes o reporte de
alteraciones en archivos del sistema.
anonymous ftp habilitado.
Verifica las fechas de varios huecos de seguridad reportados
en CERT en los binarios del sistema.
Qu Verifica Cops?
Existen varios lugares de donde es seguro obtener via ftp el
paquete COPS:
ftp://ftp.asc.unam.mx/pub/tools/cops.tar.gz
ftp://ftp.cert.org/pub/tools/cops/cops.1.04.tar.gz
ftp://coast.cs.purdue.edu/pub/tools/unix/cops/cops.1.04.tar.gz
Es importante obtener el paquete limpio, ya que de obtenerlo de
un servidor no seguro exponemos nuestro sistema
innecesariamente, a un posible COPS troyano. Despus de
obtener el paquete es necesario desempaquetarlo, utilizando los
comandos tar y gunzip.
Dnde Obtener COPS ?
Cops est integrado por una serie de programas
especializados en la bsqueda de algn tipo de
vulnerabilidad dentro del sistema.
Para construir los binarios de cops se requiere realizar los
siguientes pasos:
a) Obtener las rutas de dependencia entre archivos, y
compiladores, esto es buscar los compiladores de gcc o cc,
los compiladores de la ayuda troff o nroff, etc. Esto se logra
ejecutando el script reconfig.
$ ./reconfig
Instalacin de Cops
b) Editar el shell script de cops y realizar las siguientes
modificaciones segn se requieran.
$vi ./cops
b.1) Cops requiere obtener la ruta completa donde se localizan el
directorio de cops, para esto debemos modificar la directiva
SECURE de cops, esta directiva se localiza cerca de la linea
93 y tiene la siguiente ruta por default.
SECURE = /usr/foo/bar
debe quedar:
SECURE=/path/to/cops_104/
Configuracin de Cops
b.2) Cops tiene la opcin de enviar la informacin obtenida por
medio de un correo electrnico para controlar esto debemos
utilizar la directiva SECURE_USERS, esta directiva se
encuentra una lnea abajo de la directiva SECURE, con la
direccin electrnica por default:
SECURE_USERS=foo@bar.edu
modificar por el correo electrnico del usuario que ejecutar
cops. Ejemplo:
SECURE_USERS=security@tutor.asc.unam.mx
c) Si nuestro sistema tiene habilitado /etc/shadow, el realizar una
verificacin de los password puede resultar innecesaria, para
deshabilitar esta opcin del cops se requiere comentar el
mdulo pass.chk, la ejecucin de este modulo dentro de
cops la encontraremos cerca de la lnea 198.
Se ve de la forma siguiente el cdigo que se necesita comentar.
if $TEST -n $verbose ; then
$ECHO **** pass.chk **** >> $VERBUCKET ; fi
$SECURE/pass.chk -w ./pass.words -b -g -s -c -d -n >>
$RESULT 2>> $BIT_BUCKET
d) Regularmente cuando una mquina es atacada, es comn
encontrar puertas traseras esto para garantizar la entrada
posterior al sistema, una puerta que puede pasar
desapercibida por presentar una cuenta valida en muchos
sistemas es la cuenta ftp anonymous, para verificar esta
opcin se debe habilitar la verificacin de ftp anonymous.
Cerca de la linea 192 se encuentra el cdigo que llama a la
rutina de verificacin de ftp.chk, se debe habilitar una
bandera para lograr que esta verifique las opciones de ftp
anonymous.
if $TEST -n $verbose ; then
$ECHO **** ftp.chk **** >> $VERBUCKET ; fi
$SECURE/ftp.chk -a >>$RESULT 2>> $BIT_BUCKET
e) Un recurso frecuente utilizado por los intrusos es
modificar ciertos binarios claves del sistema,
con esto garantizarse puertas de entrada o ejecutar troyanos
que les garanticen su entrada posterior.
Estas acciones generan rastros en el sistema los cuales
pueden ser detectados por cops, para esto se debe de habilitar
la ejecucin del mdulo crc.chk, ya que por default cops lo
lleva deshabilitado. La ejecucin de este mdulo se encuentra
cerca de la lnea 218, para esto descomentamos lo siguiente:
#if $TEST -n $verbose ; then
# $ECHO **** crc.chk **** >> $VERBUCKET ; fi
#$SECURE/crc.chk 2>> $BIT_BUCKET
# crc.chk puts its results in a file called crc.results ...
#if $TEST -s $SECURE/crc_results ; then
# $CAT $SECURE/crc_results >> $RESULT
#fi
f) Por ultimo salvar los cambios realizados en el script
cops.
Compilacin de los fuentes de cops.
Como ya mencionamos cops est integrado por una serie de
mdulos programados en C, los cuales realizan la verificacin
fuerte del sistema estos archivos se localizan en:
/path/to/cops_104/src/
Para obtener el cdigo ejecutable se requiere solamente de
ejecutar:
$ make all
Despus de haber compilado los fuentes de cops, solo
necesitaramos ejecutar el scripts cops el cual tiene la siguiente
sintaxis:
cops [-a architecture] [-b bit_bucket] [-s secure_dir] [-m user]
[-f filter_file] [-dxvV]
donde:
-a : Especifica el subdirectorio arquitectura que deseamos
ejecutar, Al ejecutar make install se generarn los
binarios adecuados.
-b : Especifica el bit bucket, donde se almacenarn todos
los mensajes de error.
Ejecucin de cops
-d : Enviar un reporte por correo electrnico si existen
cambios desde la ultima vez que se ejecuto cops.
-f : Especifica el archivo de filtro que cops usar para
filtrar los mensajes de advertencia extraos.
-m : Cops enva la salida por correo electrnico al
usuario especificado.
-x : Muestra la versin de cops.
-vV : Activa el modo de verbose
Ejemplo:
$ ./cops -v&
Nota: Al terminar la ejecucin de cops este generar un reporte
con los resultados encontrados este resultado se encontrar sobre
un directorio en la ruta que definimos dentro del script de cops
el directorio tendr el nombre de la mquina y dentro de este
directorio se encontrar un archivo con la fecha de la auditoria
con la caracterstica siguiente: ao_mes_dia.
Seguridad en Red
Introduccin
Qu es TCP Wrappers?
Qu es un Wrapper?
Historia del TCP Wrappers
Esquema de trabajo
Dnde obtenerlo
Instalacin de TCP Wrappers
Lenguaje de Control de
Acceso
TCP Wrappers Avanzado
Introduccin
El gran desarrollo que han tenido las redes de computadoras han
abierto a los usuarios posibilidades nunca antes imaginadas.
Actualmente una persona puede tener acceso a informacin que
est fsicamente localizada del otro lado del Planeta, o
comunicarse en cuestin de segundos con personas ubicadas a
muchos kilmetros de distancia.
Esto ha cambiado la forma como muchos de nosotros vemos y
usamos a las computadoras. Sin embargo tambin ha abierto la
posibilidad a muchos problemas. A travs de los mismos
servicios de red que nos permiten difundir y obtener
informacin, en muchas ocasiones ha sido posible obtener
acceso no autorizado a los sistemas, permitindo a los intrusos
utilizar recursos a los que no deberan tener acceso, o incluso
realizar actos dainos como robar o destruir informacin.
Los requerimientos de la seguridad varan dependiendo de la
complejidad de las tareas o actividades en las cuales se emplea
el equipo de cmputo y de la plataforma de equipo que stas
involucren. Las medidas de seguridad necesarias para proteger
una PC no es la misma que las medidas de seguridad necesarias
para garantizar el funcionamiento continuo de una red de rea
local (LAN), y stas a su vez son menores a las requeridas
cuando se trata de una de red rea amplia (WAN), que sera el
caso de la conexin a INTERNET.
TCP Wrappers permite controlar y proteger los servicios de red,
limitando el acceso como sea posible, y registrado todos las
conexiones para hacer el trabajo de detectar y resolver
problemas de forma ms fcil.
Qu es TCP Wrappers?
TCP Wrappers es una herramienta simple que nos sirve para
monitorear y controlar el trfico que llega por la red. Esta
herramienta ha sido utilizada exitosamente en la proteccin de
sistemas y la deteccin de actividades ilcitas.
Fue desarrollada por Wietze Zweitze Venema y esta basada en
el concepto de Wrapper; es una herramienta de seguridad libre
y muy util.
Un Wrapper es un programa para controlar el acceso a un
segundo programa. El Wrapper literalmente cubre la identidad
del segundo programa, obteniendo con esto un ms alto nivel de
seguridad.
Los Wrappers son usados dentro de la Seguridad en Sistemas
UNIX. Estos programas nacieron de la necesidad de modificar el
comportamiento del sistema operativo sin tener que modificar su
estructura.
Qu es un Wrapper?
Los Wrappers son ampliamente usados, y han llegado
a formar parte de herramientas de seguridad por las siguientes
razones:
Debido a que la seguridad lgica esta concentrada en
un solo programa, los Wrappers son fciles y simples de
validar.
Debido a que el programa protegido se mantiene como
una entidad separada, ste puede ser actualizado sin
necesidad de cambiar el Wrapper.
Debido a que los Wrappers llaman al programa
protegido mediante la llamada al sistema estndar
exec(), se puede usar un solo Wrapper para controlar el
acceso a diversos programas que se necesiten proteger.
Historia del TCP Wrappers
La historia del TCP Wrappers se remonta a 1990, cuando una de
las mquinas de la Universidad de Eindhoven en Holanda era
objeto de fuertes ataques por un Hacker alemn, que seguido
obtena privilegios de root. Cuando obtena dichos privilegios
introduca el comando "rm -rf /".
El comportamiento destructivo de este individuo haca muy
difcil averiguar que estaba pasando, dado que "rm -rf" remueve
cualquier huella. Una noche Venema noto que el Hacker lo
estaba observando a travs de la red, esto lo realizaba mediante
el comando finger, el cual proporciona informacin de los
usuarios de manera remota. Este tipo de servicio no requiere un
password, y casi nunca mantiene un registro de su uso, por lo
que fue el comienzo del diseo de un sistema que pudiera
detectar y registrar informacin de las conexiones realizadas.
Esquema de trabajo
Para explicar cmo trabaja el TCP Wrappers, primero
necesitamos entender cmo funcionan los servicios de red
TCP/IP en sistemas UNIX.
Los servicios de red se basan en el modelo Cliente Servidor. Por
ejemplo, cuando alguien usa el comando "telnet" para conectarse
a un servidor, el demonio del proceso "telnet" dentro del server
es ejecutada actuando as como servidor, dando al usuario la
capacidad para poder accesar al sistema.
Lo ms comn en sistemas Server es correr un "Daemon
que espera por cualquier clase de conexin a travs de la red.
Cuando una conexin tiene lugar, este "Daemon" (Usualmente
llamado inetd en Unix) corre el servicio apropiado y regresa a
su estado latente, en espera de otras conexiones, como se ilustra
en la figura:
inetd
ftpd
telnetd
.
.
.
fingerd
telnet cliente
telnet cliente login
Una vez analizado el modo en que los servicios de red
son inicializados en TCP/IP, veamos como lo hace TCP
Wrappers:
El truco consiste en hacer un intercambio, se mueve el
programa servidor de red a otro lugar, y se instala un programa
trivial en lugar del servidor original de red. Siempre que una
conexin tiene lugar, este programa registra el nombre del
servidor remoto y entonces corre el servicio de red
correspondiente como se ilustra:
telnet cliente
TCP
Wrappers
Archivo de
Registro
telnetd
Esencialmente TCP-Wrappers se compone de 4 programas:
tcpd. Es el demonio del TCP-Wrappers.
tcpdmatch. Predice como el tcpd manejara una peticin
en especfico.
tcpdchk. Verifica las reglas de control de acceso
contenidas en los archivos /etc/hosts.allow y
/etc/hosts.deny.
safe_finger. Versin de finger para implementar el finger
reversivo.
Existen muchos lugares de donde obtener esta herramienta, pero
los ms conocidos son los siguientes:
ftp://ftp.asc.unam.mx/pub/tools/tcp-wrappers.tar.gz
ftp://ftp.win.tue.nl/pub/security/tcp_wrappers_7.6.tar.gz
ftp://ftp.cert.org.pub/tools/tcp_wrappers/tcp_wrappers_7.6.tar.gz
ftp://coast.cs.purdue.edu/pub/tools/unix/tcp_wrappers/tcp_wrappers_7.6.tar.gz
Dnde obtenerlo
Instalacin de TCP Wrappers
1. Descompactar el archivo tcp_wrappers_7.6.tar.gz para
despus extraer los archivos de esta herramienta.
$ gunzip tcp_wrappers_7.6.tar.gz
$ tar xvf tcp_wrappers_7.6.tar
2. Revisar en el archivo /etc/inetd.conf la ruta del
directorio donde se encuentran los demonios de los servicios
de red.
finger stream tcp nowait nobody /usr/sbin/in.fingerd in.fingerd
telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd
En este caso, se encuentran los demonios en /usr/sbin.
3. En el archivo Makefile buscar la cadena
REAL_DAEMON_DIR donde aparecern distintas
opciones de rutas de directorios, descomentar la que
corresponda al directorio obtenido en el punto anterior. En
este mismo archivo buscar la cadena FACILITY=LOG_MAIL
y sustituirla por FACILITY=LOG_LOCAL0 a fin de que los
mensajes generados por el tcpd se registren por separado
de los generados por el sendmail y para habilitar las
extensiones del lenguaje y las opciones de banners buscar la
cadena STYLE y descomentar la lnea.
# SysV.4 Solaris 2.x OSF AIX
REAL_DAEMON_DIR=/usr/sbin
#
FACILITY= LOG_LOCAL0 # LOG_MAIL is what most sendmail daemons use
#
#Optional: Turning on language extensions
STYLE = -DPROCESS_OPTIONS # Enable language extensions.
4. Ejecutar el comando make; aparecern las
versiones de los sistemas operativos para los cuales el tcpd
ha sido configurado. Ejecutar nuevamente make s.o. ,
donde s.o. es el sistema operativo de la mquina
correspondiente.
$ make linux
Al terminar la compilacin existirn en el directorio actual los
archivos ejecutables tcpd, tcpdmatch, tcpdchk, try_from y
safe_finger, los cuales sern copiados al directorio donde se
encuentran los demonios de los servicios de red u otro directorio
(en este caso /usr/sbin).
$ mv tcpd tcpdmatch tcpdchk try_from safe_finger /usr/sbin
5. Editar el archivo "/etc/inetd.conf", sustituyendo
todas las referencias a las rutas de los demonios de
servicios de red que utilicen el protocolo TCP/IP por la ruta
donde se encuentra el tcpd.
Nota: hacer una copia de este archivo antes de editarlo
finger stream tcp nowait nobody /usr/sbin/tcpd in.fingerd
telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
6. Se recomienda mantener el registro de las conexiones
hechas por el tcpd en un archivo o bitcora. Se debe agregar
la siguiente lnea al archivo de configuracin "syslog.conf".
local0.info /usr/local/adm/tcpd.log
La bitcora puede crearse con el comando touch.
$ touch /usr/local/adm/tcpd.log
7. Reinicializar los demonios inetd y syslogd para que lean su
nueva configuracin de los archivos correspondientes.
$ ps aux | egrep inetd|syslogd
$ kill -HUP <pid_inetd> <pid_syslogd>
A partir de este momento, el tcpd debe registrar todos los
accesos a los servicios para los que se haya activado su
ejecucin.
$ telnet localhost
$ cat /usr/local/adm/tcpd.log
Sep 28 18:42:59 chela in.telnetd[29102]: connect from 127.0.0.1
Lenguaje de Control de Acceso
Patrones
El lenguaje de control de acceso implementa los siguientes
patrones:
Una cadena que comience con el carcter ".
Una cadena que termine con el carcter ".
Una expresin de la forma "n.n.n.n/m.m.m.m" es
interpretada como un patrn "dir_red/mascara", es
decir, la direccin de una mquina cliente coincide si dir_red
es igual al AND lgico de la direccin y la mascara.
Comodines
El lenguaje de control de acceso soporta los siguientes
comodines:
ALL. Si este comodn aparece en la lista de demonios dentro de
una regla de control de acceso, entonces coincide con cualquier
nombre de demonios de red del sistema. Si aparece en la lista de
clientes, entonces coincide con cualquier nombre o direccin de
mquinas cliente.
LOCAL. Este comodn coincide con cualquier cadena que no
contenga el carcter ".", su principal uso se encuentra en la lista
de clientes.
Operador EXCEPT. EXCEPT funciona como un operador que
tiene un uso esperado de la siguiente forma: lista_1 EXCEPT
lista_2; lo cual coincide todo lo que se encuentre en la lista_1 a
menos de que se encuentre en la lista_2.
Expansiones
%a. Estos caracteres se expanden a la direccin de la mquina
cliente.
%h. Estos caracteres se expanden al nombre de la mquina
cliente (o la direccin si el nombre no est disponible).
%d. Estos caracteres se expanden al nombre del demonio del
servicio de red correspondiente a la peticin.
%p. Estos caracteres se expanden al identificador del proceso
del demonio del servicio de red correspondiente.
%c. Este carcter se expande a la informacin del cliente ya sea
el nombre de la cuenta junto con la direccin o nombre de la
mquina cliente, dependiendo de cunta informacin est
disponible.
Archivos de Control de Acceso
El tcpd soporta una forma sencilla para controlar los
accesos a los servicios ofrecidos por nuestro sistema, los cuales
pueden ser manejados ya sea por mquina, por servicio o por
combinaciones de ambos.
El tcpd revisa qu servicio est siendo solicitado y desde dnde
con base a reglas de control de acceso que se encuentran en los
siguientes archivos (normalmente ubicados bajo el direectorio
/etc):
hosts.allow. Contiene las reglas que especifican las
maquinas y servicios que estn autorizados
hosts.deny. Contiene las reglas que especifican las
maquinas y servicios que NO estn autorizados
Reglas Para el Control de Acceso
Cada uno de los archivos de control de acceso consiste
de cero o ms lneas con el siguiente formato:
list-daemons : list-hosts [ : comando-shell ]
donde:
list-daemons es una lista de los nombres de los
demonios (servicios).
list-hosts es una lista de nombres, direcciones, o
patrones de hosts que sern comparados con el nombre o
direccin del host cliente que realiza la peticin del servicio.
Esta comparacin se realiza de manera secuencial, lnea por
lnea empezando por el archivo hosts.allow y terminando por el
archivo hosts.deny. La bsqueda se suspende cuando una regla
de control de acceso es activada.
comando-shell es un comando que podemos ejecutar,
normalmente se utiliza para implementar anzuelos.
Ejemplos de Archivos de Configuracin
Ejemplo 1
/etc/host.deny
# Niega todos los servicios a todas las maquinas cliente a menos de que
# estn especificadas en el archivo hosts.allow
ALL:ALL
/etc/hosts.allow
# En la primera regla se permite el acceso a los servicios de finger y ftp
# solamente al dominio .labvis.unam.mx
in.fingerd, in.ftpd:.labvis.unam.mx
# En la segunda regla se permite el acceso a todos los servicios de red
# solamente a mquinas que van desde la 132.248.170.8 a la 132.248.170.255
ALL:132.248.170.
Archivo tcpd.log
Sep 25 20:57:04 chela in.fingerd[1698]: connect from 132.248.159.3
Sep 25 20:59:24 chela in.telnetd[1706]: refused connect from 132.248.159.3
Sep 25 21:02:38 chela in.fingerd[1721]: connect from 132.248.170.8
Sep 25 21:03:50 chela in.fingerd[1727]: refused connect from themis.derecho.unam.mx
Ejemplo 2
/etc/hosts.deny
# Niega todos los servicios a todos las mquinas excepto a una en
# especfico: 132.248.170.8
ALL:ALL EXCEPT 132.248.170.8
Archivo tcpd.log
Sep 22 13:35:44 chela in.fingerd[18227]: refused connect from 132.248.170.9
Sep 22 13:37:39 chela in.fingerd[18235]: connect from 132.248.170.8
Ejemplo 3
/etc/hosts.deny
# Solamente se permite el servicio de finger para todo mundo excepto
# para la mquina 132.248.170.8
ALL EXCEPT in.fingerd:ALL EXCEPT 132.248.170.8
Archivo tcpd.log
Nov 22 14:08:35 chela in.fingerd[18371]: connect from 132.248.159.3
Nov 22 14:09:01 chela in.telnetd[18376]: refused connect from 132.248.159.3
Ejemplo 4
/etc/hosts.deny
# No se permite el acceso a los hosts que van desde la
# direccin 132.248.159.0 hasta la 132.248.159.7
ALL:132.248.159.0/255.255.255.248
Archivo tcpd.log
Nov 24 16:04:33 chela in.ftpd[28591]: refused connect from 132.248.159.3 Nov 24
16:05:04 chela in.ftpd[28595]: connect from 132.248.159.21
Ejemplo 5
/etc/hosts.allow
# Se permite el acceso a todo mundo menos a las m'aquinas de la red local
ALL:ALL EXCEPT LOCAL
Archivo tcpd.log
Aug 16 23:59:42 chela in.telnetd[13347]: refused connect from whisky
Ejemplo 6
/etc/hosts.allow
# Se permite el acceso a los dominio labvis.unam.mx a todos los servicios
# de red y el servicio ftp solo al dominio super.unam.mx
ALL:.labvis.unam.mx
in.ftpd:.super.unam.mx
Anzuelos
TCP-Wrappers brinda anzuelos para la ejecucin de
comandos de shell cuando una regla para el control de acceso es
activada.Consideremos la siguiente lnea del hosts.deny:
ALL:ALL: (/usr/sbin/safe_finger -l @%h | /bin/mail root)
En este caso se niega el acceso a todas las mquinas para todos
los servicios de red en el sistema y adems se implementa el
finger recursivo, es decir se hace un finger a la mquina cliente y
la salida es enviada por correo electrnico a un usuario
determinado.
Date: Wed, 26 Nov 1997 19:37:29 -0600
From: root <root@chela.super.unam.mx>
To: oss@asc.super.unam.mx
[themis.derecho.unam.mx]
Login name: gacarran In real life: Carranza Guerrero Gabriela A.
No Plan.
Banners
Esta opcin nos permite ser mas corteses cuando
negamos la peticin de servicios a mquinas cliente.
Habilitacin de la opcin de Banners.
Copiar el archivo Banners.Makefile que viene en la
distribucin del TCP-Wrappers en el directorio donde residirn
nuestros banners.
Dentro de este directorio crear y editar los archivos
correspondientes a cada servicio con su respectivo mensaje.
Editar el archivo Banners.Makefile en donde se puede
identificar fcilmente la parte correspondiente a cada servicio de
red. Sustituir la palabra prototype por el nombre del archivo
que contenga el mensaje de acuerdo al servicio de red
correspondiente.
Ejecutar el comando make para que acte sobre el archivo
Banners.Makefile.
Al finalizar el comando make, se habrn creado los archivos con
el nombre de los servicios de red (in.ftpd, in.telnetd en el caso de
Linux) los cuales contienen los mensajes en un formato
adecuado para que sean manejados por los demonios de los
servicios de red.
Qu es Secure Shell?
Dnde obtenerlo?
Versiones de secure shell
Instalacin de secure shell
Binarios bsicos de
Secure shell
Operacin de secure shell.
Secure Shell (Ssh) es un programa que permite realizar
conexiones con otras mquinas a travs de alguna red,
ejecutar programas en una mquina remota, y mover archivos
de una mquina a otra, de forma segura. Ssh provee fuerte
autenticacin y comunicacin segura sobre un canal
inseguro. Este es un remplazo a los comandos rlogin, rsh, y
rcp.
Adicionalmente, SSH provee seguridad para conexiones de
servicios X Window y envio seguro de conexiones
arbitrarias TCP.
Qu es Secure Shell?
Los servicios r (rlogin, rsh, rcp) son vulnerables a cierto tipo
de ataques. Cualquiera que tenga acceso de root a una mquina
en la red, o acceso fsico a la red de cmputo, puede obtener
acceso no autorizado por una gran variedad de formas, adems
de poder obtener informacin de ingresos a mquinas
escuchando (sniffer) el trafico sobre la red, esto incluye los
password ( con ssh esto no es posible).
El sistema X window tiene varias vulnerabilidades. Con ssh, se
puede crear una sesin X remota segura que permanece
transparente al usuario.
Ssh protege de los siguientes tipos de ataques:
IP spoofing, donde un host remoto enva paquetes a
otro host aparentando ser un tercer host.
Ruteo de IP spoofing, donde un host puede
pretender que un paquete de IP proviene de otro
hosts valido.
DNS spoofing, cuando un ataque provoca que los
registros de servidor de nombre se pierdan.
Interseccin de password en claro, u otra
informacin intercambiada entre dos hosts.
Manipulacin de datos que se encuentran en
intercambio entre hosts.
Protocolos de Secure Shell
Caractersticas del protocolo de Autenticacin:
Mecanismo de negociacin y autenticacin.
Soporte de mltiples mecanismos de autenticacin.
Soporte de banner pre-autenticacin.
Autenticacin basada en llave de cliente.
Caractersticas del protocolo de conexin:
Paso de variables de ambiente.
Agente de autenticacin.
Control de flujo y seales.
Caractersticas del protocolo de Transporte.
Corre sobre TCP/IP, pero puede trabajar sobre UDP.
Manejo de regeneracin de llaves.
Verificacin de identidad de cliente de servicio
utilizando llave pblica de cifrado.
Negociacin a travs de mecanismo de secreto
compartido
Qu algoritmos de cifrado utiliza SSH?
Ssh proporciona las siguientes opciones de cifrado:
DES
3DES
IDEA
Blowfish
Twofish
Ssh usa los siguientes cifrados para autenticacin:
RSA
DSA
Cmo Ssh autentifica?
Ssh autentifica utilizando uno o mas de los siguientes
mtodos:
Llave pblica (RSA o DSA).
Password.
Kerberos.
.rhosts o /etc/hosts.equiv.
Cuando inicia una sesin, ssh establece comunicacin con
el servidor de ssh (sshd), y posteriormente intenta
autentificar al usuario utilizando la siguiente secuencia.
Primero, si la mquina local del usuario se encuentra en los
archivos /etc/hosts.equiv o /etc/ssh/shosts.equiv del servidor
remoto, y adems el login del usuario es el mismo en ambas
mquinas, la entrada del usuario es permitida inmediatamente.
Segunda, si en el home del usuario de la mquina remota
existe alguno de los archivos .rhosts o .shosts y este archivo
contiene una lnea con el nombre de la mquina cliente y el
login del usuario, cumpliendose estos requisitos se permite la
entrada del usuario.
Estos dos mtodos presentan riesgos de seguridad, estos
riesgos puede ser reducidos si se utiliza una combinacin de
estos junto con una autenticacin basada en RSA. Esto
significa que el usuario solo obtendr el acceso, si la mquina
es reconocida por /etc/hosts.equiv, /etc/ssh/shosts.equiv,
.rhosts, .shosts, y adems puede verificar la llave del hosts
cliente:
($HOME/.ssh/known_hosts o /etc/ssh/ssh_known_hosts).
Ejemplo:
tutor.asc.unam.mx 1024 33
498339755842586657267109283152616088353241547574402687538560178
955256983984658064352705706822150671493163137462289309920741813
015594790641160363431690762872947160309555468936674856086281614
467129286485467651617448973081072952981758412749663954979538714
82229373472020415572629866029345549440297168066150844263
Este mtodo cierra los huecos tipo IP spoofing, DNS spoofing,
Routing spoofing.
Un tercer mtodo de autentificacin se basa en Autentificacin
RSA. El servidor conoce la llave pblica y solo el usuario conoce
la llave privada. El archivo $HOME/.ssh/authorized_key
contiene una lista de las llaves pblicas de los hosts que son
permitidos tener acceso a este servidor.
Ssh implementa el protocolo automtico de autenticacin RSA.
Cuando un usuario intenta tener acceso a esta mquina el
programa ssh transmite al servidor la llave pblica esperando
que sea utilizada para la autentificacin, el servidor verifica si
la llave es permitida, y si esto es as, enviar un nmero
generado de manera aleatoria utilizando esta llave pblica, este
nmero solo puede ser descifrado con la llave privada, si esto lo
logra el hosts cliente la comunicin se establece.
El usuario crea un par de llaves ejecutando ssh-keygen. La
manera en que se genera esto se proporcionar ms adelante.
Si cualquier mtodo de autenticacin falla, ssh solicitar
al usuario el password. El password es enviado al host
remoto para su verificacin por el canal cifrado.
Ejemplo de negociacin de ssh cliente/servidor.
SSH Version 1.2.27 [alpha-dec-osf4.0], protocol version 1.5.
Standard version. Does not use RSAREF.
ejemplo.asc.unam.mx: Reading configuration data /etc/ssh_config
ejemplo.asc.unam.mx: ssh_connect: getuid 254 geteuid 0 anon 0
ejemplo.asc.unam.mx: Connecting to tutor [132.248.159.13] port 22.
ejemplo.asc.unam.mx: Allocated local port 1019.
ejemplo.asc.unam.mx: Connection established.
ejemplo.asc.unam.mx: Remote protocol version 1.5, remote software
version 1.2.27
ejemplo.asc.unam.mx: Waiting for server public key.
ejemplo.asc.unam.mx: Received server public key (768 bits) and host key
(1024 bits).
ejemplo.asc.unam.mx: Host 'tutor' is known and matches the host key.
ejemplo.asc.unam.mx: Host 'tutor' is known and matches
the host key.
ejemplo.asc.unam.mx: Initializing random; seed file
/usr/users/tutor/.ssh/random_seed
ejemplo.asc.unam.mx: Encryption type: idea
ejemplo.asc.unam.mx: Sent encrypted session key.
ejemplo.asc.unam.mx: Installing crc compensation attack detector.
ejemplo.asc.unam.mx: Received encrypted confirmation.
ejemplo.asc.unam.mx: Trying rhosts or /etc/hosts.equiv with RSA
host authentication.
ejemplo.asc.unam.mx: Server refused our rhosts authentication or
host key.
ejemplo.asc.unam.mx: No agent.
ejemplo.asc.unam.mx: Trying RSA authentication with key
'tutor@ejemplo.asc.unam.mx'
ejemplo.asc.unam.mx: Server refused our key.
ejemplo.asc.unam.mx: Doing password authentication.
tutor@tutor.asc.unam.mx password:
Un lugar de donde podemos obtener ssh versin 1.2.27:
ftp://ftp.asc.unam.mx/pub/tools/ssh.tar.gz
Nota: En cualquiera de estos caso se obtiene acceso por
anonymous.
Dnde obtenerlo?
Versiones de Secure Shell
Hay dos protocolos desarrollados sobre ssh estos son:
SSH1: Este protocolo lo encontramos en la versin Unix es la
1.2.27 que puede ser utilizada libremente para propsitos no
comerciales.
SSH2: Provee licencias mas estrictas que SSH1, la versin
Unix de ssh es la 2.0.13 puede ser utilizada libremente por
instituciones educativas bajo una licencia expresa.
Cabe destacar que los algoritmos RSA y IDEA, que son
utilizados en ssh, son reclamadas como patentes en diferentes
paises, incluyendo US, asi que su uso puede ser legal o no,
todo dependiendo de la legislacin.
En algunos paises (Rusia, Iraq, y Pakistan) es ilegal el uso de
cualquier algoritmo de cifrado.
Instalacin de Secure Shell
Despus de haber obtenido el paquete de secure shell versin
1.2.27 -versin libre - procedemos a desempaquetarlo:
$gunzip ssh.tar.gz
$tar -xvf ssh.tar.
En este punto obtendremos un directorio ./ssh-1.2.27/ sobre el
punto donde desempaquetamos.
A continuacin se citan los pasos necesarios para obtener los
binarios de ssh, compilando los fuentes:
a) Configuracin del entorno de compilacin.
A diferencia de otras herramientas ssh no requiere de editar los
archivos Makefile, la configuracin la realizamos a travs de los
parmetros que le pasemos al script configure.
Dentro del directorio ./ssh-1.2.27/ encontraremos el script
configure, el cual tiene los siguientes argumentos validos:
--prefix=PREFIX Donde se instalar los
binarios por default
/usr/local.
--exec_prefix=PREFIX Donde instalara los
ejecutables por default el
mismo que prefix.
--with-rsh=PATH Usar especificaciones rsh
cuando sea necesario
--without-idea No incluir IDEA
--with-tis=PATH Soporte a mecanismo de
autentificacin TIS authsrv.
--with-etcdir=PATH Donde obtendra informacin
sobre el sistema por default
/etc.
--with-libwrap=[PATH] Usa libwrap (tcp_wrappers)
y identd.
--with-socks4[=PATH] Incluye soporte para SOCKS
(Cruce de firewall).
--with-socks5[=PATH] Incluye soporte para
SOCKS5.
--enable-warnigs Habilita la bandera -Wall al
compilador gcc.
Ejemplo:
Si nuestra intencin es lograr que tcp-wrapper lleve un control
sobre los accesos realizados con ssh, se necesitar la bandera --
with-libwrap, ademas se pretende realizar autenticar la maquina
para ejecutar comandos rsh, se requiere entonces la bandera --
with-rsh.
$./configure --wit-libwrap --wit-rsh=/path/to/rsh.
Para obtener la ruta a rsh utilizar el comando whereis.
Esto genera los cambios necesarios en los archivos de cdigo
fuente para su correcta compilacin.
b) Compilar los binarios de secure shell.
Para esto basta con ejecutar:
$make
c) Obtener las llaves del host as como los archivos de
configuracin del sistema, para esto ejecutar:
$make install
Obteniendo los archivos:
/etc/ssh_host_key
/etc/sshd_config
d) Ya que obtuvimos los binarios del sistema procedemos a
configurar el sistema para poder ejecutar el demonio del servidor
de ssh y permitir accesos por el puerto por default de secure shell
(port 22).
d.1) Editar el archivo /etc/inetd.conf e incluir la siguiente lnea:
(si se tiene demonio de tcp-wrapper)
ssh tcp root nowait /usr/local/sbin/tcpd /usr/local/sbin/sshd -i
(Si no se tiene habilitado tcp-wrapper)
ssh tcp root nowait /usr/local/sbin/sshd /usr/local/sbin/sshd -i
d.2) Editar el archivo /etc/services y habilitar el puerto de secure
shell, usando la siguiente lnea:
ssh 22/tcp
ssh 22/udp
e) Por ultimo Reiniciar el demonio de inetd.
e.1) Obtener el proceso de inetd.
$ps -fea | grep inetd
e.2) Enviar seal HUP.
$kill -HUP proceso
En este punto el sistema debe responder las peticiones de
conexin por secure shell.
Operacin de Secure Shell
Generando llave de autentificacin
El primer paso que se debe hacer es generar la llave de
autenticacin mediente el uso del comando ssh-keygen. Para
esto se debe decidir de antemano una frase que sea facil de
recordar.
Ejemplo:
$ssh-keygen
Initializing random number generator...
Generating p: .++ (distance 6)
Generating q: ........++ (distance 110)
Computing the keys...
Testing the keys...
Key generation complete.
Enter file in which to save the key ($HOME/.ssh/identity):
[RETURN]
Enter passphrase (empty for no passphrase): secure shell
Enter same passphrase again: secure shell
Your identification has been saved in /users/tutor/.ssh/identity.
Your public key is:
1024 37 [lots of numbers] tutor@tutor.asc.unam.mx
Your public key has been saved in /users/tutor/.ssh/identity.pub
Modificando la frase de password.
Para lograr modificar la frase debe utilizarse la opcin -p de
ssh-keygen.
$ssh-keygen -p
Enter file in which the key is ($HOME/.ssh/identity):
[RETURN]
Enter old passphrase:secure shell
Key has comment tutor@tutor.asc.unam.mx'
Enter new passphrase (empty for no passphrase): linux red
hat
Enter same passphrase again: linux red hat
Your identification has been saved with the new passphrase.
Accesos autorizados
Para permitir accesos al sistema hay que colocar la llave publica
en el archivo ~/.ssh/authorized_keys. Todas las llaves listadas
en este archivo tendrn acceso al sistema.
Entrada remota al sistema.
Para establecer una conexin a un sistema remoto debe utilizarse el
comando ssh. Si el nombre de la cuenta es el mismo que el de la
mquina local basta solamente usar como argumento el nombre del
sistema remoto.
$ssh tutor.remoto
Enter passphrase for RSA key tutor@tutor.asc.unam.mx': litt1e
1amp jumb3d
Last login: Wed Oct 16 20:37:00 1996 from idefix
[more output from the remote machine]
Puede evitarse la frase password manteniendo la llave de
autentificacin en memoria. Solamente se necesita utilizar ssh-
add.
$ssh-add
La opcin -d elimina la llave de memoria.
$ssh-add -d ~/.ssh/isp
Para obtener una lista de todas las llaves que mantenemos en
memoria usamos la opcin -l.
$ssh-add -l
Para borrar todas las llaves que se mantienen en memoria
usamos la opcin -D.
$ssh-add -D
Copiando archivos entre mquinas.
Pueden copiarse archivos entre sistemas utilizando el comando
scp. Para especificar un archivo en un sistema remoto
simplemente ser el nombre del sistema remoto seguido de dos
puntos (:)
Ejemplos:
$scp tutor@maquina:/tmpu/archivo /copias/
En este caso entrar a maquina remota con la cuenta tutor en el
directorio /tmpu/ y obtendr el archivo que colocar en el
directorio local /copias/.
$scp /copias/archivo tutor@maquina:~/bck/
En este caso realizar una copia desde un archivo local
/copias/archivo a una maquina remota colocando el archivo en
el directorio bck del home de tutor.
Sesin entre mquinas
Ssh permite mantener sesiones interactivas con una
mquina remota, de la forma del comando telnet, esto
podemos realizarlo de la siguiente forma:
$ssh -l login maquina.
La opcin -l permite proporcionar el login con el que se
entrar a la cuenta de la maquina remota. En caso de
mantener el mismo login en ambas mquinas no se
requiere este parametro -l.
$ssh maquina
Cifrado de Datos
Introduccin
Historia
Descripcin
General
Cmo Funciona
Ataques y
Problemas
Versiones
Cul Usar
PGP 2.6.3i
Introduccin
Hasta tan slo 25 aos, el intercambio de mensajes cifrados era
todava un privilegio reservado a militares, diplomticos y
servicios secretos. Los modernos sistemas de llaves pblicas
establecieron las bases para acercar esta potente tecnologa al
gran pblico, pero fue el lanzamiento en 1991 del popular
programa PGP, el que hizo por fin realidad el acceso de las
masas a las ventajas del correo electrnico ultrasecreto. Los dos
millones de usuarios cosechados desde entonces pueden
convertirse ahora en mucho ms, gracias a la facilidad de uso
que aporta PGP.
Problemas con el correo
Los mensaje no puede ser entregado y acaba en el buzn del
administrador del sistema de correo, que puede o no leerlo.
En otras ocasiones, alguien puede interferir el mensaje en su
largo trayecto por la red. Adems de leerlo, puede incluso
modificarlo y reenviarlo a su destino. Las consecuencias pueden
ser variadas.
Tambin existen determinadas personas u organizaciones que
pueden escanear, de forma simple y automatizada, grandes
cantidades de mensajes, quizs buscando informacin sensible
(nmeros de tarjetas de crdito, etc.) Hay demasiados "sniffers"
ah fuera!
El uso de PGP en el correo electrnico aporta significativas
ventajas que no conviene pasar por desapercibido:
Evita todos los inconvenientes que hemos reseado
previamente.
Hace valer el Derecho Constitucional a la Intimidad de
nuestras comunicaciones.
Contribuye a que el cifrado de los mensajes se convierta en una
prctica comn en Internet.
PGP garantiza el secreto de las comunicaciones electrnicas
para todos los ciudadanos, y no slo para los servicios secretos
de las Grandes Potencias o los grandes delincuentes. Por ello, la
legalidad de su empleo vara en los diferentes pases, en funcin
de cmo se respeten las libertades en ellos. As, en Estados
Unidos, el pas de origen del creador de PGP, el uso de PGP es
legal, pero se prohibe la exportacin del programa a otros
pases, al considerar la criptografa al mismo nivel que el
armamento. Es por esto que nunca debe de obtenerse PGP en
ningn sitio de ese pas, y tiene que utilizar la Versin
Internacional que fue desarrollada precisamente para disfrutar
de PGP en el resto del mundo.
En Mxico, la Constitucin reconoce el derecho al secreto en las
comunicaciones privadas, y el nuevo Cdigo Penal extiende ese
derecho al correo electrnico. Por tanto, el uso de PGP es legal
en Mxico. Esta es, por cierto, la situacin habitual en el mundo
libre.
Historia
La llegada de las computadoras comienza a complicar las cosas.
Asimismo, la Segunda Guerra Mundial hace que los pases en
contienda se interesen en la criptografa, desarrollando mquinas
de cifrado entre las que podran destacarse las mquinas Enigma
del ejrcito alemn. Los algoritmos empiezan a utilizar llaves
aleatorias, y gracias a diversos avances en la investigacin y el
incremento tan rpido de las potencias de clculo se ha llegado a
algoritmos por ahora indestructibles como IDEA, diseado en el
instituto ETH de Zurich en 1990 por James L. Massey y Xuejia
Lai.
Paralelamente, surge otro tipo de criptografa, la criptografa de
llave pblica. Su historia comienza en 1976, cuando Whitfield
Diffie y Martin Hellman desarrollan el algoritmo DH.
Al ao siguiente, 1977, Ron Rivest, Adi Shamir y Leonard
Adleman, del Massachussets Institute of Technology (MIT)
disean un nuevo algoritmo muy potente, el RSA. Y tan potente
era que la Agencia de Seguridad Nacional (NSA) del Gobierno
americano les sugiere no publicarlo. Haciendo caso omiso, y
sobre todo por temor a que ms adelante no se les sugiriese, sino
que les prohibiese, publican el algoritmo en la revista Scientific
American. El algoritmo es patentado a nombre de la compaa
RSA Data Security Inc., siendo vlida esta patente en Estados
Unidos y Canad.
Unos aos despus Ron Rivest disea un algoritmo para
producir extractos cifrados de mensajes (en ingls, message
digests), el MD5, siendo utilizados para comprobar que los
mensajes no han sido alterados.
En 1991 empieza a extenderse el rumor en Estados Unidos de
que el Gobierno quiere prohibir el empleo de la criptografa en
lneas de comunicacin, por ello, el programador Phillip
Zimmermann, combinando el mejor algoritmo existente de
llave nica, IDEA, con el mejor de llave pblica, el RSA, y
aadiendo el MD5 para las firmas digitales, crea el programa
PGP y lo distribuye como freeware por decenas de BBSs.
Un tiempo ms tarde surgira el conflicto. Alguien envi
en junio de 1991 a varios grupos de USENET una copia de PGP,
y as empez a distribuirse y utilizarse fuera de Estados Unidos,
incumpliendo la legislacin ITAR del Departamento de Estado
americano sobre exportacin de armas
Se lleg a una solucin doble. Se crearon dos versiones paralelas
de PGP: las de uso exclusivo para Estados Unidos y Canad, que
emplean una biblioteca de funciones, la RSAREF, de RSA Data
y que no son exportables a otros pases, encargndose el MIT de
la distribucin gratuita del PGP; y las de uso internacional
(identificadas aadiendo al nmero de versin una i), que
emplean la biblioteca MPILIB de Zimmermann y que desde la
primera versin salida de Estados Unidos han sido desarrolladas
en Europa para ahorrarle ms quebraderos de cabeza a
Zimmermann.
Descripcin General
PGP (Pretty Good Privacy, intimidad bastante buena), de
Phil's Pretty Good Software, es el programa ms extendido y
acreditado para el cifrado del correo electrnico. En la prctica,
utilizarlo equivale a dotar al correo de valores aadidos del
mximo inters:
confidencialidad
autentificacin
integridad
En pocas palabras: con PGP se dejan de sufrir las mltiples
carencias del correo electrnico ordinario y se pasa a disfrutar
de todas las ventajas del correo electrnico seguro.
PGP hace uso de los algoritmos criptogrficos ms
potentes del momento. Aunque la criptografa es un campo
extenso y complejo.
PGP combina la comodidad del criptosistema de llave pblica de
Rivest-Shamir-Adleman (RSA) con la velocidad de la
criptografa convencional, con resmenes de mensajes para
firmas digitales, con compresin de datos antes de cifrar, con un
buen diseo ergonmico y con una completa gestin de llaves.
Por otra parte, PGP realiza las funciones de llave pblica con
ms rapidez que la mayora de las dems implementaciones
informticas. PGP es criptografa de llave pblica para todos.
PGP versin Internacional es un programa GRATUITO para
usos no comerciales, est disponible para muchas plataformas
diferentes: MS-DOS, Windows, Unix, MacOS, Atari, Amiga,
OS2, etc, y la instalacin de PGP en su computadora aportar
nuevas funciones con las cuales nadie, absolutamente nadie,
podr leer su correo electrnico (aparte del destinatario que
indique, como es lgico) e impedir que alguien pueda suplantar
su identidad en Internet, pues sus mensajes llevarn su propia y
exclusiva firma digital, la cual es un bloque de caracteres que
acompaa a un documento o archivo, acreditando quin es su
autor ("autenticacin") y que no ha existido ninguna
manipulacin posterior de los datos ("integridad").
Cmo Funciona
En primer lugar, algo de vocabulario bsico. Supongamos que
quiero enviarte un mensaje que nadie excepto t puedas leer.
Podra "cifrar" el mensaje, lo que significa revolverlo de una
forma tremendamente complicada, con el fin de que resulte
ilegible para cualquiera que no seas t, el destinatario original
del mensaje. Yo pongo una "llave" criptogrfica para cifrar el
mensaje y t tienes que utilizar la misma llave para
descifrarlo.
Por lo menos as funciona en los criptosistemas convencionales
de "llave nica".
En criptosistemas de llave pblica, todo el mundo tiene
dos llaves complementarias, una revelada pblicamente y otra
secreta (llamada tambin llave privada). Cada llave abre el
cdigo que produce la otra. Saber la llave pblica no sirve para
deducir la llave secreta correspondiente. La llave pblica puede
publicarse y distribuirse ampliamente por una red de
comunicaciones. Este protocolo proporciona intimidad sin
necesidad de ese canal seguro que requieren los criptosistemas
convencionales.
Cualquiera puede utilizar la llave pblica de un destinatario para
cifrar un mensaje y l emplear su llave secreta correspondiente
para descifrarlo. Slo l podr hacerlo, porque nadie ms tiene
acceso a esa llave secreta. Ni siquiera la persona que lo cifr
podra descifrarlo.
Tambin proporciona autenticacin para mensajes. La llave
secreta del remitente puede emplearse para cifrar un mensaje,
"firmndolo". Se genera una firma digital, que el destinatario (o
cualquier otra persona) puede comprobar al descifrarla con la
llave pblica del remitente. De esta forma se prueba el
verdadero origen del mensaje y que no ha sido alterado por
nadie, ya que slo el remitente posee la llave secreta que ha
producido esa firma. No es posible falsificar un mensaje
firmado y el remitente no podr desautorizar su firma ms
adelante.
Estos dos procesos pueden combinarse para obtener intimidad y
autenticacin al mismo tiempo si se firma primero el mensaje
con la llave secreta y se cifra despus el mensaje firmado con la
llave pblica del destinatario. El destinatario sigue estos pasos
en sentido contrario al descifrar primero el mensaje con su
propia llave secreta y comprobar despus la firma con la llave
pblica del remitente. El programa lo hace automticamente.
PGP utiliza "resmenes de mensaje" para elaborar las
firmas. Un resumen de mensaje es una funcin "distribucin"
("hash") unidireccional de 128 bits, criptogrficamente resistente,
de ese mensaje. Es anlogo a una "suma de verificacin" o
cdigo CRC de comprobacin de errores: "representa" el mensaje
de forma compacta y se utiliza para detectar cambios en l. A
diferencia de un CRC, sin embargo, resulta computacionalmente
impracticable para un atacante idear un mensaje sustitutivo que
produzca un resumen idntico. El resumen del mensaje se cifra
con la llave secreta para elaborar la firma. Los documentos se
firman aadindoles como prefijo un certificado de firma, junto
con el identificador de la llave que se utiliz para realizarla, un
resumen de mensaje del documento (firmado con la llave secreta)
y un sello de hora del momento de la firma. El destinatario utiliza
el identificador de la llave para buscar la llave pblica del
remitente y comprobar la firma.
Ataques y Problemas
PGP ha demostrado ampliamente su gran seguridad, y todava
ningn experto ha podido romper sus llaves. Sin embargo, por
razones ajenas al programa y que caen fuera de sus
posibilidades, puede no ser impenetrable en algunos casos a los
ataques destinados a hacerse con nuestros datos. El principio
fundamental que hay que tener en mente es si la informacin que
se protege es ms valiosa que los medios para obtenerla para
aprender a defenderse de los ataques poco costosos e ignorar los
caros. Algunos de los planteamientos que se van a presentar
pueden parecer paranoicos, pero ser paranoico es algo
recomendable en cuestiones de seguridad.
Descubrimiento de la pass-phrase (Frase secreta)
Archivos no del todo borrados
Virus y caballos de Troya
Fallos de seguridad "fsicos
Escuchas
I nseguridad en equipos multiusuario
Anlisis del trfico
Criptoanlisis
Versiones
Llegados a este punto hay que destacar el considerable
desconcierto que aparece con las diferentes versiones de PGP
existentes. Debido a la poltica existente en Estados Unidos en lo
referente a exportacin de material criptogrfico, han ido
surgiendo diferentes versiones de PGP y diferentes legislaciones
para su uso.
Versiones Freeware de PGP
PGP 2.3a
PGP 2.6ui
PGP 2.62ui
MIT PGP 2.6.2
PGP 2.6.3i
PGP 5.0i
PGP 5.5.3i
PGP 6.0.2i
Versiones comerciales de PGP (para Estados
Unidos y Canad nicamente)
ViaCrypt PGP 2.7.1 y 4.0
Al ser comercial incluye manual, licencia de uso individual.
No incluye fuentes.
PGP 4.5 y 5.0
En Junio de 1996 PGP Inc. compra ViaCrypt y comienza a
desarrollar versiones comerciales de PGP para los Estados
Unidos y Canad. La versin ms reciente es PGPMail 4.5.
Cul Usar
El mejor consejo que se puede dar para los que decidan usar las
nuevas versiones 5.xi y asegurarse de la compatibilidad con
todas las versiones, es que deberan tener dos pares de llaves,
una RSA para mantener la compatibilidad, y otra DSS/DH para
utilizar los nuevos avances de la criptografa y las nuevas
versiones 5.xi y 6.xi al mximo, pudiendo as funcionar con dos
llaves usando RSA cuando tengan que intercambiar correo
cifrado con usuarios de versiones antiguas.
Los que han estado usando versiones antiguas y se cambien a la
nueva pueden mantener su antigua llave RSA y generar un par
nuevo DSS/DH y desde PGPKeys seleccionar una u otra por
defecto para mantener la compatibilidad.
Y los que empiecen desde cero tendrn que crear el parde llaves
RSA con la versin 2.6.3i ya que la nueva versin 5.0i NO
puede generar llaves RSA, si quiere usar PGP con usuarios de
versiones anteriores, esta subsanado en la nueva versin 5.5.3i
que ya puede generar llaves RSA.
PGP 2.6.3i
Se trata de la versin ms clsica de PGP 100% compatible con
las versiones de PGP del MIT, que lleva ya algunos aos en la
brecha, pero sigue igual de potente, verstil y segura. No
obstante, la utilidad de esta versin clsica de PGP ha quedado
muy limitada ante la aparicin de versiones mucho ms
modernas y elaboradas, y ha dejado de ser una eleccin adecuada
para el usuario normal de PGP.
PGP 2.6.3i puede leer y entender mensajes, llaves y firmas
creadas con cualquier versin de PGP 2.x. Debido a que PGP
2.6.3i usa MPILIB en vez de RSAREF, todava es capaz de
entender el viejo formato de firma de llaves de las versiones
PGP 2.2 y anteriores. No obstante, no puede escribir tales
firmas.
PGP 2.6.3i no es un programa oficial ya que fue basado en un
cdigo fuente que una vez fue exportado ilegalmente desde los
EEUU. Sin embargo, una vez que el programa ha sido
exportado, cualquiera puede usarlo libremente. Phil
Zimmermann, el autor original de PGP, ha emitido una
declaracin pblica sobre PGP 2.6.i (el predecesor a PGP
2.6.3i), la cual posiblemente es lo ms prximo a un apoyo que
l podra efectuar sin incriminarse a s mismo.
Es perfectamente legal usar PGP 2.6.3i siempre y cuando no
viva en un pas donde la codificacin es ilegal (tal como Francia,
Rusia, Irn, Iraq o China), no se encuentre fsicamente dentro de
los EEUU o se asegure que no baj una copia de PGP que se
encuentre fsicamente dentro de los EEUU.
Existir versiones GRATIS para MS-DOS/Windows, Mac y
Unix; PGP est tambin disponible para otras plataformas
menos habituales:
OS/2
Amiga
Atari
VAX/VMS
PGP 2.6.3i en Unix
Introduccin
Internet es una red totalmente heterognea, en cuanto a
mquinas, sistemas operativos, programas, etc., as pues PGP
est disponible para las principales plataformas, UNIX, MS-
DOS, Windows ( 95, NT ) Macintosh etc. En esta seccin
trataremos sobre la instalacin para sistemas UNIX que
comprende diferentes versiones (en general cada fabricante de
equipos ha desarrollado su propia versin de UNIX), AIX
(IBM), HP-UX (Hewlett Packard), IRIX (Silicon Graphics),
SunOS, SOLARIS (SUN Microsystems ), Digital Unix (DEC)
etc. Junto a estos sistemas comerciales se han desarrollado
versiones de Unix de libre distribucin como son Linux,
FreeBSD, NeTBSD, etc, muy usadas en PC's compatibles con
procesadores 386,486 o Pentium.
Antes que nada es necesario compilar el programa antes de que
podamos usarlo. Esto es habitual en el mundo UNIX, debido a
que es un sistema que funciona en maquinas completamente
diferentes con sistemas a su vez diferentes, de manera que la
nica forma de que un programa pueda funcionar en todas ellas
sin tener que hacer una versin especfica para cada una es
obtener el cdigo fuente del programa y compilarlo en tu
mquina "a medida". No obstante y teniendo en cuenta la
popularidad de determinados sistemas Unix (sobre todo Linux,
por ser de libre distribucin y funcionar en mltiples
plataformas) se han elaborado "paquetes" ya compilados con el
programa PGP listo para instalar, lamentablemente los paquetes
suelen depender de la versin de Unix, e incluso dentro de Linux
hay varios formatos.
Hay que seguir tres pasos para poder usar PGP en UNIX
cmodamente:
Conseguir el programa en cdigo fuente
Compilarlo en nuestra mquina
Instalarlo
Dnde conseguirlo
Bien; lo primero que necesitaremos es conseguir el programa;
como es de libre distribucin, lo podremos encontrar en muchos
servidores de FTP annimo. El nombre del archivo podr ser
"pgp263is.tar.gz" "pgp263is.tgz", donde la "s" indica que es
cdigo fuente (source) y la extensin "tgz" tar.gz ( son
equivalentes ) indica que han sido comprimidos con el programa
"gzip" y empaquetados con el programa "tar" ambos muy
comunes en las mquinas UNIX.
ftp://ftp.asc.unam.mx/pub/tools/pgp.tar.gz
Primeros pasos de la instalacin
Ya que tenemos el programa, vamos a descomprimirlo y
desempaquetarlo, simplemente tecleando en la lnea de
comandos:
$ gzip -d pgp263is.tar.gz
con este comando lo hemos descomprimido, ahora nos queda el
nombre sin la extensin "gz" es decir pgp263is.tar, para
desempaquetarlo ejecutamos el siguiente comando:
$ tar xvf pgp263is.tar
Esta accin crea cinco archivos (varios "readme", una firma
digital y notas de la distribucin) y otro archivo empaquetado
con "tar", llamado "pgp263ii.tar" que contendr todo el cdigo
fuente del programa, la documentacin necesaria y el resto de
archivos. As pues lo desempaquetamos de nuevo:
$ tar xvf pgp263ii.tar
En este caso nos crear muchos ms archivos y tres directorios
"doc", "contrib" y "src" donde estarn contenido los archivos
fuentes. Nos cambiamos a este ltimo directorio y nos
prepararemos para compilar el PGP.
$ cd src
Compilar PGP
Como casi siempre en UNIX, los programas se compilan usando
el programa "make". Vamos a proceder a compilar PGP, pero
previamente debemos saber con exactitud qu sistema UNIX
estamos usando, pues la compilacin vara de un sistema a otro.
Si no sabemos qu UNIX tenemos, podemos usar el siguiente
comando:
$ uname -a
Para compilar, usaremos el comando "make" en la forma:
$make <sistema_unix>, donde <sistema_unix> es uno de los
que estn definidos en el archivo "makefile" del PGP y que
podemos ver tecleando "make" a secas.
As pues, si nuestro sistema es por ejemplo Linux
funcionando en un PC, teclearamos:
$ make linux
Y comenzara la compilacin, que puede tardar unos cuantos
minutos dependiendo de lo rpido que sea nuestro sistema.
Al final de la compilacin, si todo va bien, encontraremos un
archivo llamado "pgp" y ejecutable, que ser ya el programa
definitivo, con lo que pasaramos a su instalacin. Podramos
probar el funcionamiento del programa simplemente tecleando
"./pgp".
$ ./pgp
Completando la instalacin
Ahora realizaremos una serie de pasos para que el programa PGP
quede correctamente instalado. Aqu existe una pequea
diferencia en cuanto a si estamos instalando PGP para nuesto uso
particular (como usuarios normales) o para todo el sistema (como
administrador, root, o super-usuario). Supondremos primero que
lo instalamos por nuestra cuenta; al no poder copiar archivos en
los directorios del sistema (no tenemos permisos para ello)
tendremos que almacenar tanto el programa como los archivos de
configuracin, ayuda etc. en nuestro directorio personal.
Si somos simples usuarios
1. Copiar el programa PGP a otro directorio.
Copiaramos el programa a su localizacin definitiva. Es
importante que este directorio tenga el "PATH" puesto, ya que si
no nos obligara a usar el programa dndole siempre el camino
completo.
$ cp pgp ../programas
2. Crearnos un directorio ".pgp".
Necesitaremos un directorio para almacenar los archivos de llaves
y alguna otra cosa ms. Este directorio se debe llamar ".pgp y lo
crearemos en nuestro directorio personal.
$ mkdir .pgp
3. Instalar la documentacin y ayuda. En el directorio
"doc" tenemos los archivos pgpdoc1.txt y pgpdoc2.txt.
Debemos copiarlos al directorio ".pgp.
$ cp pgpdoc* ../.pgp
En este mismo directorio esta la pgina man de PGP. Tambin
es til copiarla al directorio ".pgp" y mejor ya formateada, para
no tener que verla con el programa "nroff". Para ello:
$ nroff -man pgp.1 > pgp.manual
$ cp pgp.manual ../.pgp
4. Copiar los archivos de configuracin. Copiamos los
archivos "es.hlp", "language.txt" y "config.txt" en el directorio
".pgp". Estos archivos son de configuracin y de ayuda.
$ cp es.hlp config.txt language.txt .pgp
5. Configurar el lenguaje y el juego de caracteres a
usar. Editaremos el archivo config.txt para especificar el
lenguaje a usar y el juego de caracteres. Este archivo viene
comentado y en l se indica dnde y cmo cambiar estos valores.
# Representation of Names of Languages
#
Language = es
#
CharSet = latin1
Para tener el sumario de rdenes en espaol renombraremos al
archivo "es.hlp" como "pgp.hlp":
$ mv es.hlp pgp.hlp
Si somos administradores
Si es administrador de la mquina, puede instalar el programa
para todos los usuarios, aunque cada uno deber crearse de la
misma forma ya indicada antes, su directorio personal ".pgp".
1. Instalar el ejecutable "pgp" en un directorio de
programas.
$ cp src/pgp /usr/local/bin
2. Instalar la pgina man pgp.1 en su lugar correcto, para que
los usuarios puedan consultar la ayuda con "man pgp". Este lugar
en general es /usr/man/man1. Las pginas man suelen estar
comprimidas para ahorrar espacio en disco; si este es el caso en
tu sistema, primero la comprimiramos y luego la copiaramos:
$ gzip pgp.1
$ cp pgp.1.gz /usr/man/man1
3. Colocar la documentacin ("pgpdoc1.txt" y
pgpdoc2.txt") en /var/lib/pgp (podra variar con el
sistema).
$ mkdir /var/lib/pgp
$ cp pgpdoc1.txt pgpdoc2.txt /var/lib/pgp
4. Copiar los archivos de configuracin ("config.txt",
"language.txt" y "es.hlp") en /usr/local/lib/pgp y editarlos
para adaptar el idioma y la ayuda al espaol.
$ mkdir /usr/local/lib/pgp
$ cp config.txt language.txt es.hlp /usr/local/lib/pgp
$ cd /usr/local/lib/pgp; mv es.hlp pgp.hlp
5. Crear a los usuarios (o indicarles que deben hacerlo) un
directorio en su directorio personal llamado ".pgp", donde se
almacenarn los archivos que contienen los anillos de llaves
pblicas y privadas.
Cmo utilizar PGP
Para ver un resumen rpido de las instrucciones de PGP, escribe:
$ pgp -h
Generacin de llaves RSA
Para generar tu propio par nico de llaves pblica/secreta de un
tamao determinado, escribe:
$ pgp -kg
PGP mostrar un men de tamaos recomendados para la llave
(nivel comercial bajo, nivel comercial alto y nivel "militar") y te
pedir qu indiques qu tamao de llave quieres, hasta 2048 bits.
Tambin se pide un identificador de usuario, esto es, tu nombre
junto con tu e-mail (Rodrigo Lopez Valencia <lopez@net>).
PGP tambin pedir una "contrasea" para proteger tu
llave secreta. La contrasea puede ser una expresin o frase con
varias palabras, espacios, signos de puntuacin o cualquier cosa
que quieras poner. No la pierdas, porque no hay forma de
recuperarla. La contrasea te har falta ms adelante, cada vez
que utilices tu llave secreta.
El programa te pedir que introduzcas un texto al azar para poder
acumular algunos bits aleatorios para las llaves. Cuando se te
pida, debes pulsar algunas teclas razonablemente al azar
El par de llaves generado se colocar en tus anillos de llaves
pblicas y secretas. Puedes utilizar ms adelante la orden "pgp -
kxa" para extraer (copiar) tu nueva llave pblica desde el anillo
correspondiente y ponerla en un archivo de llave separado, listo
para distribuir entre tus amigos.
Extraccin (copia) de una llave del anillo
Para extraer una llave del anillo de llaves pblicas o secretas:
$ pgp -kx identificador llave_publica.asc [anillo]
Este proceso copia (sin borrar) la llave especificada por el
identificador desde el anillo al archivo indicado. Si la llave tiene
alguna firma de certificacin, tambin se copia con la llave.
Si quieres que la llave extrada se represente en caracteres ASCII
imprimibles, para correo electrnico, pon las opciones -kxa.
Visualizacin del contenido del anillo
Para ver el contenido del anillo de llaves pblicas:
$ pgp -kv[v] [identificador] [anillo]
Para ver las firmas de certificacin de cada llave, utiliza la opcin
-kvv: $ pgp -kvv [identificador] [anillo]
Adicin de una llave al anillo de llaves
Para aadir el contenido de un archivo de llaves pblicas o
secretas al anillo de llaves correspondiente:
pgp -ka llave_de_otro.asc [anillo].
El nombre opcional del anillo es, por omisin, "pubring.pgp" o
"secring.pgp", segn se refiera a llaves pblicas o secretas.
Puedes indicar un nombre diferente para el archivo y tambin su
extensin por omisin ser ".pgp".
Eliminacin de una llave o identificador del anillo
Para suprimir una llave del anillo de llaves pblicas:
$ pgp -kr identificador [anillo]
Cifrado de un mensaje
Para cifrar un mensaje de texto normal con la llave pblica
del destinatario, escribe:
$ pgp -e archivo.txt su_identificador
Esta orden produce un texto cifrado llamado archivo.txt.pgp.
Ejemplo:
$ pgp -e carta.txt Alice
$ pgp -e carta.txt "Alice S"
Si se encuentra una llave pblica que coincide, PGP la utiliza
para cifrar el archivo normal "carta.txt" y produce un archivo
cifrado llamado "carta.txt.pgp".
PGP intenta comprimir el texto en claro antes de cifrarlo, lo que
mejora considerablemente su resistencia al criptoanlisis.
Si quieres enviar el mensaje cifrado por canales de correo
electrnico, convirtelo al formato ASCII imprimible "radix-64"
aadiendo la opcin -a.
$ pgp -ea carta.txt Alice
Cifrado de un mensaje para mltiples destinatarios
Si quieres enviar el mismo mensaje a ms de una persona,
puedes hacer que se cifre para varios destinatarios.
$ pgp -ea carta.txt Alice Bob Carol
As se crea un archivo cifrado llamado carta.txt.pgp que podra
descifrar Alice, Bob o Carol. Puede indicarse cualquier nmero
de destinatarios.
Firma de un mensaje
Para firmar un archivo normal con tu llave secreta, escribe:
$ pgp -s archivo.txt [-u tu_identificador]
Esta orden produce un archivo firmado llamado
archivo.txt.pgp. Un ejemplo podra ser:
$ pgp -s carta.txt -u Bob
Esta orden busca en el archivo de llaves secretas "secring.pgp"
cualquier certificado que contenga la cadena "Bob" en el
identificador de usuario. Te llamas Bob, no?. La bsqueda no
tiene en cuenta el tipo de letra. Si se encuentra una llave secreta
que coincide, PGP la utiliza para firmar el archivo normal
"carta.txt" y produce un archivo firmado "carta.txt.pgp".
Para firmar mensajes electrnicos en los que quieras dejar el
resultado legible. La firma se aplica en un formato imprimible al
final del texto y se desactiva la compresin. As el texto
permanece legible aunque no se compruebe la firma. Ejemplo:
$ pgp -sta archivo.txt
Se genera un mensaje firmado en el archivo "archivo.txt.asc",
formado por el texto original, todava legible, y una firma ASCII
imprimible aadida, todo preparado para enviar por correo
electrnico.
Firma y posterior cifrado
Para firmar un archivo normal con tu llave secreta y despus
cifrarlo con la llave pblica del destinatario:
$ pgp -es archivo.txt su_identificador [-u tu_identificador]
Este ejemplo produce un archivo cifrado anidado,
archivo.txt.pgp. Si no incluyes el identificador de usuario del
destinatario, te pedir que lo introduzcas. Si no indicas tu propio
identificador de usuario, se utiliza la llave ms reciente del anillo
de llaves secretas como eleccin por omisin para la firma.
Si quieres enviar este mensaje cifrado por medio de canales de
correo electrnico, convirtelo al formato ASCII imprimible
"radix-64" aadiendo la opcin -a.
Descifracin y comprobacin de firmas
Para descifrar un archivo cifrado o para comprobar la integridad
de un archivo firmado:
$ pgp -d[p] arch_cifrado [-o arch_normal]
Por omisin se asume que el nombre del archivo cifrado tiene
una extensin ".pgp". Si se anida una firma dentro de un archivo
cifrado, se descifra automticamente y se comprueba su
integridad. Se mostrar el identificador completo del firmante.
Revocacin de una llave pblica
Supongamos que, por algn motivo, tanto tu llave secreta como
tu contrasea se ven comprometidas. Tendrs que decrselo al
resto del mundo para que dejen de utilizar tu llave pblica. Para
ello, tienes que emitir un certificado de "compromiso de llave" y
revocar la llave pblica. Para generar ese certificado, utiliza la
orden -kd:
$ pgp -kd tu_identificador
Este certificado lleva tu firma, realizada con la misma llave que
ests revocando. Deberas distribuirlo ampliamente cuanto antes.
Las personas que lo reciban podrn aadirlo a sus anillos de
llaves pblicas y sus programas PGP evitarn automticamente
que vuelvan a utilizar la llave antigua por error. Puedes generar
un nuevo par de llaves secreta/pblica, y publicar la nueva llave
pblica.
rea de Seguridad en Cmputo
DGSCA-UNAM
Tel : (01) 5622-8169
Fax: (01) 5622-8043
http://www.asc.unam.mx
ftp://ftp.asc.unam.mx
E-Mail : asc@asc.unam.mx

También podría gustarte