miércoles, 26 de octubre de 2011

HTTP (Hypertext Transfer Protocol, o Protocolo de Trasferencia de Hipertext)

HTTP (Hypertext Transfer Protocol, o Protocolo de Trasferencia de Hipertext), es el método utilizado para transferir o transportar información en la Red Mundial (WWW, World Wide Web). Su propósito original fue el proveer una forma depublicar y recupertar documentos HTML.

El desarrollo del protocolo fue coordinado por World Wide Web Consortium y la IETF (Internet Engineering Task Force, o Fuerza de Trabajo en Ingeniería de Internet), culminando con la publicación de variso RFC (Request For Comments), de entre los que destaca el RFC 2616, mismo que define la versión 1.1 del protocolo, que es el utilizado hoy en día.

HTTP es un protocolo de solicitud y respuesta a través de TCP, entre agentes de usuario (Navegadores, motores de índice y otras herramientas) y servidores, regularmente utilizando el puerto 80. Entre la comunicación entre éstos puede intervenir como servidores Intermediarios (Proxies), puertas de enlace y túneles.

URL: http://tools.ietf.org/html/rfc2616

Acerca de Apache.

Apache es un servidor HTTP, de código abierto y licenciamiento libre, que funciona en Linux, sistemas operativos derivados de Unix™, Windows, Novell Netware y otras plataformas. Ha desempeñado un papel muy importante en el crecimiento de la red mundial, y continua siendo el servidor HTTP más utilizado, siendo además el servidor de facto contra el cual se realizan las pruebas comparativas y de desempeño para otros productos competidores. Apache es desarrollado y mantenido por una comunidad de desarrolladores auspiciada por Apache Software Foundation.

Iniciar servicio y añadir el servicio al arranque del sistema.

Apache es un servicio que por fortuna solo es necesario instalar e iniciar. No requiere modificaciones adicionales para su funcionamiento básico. Para añadir el servicio a los servicios que inician junto con el sistema, solo basta ejecuta:

chkconfig httpd on

Para iniciar el servicio por primera vez, solo basta utilizar:

service httpd start

Para reiniciar el servicio, considerando que se interrumpirán todas las conexiones establecidas en ese momento, solo basta utilizar:

service httpd restart

Si el servicio ya está trabajando, también puede utilizar reload a fin de que Apache vuelva a leer y cargar la configuración sin interrumpir el servicio, y, por ende, las conexiones establecidas.

service httpd reload

Para detener el servicio, solo basta utilizar:

service httpd stop

Fuente:http://www.linuxparatodos.net/portal/staticpages/index.php?page=como-apache

Servicio SMB

