The Information Systems and Computer Applications examination covers material that is usually taught in an introductory college-level business information systems course.

Author Archive

Así funcionan: sistemas de ficheros

Disco duro

Todos nuestros ordenadores y dispositivos móviles han de manejar alguna vez archivos y directorios. Es algo a lo que estamos suficientemente habituados como para no preguntarnos cómo funciona.

Aunque, como sabéis, de vez en cuando nos gusta profundizar en asuntos que muchas veces pasamos por alto. En esta ocasión vamos a hablar de sistemas de ficheros, piezas indispensables de todo sistema operativo de hoy, y de cómo funcionan por dentro.

Lo básico: ¿qué es un archivo y un directorio?

Desde el punto de vista de un sistema de ficheros, un archivo no es sino una colección de bytes con un formato determinado. Estos bytes, en el disco duro y a bajo nivel, se estructuran en sectores o bloques.

De hecho, es el sistema de ficheros quien se encarga de darle sentido a esa colección de bytes: almacena y controla qué bloques pertenecen a qué archivos y qué bloques no pertenecen a ningún archivo (es decir, están disponibles para ser utilizados por otros ficheros.

¿Y un directorio? Hay distintas aproximaciones para implementar este concepto en los sistemas de ficheros, aunque a grandes rasgos podríamos decir que un directorio no es más que un fichero con un formato especial. Profundizaremos en distintos sistemas de ficheros algo más adelante, en este mismo artículo.

FAT: antiguo, sencillo, limitado y robusto

FAT es un sistema de ficheros muy simple. Originalmente fue utilizado en MS-DOS, aunque su soporte perdura (con distintas actualizaciones y nuevas versiones) en todos los sistemas operativos de hoy. Esto es así porque, realmente, sigue siendo usado, sobre todo en dispositivos extraíbles no ópticos.

Pongamos un caso de uso: queremos acceder a un fichero en un directorio. Los ficheros-directorio contienen el nombre del fichero, algunos atributos extendidos (si es read-only, por ejemplo), así como el número identificador del primer clúster en el que el fichero está contenido.

Claro que habitualmente un fichero es más grande que un clúster (que apenas suele ocupar unos cuantos kilobytes). En este caso haremos uso de la llamada file allocation table: una tabla en la que se almacena el siguiente clúster a uno previamente dado. De este modo, si un fichero comienza en el clúster 5, buscaremos la entrada 5 en la FAT para conocer el siguiente clúster de ese fichero. Cuando llegamos al final la FAT pone una marca especial (algo parecido a NULL). Esta tabla es en sí también parte del sistema de ficheros, y está en una zona del disco concreta y establecida en el momento de formatearlo.

Esta tabla debería mantenerse siempre en la memoria RAM, dado que todas las lecturas de ficheros requieren acceder a ella, y pueden hacerse especialmente lentas, sobre todo cuando hablamos de acceso aleatorio (no secuencial). Esto es así porque para saber la dirección de un clúster debemos conocer la del clúster que le precede y realizar la consulta correspondiente a la FAT.

Existen distintas variantes de FAT: FAT12, FAT16, FAT32, exFAT, FATX (para sistemas Xbox). Son distintas entre sí, evidentemente, aunque el concepto principal no cambia: únicamente lo hacen algunos detalles de su implementación para adaptarse a los tiempos o a dispositivos concretos.

NTFS

Disco duro externo

NTFS es el sistema de ficheros que forma parte de la rama NT de Windows desde siempre (con distintas actualizaciones, por supuesto). Tiene muchas mejoras sobre FAT, como el hecho de utilizar journaling, listas de control de acceso, el soporte de metadatos para cada fichero, el soporte integrado para compresión y el uso de estructuras de datos avanzadas para mejorar el rendimiento y optimizar el uso que hacemos de nuestro disco.

La madre de todo volumen formateado con NTFS es la Master File Table, una base de datos que contiene los atributos de todos los ficheros. Podríamos considerarlo similar en funciones a la FAT, aunque hace mucho más.

Cada fichero tiene asociada una entrada en la MFT que contiene una serie de atributos. Debemos distinguir entre atributos internos (almacenados en el propio registro de la MFT) y externos, que son referenciados mediante punteros en la MFT. Casi todos los atributos de cada fichero pueden ser internos o externos.

¿Qué atributos se almacenan de cada fichero? Una cabecera, que es siempre interna; un atributo con información estándar (timestamps para creación, modificación y acceso de cada fichero), así como si un fichero es de solo lectura, oculto y demás; otro atributo con el nombre del fichero (teniendo en cuenta que es posible que cada fichero tenga muchos nombres, dado que podemos realizar hard links en distintos directorios a un mismo archivo); otro atributo con los datos del propio fichero, y un descriptor de seguridad (como las listas de control de acceso).

Adicionalmente, los directorios indizan los archivos en estructuras más complejas que en el caso de FAT. De meras colecciones de registros pasamos a utilizar una estructura compleja como es el caso de un árbol B+, ofreciendo un rendimiento bastante superior en operaciones que involucren a subconjuntos de ficheros o a ficheros únicos.

La principal desventaja de NTFS es que, como podemos imaginar, la MFT puede transformarse en un verdadero monstruo (dado que controla todo el sistema de ficheros). En el momento de formatear un volumen con este sistema de fichero se reserva aproximadamente un 12,5% del tamaño del volumen para la MFT (dado que contiene que esté almacenada en zonas contiguas del disco). Esto hace de NTFS un sistema de ficheros poco adecuado para sistemas de archivos pequeños.

HFS+

El diseño del sistema de archivos por defecto de OS X es en cierto modo “similar” al de NTFS. Obviamente difieren en mucho, pero hay algunos detalles en conceptos que los hacen similares.

Por ejemplo, el catálogo. Se trata de un árbol B+ (volvemos a toparnos con esa estructura) que contiene entradas para todo fichero y directorio que esté en ese volumen.

Por lo demás es similar a todos los demás, con un detalle: cuando OS X almacena metadatos de un fichero lo hace en este catálogo. Cuando el sistema de archivos es distinto, lo suele hacer en una serie de archivos, siendo .DS_Store el más conocido.

ext

Los sistemas de archivos de Linux, particularmente ext3 y ext4, son a la vez similares y distintos a los anteriores. Son similares porque existe una estructura por cada volumen con información de los archivos. Son distintos, a su vez, por el tipo de estructura.

Es inevitable hablar de inodos: registros identificados por un número entero que contienen los metadatos de los archivos. El concepto fue acuñado por Dennis Ritchie y se trata, realmente, de una estructura de datos que contiene características de todo objeto contenido en un sistema de ficheros, salvo su nombre, que se almacena en los ficheros de directorio.

Los directorios siguen siendo ficheros especiales con registros que, en esta ocasión, contienen referencias a los inodos de los archivos que contiene. Más de un directorio puede tener referencias a un inodo concreto (lo que se llama un enlace duro o hard link).

Obviamente la estructura de inodo no es imprescindible (ReiserFS, de hecho, podría prescindir de la estructura como tal), aunque la información tendría que ser almacenada en otro sitio y el sistema tendría que seguir contando con una funcionalidad equivalente, aunque no existieran los inodos “como ente”.

Imagen | k ryan | Blake Patterson
En Genbeta | Así funciona


La noticia Así funcionan: sistemas de ficheros fue publicada originalmente en Genbeta por Manu Mateos.


Peerby’s Local Lending App Is Ready To Help Neighbours Participate In The Sharing Economy

TechCrunch

You’ve got stuff, but not all the stuff you need. Dutch startup and TechStars London first cohort member Peerby is hoping to unlock the use value of that stuff with a collaborative consumption model that features some crucial differences when compared to others who’ve tried to turn caring into sharing for neighbourhoods.

On Peerby, which has already launched successfully and grown at a fairly rapid clip at home in the Netherlands, users post requests for items that they need from their surrounding community, rather than just offering up a list of available “inventory” based on what they owned and are willing to share, the way it works on other networks that have attempted similar things in the past like Neighborgoods and StreetLend.

“We’re launched basically in the whole of Holland,” Peerby co-founder and CTO Eelke Boezeman told me in an interview. “And we’ve got about 15,000 members there. We also…

View original post 367 more words


Recuperar el password de Comtrend 5813n (FTTH Telefonica)

Los que hayan contratado Movistar Fusión con Fibra de Telefonica, les instalan un Comtrend 5813n con un magnífico agujero de seguridad que permite “recuperar” la contraseña del usuario administrador del equipo.

Router Telefonica FTTH

Router Telefonica FTTH

Para ello únicamente necesitamos realizar una petición HTTP con la IP del router y el recurdo password.cgi:

http://192.168.1.1/password.cgi

Si miramos el código fuente de esta página podremos ver el password directamente:

Recuperar el password de Comtrend 5813n

Recuperar el password de Comtrend 5813n

Dicha página además nos indica el usuario al que corresponde el password, por lo que podemos obtener las credenciales de administrador directamente. Por suerte, el comentario HTML dónde aparece el password empieza con “hide“. Esto es seguridad suficiente para que nadie lo vea!

Visto lo visto, ¿alguna recomendación de router para substituir a esta cosa?

Post sin tags

Relacionados

  • No hay posts relacionados.

Recuperar el password de Comtrend 5813n (FTTH Telefonica) was first posted on September 26, 2013 at 10:25 am.


Aprende a configurar el apagado automático de Windows

 

Aunque el ordenador nos ahorra tener que realizar según qué tareas, pues él se encarga de ellas automáticamente, todavía hay cosas que tenemos que hacer a mano. Por suerte, hay herramientas que nos ayudan a que ciertos procesos repetitivos sean automáticos, como el Programador de tareas de Windows. Por suerte, hay muchas más soluciones en este sentido. Hoy nos centraremos en programar el apagado de Windows, una acción que te ayudará a dejar tu equipo trabajando solo y que se apague cuando finalice esa tarea o en un momento concreto del día.

programar el apagado de Windows

Programar el apagado de Windows es útil para varias cosas. Principalmente, ahorra energía, ya que tras dejar el PC descargando un archivo o ejecutando cierta tarea, una vez finalizada sigue encendido a no ser que lo apagues a mano o automatices el apagado. Por otro lado, te puede servir para limitar el uso que hacen del ordenador los demás miembros de la casa, programando cierto periodo de tiempo.

Cómo programar el apagado automático desde Windows

Desde Windows puedes programar el apagado de Windows sin acudir a programas externos de una forma relativamente sencilla y gracias al Programador de tareas, del que hemos hablado en anteriores artículos.

  • Paso 1: Abre el Programador de tareas, que encontrarás en Panel de Control. Si no lo encuentras, abre el menú Ejecutar con la tecla Windows + R y escribe “Taskschd.msc”.
  • Paso 2: Crea una tarea básica. Puedes llamarla, por ejemplo “Apagado automático”.
  • Paso 3: Define cada cuándo se iniciará la tarea (cada día, cada semana, cada mes, una vez, cuando ocurra algo concreto…).
  • Paso 4: En “Acción”, selecciona “Iniciar un programa” y añade “C:\Windows\System32\shutdown.exe” al campo “Programa o script”. En “Agregar argumentos (opcional)” añade “/s”. En caso de querer reiniciar el PC, usa el argumento “/r”. Y si quieres ser drástico, con “/f” forzarás el cierre de todos los programas abiertos en caso que alguno impida el apagado.

A partir de ahora, cada vez que se cumplan las reglas que has configurado, se apagará el ordenador. El proceso es sencillo y puedes editarlo cuando quieras pero, como puedes comprobar, es poco manejable. Veamos qué otras alternativas tenemos para programar el apagado de Windows.

  • AMP WinOFF: Si necesitas funciones avanzadas para programar el apagado de Windows, o reciniciar, cerrar la sesión o hibernar el equipo, este programa cumplirá con tus espectativas, puedes ofrece muchas opciones, como definir el apagado según el rendimiento de la CPU (por ejemplo, si no hace nada porque ya ha terminado la tarea que le encomendaste a tu PC), tener en cuenta la actividad del usuario o el uso de la red. Por descontado, permite configurar el apagado en un día y horas concretas.

  • Auto Shutdown Manager: Con un aire más serio, Auto Shutdown Manager permite personalizar al máximo el apagado automático. Desde su página destacan el ahorro energético que supone esto. Como funciones avanzadas, ofrece apagado y encendido a distancia, a través de la red, impedir el apagado si hay un programa concreto ejecutándose y definir varios parámetros para que el apagado se active.

  • Switch Off: Además de programar el apagado de Windows con antelación, este programa sirve también para iniciar una cuenta atrás del apagado directamente desde la bandeja de sistema. Así, puedes indicar que se apague al cabo de 30 minutos o 1 hora. Por su parte, el programado admite unos días y horas concretos, así como la opción de forzar el apagado a pesar de tener programas abiertos.

  • Mz Shutdown Scheduler: Más sencillo que los programas anteriores pero no por ello menos práctico, Mz Shutdown Scheduler sirve para programar el apagado de Windows desde una única ventana. También admite restaurar, hibernar y cerrar sesión, todo ello bajo ciertas condiciones, como alcanzar cierto porcentaje de uso de CPU o memoria RAM o en una fecha concreta.

  • Chameleon Shutdown: Parecido al programa anterior, pero más simple todavía. Tan simple como escoger una opción (Apagar, Reiniciar, Hibernar, Cerrar sesión) y definir las condiciones para que se active esa opción (un día y hora concretos, uso de CPU, cierre de cierto programa, inactividad del usuario…)

  • Final Countdown: En vez de concretar una fecha específica, Final Countdown sirve para programar el apagado de Windows con una cuenta atrás de días, horas o minutos. Como en los casos anteriores, además de apagar, permite reiniciar, hibernar y cerrar la sesión. Es muy sencillo y útil para este propósito pero carece de otras opciones adicionales.

La entrada Aprende a configurar el apagado automático de Windows aparece primero en Bitelia.


Consejos prácticos a la hora de integrar criptografía

 

 
Me encuentro a diario con personas (principalmente gente que desarrolla o administradores de sistemas) que se encuentran en el proceso de mejorar la seguridad de sus productos / sistemas implementando criptografía como aliada.
 
Muchas veces se da el caso que existe más buena FE que conocimiento a la hora de abordar esa tarea, y se cometen errores muy inocentes que tiran por tierra el esfuerzo de adoptar una solución por haberla adoptado incorrectamente.
 
En este post me gustaría compartir ‘tips’ sobre cómo abordar estos procesos para que deriven en un mejor resultado.

Almacenamiento de contraseñas
 
Este es el punto en el que más fallos se cometen, en muchos casos debido a que existe mucha información ‘legacy’ muy bien posicionada en Google a la que llega la gente y la usa como referencia.
 
Veamos consejos a la hora de realizar esta tarea:
  • Olvida y entierra la tentación de cifrar la base de datos con una única contraseña y almacenar dentro las contraseñas en claro. No, ese esquema no es seguro, delegas toda la seguridad en una única contraseña que resulta fácil de obtener (por ejemplo revisando el código del programa que cargue esa base de datos). Nunca utilices criptografía reversible para guardar contraseñas
  • Fundamental: OBVIA EL ALGORITMO MD5, sí, es seguro que vas a ver muchos ejemplos en Google que hablan de MD5, de hecho se sigue usando en otras tareas, pero nunca es aconsejable su uso para esta tarea. En su lugar usa SHA-512, penaliza el rendimiento con respecto a MD5, pero es algo imperceptible
  • Emplea técnicas de ‘salting’ a la hora de almacenar el hash de la contraseña. Usar salt significa que, si la contraseña es 123456, en vez de guardar la representación de 123456 en su forma ‘hasheada’ lo que haces es introducir otro elemento que impida a un atacante usar un listado de hashes de contraseñas ya precompilado. Es decir, lo que guardas es salt+123456 que obviamente genera un hash diferente a 123456 (y que un atacante podría tener ya hasheado con lo que se ahorra el proceso criptográfico). En un típico esquema de usuario / contraseña para una aplicación web, es ideal usar el correo electrónico como salt ya que es un dato conocido y accesible (normalmente se envían correos de confirmación de altas) de forma que, en el ejemplo antes descrito, al final el hash se haría contra fulano@mengano.com+123456
  • De nota: Usa PBKDF2 sobre los hashes que guardes. PBKDF2 es un estándar RSA para derivación de claves. Sin entrar en las profundidades matemáticas, lo que hace PBKDF2 es hacer más costoso el tiempo de computación de un hash. Los algoritmos de la rama SHA son algoritmos que han sido diseñados para ser rápidos, es decir, para que el costo computacional no sea elevado, eso, visto desde nuestra perspectiva, significa que los hashes que vamos a almacenar si usamos únicamente SHA se pueden atacar por fuerza bruta a un costo muy pequeño. Si usamos PBKDF2 lo que vamos a hacer es que, generar el hash, ‘cueste’ bastante más. Como decía al principio esto es de nota y SÍ va a tener un impacto notable a la hora de procesar peticiones de login en tu aplicación. Para una aplicación pequeña y que requiera máxima seguridad, ideal. Para un Facebook, probablemente no. Existen implementaciones de PBKDF2 en todos los lenguajes típicos
Cifrar datos
 
Vamos a abordar el tema de cifrar datos, una práctica muy deseable a la hora de trabajar con documentos o con datos.
  • Evita el uso de los algoritmos DES y RC4. En el caso de DES principalmente porque hay alternativas mucho mejores en cuanto a algoritmos de cifrado ‘de bloque’, el tiempo que inviertas en implementar uno mejor, va a ser idéntico a usar el desfasado DES. En el caso de RC4 la cosa cambia, es un algoritmo ‘simpático’, muy fácil de implementar al ser ‘de flujo’. No requiere complicarse y por tanto resulta tentador usarlo (honestamente, para un desarrollo cuyo nivel de seguridad sea bajo puede ser una opción)
  • Cuando uses un algoritmo ‘de bloque’, como AES, GOST o Blowfish, siempre usa el modo ‘CBC’ que impide que un mismo dato tenga el mismo aspecto en diferentes puntos de los datos cifrados. Si usas, por ejemplo, el modo ECB, significa que la representación cifrada de ‘securitybydefault’ siempre tendrá el mismo aspecto una vez cifrado, lo que puede facilitar el criptoanálisis. 
Desplegar SSL
 
Vamos con la forma más optima de desplegar un servicio bajo SSL
  • Usa certificados de 2048 bits. Ahora es lo mínimo exigible, de hecho, muchas CAs no admiten peticiones por debajo de esa longitud.
  • Mejor certificados EV que certificados convencionales. Eso sí, son más costosos en tiempo y dinero. Siempre puedes empezar con uno tradicional e ir preparando los requerimientos de un certificado EV.
  • Deshabilita SSL v2. Hoy día no existen razones reales de compatibilidad que hagan necesario el uso de esa versión del protocolo
  • Obvia algoritmos de baja calidad, en concreto RC4, aunque lo deseable es configurar tu servidor para que solo use algoritmos de alta seguridad
  • Habilita en tu servidor el uso de ‘HTTP Strict Transport Security‘ esto instruye al navegador para que, una vez visitado un sitio bajo SSL, se niegue a hacerlo bajo HTTP lo que protege a tus usuarios de ataques ‘sslstrip

sshpass – Conectar sin contraseña por SSH sin usar claves privadas

Si necesitamos automatizar una tarea, pero el servidor SSH no lo podemos definir que acepte nuestra clave pública: por ejemplo las consolas de gestión fuera de banda como las iLO o DRAC. Deberemos usar sshpass para pasarle el password:

Para conectar por ssh con sshpass, simplemente ejecutamos el mismo comando que usamos para conectar por ssh con sshpass delante, por ejemplo:

$ sshpass -p passw0rd ssh -l usuario host

Tenemos varias opciones para pasar la contraseña a sshpass:

  • Directamente la contraseña como parámetro con la opción -p. Dicha contraseña de sustituye por Zs por lo que no queda visible:
    |       \_ sshpass -p zzzzzzzzzzzzz ssh -l root 10.10.40.155
    |           \_ ssh -l root 10.10.40.155
    
  • Mediante un fichero, indicamos el path del fichero con la opción -f. De esta forma si el fichero tiene los permisos adecuados es suficientemente seguro.
  • Mediante una variable de entorno. Si indicamos la opción -e espera que la contraseña se encuentre en la variable SSHPASS que podemos pasar al lanzar el proceso:
    SSHPASS="passw0rd" sshpass -e ssh -l root 1.2.3.4
    

    Dicha variable no queda imposible de recuperar, se puede extraer igualmente mediante el procfs, pero de nuevo queda protegida por los permisos de usuario:

    # cat /proc/4301/environ 
    SSHPASS=passw0rd(...)
    
    
    
    
    Al pasar el comando tal cual a sshpass, podemos también ejecutar comandos remotos o cualquier otra opción que tenga el ssh o el comando que necesitemos. En realidad, sshpass, se dedica únicamente a pasar la contraseña cuando la pide:
    # sshpass -p passw0rd ssh -l root 10.12.40.155 show
    dispatch_protocol_error: type 100 seq 8
    show
    status=0
    status_tag=COMMAND COMPLETED
    
    
    /
      Targets
        system1
        map1
      Properties
      Verbs
        cd version exit show
    
    
    </>hpiLO->
    
    Tags: 

    Relacionados




    sshpass – Conectar sin contraseña por SSH sin usar claves privadas was first posted on September 25, 2013 at 11:46 am.

Defiende tu sistema Windows ante ataques de fuerza bruta con RdpGuard

 

 
TwitterFacebookLinkedInBufferMail
Evernote
+Tag
Uno de los ataques que más problemas está creando en el ‘Mundo Microsoft’ son los ataques por fuerza bruta al servicio RPD (terminal server)
 
En muchas de las infecciones por Ransomware el origen es un ataque de fuerza bruta que ha conseguido comprometer una cuenta de administrador y luego de eso, vía libre para hacer y deshacer en el sistema.
 
En el ‘Mundo Linux’ hemos disfrutado desde hace mucho tiempo de una aplicación tan potente como Fail2Ban que monitoriza los intentos de fuerza bruta y permite aplicar acciones sobre ellos.
 
Buscando una alternativa para servidores Windows, llegué hasta ‘RdpGuard‘ una herramienta que permite monitorizar ataques de fuerza bruta a RDP y no solo eso, también a ftp y a SQL Server.
 
La aplicación se instala de forma fácil a golpe de ratón

Pulsamos ‘Next’

 

Aceptamos la licencia

Seleccionamos donde queremos instalar la aplicación

Elegimos qué usuarios van a ver la interface de administración

Y ya está, ya tenemos listo RdpGuard
 
Una vez que se detecte algún intento de fuerza bruta, podemos consultar desde la interface gráfica la IP que nos ha atacado y el tiempo de bloqueo

 
El tiempo de bloqueo es configurable según lo que estimemos necesario

Para más información podéis ir a la página web del proyecto

Follow

Get every new post delivered to your Inbox.

Join 21,079 other followers