martes, 29 de noviembre de 2011

Automatización de Tareas


¿Qué es la automatización de tareas? Ventajas.

La automatización consiste en la realización de tareas o acciones que se realizan de forma automática y con cierta periodicidad en un nuestro sistema informático. Existen métodos para la automatización como la programación simple, los macros, los intérpretes y las bombas lógicas, incluso los virus informáticos se podrían considerar también un método para la automatización de tareas. Presenta diversos beneficios o ventajas tales como:

-Incremento de la productividad
-Control sobre el sistema
-Reducción de inventario
-Flexibilidad
-Reducción de costes

Planificación de tareas en sistemas UNIX. Comandos y herramientas gráficas.

En sistemas UNIX se pueden automatizar las tareas del sistema mediante el uso de dos comandos:

CRON

La función básica de cron es la de ejecutar tareas programadas para un determinado momento, y por un usuario con los privilegios necesarios para poder programarlas.

Los ficheros más importantes implicados en el funcionamiento de servicio “cron” son:

-el propio demonio de funcionamiento: crond
-el fichero de configuración (disponible para root): /etc/crontab
-el fichero de inicio y parada del demonio: /etc/init.d/cron
-la orden para la programación de tareas (disponible para los usuarios con suficientes privilegios): crontab
-el sistema de informes (logs) típico de los sistemas GNU/Linux: /var/log/cron

El fichero /etc/crontab está estructurado por líneas, cada una de las cuales contiene una tarea programada, según el siguiente formato:

# minuto hora dia mes dia_semana usuario orden_a_ejecutar

AT

La utilidad at se utiliza para programar una tarea que se llevará a cabo en un momento determinado, y no se volverá a ejecutar. La sintaxis de dicho comando sería del siguiente modo

(hora:minuto (dia.mes.año)) + la acción que queramos que el sistema realice en ese momento determinado

Existen varios servicios para programar tareas automáticas, uno de los más comunes que podemos encontrar es webmin que además de servir para la automatización sirve para proporcionar servicio DHCP, DNS,etc.
Una vez instalado para ejecutarlo no tendríamos más que poner en la barra de nuestro navegador: http://localhost:10000 y ya podemos empezar con la automatización de tareas en dicho programa.

Podemos encontrar más herramientas gráficas tales como Gcrontab, gat0 o Scheduled Taks




Planificación de tareas en Windows 2003/2008 Server. Comandos y herramientas gráficas.

Tanto en Windows 2003 como un 2008 existe una utilidad llamada “Programador de tareas” que viene por defecto en el sistema cuando instalamos el S.O, aunque si tenemos cualquier tipo de duda acerca de su utilización simplemente acudiremos al sistema de ayuda de Windows donde se encuentran bien documentados todos los detalles acerca de esta utilidad del sistema.
También podemos recurrir a ciertos programas tales como BackUpTime que nos permitirá automatizar una cantidad considerable de tareas del sistema.
A continuación muestro un tutorial muy útil de automatización basado en BackUpTime:


Conceptos Aclaratorios:

-Bombas lógicas:

Las bombas lógicas son piezas de código de programa que se activan en un momento predeterminado, como por ejemplo, al llegar una fecha en particular, al ejecutar un comando o con cualquier otro evento del sistema.
Por lo tanto, este tipo de virus se puede activar en un momento específico en varios equipos al mismo tiempo.
Las bombas lógicas se utilizan para lanzar ataques de denegación de servicio al sobrepasar la capacidad de red de un sitio Web, un servicio en línea o una compañía.

-Macro:

Su uso elimina la realización de tareas repetitivas, automatizándolas. Básicamente, se trata de un grupo de comandos de una aplicación, organizados según un determinado juego de instrucciones y cuya ejecución puede ser pedida de una sola vez para realizar la función que se desea.

Bibliografía: 



jueves, 17 de noviembre de 2011

Internet Information Services (IIS)