SMB (acrónimo de Server Message Block) es un protocolo, del Nivel de Presentación del modelo OSI de TCP/IP, creado en 1985 por IBM. Algunas veces es referido también como CIFS (Acrónimo de Common Internet File System, http://samba.org/cifs/) tras ser renombrado por Microsoft en 1998. Entre otras cosas, Microsoft añadió al protocolo soporte para enlaces simbólicos y duros así como también soporte para ficheros de gran tamaño. Por mera coincidencia esto ocurrió por la misma época en que Sun Microsystems hizo el lanzamiento de WebNFS (una versión extendida de NFS, http://www.sun.com/software/webnfs/overview.xml).

SMB fue originalmente diseñado para trabajar a través del protoclo NetBIOS, el cual a su vez travaja sobre NetBEUI (acrónimo de NetBIOS Extended User Interface, que se traduce como Interfaz de Usuario Extendida de NetBIOS), IPX/SPX (acrónimo de Internet Packet Exchange/Sequenced Packet Exchange, que se traduce como Intercambio de paquetes interred/Intercambio de paquetes secuenciales) o NBT, aunque también puede trabajar directamente sobre TCP/IP.

Acerca de Samba.

SAMBA es un conjunto de programas, originalmente creados por Andrew Tridgell y actualmente mantenidos por The SAMBA Team, bajo la Licencia Publica General GNU, y que implementan en sistemas basados sobre UNIX® el protocolo SMB. Sirve como reemplazo total para Windows® NT, Warp®, NFS® o servidores Netware®.

Configuración básica de Samba.

Para la mayoría de los casos la configuración de Samba como servidor de archivos es suficiente.

Alta de cuentas de usuario.

Es importante sincronizar las cuentas entre el servidor Samba y las estaciones Windows®. Es decir, si en una máquina con Windows® ingresamos como el usuario"paco" con clave de acceso "elpatito16", en el servidor Samba deberá existir también dicha cuenta con ese mismo nombre y la misma clave de acceso. Como la mayoría de las cuentas de usuario que se utilizarán para acceder hacia samba no requieren acceso al interprete de mandatos del sistema, no es necesario asignar clave de acceso con el mandato passwd y se deberá definir /sbin/nologin o bien /bin/false como interpete de mandatos para la cuenta de usuario involucrada.

useradd -s /sbin/nologin usuario-windows smbpasswd -a usuario-windows

No hace falta se asigne una clave de acceso en el sistema con el mandato passwd puesto que la cuenta no tendrá acceso al interprete de mandatos.

Si se necesita que las cuentas se puedan utilizar para acceder hacia otros servicios como serían Telnet, SSH, etc, es decir, que se permita acceso al interprete de mandatos, será necesario especificar /bin/bash como interprete de mandatos y además se deberá asignar una clave de acceso en el sistema con el mandatopasswd:

useradd -s /bin/bash usuario-windows passwd usuario-windows smbpasswd -a usuario-windows

Parámetros principales del fichero smb.conf.

Modifique el fichero /etc/samba/smb.conf con cualquier editor de texto. Dentro de este notará que la información que le será de utilidad viene comentada con un símbolo # y los ejemplos con ; (punto y coma), siendo estos últimos los que tomaremos como referencia.

Empezaremos por establecer el grupo de trabajo editando el valor del parámetro workgroup asignando un grupo de trabajo deseado:

workgroup = MIGRUPO

Opcionalmente puede establecer con el parámetro netbios name otro nombre distinto para el servidor si acaso fuese necesario, pero siempre tomando en cuenta que dicho nombre deberá corresponder con el establecido en el fichero /etc/samba/lmhosts:

netbios name = maquinalinux

El parámetro server string es de carácter descriptivo. Puede utilizarse un comentario breve que de una descripción del servidor.

server string = Servidor Samba %v en %L

SMTP

SMTP se basa en el modelo cliente-servidor, donde un cliente envía un mensaje a uno o varios receptores. La comunicación entre el cliente y el servidor consiste enteramente en líneas de texto compuestas por caracteres ASCII. El tamaño máximo permitido para estas líneas es de 1000 caracteres.

Las respuestas del servidor constan de un código numérico de tres dígitos, seguido de un texto explicativo. El número va dirigido a un procesado automático de la respuesta por autómata, mientras que el texto permite que un humano interprete la respuesta. En el protocolo SMTP todas las órdenes, réplicas o datos son líneas de texto, delimitadas por el carácter . Todas las réplicas tienen un código numérico al comienzo de la línea.

En el conjunto de protocolos TCP/IP, el SMTP va por encima del TCP, usando normalmente el puerto 25 en el servidor para establecer la conexión.

Resumen simple del funcionamiento del protocolo SMTP

Cuando un cliente establece una conexión con el servidor SMTP, espera a que éste envíe un mensaje “220 Service ready” o “421 Service non available”

Se envía un HELLO desde el cliente. Con ello el servidor se identifica. Esto puede usarse para comprobar si se conectó con el servidor SMTP correcto.

El cliente comienza la transacción del correo con la orden MAIL FROM. Como argumento de esta orden se puede pasar la dirección de correo al que el servidor notificará cualquier fallo en el envío del correo (Por ejemplo, MAIL FROM:). Luego si el servidor comprueba que el origen es valido, el servidor responde “250 OK”.

Ya le hemos dicho al servidor que queremos mandar un correo, ahora hay que comunicarle a quien. La orden para esto es RCPT TO:. Se pueden mandar tantas órdenes RCPT como destinatarios del correo queramos. Por cada destinatario, el servidor contestará “250 OK” o bien “550 No such user here”, si no encuentra al destinatario.

Una vez enviados todos los RCPT, el cliente envía una orden DATA para indicar que a continuación se envían los contenidos del mensaje. El servidor responde “354 Start mail input, end with .” Esto indica al cliente como ha de notificar el fin del mensaje.

Ahora el cliente envía el cuerpo del mensaje, línea a línea. Una vez finalizado, se termina con un . (la última línea será un punto), a lo que el servidor contestará “250 OK”, o un mensaje de error apropiado.

Tras el envío, el cliente, si no tiene que enviar más correos, con la orden QUIT corta la conexión. También puede usar la orden TURN, con lo que el cliente pasa a ser el servidor, y el servidor se convierte en cliente. Finalmente, si tiene más mensajes que enviar, repite el proceso hasta completarlos.

Puede que el servidor SMTP soporte las extensiones definidas en el RFC 1651, en este caso, la orden HELO puede ser sustituida por la orden EHLO, con lo que el servidor contestará con una lista de las extensiones admitidas. Si el servidor no soporta las extensiones, contestará con un mensaje "500 Syntax error, command unrecognized".

En el ejemplo pueden verse las órdenes básicas de SMTP:

HELLO, para abrir una sesión con el servidor

MAIL FROM, para indicar quien envía el mensaje

RCPT TO, para indicar el destinatario del mensaje

DATA, para indicar el comienzo del mensaje, éste finalizará cuando haya una línea únicamente con un punto.

QUIT, para cerrar la sesión

RSET Aborta la transacción en curso y borra todos los registros.

SEND Inicia una transacción en la cual el mensaje se entrega a una terminal.

SOML El mensaje se entrega a un terminal o a un buzón.

SAML El mensaje se entrega a un terminal y a un buzón.

VRFY Solicita al servidor la verificación del argumento.

EXPN Solicita al servidor la confirmación del argumento.

HELP Permite solicitar información sobre un comando.

NOOP Se emplea para reiniciar los temporizadores.

TURN Solicita al servidor que intercambien los papeles.

De los tres dígitos del código numérico, el primero indica la categoría de la respuesta, estando definidas las siguientes categorías:

2XX, la operación solicitada mediante el comando anterior ha sido concluida con éxito

3XX, la orden ha sido aceptada, pero el servidor esta pendiente de que el cliente le envíe nuevos datos para terminar la operación

4XX, para una respuesta de error, pero se espera a que se repita la instrucción

5XX, para indicar una condición de error permanente, por lo que no debe repetirse la orden

Una vez que el servidor recibe el mensaje finalizado con un punto puede almacenarlo si es para un destinatario que pertenece a su dominio, o bien retransmitirlo a otro servidor para que finalmente llegue a un servidor del dominio del receptor.

Servicio FTP (File Transfer Protocol)

Servicio FTP

Un servicio FTP es uno de los soportes básicos de otros servicios que puedas ofrecer en un servidor para posibilitar el acceso a los ficheros presentes en el mismo. Una de las soluciones más conocidas en Linux es VSFTPD (Very Secure FTP Daemon, demonio de FTP muy seguro), de hecho es la elegida por distribuciones como Ubuntu para ofrecer ese servicio por defecto.

Instalación

Deberemos instalar el paquete: vsftpd en nuestro equipo. Si utilizamos:

Debian, Ubuntu y otras derivadas: apt-get install vsftpd

Red Hat, Cent OS, Fedora y derivadas: yum install vsftpd

En caso de no encontrarlo, buscad en vuestros repositorios (apt-cache search vsftpfd o yum search vsftpd) y mirad qué paquete debéis instalar. Si aún así no lo encontráis, agregad más paquetes a vuestro sistema de gestión de paquetes.

Configuración

Ahora que tenemos instalado el servicio deberemos asignar usuarios y enjaularlos para que sólo puedan acceder a los espacios que determinemos. El fichero de configuración, al igual que todo este tipo de servicios, está en el directorio /etc, es el siguiente: /etc/vsftpd.conf.

El fichero es bastante autoexplicativo pero aún así vamos a comentar las líneas de mayor interés:

Acceso a usuarios anónimos: anonymous_enable

Mensaje de bienvenida: ftpd_banner

Permitir escritura en el servidor (lo más frecuente será activarla): write_enable

Enjaular a los usuarios (necesario para asegurar la confidencialidad de los datos). Tres ficheros:

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list