Dani Gutiérrez Porset [email_address] Servicios de Comunicaciones (i)
Índice Comunicación entre procesos Sockets Protocolos y Servicios. Ej. protocolo ftp Servidor de comunicaciones Comandos gnu de interés Comando netcat Licencia de uso
Comunicación entre procesos Mecanismos IPC: Señales Pipes. Named pipes o FIFOs. Sockets Colas de mensajes (System V y POSIX) Semáforos (System V y POSIX) Memoria compartida (System V y POSIX)
Sockets Son entidades del S.O. para conexiones y se agrupan en dominios (AF=Address Family): Dominio AF_UNIX (Unix Domain socket, UDS o IPC socket) Dominio AF_INET Protocol family (kernel Linux): PF_UNIX: locales, en filesys PF_INET: TCP/IP PF_PACKET: enlace (nivel 2) PF_KEY: IPSec PF_NETLINK: config. avanzada de networking
Sockets Dominio AF_UNIX Los procesos han de estar en la misma máquina. Tipos: stream datagram Son ficheros, ej. al hacer  sudo find / -type s -ls  aparecen unos cuantos en  /var/run  utilizados por distintos servicios (xdm, mysql,...). También pueden verse con  netstat -xapn
Sockets Dominio AF_INET: Los procesos pueden estar en distintas máquinas. Tipos: tcp o stream udp o datagram raw sockets: empleados para desarrollar nuevos protocolos o hacer uso de funcionalidades internas de los existentes Los puertos < 1024 son privilegiados (limitados a root). Ej.   $nc -l -p 1023   $Can't grab 0.0.0.0:1023 with bind : Permission denied
Protocolos y Servicios /etc/protocols Ejs. (según IANA): Nivel 3: ip: 0 icmp: 1 ipv6: 41 ospf: 89 Nivel 4: tcp: 6 udp: 17 sctp: 132 Encapsulamiento y tunelado gre: 47 esp: 50 ah: 51 ipip: 94 l2tp: 115
Protocolos y Servicios /etc/services
Ej. Protocolo ftp 2 canales, ambos sobre tcp: Canal de comandos. Puerto tcp 21 Canal de datos. Puerto tcp dependiente del modo. Modos: Activo: el cliente abre un puerto aleatorio>1023 y lo envía al servidor junto con su IP para que el servidor empiece la conexión por su puerto 20. Problemático para filtrado por firewall. Pasivo: el servidor abre un puerto aleatorio>1023 y lo envía al cliente junto con su IP para que el cliente empiece la conexión. Pasivo extendido: sólo envía el puerto, y no la IP del servidor
Ej. Protocolo ftp Securización: FTP sobre SSH (secure FTP o FTP/SSH): actuando en modo pasivo, con un cliente ssh que actúe de proxy SOCKS. FTP sobre SSL (FTPS) Otros no exactamente FTP: scp sftp Otros de intercambio de ficheros: webdav pando
Servidor de Comunicaciones Un proceso que atiende peticiones de otros procesos, de la misma o de otras máquinas. Ej:  netstat -apn En cada máquina, interfaces de escucha: Sólo local: localhost o 127.0.0.1 Sólo por determinadas interfaces: 192.168.3.1 Por cualquier interface: 0.0.0.0 o * En cada interface de escucha, sockets (Inet o Unix)
Servidor de Comunicaciones Inicio/parada/relectura: /etc/init.d/servicio [start|stop|restart|reload|...] Automático al arranque de la máquina:  /etc/rcX.d/... Configuración del servicio Mediante uno o varios ficheros que suelen estar en  /etc/nombreservicio Relectura de la configuración: consiste en hacer que el proceso servidor relea los ficheros de configuración. Posibilidades: Reiniciar el proceso (siempre posible): /etc/init.d/nombre_servicio restart Recargar la configuración (disponible sólo a veces): /etc/init.d/nombre_servicio reload
Servidor de Comunicaciones Logs del servicio Importantes para revisar el funcionamiento normal y el erróneo. Puede haber más o menos nivel de detalle Suelen estar en  /var/log/nombreservicio Interfaces a servicios Interfaces de usuario: Comandos de shell (bash, perl,...) Programas con GUI (gtk, qt, UI java, web). APIs para lenguajes: C, java, php,...
Comandos gnu de interés ifconfig, route brctl netstat arp ebtables, iptables ip iproute dig whois lynx, wget, curl netcat, netcat6, socat netsed ping, fping, hping2, hping3 traceroute, tracepath nmap tcpdump, wireshark
Comando netcat netcat o nc Establece conexiones TCP o UDP, funcionando en modos cliente o servidor. Versiones: Original (v1.10 de 1996). Es la incluida en Ubuntu. GNU (v0.7.1 de 2004). Compatible con la original, con más prestaciones ej. tunneling, y con licencia GPL.
Comando netcat Modo cliente: Envía al servidor desde stdin (o redirección con <). Presenta en stdout lo que el servidor le devuelva.
Comando netcat Modo servidor (escucha): Presenta en stdout (o redirección con >) lo que recibe del cliente. Envía al cliente lo que lee de stdin. Redirecciones <: <fichero: abre la conexión de escucha y lo envía al cliente cuando se conecte. <fifo: espera a que el fifo tenga algo y entonces abre la conexión (antes no) enviándo el contenido al cliente. Pero no se queda a la espera si se hace: mkfifo f; netcat -l -p puerto <f | cat - >f Cierra la conexión cuando el cliente la cierra. A diferencia de otras aplicaciones no termina ej. con carácter EOF por stdin
Comando netcat Diferencias con telnet: Telnet no puede estar en modo escucha Telnet no funciona sobre UDP Telnet no transfiere cualquier secuencia binaria porque algunas se consideran como opciones de telnet y se eliminan netcat no saca nada por stdout a no ser que se use -v
Comando netcat Usos: Talk. Ej. en servidor: nc -vvl -p puerto <fich_banner_inicial Envío de ficheros. Ej. con compresión y encriptación: gzip -c fich | openssl enc -des | nc ip puerto Ejecutar comandos: Modo servidor: cuando alguien se conecta. Ej: nc -l -p puerto -e comando Modo cliente: al hacer la conexión. Ej: nc -e /bin/bash ip_srv puerto Escaneo de puertos. Ej: nc -zvvw 2 ip 1-1024 2>&1 | grep open Captura hexadecimal de comunicación. Ej: nc -v -o captura servidor_mail 25
Comando netcat Usos: Túneles y reenvío de puertos: TCP sobre UDP. Lo que se envíe a un puerto TCP va hacia otro equipo sobre UDP: mkfifo /tmp/f nc -l -p p_tcp </tmp/f | nc -u ip p_udp >/tmp/f UDP sobre TCP. Lo que se envíe a un puerto UDP va hacia otro equipo sobre TCP: mkfifo /tmp/f nc -l -u -p p_udp </tmp/f | nc ip p_tcp >/tmp/f Otros: TCP sobre TCP, UDP sobre UDP
Licencia de uso http://creativecommons.org/licenses/by-sa/3.0/

