Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

31
Entrenamiento en Linux Clase # Clase # 6 6 Por: Javier García Salgado Servicios de RED (Parte I)

Transcript of Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

Page 1: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

Entrenamiento en Linux

Clase #Clase #66

Por: Javier García Salgado

Servicios de RED (Parte I)

Page 2: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

Clase #Clase #66 Servicios de RED (Parte I)

Sumario

Super-Server xinetd

Telnet

FTP

SSH

Page 3: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

Super-server xinetd

El xinetd es un servicio conocido como metaserver o super-server pues consiste en un daemon que se encarga de controlar el funcionamiento de otros múltiples servicios.

Como ejemplos clásicos de servicios que se pueden configurar para ser controlados por xinetd, se pueden citar al Talk, a Telnet y al FTP.

La función fundamental de xinetd es escuchar todas las solicitudes de los clientes de los servicios que supervisa, y ejecutar de forma controlada el servidor correspondiente para que atienda a su cliente.

Según la forma en que funcionan los servicios que controla xinetd estos pueden dividirse en dos grupos: - los que son multi-hilos : para atender a cada cliente se ejecuta un servidor.- los de un único hilo : sólo existe un servidor activo que interactúa con todos los clientes.

Los primeros siempre dependerán de xinetd para responder a cada cliente, mientras que en el caso de los de un solo hilo, una vez iniciada la instancia del servidor este tomará el control de su puerto para responder al resto de sus clientes sin la intervención de xinetd.

Page 4: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

Super-server xinetd

Funcionamiento del super-server xinetd

Page 5: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

Super-server xinetd

En la distribución Red Hat xinetd se instala a través del paquete del mismo nombre.

De este paquete dependen todos los paquetes que contengan servidores, controlados por xinetd por defecto, como son el Telnet, el Talk, etc.

Una vez instalado, la forma de interactuar con el servicio: iniciarlo, detenerlo, conocer su estado, etc, es a través del script de inicio nombrado xinetd (en el directorio /etc/rc.d/init.d/).

Ejemplos:

# service xinetd start Starting xinetd: [ OK ]

# service xinetd status xinetd (pid 789) is running...

# service xinetd reload Reloading configuration: [ OK ]

Page 6: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

Super-server xinetd

Configuración de xinetd

Antes de explicar como se configura propiamente xinetd y los servicios que controla, es necesario mencionar y describir al fichero services ubicado en /etc/.

Aquí se indican los puertos por defecto asociados a cada servicio controlado o no por xinetd, también se especifican los protocolos de transmisión asociados a cada par servicio-puerto: (tcp o udp), además de algunos alias que pueden tener estos servicios.

El fichero /etc/services también es utilizado por otros programas de tipo cliente para determinar los puertos por defecto de sus respectivos servidores.

Ejemplo de líneas en /etc/services son:

ftp 21/tcp telnet 23/tcp smtp 25/tcp mail http 80/tcp www www-http pop3 110/udp pop-3 squid 3128/tcp

Page 7: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

Super-server xinetd

Xinetd controla el acceso de los clientes a los servicios de acuerdo a diferentes criterios, este mecanismo se configura a través de los ficheros /etc/host.allow y /etc/host.deny. Además existen muchas formas de establecer restricciones de seguridad en los servicios que controla.

El xinetd presenta un fichero de configuración en /etc/xinetd.conf donde se colocan los aspectos por defecto y se incluye además un directorio donde existe un fichero de configuración para cada servicio instalado. Este directorio es /etc/xinetd.d/.

La entrada que permite describir un determinado servicio en estos ficheros toma la forma:

service <nombre> {

<atributo> <operador> <valor1> <valor2> ... ...

}

Page 8: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

Super-server xinetd

Donde:

<nombre> : es el nombre genérico del servicio. Debe coincidir con el de la entrada correspondiente en /etc/services. Ejemplos: ftp, telnet, echo, etc.

<operador> : puede ser = si el atributo toma exactamente los valores expresados, -= si se eliminan los valores expresados del conjunto de valores por defecto, y += cuando se adicionan los valores expresados a los por defecto.

<atributo> : permite expresar como funciona el servicio. A continuación se listan los atributos más comunes e interesantes:

• wait : indica si el servicio es multi-hilo (valor ''no'') o no (valor ''yes''). Ejemplo: wait = yes

