Académique Documents
Professionnel Documents
Culture Documents
a por el cortafuegos, denominado iptables, el cual puede controlar el acceso a los niveles de subcapa de acceso al medio, capa de red, capa de transporte y en algn caso incluso la capa de aplicacin. La segunda capa est formada por los envolventes de acceso o TCP Wrappers, que controlan los permisos para acceder a un determinado servicio segn el ordenador remoto que lo solicita. Por ltimo, la tercera y ltima capa de seguridad se encuentra en el sperservidor xinetd, cuyo funcionamiento es similar al de los envolventes de acceso pero con un nivel de configuracin mucho ms detallado.
Las tres utilidades descritas se aplican de manera consecutiva y aditiva, de forma que cuando un paquete llega por la interfaz de red a un host en primer lugar lo analiza el
REDES
3ER NIVEL
GRUPO 3
iptables de acuerdo con las reglas que tiene definidas y decide si el paquete tiene o no permitida la entrada. En caso negativo el paquete es descartado sin ms, independientemente de lo que pudieran determinar las reglas de los TCP Wrappers o el xinetd. Si el paquete pasa el filtro del iptables los TCP Wrappers se encargarn de inspeccionar si est permitido el acceso, de acuerdo con las reglas configuradas; en caso negativo el acceso ser denegado, independientemente de lo que dispongan las reglas de xinetd. Por ltimo, si el paquete ha superado tanto los filtros del iptables como los del TCP Wrappers el xinetd analizar si est permitido el acceso solicitado. Solo cuando las tres utilidades hayan permitido el acceso podr el paquete llegar finalmente al proceso servidor el que va dirigido y generar la accin correspondiente, que podra ser por ejemplo el establecimiento de una conexin TCP con dicho proceso. Por supuesto aquellos servicios que no son controlados por las tres capas (como en el caso de sendmail y sshd del ejemplo anterior) solo tendrn que superar el control establecido por las utilidades que les afectan.
REDES
3ER NIVEL
GRUPO 3
atendidos directamente por el propio proceso xinetd, sin necesidad de lanzar ningn proceso independiente. Estos se denominan servicios internos. Adems de reducir la cantidad de recursos utilizados para ofrecer servicios en un host el super-servidor xinetd permite establecer un control en el acceso mediante unos ficheros de configuracin especficos de cada servicio.
REDES
3ER NIVEL
GRUPO 3
Asegure los servicios con TCP Wrappers y xinetd Los TCP wrappers proporcionan control de acceso a una variedad de servicios. La mayora de los servicios modernos de redes, tales como SSH, Telnet y FTP, hacen uso de TCP wrappers, que montan guardia entre las peticiones entrantes y el servicio solicitado. Los beneficios ofrecidos por TCP wrappers son mejorados cuando se usan en conjunto con xinetd, un super servicio que proporciona acceso adicional, conexin, enlace, redireccin y control de la utilizacin de recursos. Mejorar la seguridad con TCP Wrappers Los TCP wrappers son capaces de mucho ms que simplemente negar el acceso a servicios. Esta seccin ilustra cmo se pueden usar para enviar pancartas de conexin, avisar sobre ataques desde hosts particulares y mejorar la funcionalidad de conexin. Para una lista detallada de la funcionalidad y el lenguaje de control de los TCP wrappers, consulte la pgina del manual de hosts_options. Los TCP Wrappers y las pancartas de conexin Una buena forma de disfrazar qu sistema est ejecutando el servidor, es enviando un mensaje intimidante a las conexiones clientes para un servicio. Esto tambin permite dejarle saber al atacante que el administrador del sistema est atento y vigilante. Para implementar un mensaje de TCP wrapper para un servicio, utilice la opcin banner. Este ejemplo implementa una pancarta para vsftpd. Para comenzar, debe crear un archivo de pancartas. Este puede estar en cualquier lugar en el sistema, pero debe tener el mismo nombre que el demonio. Para este ejemplo, se nombrar al archivo/etc/banners/vsftpd. Los contenidos del archivo se veran as: 220-Hello, %c 220-All activity on ftp.example.com is logged. 220-Act up and you will be banned. La seal %c proporciona una variedad de informacin del cliente, tal como el nombre de usuario y del host, o el nombre del usuario y la direccin IP para hacer la conexin an ms intimidante. El Manual de referencia de Red Hat Enterprise Linux tiene una lista de otras seales disponibles con los TCP wrappers. Para que esta pancarta sea presentada a las conexiones entrantes, aada la siguiente lnea al archivo /etc/hosts.allow:
REDES
3ER NIVEL
GRUPO 3
TCP Wrappers y las advertencias de ataques Si un host particular o red ha sido atrapada tratando de atacar el servidor, se pueden usar los TCP wrappers para advertir de ataques subsecuentes desde esa mquina o red a travs de la directiva spawn. En este ejemplo, se asume que el cracker desde la red 206.182.68.0/24 ha sido atrapado intentando atacar el servidor. Colocando la siguiente lnea en el archivo /etc/hosts.deny, se niega el intento de conexin y se registra a un archivo especial. ALL : 206.182.68.0 : spawn /bin/ 'date' %c %d >> /var/log/intruder_alert La seal %d suministra el nombre del servicio que el atacante estaba tratando de acceder. Para permitir la conexin y registrarla, coloque la directiva spawn en el archivo /etc/hosts.allow. Aumento de la seguridad con xinetd El super servidor xinetd es otra herramienta til para controlar el acceso a sus servicios subordinados. Esta seccin se enfocar en cmo se puede usar xinetd para colocar un servicio trampa y controlar la cantidad de recursos otorgados que cualquier servicioxinetd pueda usar para as frustrar posibles ataques de DoS. Para una lista de las opciones disponibles, consulte las pginas man para xinetd y xinetd.conf.
REDES
3ER NIVEL
GRUPO 3
Verificar si SSH esta instalado en tu sistema y que version. La manera mas facil es: ssh -V
Instalacin de OpenSSH
Algunas distribuciones traen instalado por defecto un cliente SSH, no obstante explicaremos como realizarla para un sistema Ubuntu. Instalando a travs de terminal
Para iniciar el servidor SSH: Para parar el servidor SSH: Para reiniciar el servidor SSH:
Primero descubramos qu direccin IP tenemos en el servidor. Para ello desde una ventana de terminal escribimos:
/sbin/ifconfig
Y ahora podemos dirigirnos a nuestro cliente y establecer una conexin remota al equipo que ejerce de servidor.
ssh usuario_remoto@host_remoto
Con X11Forwarding especificamos si se permite el reenvo por X11. El valor por defecto es yes. Desactivarlo en ningn momento ayudar a mejorar la seguridad del servidor. Y lo que intentamos conseguir activando dicha directiva es permitir ejecutar aplicaciones grficas en el servidor remoto. Recordad que X es un sistema de ventanas creado para dotar de interfaz grfica a los sistemas Unix. Por otro lado con AllowTcpForwarding especificamos si se permite el reenvo a travs del protocolo TCP. Al igual que pasaba con X11, desactivarlo, en ningn momento proveer mayor seguridad a nuestro servidor. Su valor por defecto es yes. Una vez hecho esto, ya podemos iniciar una sesin SSH y ejecutar aplicaciones grficas. Para ello bastar con escribir en nuestra terminal:
ssh -X -Y usuario_remoto@host_remota
REDES
3ER NIVEL
GRUPO 3
Ahora podremos ejecutar cualquier aplicacin que se encuentre instalada en el servidor. Reproduzcamos una pelcula con mplayer por ejemplo:
mplayer nombre_pelcula
[hell@local] $ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/hell/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/hell/.ssh/id_dsa. Your public key has been saved in /home/hell/.ssh/id_dsa.pub. The key fingerprint is: f5:b2:f3:2d:43:1b:22:44:98:6c:fe:42:df:a3:15:09 hell@local [hell@local] $
Los anteriores comandos piden los mismos datos, el primero, en donde guardar la llave privada, si simplemente pulsamos intro, se salvar en la ruta por defecto (la indicada entre parntesis), a no ser que emplees varias llaves privadas, la ruta por defecto es una buena opcin, ya que el cliente la usar sin necesidad de que el usuario tenga que especificarla.
REDES
3ER NIVEL
GRUPO 3
Las siguientes dos cosas que pide son la frase clave con la que encriptar la llave privada y una peticin de que se repita la frase para cerciorarse de que no se han cometido errores al escribirla la primera vez. Para la frase con la que encriptar la llave privada se puede emplear cualquier carcter (letras, nmeros, signos de puntuacin, espacios), en principio el tamao de la frase puede ser arbitrario, pero ssh-keygen se quejar si es menor de cuatro carcteres. En caso de no introducir ninguna frase, la llave privada quedar sin encriptar, lo cual podria ser til para realizar algunas automatizaciones como podra ser el realizar copias de seguridad, pero, para uso habitual, se desaconseja dejar las llaves privadas sin encriptar por el peligro que puede representar que estas sean robadas. A continuacin el ssh-keygen muestra donde se ha guardado la llave privada (/home/hell/.ssh/id_dsa) y donde est la llave pblica que le corresponde (/home/hell/.ssh/id_dsa.pub), que no es ms que el mismo nombre de archivo con la extensin .pub aadida al final. En la ltima lnea imprime una huella dactilar que sirve para identificar la llave que acabamos de crear, seguida de un comentario que puede servir para identificar la llave pblica.
Aadir llaves pblicas a authorized_keys
Despues de haber creado un juego de llaves privada y pblica, lo primero es mantener la llave privada secreta, por defecto ssh-keygen establecer los permisos del archivo con esta llave para que slo el dueo pueda leerla y modificarla. Por el contrario la llave pblica podr ser leida por cualquier usuario, pues por algo es pblica. Pero para poder autenticarnos en un equipo remoto con nuestra llave privada, lo nico que tendremos que hacer es aadir nuestra llave pblica en el archivo .ssh/authorized_keys dentro del directorio personal del usuario al que queremos acceder (generalmente $HOME/.ssh/authorized_keys). despues de crear el juego de llaves tenemos lo siguiente en nuestro directorio .ssh:
[hell@local] $ ls -1 ~/.ssh id_rsa id_rsa.pub [hell@local] $
No es ms que un juego de llaves RSA, ahora la mquina remota donde queremos instalar nuestra llave se llama remoto.ejemplo.com, y la cuenta de usuario es la misma que la que estamos empleando en el sistema que estamos utilizando, entonces podramos poner:
[hell@local] $ scp ~/.ssh/id_rsa.pub remoto.ejemplo.com:mi_llave.pub hell@remoto.ejemplo.com's password: id_rsa.pub 100% 398 0.4KB/s 00:00 [hell@local] $
REDES
3ER NIVEL
GRUPO 3
De esta manera en la mquina remota tendremos el archivo mi_llave.pub que contiene nuestra llave pblica, ahora tan slo nos resta crear el directorio .ssh, en caso de que no exista, y aadir la llave pblica al archivo $HOME/.ssh/authorized_keys, para ello, podemos conectarnos mediante SSH y usar el comando cat. Una sesin SSH a modo de ejemplo sera la siguiente:
[hell@local] $ ssh ejemplo.remoto.com hell@remoto.ejemplo.com's password: [hell@remoto] $ mkdir .ssh [hell@remoto] $ chmod 700 .ssh [hell@remoto] $ cd .ssh [hell@remoto] $ cat ../my_llave.pub >> authorized_keys [hell@remoto] $
Ahora, la prxima vez que nos conectemos al servidor remoto.ejemplo.com, en lugar de pedirnos la contrasea del usuario, nos pedira la frase clave con la que la encriptamos nuestra llave privada:
[hell@local] $ ssh ejemplo.remoto.com Enter passphrase for key '/home/hell/.ssh/id_rsa': [hell@remoto] $
SSH-Agent
SSH-Agent permite recordar mientras dure la sesin, cada una de las claves privadas del usuario, de modo que l se encargue de realizar la autenticacin. En cualquier ambiente informtico, donde se requiera trabajar con mltiples servidores, es necesario contar con una comunicacin segura como SSH. Para conectarse a un servidor remoto, basta con teclear el comando seguido del usuario y host destino, y de la contrasea del usuario remoto en cuestin. Este proceso de login en mquinas remotas puede ser molesto en los casos en que sea necesario realizar conexiones cada poco perodo de tiempo, debido a que hay que ingresar la contrasea cada vez.
$ ssh-add ~/.ssh/identity Need passphrase for /home/dsuela/.ssh/identity Enter passphrase for dsuela@thorin: loquequerais
A partir de ahora no hace falta introducir la clave cada vez que abrimos una sesin de ssh, o usamos scp. Lo nico es copiar nuestra clave pblica a cada mquina que queramos usar y aadir la clave privada cada vez que iniciamos las X.
Listar las llaves que hay en el agente
En caso de querer ver que llaves contiene el agente, podemos pasarle la opcin -l a la herramienta ssh-add, y obtendremos una salida como la siguiente:
REDES
3ER NIVEL
GRUPO 3
[hell@local] $ ssh-add -l 2048 1f:2b:61:83:c7:f8:27:73:4d:03:0a:92:40:da:b8:bb /home/hell/.ssh/id_rsa (RSA) 1024 78:f2:ac:c0:0b:80:57:e7:fb:98:05:cd:1e:36:69:84 /home/hell/.ssh/id_dsa (DSA) 2048 d1:a7:cb:de:1b:bf:ef:04:04:2f:33:fc:31:f3:80:b3 millave.key (DSA) [hell@local] $
Cada lnea representa una llave. La primera columna muestra el tamao en bits de la llave, la segunda se corresponde con la huella dactilar de la llave, la tercera columna es el archivo que contiene la llave y la ltima columna, indica entre parntesis el tipo de llave que es, RSA o DSA. Tambin se puede emplear la opcin -L que mostrar las llaves pblicas, lo cual puede ser til para aadirlas al archivo authorized_keys de una mquina remota.
[hell@local] $ ssh-add -L ssh-rsa AAAAB3NzaC1...XnFBZjRf8cqDbugZRVeHYGvRqrNdv/9w== /home/hell/.ssh/id_rsa ssh-dss AAAAB3NzaC1...6GRYhh2JxuPcr9kwlD7ZUjFrgElDFrng== /home/hell/.ssh/id_dsa ssh-dss AAAAB3NzaC1...ZumWVFBO5E+fhyaZegOb8Rsz08J8LxOQ== millave.key [hell@local] $
Tambin podemos eliminar llaves del agente empleando la herramienta ssh-add con la opcin -d seguida de la llave pblica que le corresponde a la llave privada que queremos que el agente borre de su memoria. Por ejemplo, para que olvide nuestra llave RSA:
[hell@local] $ ssh-add -d .ssh/id_rsa Identity removed: .ssh/id_rsa (.ssh/id_rsa.pub) [hell@local] $
tambin podemos eliminar todas las llaves que tenga el agente empleando la opcin -D, ejemplo:
[hell@local] $ ssh-add -D All identities removed. [hell@local] $
Bloquear el agente
Cuando no necesitamos usar el agente, pero no queremos que se olvide de nuestras llaves, como en el caso de dejar el equipo en el que estamos trabajando para ir a tomar un cafetn, podemos optar por bloquear el agente, para ello tan slo hace falta pasarle la opcin -x a la herramienta ssh-add, la cual nos pedir una contrasea con la que luego podremos desbloquear el agente:
REDES
3ER NIVEL
GRUPO 3
Luego, cuando necesitemos volver a usar el agente, podemos desbloquearlo ejecutando la herramienta ssh-add con la opcin -X, ssh-add entonces nos pedir la contrasea para desbloquear el agente:
[hell@local] $ ssh-add -X Enter lock password: Agent unlocked. [hell@local] $
REDES
3ER NIVEL
GRUPO 3
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 slo tres opciones. 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 subordinadasElGamal que se usar para el cifrado. * La opcin 2 es parecida a la anterior, pero slo genera un par de claves DSA. La opcin 4genera un nico par de claves ElGamal, que se usar tanto para firmar como para cifrar. En todos los casos existe la posibilidad de aadir subclaves adicionales para cifrar y firmar a posteriori. La mayora de los usuarios tienen suficiente con la opcin por definicin. Tambin hay que escoger un tamao para la clave. El tamao de una clave DSA debe estar entre los 512 y 1024 bits, y una clave ElGamal puede ser de cualquier tamao. Sin embargo, GnuPG requiere que las claves no sean menores de 768 bits. Por tanto, si se escogi la opcin 1 y tambin un tamao de claves mayor de 1024 bits, la clave ElGamal tendr el tamao deseado pero la DSA se limitar a 1024 bits.
DSA keypair will have 1024 bits. About to generate a new ELG-E keypair. minimum keysize is 768 bits default keysize is 1024 bits highest suggested keysize is 2048 bits What keysize do you want? (1024)
Cuanto ms larga sea la clave, ms segura ser contra ataques de fuerza bruta, pero por lo dems el tamao de la clave que se da por definicin es el adecuado, ya que sera ms barato circunvalar el cifrado que intentar entrar mediante ataques de fuerza. Adems, el cifrado y descifrado de mensajes se ralentizara a medida que se incrementara el tamao de la clave, y un tamao de clave ms grande podra afectar a la longitud de la firma digital. 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 sendos pares de claves, ElGamal y DSA.
Requested keysize is 1024 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) Key does not expire at all Is this correct (y/n)?
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.
REDES
3ER NIVEL
GRUPO 3
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.
You need a User-ID to identify your key; the software constructs the user id from Real Name, Comment and Email Address in this form: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" Real name: Email address: Comment:
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, v.g., 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.
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.
javier:~$ gpg --edit-key arancha@nav.es pub sub 1024D/B63E132C 1024g/581A915F created: 1999-09-24 expires: never created: 1999-09-24 expires: never trust: -/q
REDES
3ER NIVEL
GRUPO 3
(1)
Command> fpr pub 1024D/B63E132C 1999-09-24 Aranzazu (A.G.deZ.) <arancha@nav.es> Fingerprint: 4203 82E2 448C BD30 A36A 9644 0612 8A0F B63E 132C
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.
Command> sign pub 132C Aranzazu (A.G.deZ.) <arancha@nav.es> Are you really sure that you want to sign this key with your key: "Javier (Paramo S.L.) <javier@casa.es>" Really sign? y You need a passphrase to unlock the secret key for user: "Javier (Paramo S.L.) <javier@casa.es>" 1024-bit DSA key, ID D58711B7, created 1999-09-24 Enter passphrase: 1024D/B63E132C created: 1999-09-24 expires: never trust: -/q Fingerprint: 4203 82E2 448C BD30 A36A 9644 0612 8A0F B63E
Una vez firmada, el usuario puede comprobar la clave para obtener un listado de las firmas que lleva y para ver la firma que le acaba de aadir. Cada identificador de usuario tendr una o ms autofirmas, as como una firma por cada usuario que haya validado la clave en cuestin.
Command> check uid Aranzazu (A.G.deZ.) <arancha@nav.es> sig! B63E132C 1999-09-24 [self-signature] sig! D58711B7 1999-09-24 Javier (Paramo S.L.) <javier@casa.es> Command> quit
REDES
3ER NIVEL
GRUPO 3
SElinux
Security Enhanced Linux (SELinux) es otra capa de seguridad para el sistema operativo Linux. Desarrollado por la Agencia de Seguridad Nacional (NSA), se agrega proteccin a los diferentes archivos, aplicaciones, procesos y as sucesivamente. Sin embargo Muchos usuarios que recin estn comenzando a tienden a desactivar SELinux porque es un sistema complejo que puede tomar mucho tiempo y esfuerzo para acostumbrarse
Configuracin de SElinux
Para conocer mejor los parmetros de SElinux se puede acceder al modo grfico de SElinux ejecutando el comando; system-config-securitylevel O bien desde consola con el comando; sestatus Si se desea cambiar los modos en SElinux se puede ejecutar el comando; setenforce
REDES
3ER NIVEL
GRUPO 3
Para conocer los puertos que SElinux permite ejecute la siguiente sintaxis; semanage port -l Ahora bien, si se desea dar permiso a un puerto por medio de SElinux se ejecuta la siguiente sintaxis; # Permiso al servicio http por medio del puerto 81 semanage port-a-t-http_port_t-p tcp 81 De igual forma el comando getsebool le mostrar todos los booleanos disponibles en el sistema que pueden ser cambiados. As mismo mostrar y comprobar la lista de los booleanos activados y desactivados; getsebool -a Tambin puede hacer uso del comando setsebool para activar o desactivar la lista de booleanos, segn la necesidad, algunos ejemplos que pueden ser tiles son; # Permitir a los scripts y mdulos del Servidor HTTP Apache conectarse a bases de datos. setsebool -P httpd_can_network_connect_db on # Permitir el acceso a sistemas de archivos SAMBA setsebool -P httpd_use_cifs on # Permitir que los usuarios annimos puedan realizar procesos de escritura sobre el sistema de ficheros. setsebool -P allow_ftpd_anon_write on # Permitir al servicio vsftpd acceder a los usuarios locales a sus directorios de inicio setsebool -P allow_ftpd_full_access on Si lo que se desea es restaurar un archivo (s) por defecto en el contexto de seguridad de SElinux, ejecute la siguiente sintaxis; restorecon -v archivo (s) O bien para restaurar de forma recursiva; restorecon -Ap archivo (s) Adems, si se quiere profundizar en los contextos de seguridad de un directorio y ver si todos los archivos son seguros y se encuentran correctamente restaurados, se puede utilizar restorecon con la opcin-n para evitar cualquier nuevo etiquetado; restorecon -Ap -n direcotorio
REDES
3ER NIVEL
GRUPO 3
REDES
3ER NIVEL
GRUPO 3