Internet Information Services o IIS es un servidor web y un conjunto de servicios para el sistema operativo Microsoft Windows. Originalmente era parte del Option Pack para Windows NT. Luego fue integrado en otros sistemas operativos de Microsoft destinados a ofrecer servicios, como Windows 2000 o Windows Server 2003
Este servicio convierte a una PC en un servidor web para Internet, es decir, que en las computadoras que tienen este servicio instalado se pueden publicar páginas web tanto local como remotamente.
Los servicios de Internet Information Services proporcionan las herramientas y funciones necesarias para administrar de forma sencilla un servidor web seguro.

La creación de un pequeño espacio web la he realizado en windows 2003 server
 
Instalación de IIS 

Nos vamos a Inicio/Panel de Control/ Agregar o quitar programas, una vez estemos aquí le damos a Agregar o quitar componentes de Windows /servidores de aplicaciones y por ultimo pulsamos sobre “Instalar Internet Information Services (IIS) en caso de que no esté instalado por defecto.



Acto seguido vamos a Inicio/Herramientas administrativas y finalmente accedemos al administrador de 
Internet Information Services (ISS) 


Una vez mostrada la interfaz gráfica vamos a proceder a la creación de un pequeño espacio web personalizado. Para ello nos vamos a la ruta C:\Inetpub\wwwroot y vamos a modificar el archivo .htm que hay por defecto en su interior (que es el como el index que nos solemos encontrar en los sistemas como Ubuntu)


Una vez terminada la modificación nos metemos como localhost en la barra de direcciones de nuestro navegador Internet Explorer y nos sale nuestro espacio web personalizado.



Similitudes, diferencias y valoración personal
  • IIS es un servicio propietario mientras que Apache es totalmente libre. 
  • ISS solamente se puede utilizar con windows, en cambio apache es multiplataforma y es válido tanto para sistemas basados en windows como en unix.
  • IIS a pesar de tener una interfaz gráfica más agradable a la vista, parece que está un poco limitado en cuanto a personalización, funcionabilidad y demás... personalmente prefiero apache debido a que podemos configurar todos los archivos de sus respectivos módulos y de esa forma asegurarnos de que estamos haciendo bien nuestro trabajo, con IIS es posible que se puedan cometer fallos por ser un sistema tan automatizado.

Comando TOP

El comando TOP muestra a tiempo real un listado de los procesos que se están ejecutando en el sistema, especificando además el % de Cpu y Memoria que están utilizando, sus IDs, usuarios que lo están ejecutando, etc.
La salida por pantalla de Top, puede dividirse en dos partes, la “cabecera” el Uptime del servidor, nº de usuarios conectados y load average. En la siguiente línea podemos ver el nº de procesos ejecutandose en el sistema, así como el uso de disco, memoria y cpus.
Posteriormente podemos observar un listado de procesos, que pueden ser ordenados por uso de cpu o memoria. Este listado, muestra varios detalles de cada uno de los procesos, como pueden ser el PID de proceso, usuario que lo ejecuta, %cpu y memoria que consume, comando que está ejecutando o tiempo de ejecución del proceso entre otros.


No obstante cada vez que tengamos que consultar algo acerca del comando Top siempre podemos hacer un "man top"


Las opciones del comando TOP son las siguientes:

 TOP -C -->Para visualizar la línea de comandos completa de cada proceso, activado mostrará las rutas completas, mientras que desactivandolo solo muestra el nombre del programa


TOP -D --> Intervalo de actualización y refresco, podemos asignarle un valor numérico (segundos) que determinará cada cuanto actualice la información.

TOP -U --> Monitorizar solamente los procesos de un determinado UID.

TOP -P -->  Monitorizar solamente los ID de procesos especificados Ej:  Top -P993 -P1909 ( de esta forma solo se mostrarian los dos procesos por pantalla)


TOP -N --> Especificaremos el nº de veces que actualizará hasta que finalice la ejecución de Top.
Ejemplo --> top -n9 (Refrescará la información nueve veces y finalizará la ejecución de TOP)

Servicio de transferencia de archivos