• disable : permite habilitar y deshabilitar un servicio de forma sencilla. Toma los valores ''yes'' o ''no''. Ejemplo: disable = yes

• protocol : indica el protocolo empleado por el servicio. Ejemplo: protocol = tcp

• only_from : permite especificar aquellas máquinas que tienen acceso al servicio. Ejemplo: only_from = 192.168.40/24 192.168.100.1

Page 9: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

Super-server xinetd

El fichero de configuración /etc/xinetd.conf por defecto tiene una forma similar a la siguiente:

defaults {

instances = 60 log_type = SYSLOG authpriv log_on_success = HOST PID log_on_failure = HOST RECORD

} includedir /etc/xinetd.d

Ejemplo del fichero de configuración del servicio Telnet:

service telnet {

flags = REUSE wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID

}

Page 10: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

Telnet

El protocolo telnet permite establecer una comunicación orientada a caracteres a través de la red, entre una estación cliente y otra servidora.

El cliente de telnet puede conectarse a un servidor de cualquier tipo a través del puerto por el que escucha este, enviándole todo lo que reciba por su entrada estándar y mostrando por su salida todo lo que responda el servidor.

Page 11: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

Telnet

Por ejemplo, utilizando el cliente básico de Telnet en Linux (comando telnet) se puede establecer una conexión con un servidor Web o de correo electrónico especificando su nombre o número IP y el puerto por el que escucha:

$ telnet 192.168.168.1 80 Trying 192.168.168.1... Connected to 192.168.168.1 Escape character is '^]'. GET / <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD>

<TITLE>Test Page for the Apache Web Server on Red Hat Linux</TITLE> </HEAD> ... </HTML> Connection closed by foreign host.

continuación...

Page 12: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

Telnet

El servidor de Telnet está controlado por el super-server xinetd.

Se instala a través del paquete telnet-server.

El puerto por el que escucha por defecto es el 23. Para modificarlo se deberá cambiar la línea correspondiente en /etc/services.

El fichero de configuración por defecto del servicio es /etc/xinetd.d/telnet.

Una vez instalado se deberá chequear si se habilita o no por defecto y establecer la nueva configuración del xinetd mediante:

# service xinetd reload Reloading configuration: [ OK ]

Existe un fichero nombrado /etc/issue.net cuyo contenido se muestra antes del prompt de login de la sesión Telnet. Existe también /etc/issue que es para las sesiones locales en el sistema.

Por defecto en el caso de Red Hat, ambos ficheros tienen un contenido similar al siguiente:

Red Hat Linux release 7.1 (Seawolf) Kernel 2.4.2-2 on an i686

Page 13: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

Telnet

En Red Hat estos ficheros se sobreescriben al iniciar el sistema mediante un código en el script de inicio /etc/rc.d/rc.local, por lo que para cambiar su contenido de forma permanente, se necesita eliminar ese código en dicho script.

Desde el punto de vista de la seguridad el servicio de Telnet es totalmente vulnerable pues toda la información que circula a través de la red lo hace de forma natural, sin encriptación, incluyendo los passwords.

Es por ello que el usuario root no puede conectarse mediante Telnet, para ello deberá utilizarse otro usuario y luego ejecutar el comando su.

Existen otras formas más seguras de establecer una conexión remota utilizando el servicio SSH (Secure SHell).

Este servicio, a diferencia de Telnet, encripta toda la información intercambiada utilizando diferentes mecanismos.

Page 14: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

FTP

Es un servicio muy utilizado para acceder a ficheros de forma remota.

Se basa en el protocolo del mismo nombre cuyas siglas significan File Transfer Protocol, o sea, es un protocolo para la transferencia de ficheros.

El servicio FTP tiene dos variantes:

1. Anónima: la conexión al servidor FTP no requiere de una cuenta previamente creada en este, o sea, no se realiza autenticación basada en usuario. Normalmente el login que se utiliza en este caso es anonymous y el password una dirección válida de correo. Los documentos compartidos mediante FTP anónimo normalmente se agrupan en cierta estructura de directorios con permisos bien restrictivos.

2. No anónima: la conexión al servidor FTP se establece mediante una cuenta de usuario previamente creada en este. El usuario una vez autenticado prodrá acceder a todos los ficheros en el servidor de acuerdo a los permisos del sistema de ficheros aplicados a su caso.

Básicamente FTP ofrece facilidades para trasladar ficheros desde el servidor al cliente o viceversa, teniendo en cuenta los permisos establecidos.

