jueves, 17 de noviembre de 2011

Servicio de Transferencia de Archivos (FTP).

Como indica el título de la entrada de hoy, voy a hacer un breve resumen del Protocolo de Transferencia de Archivos o FTP, el cual corresponde al tema 4 de la asignatura de Redes. Si queréis ampliar la información acceder al enlace sobre FTP de la Wikipedia.


1- Servicio de transferencia de archivos

FTP (File Transfer Protocol o "Protocolo de Transferencia de Archivos") es un protocolo de red para la transferencia de archivos entre sistemas, conectados a una red TCP, basado en la arquitectura cliente-servidor.



2- Tipos de usuarios que hay en este servicio

Hay tres tipos fundamentales de usuarios:

Los usuarios anónimos, los cuales puede acceder a un servidor FTP sin la necesidad de tener una identificación de usuario (User ID) o cuenta de usuario para esto pero que solo tienen acceso a la descarga de cierta parte de los archivos que hay en el sistema FTP.

Los usuarios FTP, los cuales además de tener acceso al sistema de archivos, también pueden tener privilegios de modificación, subida y otros tratamientos de los archivos.

Los usuarios invitados, que es una mezcla de los dos anteriores, teniendo la capacidad de acceder a un sistema FTP mediante una identificación, pero sin la posibilidad de hacer más de lo que podría hacer un usuario anónimo, esto es, acceso a la descarga de parte del sistema de archivos.



3- Tipos de acceso que hay a este servicio

Los principales tipos de acceso al servicio FTP son: El acceso por consola, el acceso vía web, y el acceso a través de una aplicación.



4- Tipos de conexión

FTP admite dos tipos de conexión:

Modo Activo: El servidor crea el canal de datos SIEMPRE en su puerto 20 mientras que en el cliente el canal de datos se asocia a un puerto aleatorio superior al 1024. Este modo genera un problema de seguridd bastante grande ya que el cliente tiene que permitir cualquier conexión de entrada en todos los puertos superiores al 1024. Para evitar esto se creó el modo pasivo.

Modo Pasivo: En este modo de conexión el servidor FTP indica al cliente por el canal de control el puerto al que debe conectarse (mayor al 1023 del servidor). El cliente efectuará una conexión desde el siguiente puerto al puerto de control hacia el puerto del servidor especificado anteriormente por este.



5- Tipos de transferencia de archivos

 Hay 2 tipos de transferencias de archivos:

Transferencia de archivos tipo ascii: Esto es, los archivos que solo contienen caracteres imprimibles (archivos ASCII, como por ejemplo una página HTML)

Transferencia de archivos tipo binario: Esta se usa cuando se trata de archivos comprimidos, ejecutables de PC, imágenes, audio, vídeo, etc.

viernes, 11 de noviembre de 2011

11/11/11: Capicuas, palíndromos y php, todo en uno.

Buenos días a quien lea el blog.

Como sabéis, o deberíais saber, hoy es 11 de noviembre del 2011. O lo que es lo mismo, 11/11/11. Es curioso cómo en el mundo de las matemáticas los números capicua tienen también su aquel, como es en el caso de los Primos de Fermat.

¿A qué viene todo esto? Pues esta mañana a primera hora mi tutor (@fjagui) nos ha recordado lo curioso de la fecha del día de hoy y, asociándolo a la asignatura que nos imparte (Implantación de Aplicaciones Web) nos ha propuesto crear un pequeño script php que nos ayude a saber si una cadena es palíndroma o no (una palabra palíndroma es aquella que se lee igual al derecho que al revés, es el equivalente en letras a los números capicuas).

A la hora de crear el script tenemos en cuenta que php contiene una función muy útil para este propósito: la función strrev() la cual invierte una cadena.

Aquí los códigos de las dos páginas creadas para tal objetivo, consulta.php en la que tenemos el formulario que recoge la cadena y respuesta.php en la que invertimos la cadena y la comparamos con la original para ver si coincide o no.


consulta.php