El FTP se basa en el modelo cliente/servidor y permite la transferencia de ficheros tanto del servidor al cliente, como del cliente al servidor. Asimismo, permite que un cliente efectúe transferencias directas de un servidor a otro, con lo que se ahorra la necesidad de copiar
los ficheros del primer servidor al cliente y pasarlos después del cliente al segundo servidor.
El protocolo proporciona también operaciones para que el cliente pueda manipular el sistema de ficheros del servidor: borrar ficheros o cambiarles el nombre, crear y borrar directorios, listar sus contenidos, etc.
Uno de los objetivos principales de este protocolo consiste en permitir la interoperabilidad entre sistemas muy distintos, escondiendo los detalles de la estructura interna de los sistemas de ficheros locales y de la organización de los contenidos de los ficheros.
Otra variante a considerar sería SFTP pues la información de nuestras credenciales de usuario y contraseña están encriptadas y el proceso se realizaría con la implementación del servicio SSH.

Los clientes establecen una conexión TCP de control con el servidor (normalmente en el puerto 21 del servidor)
Sobre esta conexión, cliente y servidor se intercambian información de usuarios, contraseñas, nombres de ficheros, operaciones,…
En base a la negociación que se establece sobre la conexión de control se decide como subir/descargar los datos

Existen dos tipos de usuarios:

Usuarios FTP: aquellos que disponen de una cuenta en la máquina que ofrece el servicio FTP.
Usuarios anónimos: usuarios cuales quiera que, al conectarse al servidor FTP, sólo deben introducir una contraseña simbólica. Sólo tienen acceso a una parte limitada del sistema de archivos.

FTP admite dos modos de conexión del cliente. Estos modos se denominan activo y pasivo. Tanto en el modo Activo como en el modo Pasivo, el cliente establece una conexión con el servidor mediante el puerto 21, que establece el canal de control.

Modo activo

En modo Activo, el servidor siempre crea el canal de datos en su puerto 20, mientras que en el lado del cliente el canal de datos se asocia a un puerto aleatorio mayor que el 1024. Para ello, el cliente manda un comando PORT al servidor por el canal de control indicándole ese número de puerto, de manera que el servidor pueda abrirle una conexión de datos por donde se transferirán los archivos y los listados, en el puerto especificado.
Lo anterior tiene un grave problema de seguridad, y es que la máquina cliente debe estar dispuesta a aceptar cualquier conexión de entrada en un puerto superior al 1024, con los problemas que ello implica si tenemos el equipo conectado a una red insegura como Internet.



Modo pasivo

Cuando el cliente envía un comando PASV sobre el canal de control, el servidor FTP le indica por el canal de control, el puerto (mayor a 1023 del servidor. Ej:2040) al que debe conectarse el cliente. El cliente inicia una conexión desde el puerto siguiente al puerto de control (ej: 1036) hacia el puerto del servidor especificado anteriormente (ej: 2040).
Antes de cada nueva transferencia tanto en el modo Activo como en el Pasivo, el cliente debe enviar otra vez un comando de control y el servidor recibirá esa conexión de datos en un nuevo puerto aleatorio (si está en modo pasivo) o por el puerto 20


Existen dos tipos de transferencia de archivos:
tipo ascii : Adecuado para transferir archivos que sólo contengan caracteres imprimibles (archivos ASCII, no archivos resultantes de un procesador de texto), por ejemplo páginas HTML, pero no las imágenes que puedan contener.
tipo binario: Este tipo es usado cuando se trata de archivos comprimidos, ejecutables para PC, imágenes, archivos de audio...

domingo, 13 de noviembre de 2011

Autenticaciones en Apache

Hemos visto que una manera de acceder a un sitio web de Apache es mediante autenticación contra un servidor LDAP. Ahora nos vamos a dedicar a investigar sobre otras formas de autentificación distintas a LDAP.
Así que nos limitaremos a describir cómo implementar autenticación básica y PAM. Cada módulo de autenticación tiene su forma particular de ser activado y gestionado, pero estas dos formas de autenticación servirán como base para hacerse una idea clara de cómo manejar el resto de las mismas.

Pasaremos directamente a ver cómo funcionan a base de actividades prácticas:

Autenticación Básica con Apache

El primer paso es incluir las siguientes líneas en el fichero apache2.conf, que indicarán a Apache que se desea este tipo de autenticación sobre el directorio indicado.


Una de las cosas nuevas que tiene el contenido anterior es una referencia a un fichero authgroups. Este fichero debe contener un listado de usuarios que han sido creados expresamente para esta clase de autenticación (lo veremos a continuación) y que han sido distribuidos en una serie de grupos, que también aparecen en el mismo. Esto permite crear varias áreas de acceso en diversas partes de la web donde un mismo grupo pueda tener diferentes privilegios o bien sólo algunos puedan acceder a los contenidos.
Evidentemente, cuando se comprueben las credenciales de un usuario para conceder el acceso a un lugar protegido, dicho usuario debe pertenecer a uno de los grupos autorizados. La directiva del ejemplo anterior "Require group privado" hace que solo los usuarios de este grupo (que como veremos posteriormente serán alfa y beta) tengan acceso a este directorio vía web.
Antes de seguir deberemos de crear los usuarios y los grupos con los que vamos a trabajar en esta actividad (he creado 2 usuarios: “alfa” y “beta” pertenecientes a un grupo llamado “privado” y otro usuario “f1” perteneciente al grupo “otros”)
El contenido del fichero authgroups se puede crear simplemente con un editor de texto como el nano, y debe hacerse en la carpeta indicada anteriormente en el apache2.conf. El contenido es muy sencillo y debe seguir el patrón : , tal y como se ve a continuación:



Finalmente, debemos construir las password de los usuarios que se mencionan en el fichero de grupos. Esto se hace con la siguiente secuencia de comandos, invocando un comando htpasswd por cada usuario registrado. Al llamar a esta orden se solicitará por entrada estándar una clave para cada usuario:

  • touch /etc/apache2/authusers
  • htpasswd /etc/apache2/authusers alfa
  • htpasswd /etc/apache2/authusers beta
  • htpasswd /etc/apache2/authusers f1
Posteriormente vamos a comprobar el funcionamiento de dicha autenticación basic, nos vamos a la ruta /localhost/autentif_basic (habiéndola declarado previamente en el archivo de hosts y habiendo creado un pequeño index para su demostración en /var/www/autentif_basic).


Nos preguntara por el nombre del usuario que queramos que tenga acceso a nuestro directorio autentif_basic y solamente podremos entrar como usuarios “alfa” o “beta” porque son los que pertenecen al grupo privado (todo ello declarado en el archivo authgroups anteriormente). He comprobado que el usuario “f1” al pertenecer al grupo “otros” no tiene acceso al interior de la carpeta con su contraseña y efectivamente no tiene acceso de tal forma que mediante esta autentificación podremos hacer que accedan a una determinada carpeta solo los usuarios que declaremos en el archivo anterior (habiendo creado previamente los usuarios y los grupos en el sistema claro está…)


Comprobamos el acceso con los usuarios alfa y beta y vemos que entran perfectamente a la carpeta
En caso de que le demos a cancelar como será el caso del usuario f1 que es imposible que acceda al sistema, cuando nos solicita el usuario y la contraseña y pulsemos en la opción cancelar nos saldrá la siguiente información


Autenticación PAM con Apache


El segundo método que vamos a tocar usa PAM, el propio sistema de autenticación de la máquina donde está instalado nuestro servidor de Apache.

Usaremos para ello el módulo mod_auth_pam y lo primero que tenemos que hacer es instalarlo:

“sudo apt-get install libapache2-mod-auth-pam”

En el fichero apache2.conf vamos a introducir la siguiente información referente al directorio “/var/www/contacto”


Si en este caso la directiva usada fuese Require valid-user se permitiría el acceso a cualquier usuario con cuenta en la máquina. Después de esto hay que reiniciar el servicio apache2

Ahora hay que añadir el usuario www-data (el que usa apache) al grupo shadow para que pueda verificar las contraseñas:

“usermod -a -G shadow www-data”