Page 15: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

FTP

Al igual que en el Telnet, una sesión FTP es insegura, pues toda la información, incluyendo la de autenticación, no se encripta al pasar por la red.

Es por ello que normalmente el servidor está configurado para que el usuario root no puede conectarse.

Clientes FTP

El comando que constituye un cliente básico de FTP en Linux, es ftp.

Este recibe como argumento principal la identificación del servidor (nombre o número IP), además del número del puerto (por defecto 21).

Si se logra la conexión con el servidor se realiza la autenticación. En cualquier caso, falle o no la autenticación o no se logre abrir la conexión, se activará el prompt del cliente de forma similar a:

ftp>

A partir de aquí se podrán ejecutar una serie de comandos del protocolo que se listarán a continuación.

Page 16: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

FTP

Comandos más comunes

• open [host] : abre una conexión FTP con el host especificado.

• user [login] : permite autenticarse como un usuario determinado.

• ls y dir : muestran el contenido del directorio actual en el servidor en formato largo (similar a ls -al).

• get [fichero] : traslada un fichero desde el servidor al cliente.

• put [fichero] : traslada un fichero desde el cliente al servidor.

• mget [patrón] : traslada todos los ficheros que satisfagan cierto patrón del servidor al cliente.

• mput [patrón] : traslada todos los ficheros que satisfagan cierto patrón del cliente al servidor.

• cd [directorio] : cambia el directorio actual en el servidor.

• close : cierra la conexión actual.

• exit, bye y quit : cierran la conexión actual y terminan el cliente.

Page 17: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

Otro comando que constituye un cliente de FTP es el ncftp.

Este posee numerosas ventajas.

Ejemplo de ello son:

- el completamiento durante la edición de la línea de comando

- la indicación del progreso de las transferencias

- la realización de resúmenes de las transferencias

- la transferencia recursiva de directorios

- la ejecución de trabajos en background

- la administración de bookmarks (favoritos)

- el trabajo con proxies y firewalls, etc.

También existen clientes FTP con interfaz gráfica como el gftp de GNOME.

Es posible además emplear los navegadores que soportan el protocolo para establecer sesiones FTP, por ejemplo: el Internet Explorer o el Netscape.

continuación...

FTP

Page 18: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

FTP

Servidores FTP

La versión del servidor FTP disponible para Red Hat se nombra wu-ftpd y se instala a través de un paquete del mismo nombre.

Una vez instalado, el servidor estará preparado para brindar el servicio de forma no anónima.

Si se quiere contar además con la variante anónima se deberá instalar el paquete anonftp que creará la estructura especial de directorios donde se guarda la información accesible a través del servicio en dicha variante, además de adecuar la configuración para habilitarla.

El servidor de FTP es controlado por el super-server xinetd.

El fichero correspondiente en /etc/xinetd.d/ se nombra wu-ftpd.

Por defecto el servidor funciona por el puerto 21 como está especificado en /etc/services.

Los ficheros de configuración fundamentales del servicio FTP se encuentran en el directorio /etc y son ftpaccess, ftpconversions, ftphosts, ftpusers y ftpgroups.

Page 19: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

FTP

Para las versiones actuales de Red Hat la estructura de directorios accesibles por la variante anónima del FTP, comienza en /var/ftp/.

Aquí se ubica a su vez el directorio pub donde se deben colocar todos los ficheros accesibles mediante el servicio.

Existen algunos comandos útiles para el manejo del servicio FTP. Estos son:

• ftpshut : detiene el servicio.

• ftprestart : reinicia el servicio.

• ftpwho : muestra los usuarios conectados al servidor.

Ejemplos:

# ftpshut now "Sentimos las molestias causadas" # ftprestart # ftpwho Service class all: 5221 ? SN 0:10 ftpd: est1.minbas.cu: pepe: IDLE 5285 ? SN 0:00 ftpd: est3.minbas.cu: anonymous/[email protected]:

- 3 users (no maximum)

Page 20: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

SSH (Secure SHell)

SSH es un servicio de arquitectura cliente-servidor que permite conectarse desde una estación a otra a través de la red para ejecutar programas de forma remota.

Dado que exista un servidor de SSH, los clientes pueden autenticarse en este e invocar comandos que se ejecutan en el servidor.