//Esta es la cabecera de la página

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html charset=utf-8" />
<title>Crear BBDD de Servidores</title>
<link rel="stylesheet" type="text/css" href="/css/index.css">
</head>

<body>


//Aquí tenemos un texto que dará una pequeña explicación sobre el funcionamiento de la página

<h1>¡El palindromotizador!</h1>
<h2>Rellenando este sencillo formulario podrás averiguar si lo que has escrito en él es un palíndromo o no. Recordemos que una palabra palíndroma es aquella que se lee igual de izquierda a derecha que de derecha a izquierda (por ejemplo, radar es palíndroma, casa no).</h2><br><h2>En el caso de tratarse de números, la palabra que se usa es CAPICUA.</h2><br>
Nota: Debido a que lo he hecho en 15 minutos no he podido pulir el script por lo que los textos que pongáis han de ser en minúsculas/mayúsculas en su totalidad, omitir signos de puntuación (comas, puntos, etc) y acentos y no estar separadas las palabras con espacios.</br>

//Comenzamos el formulario que recogerá la cadena dada por el usuario

<form action="respuesta.php" method="post">

<br>Palabra / frase / número a palindromotizar: <input type="text" name="palindromo" />
<input type="submit" value="¿Es un palíndromo?" />
</form>

//final del formulario y de la página de la consulta

</body>
</html>



respuesta.php

//Esta es la cabecera de la página

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html charset=utf-8" />
<title>Crear BBDD de Servidores</title>
<link rel="stylesheet" type="text/css" href="/css/index.css">
</head>

<body>


//Comienza el script php y recogemos la cadena dada en consulta.php por método "post".  También usamos la función "strrev()" para invertir la cadena


<?php
$cadena = $_POST['palindromo'];
$invertido = strrev($cadena);



//usaremos una condición, de forma que si se cumple que la cadena inicial es igual que la cadena invertida, la cadena será un palíndromo. En caso contrario nos dará un mensaje avisando de que no lo es.

if ($invertido == $cadena)
{
    echo "La cadena que acabas de introducir se puede leer tanto de izquierda a derecha como de derecha a izquierda, por lo tanto... ¡es un palíndromo!";
}

else
{
    echo "Lo siento," . $cadena . " al revés se lee" . "<br>" . $invertido . "<br>" . "como no coincide con lo inicial, no es un palíndromo";
}
?>

// final del script y de la página

</body>
</html>



martes, 11 de octubre de 2011

Administración de dominios en Windows 2003 Server

En la actualidad, los equipos forman parte de una red, de forma que pueden intercambiar información. La mejor forma de utilizar esta ventaja a nuestro favor es creando un dominio de sistemas en el cual la información se encontrará centralizada en uno o varios equipos.

Windows 2003 Server realiza esta tarea con el Active Directory, el cual almacena información acerca de los recursos de la red y permite que el usuario pueda acceder a estos recursos. Además, Active Directory separa la estructura lógica (los dominios) de la estructura física (la topología de la red).

Windows 2003 Server es compatible con gran cantidad de los protocolos existentes, pudiendo así facilitar su configuración. Ejemplo de estos son: DHCP y DNS

Active Directory y DNS son ambos espacios de nombres. En ellos un nombre es resuelto, como hace el DNS basándose en el protocolo TCP/IP. De esta forma cada dominio se identifica unívocamente y cada equipo forma parte de un dominio, existiendo así dominios y equipos que se presentan como objetos en Active Directory y como nodos en DNS.

Active Directory utiliza DNS para tres funciones principales:

1- Resolución de nombres.
2- Definición del espacio de nombres.
3- Búsqueda de los componentes físico de Active Directory.

La estructura lógica de Active Directory se centra en la administración de recursos de la unidad organizativa, haciéndolo de una forma independiente de su ubicación física y su topología. Esta estructura  lógica se basa en un sistema de dominios, dentro de los cuales se subdivide lógicamente el directorio mediante unidades organizativas que permiten que se pueda administrar de forma independiente.

