martes, 29 de noviembre de 2011

Investigación sobre automatización de tareas

En esta nueva entrada os voy a hablar sobre una utilidad que nos hace a los informáticos (y a todos los usuarios en general) la vida más sencilla y rápida en temas de informática. Os hablo de la automatización de tareas. 


¿Y qué es eso de la automatización de tareas?
La automatización de tareas consiste, como su propio nombre indica, en realizar de manera automática diversas tareas en nuestros equipos con una periocidad dada. De esta forma, evitamos perder el tiempo en hacer a diario diversas tareas que podría realizar el equipo automáticamente y que nos permitiría ahorrar tiempo. ¿Y qué tareas pueden automatizarse? Muchas y de diversa relevancia. Desde una copia de seguridad cada semana a que el equipo desconecte automáticamente cuando acabe de realizar un trabajo si tener que estar nosotros presentes para ello.

Como podéis ver, la ventaja está más que clara en el uso de la automatización de tareas: Ahorro de tiempo y evitar cometer errores en algún momento al repetir siempre lo mismo.

La automatización de tareas es independiente del sistema operativo, pudiendo realizarse tanto en sistemas UNIX como en sistemas Windows. Hablemos de algunos de ellos:

Planificación de tareas en sistemas UNIX 

Comandos:
Los sistemas UNIX nos permiten planificar tareas de, básicamente, dos forma puntual o de forma periódica.
Cuando se trata de una automatización puntual tenemos la orden AT (en) la cual ejecutará la tarea que le indiquemos en la fecha y hora que queramos pero solamente lo hará una vez. En caso de querer, por ejemplo, que haga la tarea cada 12 horas tendríamos que programarlo manualmente.

Si queremos, como hemos dicho antes, automatizar una tarea de forma periódica la otra opción que tenemos es CRON (del griego chronos, que significa "tiempo") el cual es un administrador de procesos en segundo plano que los ejecuta de forma periódica.

Estas dos opciones, AT y CRON se utilizan en el terminal del sistema. Si queremos utilizar herramientas gráficas tendremos que usar otras, como veremos a continuación.


Herramientas gráficas:

Además de en el terminal, también hay diversas herramientas gráficas que podemos utilizar para automatizar tareas en sistemas UNIX, algunas de ellas son:

-Webmin, mediante el módulo de sistema dedicado a la automatización (Webmin/Sistema/Comandos planificados).

-Gcrontab: Herramienta gráfica que se instala con el paquete "gcrontab" y que tiene el siguiente aspecto:

-gatO: Otra herramienta gráfica que se instala de la misma forma que la anterior, pero con el paquete "gato":


Veamos ahora cómo conseguimos la automatización de tareas en sistemas Windows.

Planificación de tareas en Windows 2003/2008 Server
Windows también posee, al igual que UNIX, el comando AT para automatizar tareas puntuales. Además, para tareas que necesitamos que se automaticen de forma periódica tenemos el programador schtasks. Incluso en el panel de control tenemos un asistente para programar tareas:



En conclusión, la automatización de tareas en la informática es una herramienta muy útil que nos permite ahorrar mucho tiempo en nuestro día a día. Tanto es así que podemos encontrar herramientas en cualquiera de los dos sistemas punteros a día de hoy en el mundo de la informática: El sistema libre UNIX y el privativo Windows.

¡Hasta la próxima bat-entrada!

lunes, 21 de noviembre de 2011

101 utilidades forenses

Aquí os dejo un enlace a un blog con una entrada bastante interesante: 101 utilidades informáticas para el análisis forense.

http://conexioninversa.blogspot.com/2011/11/101-utilidades-forenses.html

No tiene desperdicio.

Servicio IIS en Windows 2003 Server

Windows 2003 Server tiene un sistema propio de servicio web llamado IIS (Internet Information Server) con el cual podemos hacer que nuestro servidor ofrezca diversas páginas webs.

No es difícil de configurar, como veremos en el siguiente tutorial, y tiene algunas diferencias con respecto a otros servicios webs, como es Apache, que discutiremos al final del tutorial. Comencemos pues a configurar una página básica mediante IIS.

Lo primero que tenemos que hacer es instalar el servicio IIS en nuestro Windows 2003 Server, lo haremos yendo al Panel de control\Agregar o quitar programas\Agregar o quitar componentes de Windows\Servidor de aplicaciones\Instalar Internet Information Server (IIS) y pulsamos "Siguiente" (nos pedirá el disco de instalación de Windos 2003 Server):


Una vez instalado iremos a "Inicio\Herramientas administrativas\Administrador de Internet Information Server (IIS) y nos saldrá una ventana como esta:


Ahora crearemos un sitio nuevo. Por defecto Windows 2003 Server instala una página predeterminada pero la borraremos para crearla desde 0. Pulsaremos click derecho sobre la carpeta "Sitios Web" y haremos click en "Nuevo\Sitio Web...". Nos saldrá el asistente:


Pulsamos "Siguiente" y la primera opción que tenemos que completar es la de añadir una descripción del sitio web. La añadimos y pulsamos "Siguiente":