Servicios de comunicaciones (i)

  • 1.
    Dani Gutiérrez Porset[email_address] Servicios de Comunicaciones (i)
  • 2.
    Índice Comunicación entreprocesos Sockets Protocolos y Servicios. Ej. protocolo ftp Servidor de comunicaciones Comandos gnu de interés Comando netcat Licencia de uso
  • 3.
    Comunicación entre procesosMecanismos IPC: Señales Pipes. Named pipes o FIFOs. Sockets Colas de mensajes (System V y POSIX) Semáforos (System V y POSIX) Memoria compartida (System V y POSIX)
  • 4.
    Sockets Son entidadesdel S.O. para conexiones y se agrupan en dominios (AF=Address Family): Dominio AF_UNIX (Unix Domain socket, UDS o IPC socket) Dominio AF_INET Protocol family (kernel Linux): PF_UNIX: locales, en filesys PF_INET: TCP/IP PF_PACKET: enlace (nivel 2) PF_KEY: IPSec PF_NETLINK: config. avanzada de networking
  • 5.
    Sockets Dominio AF_UNIXLos procesos han de estar en la misma máquina. Tipos: stream datagram Son ficheros, ej. al hacer sudo find / -type s -ls aparecen unos cuantos en /var/run utilizados por distintos servicios (xdm, mysql,...). También pueden verse con netstat -xapn
  • 6.
    Sockets Dominio AF_INET:Los procesos pueden estar en distintas máquinas. Tipos: tcp o stream udp o datagram raw sockets: empleados para desarrollar nuevos protocolos o hacer uso de funcionalidades internas de los existentes Los puertos < 1024 son privilegiados (limitados a root). Ej. $nc -l -p 1023 $Can't grab 0.0.0.0:1023 with bind : Permission denied
  • 7.
    Protocolos y Servicios/etc/protocols Ejs. (según IANA): Nivel 3: ip: 0 icmp: 1 ipv6: 41 ospf: 89 Nivel 4: tcp: 6 udp: 17 sctp: 132 Encapsulamiento y tunelado gre: 47 esp: 50 ah: 51 ipip: 94 l2tp: 115
  • 8.
  • 9.
    Ej. Protocolo ftp2 canales, ambos sobre tcp: Canal de comandos. Puerto tcp 21 Canal de datos. Puerto tcp dependiente del modo. Modos: Activo: el cliente abre un puerto aleatorio>1023 y lo envía al servidor junto con su IP para que el servidor empiece la conexión por su puerto 20. Problemático para filtrado por firewall. Pasivo: el servidor abre un puerto aleatorio>1023 y lo envía al cliente junto con su IP para que el cliente empiece la conexión. Pasivo extendido: sólo envía el puerto, y no la IP del servidor
  • 10.
    Ej. Protocolo ftpSecurización: FTP sobre SSH (secure FTP o FTP/SSH): actuando en modo pasivo, con un cliente ssh que actúe de proxy SOCKS. FTP sobre SSL (FTPS) Otros no exactamente FTP: scp sftp Otros de intercambio de ficheros: webdav pando
  • 11.
    Servidor de ComunicacionesUn proceso que atiende peticiones de otros procesos, de la misma o de otras máquinas. Ej: netstat -apn En cada máquina, interfaces de escucha: Sólo local: localhost o 127.0.0.1 Sólo por determinadas interfaces: 192.168.3.1 Por cualquier interface: 0.0.0.0 o * En cada interface de escucha, sockets (Inet o Unix)
  • 12.
    Servidor de ComunicacionesInicio/parada/relectura: /etc/init.d/servicio [start|stop|restart|reload|...] Automático al arranque de la máquina: /etc/rcX.d/... Configuración del servicio Mediante uno o varios ficheros que suelen estar en /etc/nombreservicio Relectura de la configuración: consiste en hacer que el proceso servidor relea los ficheros de configuración. Posibilidades: Reiniciar el proceso (siempre posible): /etc/init.d/nombre_servicio restart Recargar la configuración (disponible sólo a veces): /etc/init.d/nombre_servicio reload
  • 13.
    Servidor de ComunicacionesLogs del servicio Importantes para revisar el funcionamiento normal y el erróneo. Puede haber más o menos nivel de detalle Suelen estar en /var/log/nombreservicio Interfaces a servicios Interfaces de usuario: Comandos de shell (bash, perl,...) Programas con GUI (gtk, qt, UI java, web). APIs para lenguajes: C, java, php,...
  • 14.
    Comandos gnu deinterés ifconfig, route brctl netstat arp ebtables, iptables ip iproute dig whois lynx, wget, curl netcat, netcat6, socat netsed ping, fping, hping2, hping3 traceroute, tracepath nmap tcpdump, wireshark
  • 15.
    Comando netcat netcato nc Establece conexiones TCP o UDP, funcionando en modos cliente o servidor. Versiones: Original (v1.10 de 1996). Es la incluida en Ubuntu. GNU (v0.7.1 de 2004). Compatible con la original, con más prestaciones ej. tunneling, y con licencia GPL.
  • 16.
    Comando netcat Modocliente: Envía al servidor desde stdin (o redirección con <). Presenta en stdout lo que el servidor le devuelva.
  • 17.
    Comando netcat Modoservidor (escucha): Presenta en stdout (o redirección con >) lo que recibe del cliente. Envía al cliente lo que lee de stdin. Redirecciones <: <fichero: abre la conexión de escucha y lo envía al cliente cuando se conecte. <fifo: espera a que el fifo tenga algo y entonces abre la conexión (antes no) enviándo el contenido al cliente. Pero no se queda a la espera si se hace: mkfifo f; netcat -l -p puerto <f | cat - >f Cierra la conexión cuando el cliente la cierra. A diferencia de otras aplicaciones no termina ej. con carácter EOF por stdin
  • 18.
    Comando netcat Diferenciascon telnet: Telnet no puede estar en modo escucha Telnet no funciona sobre UDP Telnet no transfiere cualquier secuencia binaria porque algunas se consideran como opciones de telnet y se eliminan netcat no saca nada por stdout a no ser que se use -v
  • 19.
    Comando netcat Usos:Talk. Ej. en servidor: nc -vvl -p puerto <fich_banner_inicial Envío de ficheros. Ej. con compresión y encriptación: gzip -c fich | openssl enc -des | nc ip puerto Ejecutar comandos: Modo servidor: cuando alguien se conecta. Ej: nc -l -p puerto -e comando Modo cliente: al hacer la conexión. Ej: nc -e /bin/bash ip_srv puerto Escaneo de puertos. Ej: nc -zvvw 2 ip 1-1024 2>&1 | grep open Captura hexadecimal de comunicación. Ej: nc -v -o captura servidor_mail 25
  • 20.
    Comando netcat Usos:Túneles y reenvío de puertos: TCP sobre UDP. Lo que se envíe a un puerto TCP va hacia otro equipo sobre UDP: mkfifo /tmp/f nc -l -p p_tcp </tmp/f | nc -u ip p_udp >/tmp/f UDP sobre TCP. Lo que se envíe a un puerto UDP va hacia otro equipo sobre TCP: mkfifo /tmp/f nc -l -u -p p_udp </tmp/f | nc ip p_tcp >/tmp/f Otros: TCP sobre TCP, UDP sobre UDP
  • 21.
    Licencia de usohttp://creativecommons.org/licenses/by-sa/3.0/