Horarios

(Aquí enlaces a las entradas de horarios)

Sectarios

martes, 20 de diciembre de 2011

Atacando una maquina

Todo lo que espliquemos aquí tiene como objetivo saber prevenirnos de ataques a sistemas.

Ubicación

Tenemos dos maquinas virtuales:
1. Un ubuntu con vulnerabilidades.

2. Un backtrack.
usuario: root
Password: toor

Con #startx  podemos iniciar el entorno gráfico.

Escaneando la red, investigando a la victima

 Lo primero que debemos de averiguar es la IP de la maquina que deseamos atacar. Para ello comenzaremos por instalar por ejemplo el HangryIpScanner para poder detectarla. Si no disponemos de HangryIpScanner BackTrack nos proporciona una utilidad en "Aplicaciones/BackTrack/Information Gathering/Network Analisis/Network Scanners" y seleccionamos la herramienta "autoscan".


Una vez hemos identificado la IP de la maquina que queremos atacar.

Ahora necesitaremos saber que puertos están abiertos para saber por donde podemos atacar a la máquina. Esto lo podemos hacer mediante el comando nmap, por ejemplo: "nmap -sT 192.168.30.129".

Como se ve en la imagen, este comando nos devuelve los puertos abiertos de la máquina y el servicio al cual esta reservado ese puerto.

Destripando su servicio Web

El puerto más fácil de probar es el 80 (http) y podemos comenzar por tratar de navegar por el (web). Haciendo esto podemos saber si el servicio web esta en marcha.
En la terminal de backtrack, en "/pentest/web/dirbuster" ejecutamos "java -jar Dir........jar". Se abrirá una ventana:

Aquí tendremos que seleccionar la direccion de la maquina a atacar (http://192.168.30.129:80/), poner el tipo de escaneo (automatico) y seleccionar una lista de diccionario para que se use durante el ataque. Una vez hecho esto podemos comenzar con el scanneo.



Seleccionar una plataforma Web como puerta vulnerable


Gracias al escaneo descubrimos plataformas web dentro de su servidor y podemos navegar por ellas. Entre ellas una plataforma llamada tikiwiki en su version 1.9.5. Sabiendo esto, buscaremos vulnerabilidades sobre esa versión de esa plataforma web por ejemplo en http://www.exploit-db.com/.


Tambien podemos googlear esa versión de esa plataforma para ver si por google se comenta algo acerca de esta. De todas formas, usaremos el metaexploit para averiguar si tenemos herramientas concretas para atacar a esa plataforma. Vamos a la carpeta de la herramienta y ejecutamos la consola exploit.


La herramienta para entrar: El exploit

Para mantener los exploits actualizados ejecutaremos el comando "#svn update"

La consola la ejecutamos mediante #./msfconsole

 


Entrando por la puerta grande a la base de datos



En la consola realizamos una búsqueda acerca de la plataforma entre las herramientas que dispone metaexploit contra tikiwiki con el siguiente comando #search tikiwiki

Una vez vemos las herramientas de las que disponemos haremos un "#use HERRAMIENTA" para lanzar la herramienta que deseamos usar. Con "#show options" podremos ver los parámetros que tiene el exploit. Entonces tendremos que asignarles valores a los párametros por medio del "#SET".


Una vez establecemos los parámetros obligatorios como vemos en pantalla por medio del comando "#exploit" lanzamos a ejecutar el exploit que hemos configurado contra el tikiwiki. Obtendremos los datos de conexión con la base de datos a través de la vulnerabilidad de la web TIKIWIKI.


Después del ataque nos hemos hecho con los datos de acceso a la mysql. Al comenzar el ejercicio vimos que puertos estaban abiertos y descubrimos que el mysql estaba activo de manera que probamos a conectarnos por consola. Como tenemos los datos de administrador tenemos barra libre, ahora solo tendríamos que buscar información.

Revisando la base de datos


Entramos en "tikiwiki195", buscamos la base de datos de usuarios y tratamos de extraer el nombre de usuario y la contraseña.

Una vez hecho esto podemos probar a logear en la web con esos datos (usuario: admin, contraseña: admin). Al conectarnos hemos cambiado la pass por de "admin" a "root" por que nos lo exigía la plataforma.

Para poder volver a la consola de los exploits y seguir buscando exploits que lanzar escribiremos el comando "#back".

Rastreando los usuarios en el sistema de la víctima


Mediante una vulnerabilidad en alguno de los servicios intentaremos llegar al fichero "/etc/passwd". De esta manera conociendo los nombres de usuario nos será mas facil sacar las contraseñas puesto que la mitad del trabajo estará hecha. En este caso lo hacemos mediante otro exploit para tikiwiki que navega por el servidor aprobechandose de una vulnerabilidad relacionada con el PHP.


Una vez hecho esto trataremos de sacar la contraseña de alguno de los usuarios por fuerza bruta. Escogeremos un usuario que aparente tener poderes de administrador y control por consola de la máquina. En este caso escogemos "msfadmin".


Sacando la contraseña por fuerza bruta mediante exploits




En la consola de los exploits buscamos un exploit para ssh, para tratar a través de alguno de averiguar la contraseña por fuerza bruta. Seleccionamos uno que trate de hacer login, lo lanzamos y le damos el nombre de usuario elegido como pista para sacar el resto de la información.



Una vez hecho esto solo tendremos que conectarnos a la máquina mediante SSH y probar el resultado.


Sacando la contraseña por fuerza bruta mediante Medusa


Otra forma de sacar contraseñas pro fuerza bruta puede ser usar herramientas como John the ripper o Medusa, en este caso lo haremos con medusa.


Para lanzar medusa debemos especificarle la dirección de la máquina a atacar, el servicio a través el cual queremos entrar por la fuerza (el módulo), el usuario o lista de usuarios, la lista de contraseñas y como opción adicional y con la que nos ha bastado especificar que prueba con la cuenta sin password o con el mismo nombre de usuario como contraseña.
lunes, 12 de diciembre de 2011

Ejercicios de Post Fix

1. Crear varios usuarios y asignarles tres departamentos

Primer paso

creamos  usuarios con el siguiente comando: adduser

Segundo paso iremos al fichero de /etc/aliases y añadiremos los departamentos con la siguiente sintaxis

-departamento1:usario1,usuario2,usuario3

-departamento2:alu01

2.Pueden ser los emails redirigidos a una cuenta externa de  nuestro servidor?
Si.

Deberemos crear en el home de usuario un fichero llamado ".forward". En este fichero escribiremos la dirección a donde queremos redirigir el correo de dicho usuario.

3.Que  habraia que hacer para que  si queremos que  todo el trafico de un usuario se redirigiera  a una cuenta externa, por ejemplo por que  dicho empleado esta de  vacaciones? ¿habria posibilidad de que lo recibiera en los dos buzones: la cuenta del servidor pox fix actual ademas de la cuenta externa?

cuando este de vacaciones  el farword incluiremos la cuenta ajena y la interna, llegando el correo a los dos buzones

4.Como se podria crear una respuesta automatica?



Creando en el directorio personal un fichero llamado ".vacation" en el que guardaremos el texto de respuesta

5. Antiviruses para posfix

un antivirus que podria ser clamav, mailscanner



6. Antispam

spamassassin

7.Diferencias entre antispam de servidor y de cliente

la diferencia es que uno sucede a nivel de servicio y el otro en el cliente de correo. No es redundante pues si un mail mal intencionado pasa por el servidor sin ser detectado aún puede  ser  detectado al llegar al cliente.

8. Tipos de  mensajes devueltos  por el servidor
Son mensajes para notificar al emisor de errores y causas de estos cuando se trata de enviar un correo.

9.Que puede significar el siguiente fichero main.cf



# que permite las conexiones de las redes

smtpd_client_restrictions = permit_mynetworrk,

# son las que  rechazamos

reject_rbl_client relays.ordb.org,

#

reject_rbl_client sbl.apmhaus.org,.

 # permite todo lo que haya en  mynetwork pero rechaza todo lo que haya en las listas de las direcciones  despues de reject_rbl_client

permit



10. Que son las listas blancas? Como podriamo aplicarlo en postfix?

son una lista de  direcciones  tanto de  dominio como de  maquina a las que permitimos usar nuestro servicio.A todo aquel que incluyamos en nuestras listas blancas se le admitira aunque aparezca en alguna lista negra.



Para aplicarlo tendriamos que  crear un fichero con las direcciones que permitiremos en todos los casos. Luego solo tendriamos que hacer referencia a esta desde la directiva smtpd_client_restrictions igual que con permit_mynetworks.

11. listas grises
son un medio de proteccion contra spam. Funciona de forma transparente al usuario.

Sucede cuando un servidor de correo envia un mail a otro y la direccion del emisor no se encuentra en las listas negras o blancas del receptor. En ese  momento el receptor rechaza ese correo y notifica al emisor que vuelva a intentar enviarlo, por ejemplo dentro de 10 minutos.




Esto nos protege contra los servidores de spam ya que estos nunca intentaran reenviar un mail a la misma direecion.


12. Enviar correo y recibir la respuesta en otra cuenta

Hay un parametro que se llama reply to (Disponible casi siempre en local, en cliente web pocas veces).

Se cambiara la configuracion de la cuenta dependiendo del programa la configuracion puede ser diferente.

13. Ver la cola de envio de correo del servidor.


Si nos conectamos por terminal podemos consultar la cola de envio de nuestra cuenta por medio del comando "mailq".

14. Donde puedo encontrar ...
-Historial de mensajes enviados: El historial esta /var/log/mail.log  (los antiguos se  enumeran y se comprimen)

-Errores: esta en /var/log/mail.err (los antiguos se  enumeran y se comprimen).

15. Si quisieramos un web mail para el correo de nuestra empresa, ¿ qué software instalarias? ¿hay mas de una posibilidad?

Servicios de correos mail

-Squirrelmail
-Roundcube
15. Los relays
Los dominios que incluyas aquí podrán enviar (esta opcion es solo de envio) mails a través del servidor. Importante tenerlo bien controlado por los spammers.

16. ¿Como consultar si aparezco en listas negras?
lunes, 28 de noviembre de 2011

MoodleMoot Spain

Organización de aulas

Salon de actos
Biblio
206 (EPG)
207 *
301 *
302 *
403
miércoles, 23 de noviembre de 2011

Postfix

Smtp

Postfix es un tipo de servidor de smtp (correo).

Pop3

Para ver nuestro correo lo hacemos a través de un servidor de pop3/imap como dovecot o courier. Para estos ejemplos usaremos dovecot.

Spam

Spamassassin es una aplicación para bloquear el spam.

Antivirus

Clamav es un antivirus para el servidor de correo. Rastrea los correos del servidor en busca de malware.

Webmail

Para poder utilizar un servicio de webmail deberemos tener un servicio de imap corriendo. En este caso con dovecot ya tenemos corriendo un imap. Como aplicación para el webmail usaremos Squirrelmail.

Ejercicios

Crear usuarios y departamentos (/etc/aliases)

jueves, 17 de noviembre de 2011

MYSQL

Creando usuarios limitandoles la conexión dependiendo del origen de la conexion

GRANT USAGE ON escuela.* TO 'colega'@'%' ==> Permisos de usuario sobre la DB escuela desde cualquier host.

Eventos

Create event nombreEvento
on schedule every 5 minute
do
....

Si son mas de dos sentencias podemos poner un "begin" y un "end" para englobarlas.
Ejemplo:

Create event ev_cron
on schedule every 5 minute
do
begin
insert into cron (descripcion) values ('Evento');
insert into cron4 (descripcion) values ('Evento');
end//

Si no estan activados los eventos deberemos activarlos poniendo en ON la variable global que hace referencia a esto.
set global event_schedule = "ON"

Transacciones

Nos van a permitir realizar varias consultas como una sola. En caso de fallar alguna o no estar deacuerdo podremos deshacer todas las sentencias del tirón.

Para poder realizar transacciones en MYSQL deberemos de tener InnoDB como motor para las tablas con las que deseemos trabajar. Además hay una variable llamada autocommit hace un commit por cada consulta, lo que nos impide deshacer consultas ya que se activa cada vez que terminamos de realizar una. De manera que procederemos a desactivar el autocommit:
set global AUTOCOMMIT = "OFF"

Una vez activado para poder realizar cualquier consulta deberemos terminarla con una sentencia "commit;" de lo contrario no se ejecutará.

La sintaxis para realizar una transaccion es la siguiente:
begin;
update colegas set salario = salario - 10 where nombre = "Dani";
update colegas set salario = salario + 10 where nombre = "Victor";

Si algo salió mal siempre podemos deshacer las instrucciones por medio de la siguiente instrucción:
rollback;

Si estamos deacuerdo podremos aceptar la transacción con la siguiente instrucción:
commit;
En caso de no realizar el commit los cambios en nuestra DB no serán reales. Es decir, si se cae el sistema por ejemplo antes de realizar toda la transacción los cambios no serán efectivos.

Nota importante: Estas pruebas deberemós realizarlas directamente desde una terminal de mysql. Phpmyadmin da un tratamiento a las consultas que nos impide trabajar correctamente las transacciones. 

a
 
miércoles, 9 de noviembre de 2011

Restableciendo contraseñas en Linux

Hay un fichero llamado "/etc/pam.d/common-passwords". Contiene una linea que comienza por "pam_unix.so obscure" que nos muestra el modo de encriptación de las contraseñas de usuario.
martes, 8 de noviembre de 2011

Sticky keys - Fallo de seguridad en windows

Es una aplicación que podemos lanzar pulsando el shift (mayúsculas) 5 veces. En el sistema, solo tendriamos que detectar el nombre del ejecutable "sethc.exe" y boteando con un live CD sustituirlo en nombre por el CMD. De manera que al lanzar el Sticky keys desde el sistema en su inicio normal nos abriria el CMD y podriamos ejecutar "control userpasswords2" dandonos permiso para restablecer cualquier contraseña.
lunes, 7 de noviembre de 2011

otros puntos vistos en seguridad

otros puntos vistos en seguridad:

inyección sql
ophcrack
john the ripper
fortaleza de la contraseña - http://howsecureismypassword.net/

DNS - Domain Name Server

Servidor primerio de DNS es el que gestiona el dominio, quien lo resuelve realmente.

Servidores raiz son .com, .es , .info etc.

TTL: Una vez resuelto el nombre de dominio, es el tiempo que guardará un servidor en cache la direccion IP antes de volver a resolver el nombre de dominio. Cuando el nombre de dominio vence este tiempo la dirección IP de este nombre se borra de manera que cuando se vuelven a preguntar por el el servidor cache tiene que volver a preguntar por el servidor primario.

Primario o maestro: Es la fuente de autoridad para un dominio especifico. El que realmente resuelve el nombre de dominio.

Servidor Secundario (Slave): Es un servidor que mantiene una copia del primario y que sirve cuando el primario esta caido. Si el servidor raiz no puede conectarse con el servidor primario de un dominio trata de conectarse con el secundario.

Servidor cache: Es un servidor que no es principal de ningun dominio pero podrá resolver nombres de dominio. Este se encarga de ir almacenando todas las direcciones por las que se le preguntan para más adelante poder resolverlas.

/etc/hosts: Almacena nombres resueltos en linux de manera permanente.

Precaución: Usar un servidor DNS de dudosa moralidad te pone en peligro ante un ataque de fishing. Es un riesgo de utilizar DNSs publicos.



Funcionamiento:

1 - Preguntas por un domino a tu servidor DNS.
2 - Tu servidor DNS pregunta al servidor raiz de ese dominio.
3 - El servidor raiz sabe quien posee esa dirección (el servidor primario) y a tu servidor DNS le da la direccion del servidor primario del nombre por el que has preguntado.
4 - Tu servidor DNS ahora sabe cual es el servidor primario del dominio por el que has preguntado de manera que esta vez realiza la pregunta directamente al primerio y este le contesta devolviendo la direccion IP de este dominio.
5 - Tu servidor DNS te devuelve la IP con la que tratas conectarte.
viernes, 28 de octubre de 2011

Generar 1000 registros aleatoriamente por PHP

<?php

$enlace = mysql_connect("localhost","root","");

mysql_select_db("escuela",$enlace);

for($i=0 ; $i<1000 ; $i++ )
{
/*Generaremos todo aleatoriamente*/

     
//Variables para marcar limites del alfabeto
$DesdeLetra = "a";
$HastaLetra = "z";


/* Nombre aleatorio */
$nombre = "";
$nombre .= chr(rand(ord($DesdeLetra), ord($HastaLetra)));
$nombre .= chr(rand(ord($DesdeLetra), ord($HastaLetra)));
$nombre .= chr(rand(ord($DesdeLetra), ord($HastaLetra)));
$nombre .= chr(rand(ord($DesdeLetra), ord($HastaLetra)));
$nombre .= chr(rand(ord($DesdeLetra), ord($HastaLetra)));
$nombre .= chr(rand(ord($DesdeLetra), ord($HastaLetra)));


/*Apellido aleatorio*/
$apellido = "";
$apellido .= chr(rand(ord($DesdeLetra), ord($HastaLetra)));
$apellido .= chr(rand(ord($DesdeLetra), ord($HastaLetra)));
$apellido .= chr(rand(ord($DesdeLetra), ord($HastaLetra)));
$apellido .= chr(rand(ord($DesdeLetra), ord($HastaLetra)));
$apellido .= chr(rand(ord($DesdeLetra), ord($HastaLetra)));
$apellido .= chr(rand(ord($DesdeLetra), ord($HastaLetra)));

/*Limites de la edad aleatoria*/
$DesdeNumero = 18;
$HastaNumero = 65;

/*Edad aleatoria*/
$edad = rand($DesdeNumero, $HastaNumero);

/* Fijo aleatorio: 0 falso, 1 verdadero */
$Valoroff = 0;
$Valoron = 1;
$fijo = rand($Valoroff, $Valoron);

$sql = "insert into profesor (nombre, apellido, edad, fijo) values ('$nombre','$apellido',$edad,$fijo)";
echo $sql."<br>";
mysql_query($sql,$enlace);
     
     
}
      mysql_close($enlace);

?>
miércoles, 26 de octubre de 2011

Sincronización

Pure Sync (Windows)

Esta aplicación nos permite sincronizar directorios en Windows.

Si preparamos una sincronización con el asistente nos facilitará mucho el trabajo. Primero nos pedirá el directorio de origen y el de destino para realizar la sincronización, pudiendo elegir entre una ruta del equipo o una ubicada en un FTP en ambos casos.

Nos permite agregar extensiones para especificar los únicos ficheros que queremos sincronizar o no queremos. También nos da la opción de sincronizar el borrado desde la carpeta uno a la carpeta dos y viceversa.

Además podremos especificar si deseamos una sincronización automatiza o manual. En caso de ser automatica deberemos especificar en que situación sincronizará (dispositivo conectado, archivos modificados, periodicamente etc). De lo contrario, deberemos especificar.

Una vez realizada la sincronización nos permite seleccionar una aplicación para lanzar desde el programa.

Una vez configurada la sincronización deseada, se nos pedirá un nombre para esta y quedará guardada con el resto de sincronizaciones.

iTalc

Es una aplicación para controlar equipos remotamente, útil para una clase o colegio. Los alumnos tendran el servicio de italc instalado en sus máquinas y harán de servidor para el profesor, que será cliente de todos. Pero podiendo administrarlos (controlarles, cortarles la red, dejarles con la pantalla negra) con más o menos permisos dependiendo de la configuración. Para que esto sea posible, deberan extraerse las claves publicas de los alumnos (servidores) a los que deseamos conectarnos a través de las herramientas facilitadas por iTalc y importarlas en el profesor (cliente) el cual realizará esta tarea desde herramientas facilitadas por iTalc. Una vez listo esto, el profesor prodrá abrir su aplicación de control italc y manejar los escritorios de sus alumnos.

Recuperación de contraseñas de un sistema

En windows

Tendríamos que ...

En linux

Tendríamos que ...
jueves, 6 de octubre de 2011

Keylogers

Un keyloger es una aplicación maliciosa con el fin de capturar todas las teclas que pulsamos. Para probar el software malicioso, lo instalaremos en una máquina.

Desde esta web descargaremos el keyloger para realizar las pruebas:
http://www.es.logixoft.com/

Descargamos el software de la página y lo instalamos. Al abrirlo podemos visualizarlo con Cntrl + Alt + F9 (configurable) y desde hay desactivar o activar la escucha del keyloger. Una vez activado (estado de vigilancia) podemos ocultarlo para que quede oculto a la escucha. Cuando deseemos podemos traer otra vez al frente la ventana del keyloger podiendo visualizar el registro de acciones realizadas mientras estubo a la escucha.
miércoles, 5 de octubre de 2011

Ejercicios servidores web

1. Pasos para gestionar los errores 404, de manera que nos salga una página de información.
En el apache, durante la instalación de xamp, estos archivos están en la carpeta error del directorio de apache. En este caso el 404 seria el fichero "HTTP_NOT_FOUND.html.var", podríamos desde este documento con una configuración adecuada sacar lo que nosotros deseemos.
En caso de querer especificar una ruta a mano podemos ir a nuestra configuración de <directory> y añadir manualmente una linea como la siguiente:
ErrorDocument 404 /noencontrado.html
La primera cifra hace referencia a el error al que queremos referenciarlo y esa ruta "/noencontrado.html" hace referencia al documento que se cargara (ruta relativa al host) en caso de no encontrar nada.
2. ¿Se puede denegar el acceso a un determinado directorio salvo a un rango de IPs?
Si. Deberemos de crear un archivo".htaccess" en el directorio allá donde queramos aplicar la directiva. Y escribir las siguientes líneas.
allow from XXX.XXX.XXX.XXX
deny from all
Con el allow from daremos permiso a un identificador de red concreto. Si despues, hacemos una negación para todos esto se aplicará a todo el mundo menos al rango al que hemos admitido anteriormente.
3. ¿Se puede decir a los motores de busqueda que no indexen el contenido de un determinado directorio?
Sí, mediante el archivo "robots.txt". Este archivo permite aplicar directivas sobre los spiders de los buscadores y lo tenemos que meter en la raíz de nuestro sitio. ¿Como funcionan sus directivas? pues bien, si por ejemplo queremos que no se indexen las imágenes de nuestra web:

User-agent: *
Disallow: /imagenes/
O que por alguna razon, nuestra aplicación web tiene demasiados subdirectorios y no queremos que los buscadores indexen algo inecesario y que me puede traer problemas de seguridad:

User-agent: *
Disallow: /includes/
Disallow: /imagenes/
Disallow: /modulos/
4. ¿Se puede limitar el máximo número de accesos simultáneos? ¿Como podrías probar que es efectivamente de dicha manera?
Si. Esta opción se encuentra en el httpd.conf.
Hay que añadir a este fichero la directiva MaxClients. Su sintaxis es MaxClients y número de conexiones simultaneas que vamos a permitir, por ejemplo:
MaxClients 10
5. ¿Como podemos saber si GoogleBot nos ha visitado?
Podemos saber a través de los lenguajes web con que navegador se conecta alguien a nuestra web, de manera que también podemos detectar si es un google bot (en este caso desde PHP).
 if (strstr($HTTP_SERVER_VARS['HTTP_USER_AGENT'] ,'Googlebot'))
{
    
// Acción a realizar si te visita Googlebot; }
Con este código podemos saber si es el googlebot el que nos visita. strstr permite ver si una cadena contiene a otra. De esta manera analizaremos "$HTTP_SERVER_VARS['HTTP_USER_AGENT']" y veremos si en esta se contiene la cadena "Googlebot". En caso de ser cierto se realizarían las acciones que metiesemos entre llaves. Lo adecuado sería realizar una conexión a una base de datos y insertar un registro en alguna tabla con la hora de la visita.
6. ¿Como podemos saber que navegador nos esta visitando de manera que mostremos una información u otra?
Podemos tener varias webs hechas, una para iexplorer, otra para el resto de los navegadores de PC, otra para moviles y redireccionarles o cargar por medio de includes una web en base al navegador y el dispositivo desde el que se conectan. A continuación un ejemplo:


if (strstr($HTTP_SERVER_VARS["HTTP_USER_AGENT"] ,"MSIE"))
{
   echo "Tu navegador es Internet Explorer";
   }
else if (strstr($HTTP_SERVER_VARS['HTTP_USER_AGENT'] ,'Mozilla'))
{
   echo "Tu navegador probablemente sea de Firefox";
   }
   else if (strstr($HTTP_SERVER_VARS['HTTP_USER_AGENT'] ,'android'))
{
   echo "Tu navegador pertenece a un dispositivo Android";
   }
   else if (strstr($HTTP_SERVER_VARS['HTTP_USER_AGENT'] ,'iPad'))
{
   echo "Tu navegador pertenece a un dispositivo iPad";
   }
 En este ejemplo, dependiendo del navegador, realizamos un mensaje por pantalla para tratar de mostrar
desde que navegador se conectan. De la misma manera podríamos sustituir el mensaje por un include o una redirección.
7. Además de Apache, ¿Que otros servidores son los más utilizados del mundo? Lista con cada uno de ellos que web de fama mundial lo utiliza.
Apache: El motor de busqueda de google esta basado en una versión modificada de Apache.
IIS: Sitio web oficial de Microsoft.
Cherokee: http://svn.cherokee-project.com
Tomcat:
lighttpd: http://oss.oetiker.ch/rrdtool/
thttpd: http://www.napster.com/
8. ¿Que es tomcat? ¿Que diferencias tiene respecto a Apache? ¿En que entorno es mas utilizado? ¿Hay soluciones similares a tomcat?
Es un contenedor donde poder correr servlets. Estos son como objetos como los applets de java. Un applet es como una aplicación java que puedes cargar en un entorno web.
La principal diferencia entre estos dos servidores, es que apache es un servidor web mientras que tomcat es un contenedor de Servlets. No obstante puedes funcionar con los dos a la vez implementando el tomcat en tu servidor apache.

Documentación para instalar apache + tomcat
http://www.debianhelp.co.uk/apachetomcat.htm
http://www.netadmintools.com/art340.html
http://www.debianhelp.co.uk/apachetomcat.htm
http://wiki.apache.org/tomcat/HowTo
Conectores apache--tomcat
http://tomcat.apache.org/connectors-doc-archive/jk2/index.html
http://tomcat.apache.org/connectors-doc/
http://tomcat.apache.org/tomcat-3.3-doc/mod_jk-howto.html

De los dos el entorno más utilizado es el apache.
No he encontrado soluciones similares a tomcat.

Clasificacion de Malware

martes, 4 de octubre de 2011

Webalizer

Es un servicio que nos proporciona estadisticas web de nuestro server web.
Podemos instalarlo desde los repositorios de Linux y antes de colocar el comando de extraccion de estadisticas como tarea del Cron, deberemos configurar el programa del webalizer diciendole donde se encuentra nuestro archivo de acceso de Apache.

Ejecutar una tarea con CRON cada 5 minutos

las tareas programadas de CRON se guardan en un fichero, deberiamos de añadir la siguiente linea en /etc/cron.d/anacron. (el orden de las cifras es: minutos, horas, dias, mes, dia de la semana)
*/10    *    *    *   *         root         wget dominio1.com/cron.php
o
0,10,20,30,40,50   *    *    *   *         root         wget dominio1.com/cron.php

Las dos lineas lanzan una carga de la pagina (realizar las acciones) cada 10 minutos.
En caso de poner en marcha un webalizer, el cual saca estadisticas apartir de los ficheros log del servidor web, deberas ejecutar el comando del webalizer. Para ello es interesante incluirlo como tarea programada de Cron.

Un mismo servidor web con dos dominios

Estas pruebas las realizaremos sobre Linux.

Para empezar, simularemos dos dominios en el equipo:
Editamos el fichero /etc/hosts y añadimos dos dominios ficticios que apunten a localhost (marcas en verde):
127.0.0.1 localhost
127.0.1.1 barquillos-System-Product-Name
127.0.0.1 dominio1.com     www.dominio1.com
127.0.0.1 dominio2.com     www.dominio2.com

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Creamos directorios dentro de /var/www como si fuesen las webs de nuestros dominios.

Ya solo nos queda configurar nuestro servidor de web, en este caso lo haremos con apache. Para ello editaremos el fichero "000-default" en /etc/apache2/sites-enable. Al final de este fichero añadiremos las siguientes necesarias para hacer referencia a cada uno de los dominos (marcas en verde):

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/dom1
ServerName www.dominio1.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/dom2
ServerName www.dominio2.com
</VirtualHost>
lunes, 3 de octubre de 2011

Contraseñas

Es importante no reutilizar las mismas contraseñas. Podemos crear contraseñas complejas apartir de conceptos sencillos.
jueves, 29 de septiembre de 2011

Ejemplos de Bucles


<html>
<head>
<title></title>
</head>
<body>
<?php

print "<h2>Trabajando con el bucle for</h2>";
$contador = 0;
print "<table border=\"1\" width=\"100%\">";
/*for (valor inicial; condicion para repetir; accion al final del bucle)*/
for ($i=0; $i < 10; $i++)
{
      print "<tr><td>A" .$i. "</td><td>B" .$i. "</td></tr>";
      $contador++;
      }
print "</table>";
print "Total lineas: " . $contador;
print "<h2>Usando matrices</h2>";

/* Inicializar matriz */
$listado[1] = "Pepino";
$listado[2] = "Pera";
$listado[3] = "Limon";

print "<table border=\"1\" width=\"100%\">";
foreach ($listado as $elemento)
{
      print "<tr><td>".$elemento."</td></tr>";
     
      }
      /*count(Matriz) devuelve el numero de elementos que contiene una matriz*/

 print "</table>";
      print "Total: ".count($listado);
print "<h2>Trabajando con un string a modo de array</h2>";
$cadena = "Hola mundo.";
print "Texto: " . $cadena ."Total: " . strlen($cadena);
print "<hr/>";
for ($i = 0; $i< strlen($cadena); $i++ )
{
print $i . " - " . substr($cadena, $i, 1) . "<br/>";
     
      }



     
print "<h2>Pruebas de sesion</h2>";
session_start();
$_SESSION["USUARIO"] = "Mamon";
//session_destroy();
     

      if (isset($_SESSION["USUARIO"]))
       print "<hr/>Has iniciado sesion.";
       else
      print "<hr/>No has iniciado sesion.";


print "<h2>Array SERVER</h2>";

foreach ($_SERVER as $Elemento)
print $Elemento . "<br>";

print "<h2>COOKIES</h2>";

foreach ($_COOKIE as $Elemento)
print $Elemento . "<br>";

print "<h2>Directorios y Archivos</h2>";

$directorio = opendir("C:");
while ($linea = readdir($directorio) )
{
      print $linea . "<br>";
      }
closedir($directorio);

?>
</body>
</html>

Contra la ley Sinde

¿Estas en desacuerdo con la ley sinde? No permitas que coarten tu libertad.
labioswert Bájame

Top Resumenes

Publicidad