En esta nueva ventana añadiremos la dirección ip para el sitio, el puerto TCP y un encabezado para el host en caso de que estemos interesados. Una vez rellenada la información pulsamos "Siguiente":


En la siguiente ventana nos pide la ruta en la que está la carpeta donde estará contenida la web. La indicamos y pulsamos "Siguiente":


Ahora tenemos que indicar los permisos de acceso, que al ser un sitio web básico solo daremos permisos de lectura:


Tras pulsar "Siguiente" en la ventana anterior nos falta añadir las propiedades del sitio web. Importante, en la pestaña "Documentos", agregaremos el nombre de nuestra página, que en nuestro caso será "index.html":

(Contenido de nuestro index.html guardado en C:\web):


Aplicamos, aceptamos y ahora, abriendo un navegador cualquiera, introducimos la dirección web que indicamos antes y veremos que carga nuestro sitio web:


Diferencias más notables entre IIS y Apache:

La más clara diferencia es que IIS requiere de licencia de uso, ya que pertenece a Microsoft, mientras que Apache es libre, de código abierto y gratuito.

Además, IIS solo puede implementarse en sistemas Windows debido a esta propiedad nombrada anteriormente, mientras que Apache puede ser instalado y utilizado en cualquier sistema operativo, bien mendiante un XAMP (para equipos Windows) o mediante un LAMP (para equipos linux).

También Apache tiene mayor cantidad de módulos disponibles, a la vez que variados, siendo más difícil de encontrar módulos para IIS.

Personalmente prefiero utilizar Apache antes que IIS. Los principales motivos son que es gratuito, que es más fácil de manejar a la hora de encontrar módulos para diversas aplicaciones adicionales y que estoy acostumbrado a utilizarlo desde que comencé el ciclo.

Nos vemos en la próxima entrada, que al ritmo que van las prácticas será en 10 minutos si me descuido.

El comando top y sus opciones

El comando top sirve para monitorear en tiempo real una máquina.
Su salida estándar ofrece los siguientes campos.

PID: Número identificador de procesos.
USER: Usuario lanzador de un proceso.
PR: Prioridad del proceso.
NI: Mejor valor, negativo necesita más prioridad, positivo más.
VIRT: Total de memoria virtual usada.
RES: Total de memoria física (non-swaped) usada por el proceso.
SHR: Total de memoria compartida usada por el proceso.
S: Status.
R: Corriendo.
S: Durmiendo.
Z: Zombie.
T: Parado.
D: Ininterrumpible.
%CPU: Tanto por ciento de cpu usada por el proceso.
%MEM: Tanto por ciento de la memoria usada.
TIME+: Tiempo que lleva en ejecución el proceso.
COMMAND: Nombre del proceso.


OPCIONES:
Hay 12 opciones que podemos aplicar a este comando:

-c : Para visualizar la línea de comandos completa de cada proceso.
-d : Intervalo de actualización y refresco.
-U : Monitorizar solamente los procesos de un determinado UID.
-p : Monitorizar solamente los ID de procesos especificados.
-n : Especificaremos el nº de veces que actualizará hasta que finalice la ejecución de Top.
-h: Ayuda.
-b: Inicia en bach mode y es útil para enviar la salida de a un archivo o programa.
-i: No muestra los procesos Zombies o inactivos.
-u: muestra los procesos lanzados por un usuario concreto.
-s: Inicia el comando en modo seguro.
-v: Muestra su versión de librería y el prompt usado y cierra.
-S: Activa el modo tiempo acumulativo, de manera q muestra el tiempo usado por los procesos hijos de cada proceso.

jueves, 17 de noviembre de 2011

mod_auth_basic: Método de autenticación de Apache alternativo a LDAP.


Como hemos visto en clase, es posible pedir autenticación mediante LDAP para acceder a páginas web de nuestro servidor Apache. Además de este método, tenemos otros más para proteger el acceso a nuestro sitio web.

Una de estas formas es utilizar un módulo que trae Apache, el mod_auth_basic.

Comprobamos que el módulo esté activo (por defecto lo está) observando los módulos activos de apache:

(Si no estuviera activo tendríamos que activarlo con el comando “sudo a2enmod auth_basic.load”).


Comprobado esto crearemos el archivo que contendrá los usuarios y sus claves para poder autenticar. Esto se hace utilizando el comando htpasswd. Añadiremos el usuario “lucas” y le pondremos la contraseña “lucas” al archivo “claves.txt” que estará en /etc/apache2/claves:


Si observamos el contenido del archivo, veremos que la contraseña está encriptada:


Una vez creado el archivo de claves configuraremos el VirtualHost del sitio en el que solicitaremos autenticación de la siguiente forma:


AuthUserFile indica la ruta en la que se encuentra el archivo de usuarios y claves.
AuthName creará el aviso de solicitud de autenticación.
AuthType indica qué tipo de autenticación haremos.
Require establece el tipo de usuario que será permitido.

Hecho esto activaremos el sitio con el comando “a2ensite authapache” y recargaremos el servicio apache como nos indica el terminal.

Ahora intentamos acceder al sitio web y nos encontramos conque nos pide autenticación:


Introducimos los datos para autenticar y nos abre la página:







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>