SSH puede sustituir a programas como telnet, rsh, rlogin y rcp. Estos tienen como desventaja fundamental su gran vulnerabilidad debido a que la información intercambiada se trasmite de la misma forma en que se envía, pudiendo ser accedida por ''clientes'' no autorizados.

En cambio SSH provee varios mecanismos para encriptar lo trasmitido a través de los canales inseguros.

Con SSH también se pueden mover ficheros desde un extremo a otro de la conexión así como establecer conexiones gráficas X seguras.

Page 21: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

SSH (Secure SHell)

Algunas ventajas de SSH:

• Autenticación potente: Cierra la mayoría de los huecos de seguridad. Brinda nuevos métodos de autenticación tales como: fichero .rhosts más autenticación RSA basada en host, y autenticación RSA pura.

• Incremento de la privacidad. Toda la comunicación es trasparente y automáticamente encriptada. La encriptación comienza antes de la autenticación y esto permite que los passwords no se trasmitan claramente.

• Sesiones X Window seguras.

• Cualquier conexión TCP/IP puede ser redireccionada a través de un canal de encriptación SSH en ambas direcciones.

• No es necesaria ninguna adecuación para los usuarios, todo ocurre automáticamente. Los antiguos ficheros .rhosts pueden funcionar con una autenticación potente si se instalan los ficheros de llaves por host.

Page 22: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

SSH (Secure SHell)

OpenSSH es la última versión libre del SSH.

Esta es la que brindan las distribuciones de Linux incluyendo a Red Hat.

OpenSSH contiene varias utilidades y programas:

• ssh: es el comando que permite invocar el cliente SSH para conectarse a la máquina servidora o ejecutar comandos en ella. También se puede llamar slogin. Sustituye a telnet, rsh y rlogin.

• sshd: es el daemon servidor de SSH. Siempre está escuchando las solicitudes de los clientes y cuando uno se conecta realiza la autenticación y comienza a servir al cliente mientras dure la conexión.

• scp: pemite copiar ficheros de una máquina a otra a través de un canal SSH. Sustituye a rcp.

• sftp y sftp-server: constituyen las partes cliente y servidora del servicio FTP con las facilidades del SSH incorporadas.

• ssh-keygen: permite generar llaves para autenticación RSA y DSA tanto basada en hosts como en usuarios.

Page 23: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

SSH (Secure SHell)

En Red Hat el paquete que contiene los programas clientes de openSSH se nombra openssh-clients.

El del servidor es openssh-server y uno que posee utilidades comunes es openssh.

Una vez instalado el servidor este se puede manipular a través del script de inicio /etc/rc.d/init.d/sshd. Ejemplos:

# service sshd start Starting sshd: [ OK ]

# service sshd reload Reloading sshd: [ OK ]

La configuración del servicio SSH se agrupa en el directorio /etc/ssh/.

Aquí se encuentra el fichero de configuración fundamental del daemon nombrado sshd_config.

Su estructura es muy simple pues está formado por líneas de la forma ''atributo valor'' y comentarios de la manera usual.

Page 24: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

SSH (Secure SHell)

SSH posee dos versiones en su protocolo de comunicación: la 1 y la 2.

Esta es determinada por el cliente. Las diferencias fundamentales están en la forma de encriptación y autenticación.

A continuación se mencionan en el orden en que ocurren los tipos de autenticación que trata de emplear el cliente para cada versión:

Versión 1

• Autenticación basada en ficheros .rhosts.

• Autenticación basada en ficheros .rhosts combinada con autenticación RSA basada en host.

• Autenticación RSA pura.

• Autenticación basada en passwords.

Versión 2

• Autenticación basada en llave pública.

• Autenticación basada en passwords.

Page 25: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

SSH (Secure SHell)

Autenticación basada en passwords

La forma básica de autenticación con SSH es la tradicional basada en passwords.

Dado que no se han configurado o fallen todas las formas de autenticación mencionadas anteriormente se asumirá la basada en passwords, que simplemente consiste en que el usuario para conectarse al servidor o ejecutar comandos en él debe indicar el password de la cuenta correspondiente.

La autenticación basada en ficheros .rhosts y hosts.equiv es básicamente insegura además de que confía en la integridad del cliente.

Consiste en permitir la autenticación de un cliente sin necesidad de password dado que exista un fichero que lo autorice para ello en el host servidor.

El fichero .rhosts es propio de cada usuario y se almacena directamente en su directorio base. Contiene pares host-username

