Presentaci - PowerPoint PPT Presentation

About This Presentation
Title:

Presentaci

Description:

Sockets, el interfaz Seguridad en nuestros Sockets Adaptaci n de nuestros Sockets a IPv6 SOckets, el Interfaz Sockets en IPv6 Ventajas de IPv6: La direcci n de ... – PowerPoint PPT presentation

Number of Views:41
Avg rating:3.0/5.0
Slides: 36
Provided by: Clau354
Category:

less

Transcript and Presenter's Notes

Title: Presentaci


1
Sockets, el interfaz
  • Seguridad en nuestros Sockets
  • Adaptación de nuestros Sockets a IPv6

2
  • Seguridad en programas de red
  • Mejora su funcionalidad un programa seguro?
  • Qué niveles de seguridad podemos implementar?

3
  • Seguridad en programas de red
  • Compartir información Base de la programación
    en red
  • Necesitamos conocer con quién se trabaja
  • Problemas Naturaleza de la red y Hackers

4
  • Seguridad en programas de red
  • Idea Establecer niveles de seguridad y
    determinar donde aplicar dicha seguridad
  • Primer paso Identificación del usuario

5
  • Seguridad en programas de red
  • Niveles de seguridad en identificación de
    usuarios
  • Autenticación (Nombre de usuario y contraseña)
  • Autorización (autorizar o no el acceso a los
    servicios del sistema)
  • Certificación (servidor de certificados )

6
  • Seguridad en programas de red
  • Información que se intercambiará
  • Escrutinio (Revelación de información)
  • Intrusión (Puede agregar e incluso modificar)

7
  • Seguridad en programas de red
  • El siguiente paso es conocer las formas de
    ataque a las que estamos expuestos
  • Intervención de la línea.
  • Corte de la línea.
  • Secuestro de la línea

8
  • Seguridad en programas de red
  • Seguridad en un nodo de red
  • Acceso restringido
  • Firewalls
  • Zonas desmilitarizadas (DMZ)

9
  • Seguridad en programas de red
  • Acceso Restringido
  • Permisos de archivos
  • Limitaciones en la conexión
  • Reducción de los agujeros en los puertos
  • Centrarse en las tarjetas
  • Separación de los servicios no necesarios

10
  • Seguridad en programas de red
  • Firewalls
  • Filtrado Activo (direccionamiento )
  • Filtrado Pasivo (detalle )

11
  • Seguridad en programas de red
  • Zonas desmilitarizadas (DMZ).
  • Firewall tras firewall
  • Problema sincronización con la red
  • Solución Túneles

12
  • Seguridad en programas de red
  • Seguridad a nivel de Sockets (Secure
    Sockets Layer SSL)
  • Uso de la API SSL OpenSSL
  • http//www.openssl.org

13
  • Seguridad en programas de red
  • Uso de OpenSSL
  • Descargue el paquete completo
  • Ejecutar config (./config) (./config linux-elf)
  • Ejecutar make
  • Ejecutar make test
  • Entrar como root. Ejecutar make install
    (/usr/local/ssl/)
  • Crear las referencias a las bibliotecas
  • ln s /usr/local/ssl/lib/libssl.a /usr/lib/
  • ln s /usr/local/ssl/lib/libcrypto.a /usr/lib/

14
  • Seguridad en programas de red
  • Uso de OpenSSL
  • Crear la referencia a los archivos incluidos
  • ln s /usr/local/ssl/include/openssl/ /usr/inclu
    de
  • Incorporar MANPATH /usr/local/ssl/man al archivo
    /etc/man.config.
  • 9. Incorporar en la ruta de acceso
    /usr/local/ssl/bin.
  • Todo listo para programar sockets seguros

15
  • Seguridad en programas de red
  • Creación de un cliente SSL
  • Lo primero es configurar la biblioteca SSL

SSL_METHOD method SSL_CTX ctx OpenSSL_add_all_
algorithms() //Cargar el cifrado,
etc. SSL_load_error_strings()
//Cargar el mensaje de error method
SSLv2_client_method() //Crear el nuevo
método/cliente ctx SSL_CTX_new(method)
//Crear el nuevo contexto
16
  • Seguridad en programas de red
  • Luego, crear un socket normal

//Conecta el socket del cliente al servidor
SSL struct sockaddr_in addr struct hostent
host gethostbyname(hostname) int sd
socket(PF_INET, SOCK_STREAM, 0) //Crea el
socket bzero(addr, sizeof(addr)) addr.sin_family
AF_INET addr.sin_port htons(port) //puer
to del servidor addr.sin_addr.s_addr
(long)(host-gth_addr) //IP del
servidor connect(sd, addr, sizeof(addr)) //con
exión con el servidor
17
  • Seguridad en programas de red
  • Luego de la conexión de los sockets entre
    cliente y servidor, se debe crear una instancia
    SSL y asociarla a la conexión

//Establecer el protocolo SSL y crear el enlace
de cifrado SSL ssl SSL_new(ctx)
//crea un nuevo estado de conexión
SSL SSL_set_fd(ssl, sd) //adjunta el
descriptor del socket if( SSL_connect(ssl)
-1) //realiza la conexión
ERR_print_errors_fp(stderr) //informa
el error si hay
18
  • Seguridad en programas de red
  • Conexión SSL con cifrado completo. Ahora, leer
    certificados

// Leer certificados Char line1024 X509
x509X509_get_subject_name(cert) //Obtener
asunto X509_NAME_oneline(x509, line,
sizeofline) //convertirlo Printf(Subject s
\n, line) X509X509_get_issuer_name(cert) //O
btener emisor de certificado X509_NAME_oneline(x5
09, line, sizeofline) //convertirlo Printf(Is
suer s \n, line)
19
  • Seguridad en programas de red
  • Ya estamos preparados para enviar y recibir
    datos con