Un dominio es un conjunto de equipos, los cuales comparten una base de datos de directorio común. Usando dominios podemos conseguir una serie de objetivos:

1- Delimitar la seguridad.
2- Replicar Información.
3- Aplicar Políticas o Directivas de Grupo.
4- Delegar Permisos Administrativos.

En ciertas configuraciones es necesario disponer de varios dominios dentro de la misma organización. Esto puede hacerse en Windows 2003 Serverya utilizando un dominio raíz que contiene la configuración y el esquema del bosque, pudiendo agregar a esta raíz subdominios. También se pueden crear dominios "hermano" de la raíz, bajo los cuales se podrán crear los subdominios.

lunes, 10 de octubre de 2011

Protección local en Windows 2003 Server

Windows 2003 Server nos permite un control de los usuarios que acceden al sistema bastante amplio, usando un sistema de cuentas de usuario que permiten almacenar multitud de información sobre estos: Nombre del usuario, Contraseña, Directorio de conexión, Horario, Activada (permite saber que la cuenta está activa) y un campo muy importante, el SID (Secure Identifier, Identificador seguro), que lo genera el sistema de forma automática y que es único en todo el mundo, impidiendo ser suplantado por ningún usuario, aunque sea el administrador.


Los usuarios se administran a su vez en grupos, los cuales agilizan la asignación o restricción de permisos. Existen varios grupos por defecto y podemos crear tantos como queramos.

Los usuarios tienen también derechos, los cuales son atributos que permiten la realización de acciones que afectan al sistema en conjunto y no de forma individual.

Hay dos tipos de derechos, los de conexión (logon rights) y los de privilegios (privileges). Los primeros establecen las formas en las que un usuario puede conectarse al sistema y los segundos hacen referencia a las acciones predefinidas que un usuario puede realizar una vez conecta al sistema.

Además, los recursos del sistema tienen permisos, característica que les permite denegar o conceder acceso de lectura, escritura, ejecución, etc a los usuarios.

La asociación de permisos a carpetas y archivos sigue varias reglas:

1- Al crearse un archivo nuevo este no posee ningún permiso explícito y toma los heredados y explícitos de su carpeta padre. Si se necesitan añadir más se añaden a la lista de explícitos.

2- El control de herencia tiene dos niveles de hacerse: Uno en el que se permite herdar los permisos desde su carpeta padre y un segundo que añade una regla que indica qué recursos podrán heredar los permisos, no heredándolos el resto.

3- Copiar un archivo a otra ubicación es considerado por el sistema como una creación nueva por lo que los permisos explícitos estarán vacíos y los heredados serán los activos de la carpeta padre.

4- Mover un archivo, si se encuentra dentro del mismo volumen, hará que se desactive la herencia y se mantengan los permisos explícitos. Si el volumen es distinto actuará como si fuera una copia de archivos.

Los permisos son acumulativos y van ligados a los SID de los usuarios. En caso de faltar un permiso sobre un objeto supondrá la imposibilidad de realizar dicha acción y si se produjera un conflicto de permisos los negativos tendrán prioridad sobre los positivos, además de que los explícitos tendrán prioridad sobre los heredados.

miércoles, 28 de septiembre de 2011

Cómo autenticar phppgadmin en la web

Por defecto, en el archivo de configuración de phppgadmin viene activada una instrucción que debemos cambiar para que podamos autenticar vía web.

Para esto tenemos que ir al archivo de configuración en la carpeta raíz de phppgadmin (/etc/phppgadmin). El archivo se llama "config.inc.php". Se abre con un editor de textos (nano, gedit) y buscar la línea que muestro a continuación:

$conf['extra_login_security'] = true;

La modificamos cambiando "true" por "false" de la siguiente forma:

$conf['extra_login_security'] = false;

Ahora reiniciamos el servicio (sudo /etc/init.d/postgresql restart) y ahora sí podremos autenticar con el usuario y la password usadas en la instalación de postgres.