Ejemplo:sion -tete # niega el acceso desde el host sion al usuario tete

Autenticación basada en ficheros .rhost

Page 26: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

SSH (Secure SHell)Autenticación RSA

La autenticación RSA se basa en la criptografía de llaves.

Una llave no es más que una cadena de caracteres de un tamaño lo suficientemente grande como para que no pueda ser adivinada fácilmente

La idea central del algoritmo RSA es que existen dos llaves: una para encriptar y otra para desencriptar lo encriptado.

La primera llave es conocida como llave pública pues se puede dar a conocer a todos sin ninguna restricción, en cambio la segunda llave llamada llave privada debe ser secreta.

Lo encriptado con la llave pública solo puede ser desencriptado con la llave privada y no es posible obtener la llave privada partiendo de la pública. Esta es la base de la autenticación RSA

Las llaves públicas son almacenadas en la máquina servidora en un fichero por usuario. En cambio, la llave privada se guarda solamente en la máquina cliente.

La autenticación RSA pura basada en usuario permite al usuario en el cliente que posee la llave privada conectarse al usuario en el servidor que posee la llave pública correspondiente.

Page 27: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

SSH (Secure SHell)

Descripción de la autenticación RSA

Cuando el cliente trata de conectarse le envía al servidor la llave pública que el usuario quiere usar para autenticarse.

El servidor chequea que la llave sea admisible (está contenida en su lista de llaves autorizadas y se corresponde con el cliente) y si es así genera un número aleatorio de 256 bits, lo encripta con la llave pública, y lo envía al cliente.

El cliente desencripta el número con la llave privada que posee, calcula un checksum MD5 de lo obtenido y lo envía de vuelta al servidor (no se envía el número plano para evitar ataques a RSA).

El servidor a su vez genera el checksum de lo que envió y lo compara con el recibido, si ambos son iguales la autenticación es aceptada y se establece la conexión.

Page 28: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

SSH (Secure SHell)

Como se hizo alusión anteriormente existen dos herramientas básicas que funcionan como clientes en SSH.

• ssh

Sintaxis: ssh [-l usuario] [host | usuario@host] [comando] De no especificarse usuario se asume aquel con el que se está conectado en el cliente.

Ejemplos: $ ssh root@sion root@sion's password:

$ ssh -l root sion tail /var/log/messages root@sion's password:

• scp

Sintaxis: scp [opciones] [usuario@host:]<fuente> [...] [usuario@host:]<destino> Traslada ficheros o directorios del servidor al cliente o viceversa.

Page 29: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

SSH (Secure SHell)

Algunas opciones:

• -C : realiza el traslado del fichero de forma compactada utilizando gzip.

• -r : permite hacer copias recursivas para los directorios

• -q : no muetra la información del progreso de la copia como se hace por defecto

Page 30: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

SSH (Secure SHell)

FTP a través de SSH

Como se mencionó anteriormente a través de un canal SSH se pueden transferir ficheros a la manera del servicio FTP.

Los programas empleados para ello son sftp-server disponible en el paquete openssh-server y sftp que forma parte de openssh-clients.

El servidor FTP en este caso no es un daemon independiente sino que constituye un subsistema del servidor principal del SSH.

Se habilita a través de un atributo en la configuración del daemon SSH en /etc/ssh/sshd_config añadiendo una línea de la forma:

Subsystem sftp /usr/lib/ssh/sftp-server

El cliente sftp es una herramienta similar al comando ftp que puede operar en modo interactivo o no. También es capaz de emplear las formas de autenticación descritas anteriormente.

Sintaxis:

sftp [opciones] [usuario@]host[:fuente [destino]] sftp [opciones] [usuario@]host[:directorio]

Page 31: Entrenamiento en Linux Clase #6 Por: Javier García Salgado Servicios de RED (Parte I)

continuación...

SSH (Secure SHell)

Algunas opciones:

• -C : habilita el modo de transferencia compactado.

• -b <fichero> : opera en modo no interactivo o batch, o sea toma los comandos a ejecutar a partir de un fichero en lugar de la entrada estándar como es por defecto.

Algunos comandos que se pueden ejecutar en una sesión sftp son:

cd lcd ls llsumask lumask chmod chownhelp mkdir lmkdir getmget put mput exitquit ? ln pwdlpwd rm rmdir lny otros.

FINFIN