Vamos a hacer un enlace, el motivo de que esto sea necesario es debido a que apache pretende leer del archivo /etc/pam.d/http mientras que el módulo de autenticación ha creado el archivo /etc/pam.d/apache2. El módulo auth_pam hace años que no está soportado y por eso lo hacemos el enlace de la siguiente manera:

“ln -s /etc/pam.d/apache2 /etc/pam.d/httpd”

Y con esto está todo listo. Ahora vamos al navegador a probar la nueva configuración con un usuario “pacopepe” que he creado para esta autenticación


Nos logueamos como pacopepe y vemos que funciona (él será el único usuario del sistema que podrá entrar debido a que solamente declaramos al usuario pacopepe para entrar en el apache2.conf)

Pecha Kucha Mod_Security Apache2


Bibliografía:





Acceso a carpeta privada con Ldap e instalación de Joomla en HTTPS

Instalación de 2 CMS: Wordpress y Drupal

sábado, 5 de noviembre de 2011

Servicios del Sistema

Un servicio es un programa que está ejecutándose indefinidamente para atender a peticiones de otros programas o del usuario. Por defecto W2003, ejecuta automáticamente muchos servicios (necesarios o no) que consumen más memoria que la necesaria para las funciones que está desempeñando el sistema


Para ejecutar la utilidad Servicios hay que hacerlo habiendo iniciado sesión como administrador e irnos a Inicio->Programas->Herramientas Administrativas->Servicios.

Existen tres opciones a la hora de elegir el tipo de inicio de un servicio que esté disponible en el sistema:

1. Automático: el servicio se inicia automáticamente mientras se carga el sistema operativo (Windows 2003). Esta opción puede incrementar el tiempo de inicio del sistema, así como el consumo de recursos, mientras que el servicio igual no es necesario.

2. Manual: el servicio no se inicia de forma predeterminada tras la carga del sistema operativo, en cambio pude ser iniciado - manualmente - en cualquier instante.

3. Deshabilitado: obliga al administrador a tener que habilitarlo antes de poder ejecutarlo.

Pinchando en propiedades (de cualquier servicio) y posteriormente en Tipo de inicio podemos definir el servicio para que inicie de una manera o de otra.

Las relaciones de dependencia entre los servicios implican que a la hora de parar servicios, todos aquellos que dependan de él se verán afectados también y así sucesivamente, corriendo el peligro de dejar el sistema en un estado no utilizable.
Para saber qué servicios dependen de que otros, en la ficha de Propiedades del servicio, elige la lengüeta Dependencias.

En propiedades eligiendo la lengüeta Recuperación podemos definir qué hacer cuando se produce un fallo o parada del servicio.
Las acciones posibles a tomar son:

Ø  No realizar ninguna acción

Ø  Reiniciar el servicio: el sistema intentará reiniciar el servicio si este falló. Se puede definir el periodo de tiempo en minutos en que lo volverá a intentar

Ø  Ejecutar un archivo: tenemos la posibilidad de ejecutar un archivo de comandos para tomar de una forma más granular las acciones adecuadas.

Ø  Reiniciar el equipo: si es un servicio importante y no hay forma de levantarlo.

Puede suceder que al haber deshabilitado un servicio que era necesario para la carga del sistema operativo Windows 2003 o para el buen funcionamiento del sistema, nos encontremos con la desagradable situación de que la utilidad de Servicios no nos permite devolver el estado a un servicio concreto. Una opción para arreglar esto es editar la subclave del registro HKLM\SYSTEM\CurrentControlSet\Services


Es aquí donde se almacena el valor de tipo de inicio para cada servicio. Lo que hay que hacere es seleccionar el servicio apropiado y en el panel de la derecha cambiar el valor de la clave Start de tipo. Un valor DWORD hexadecimal o decimal determina el tipo de inicio del servicio. Los valores posibles de esta clave son:
  
                                    - Un valor 2 significa un tipo de inicio Automático
                  -Un valor 3 significa un tipo de inicio Manual.
                  -Un valor 4 significa que el servicio está deshabilitado