//Enviar y recibir mensajes int bytes bytes
SSL_read(ssl, buf, sizeof(buf)) //obtener/descif
rar bytes SSL_write(ssl, msg,
strlen(msg)) //cifrar/enviar
20
  • Seguridad en programas de red
  • Creación de un servidor SSL

El Cliente y el Servidor son muy
parecidos, ahora vemos la creación del servidor
// Iniciar el estado del servidor SSL SSL_METHOD
method SSL_CTX ctx OpenSSL_add_all_algorithms(
) //Cargar el cifrado. SSL_load_e
rror_strings() //Cargar el mensaje de
error method SSLv2_server_method()
//Crear el nuevo método-servidor ctx
SSL_CTX_new(method) //Crear el nuevo
contexto
21
  • Seguridad en programas de red
  • El servidor debe cargar su archivo de
    certificados.

//Cargar archivos de clave privada y
certificado //Establecer el certificado local de
certfile SSL_CTX_use_certificate_file(ctx,
CertFile, SSL_FILETYPE_PEM) //Establecer la
clave privada KeyFile SSL_CTX_use_PrivateKey_file(
ctx, CertFile, SSL_FILETYPE_PEM) //verificar la
clave privada if( !SSL_CTX_check_private_key(ctx)
) fprintf(stderr, Key and Certificate dont
match)
22
  • El socket es escencialmente un socket normal
    de servidor

//Establecer el puerto del servidor struct
sockaddr_in addr int sd, client sd
socket(PF_INET, SOCK_STREAM, 0) //crea el
socket bzero(addr, sizeof(addr)) addr.sin_family
AF_INET addr.sin_port htons(port) addr.sin_
addr.s_addr INADDR_ANY //permite cualquier
puerto bind(sd, addr, sizeof(addr) //enlazar
a un puerto listen(sd, 10) //prepara al
socket para la escucha client accept(server,
addr, len) //acepta conexión
23
  • Seguridad en programas de red
  • Creación de estado SSL

//Crea estado de sesión SSL en función del
contexto y SSL_accept ssl SSL_new(ctx) //obten
er nuevo estado SSL con el contexto SSL_set_fd(ssl
, client) //asociar el socket con el estado
SSL if( SSL_accept(ssl) FAIL) //aceptar el
protocolo SSL ERR_print_errors_fp(stderr) else
int bytes bytes SSL_read(ssl, buf,
sizeof(buf)) //obtener petición SSL_write(ssl,
reply, strlen(reply)) //enviar réplica
24
  • Seguridad en programas de red
  • Cliente servidor seguro
  • Incremento de productividad
  • Presencia en Internet

25
  • Sockets en IPv6
  • IPv6 La próxima generación de IP

26
  • Sockets en IPv6
  • IPv4 e IPv6 juntos?
  • Las direcciones de IPv4 son reasignadas a una
    dirección de IPv6 (todos los bits superiores se
    establecen a cero y los últimos 48 bits son
    0xFFFF seguidos de la dirección IPv4)
  • No funciona al revés (Obviamente)

27
  • Sockets en IPv6
  • Configuración del Núcleo
  • Se debe entrar al directorio /proc/net y
    buscar un archivo llamado igmp6 o if_inet
  • Necesitamos cargar el módulo ipv6.o.

28
  • Sockets en IPv6
  • Configuración de las herramientas
  • Ejecutar iconfig
  • Ejecutar iconfig helpp
  • Necesitamos conseguir el RPM net_tools
  • configure.sh
  • Reiniciar el host,

29
  • Sockets en IPv6
  • Transformación de las llamadas IPv4 a IPv6
  • En la estructura del socket, en vez de la
    utilización de sockaddr_in, usar sockaddr_in6
  • struct sockaddr_in6 addr
  • bzero( addr, sizeof( addr ))

30
  • Sockets en IPv6
  • Esta estructura se debe usar para las
    llamadas del sistema accept(), connect() y
    bind(). Similarmente, la opción socket para
    obtener la dirección del socket origen o del
    socket remoto necesita esta estructura nueva.

31
  • Sockets en IPv6
  • El segundo cambio es el tipo de socket, no
    puede recibir protocolos distintos desde el mismo
    socket. Aunque IPv6 es un superconjunto de IPv4,
    se debe elegir un tipo de socket distinto

sd socket(PF_INET6, SOCK_STREAM, 0) // para
TCP6 sd socket(PF_INET6, SOCK_DGRAM,
0) //para UDP6 sd socket(PF_INET6, SOCK_RAW,
0) //paar Raw-6 o ICMP6
32
  • Sockets en IPv6
  • Otros campos que debemos cambiar levemente
    son
  • addr.sin6_family AF_INET6
  • addr.sin6_port htons(MY_PORT)
  • if( inet_pton(AF_INET6, 2FFF809AC0351,
    addr.sin6_addr) 0)
  • perror(inet_pton failed)

33
  • Sockets en IPv6
  • Este fragmento de código utiliza la nueva
    llamada, inet_pton().

include ltarpa/inet.hgt int inet_pton(int domain,
const char prstn, void buf) char inet_ntop(int
domain, void buf, char prstn, int len)
34
  • Sockets en IPv6
  • Ventajas de IPv6
  • La dirección de 128 bits
  • Mayor tamaño de paquete (64kB -gt 4GB)
  • Multidifusión

35
  • Sockets en IPv6
  • Linux IPv6
  • Desde Linux V2.2.0
  • Aún no es estándar
  • Soporta lo que puede
  • Objetivo en movimiento
Write a Comment
User Comments (0)
About PowerShow.com