Rincón Informático

Un rincon para hablar sobre GNU/Linux, seguridad informatica, y mas!!

[Howto]: Como crear alias en GNU/Linux Debian

Posted by Epsilon On agosto - 9 - 2010

Los alias son comandos personalizados que se crean apartir de otros comandos mas generales, es decir, con los alias nos podemos ahorrar el esfuerzo de escribir un comando demasiado largo (incluyendo los parametros), cambiandolo por uno mucho mas corto. Esto se utiliza generalmente en operaciones y acciones que se suelen  repetir con determinada frecuencia, las cuales son demasiadas largas, un ejemplo cuando nos conectamos por ssh a un servidor  con determinada IP y puerto. Sin embargo,  una definicion mas formal:

En informática alias es una orden disponible en varios intérpretes de comandos tales como los shells de Unix, 4DOS/4NT y Windows PowerShell, que permite reemplazar una palabra o serie de palabras con otra. Su uso principal es el de abreviar órdenes o para añadir argumentos de forma predeterminada a una orden que se usa con mucha frecuencia. Los alias se mantienen hasta que se termina la sesión en la terminal, pero normalmente se suelen añadir en el fichero de configuración del intérprete de órdenes (~/.cshrc o /etc/csh.cshrc (aplicado a todo el sistema) para csh, o ~/.bashrc o si quieres aplicarlo a todo el sistema /etc/bashrc o /etc/bash.bashrc para bash) de forma que siempre están disponibles para todas las sesiones de terminal.

Como bien lo dice  la definicion, existen dos formas  para crear un alias:

  1. Alias temporal:  Solo funciona hasta que se cierre la terminal. Para crearlo es muy sencillo, la sintaxis debe ser: alias nombre=’comando’
  2. Si quisieramos crear un alias para conectarnos al servidorA hariamos lo siguiente:

    alias servidorA=’ssh usuario@127.0.0.1 -p 22′

    Ahora lo ejecutamos:

    aliast [Howto]: Como crear alias en GNU/Linux Debian

    De esta forma, quedaria nuestro alias creado, pero cuando la consola fuera cerrada, el alias desapareceria.

  3. Sin embargo podemos crear los alias de forma permantente para cualquier usuario,  para esto la sintaxis es igual, lo unico que debemos hacer es agregar el comando en el .bashrc  del usuario y agregar al alias:

nano /home/usuario/.bashrc y agregamos el alias

alias servidorA=’ssh usuario@127.0.0.1 -p 22′

alias2 [Howto]: Como crear alias en GNU/Linux Debian

Guardamos,  y listo solo nos queda probar el alias

alias3 [Howto]: Como crear alias en GNU/Linux Debian

De esta forma quedara listo nuestro alias.

Los alias son muy utiles para aquellos SySAdmin que diariamente tiene que administrar diferentes tipos de servidores, y realizar las mismas tareas en cada uno de ellos.

Revisando y organizando mi disco duro, me encontré con este pequeño ebook, escrito por Bert Hubert, el cual nos habla de los conceptos de enrutamiento con iproute2, entre otras cosas. Aunque el libro es algo viejo, todavía sirver para entender los conceptos, sin importar cual sea la herramienta.

Espero que  les agrade. el libro lo pueden descargar en el siguiente enlace: Enrutamiento avanzado y control de tráfico en GNU/Linux

Instalación y configuración de un servidor ssh en Debian

Posted by fortress On febrero - 14 - 2010

Una de las herramientas indispensables para administrar los servidores es a través de SSH (Secure SHell). Pero antes, un poco de teoría.

Definición

“SSH (Secure SHell) es el nombre de un protocolo y del programa que lo implementa, y sirve para acceder a máquinas remotas a través de una red. Permite manejar por completo la maquina mediante un intérprete de comandos, y también puede redirigir el tráfico de X para poder ejecutar programas gráficos si tenemos un Servidor X (en sistemas Unix y Windows) corriendo.

Además de la conexión a otros dispositivos, SSH nos permite copiar datos de forma segura (tanto ficheros sueltos como simular sesiones FTP cifradas), gestionar claves RSA para no escribir claves al conectar a los dispositivos y pasar los datos de cualquier otra aplicación por un canal seguro tunelizado mediante SSH” (Wikipedia).

Funcionamiento

El cliente inicia la conexión hacia un puerto predeterminado del servidor, en este caso el puerto reservado número 22. Establecida la conexión TCP los extremos se envían, en texto plano, sus identificadores de versión, para ver si la comunicación es posible entre ellos. De ser compatibles entre sí cambian a un modo de transferencia binaria durante el cual se identifican los interlocutores y se negocian los protocolos de cifrado y firma que se usarán.

Esta negociación de protocolos se lleva a cabo de tal manera que la información intercambiada entre cliente y servidor sólo puede ser descifrada por el destinatario legítimo de la misma, y sólo por él. Para ello al principio de esta fase el servidor envía al cliente su clave pública, para que el cliente la use para cifrar todos los siguientes hacia el servidor, haciéndolos sólo legibles para el propio servidor. Entonces el cliente genera una clave de cifrado para la sesión en curso, que envía cifrada al servidor junto con el algoritmo seleccionado, y a partir de este momento todo el tráfico entre cliente y servidor viaja cifrado y seguro.

Llegados a este punto el cliente y el servidor se han puesto de acuerdo en un cierto algoritmo de cifrado, han acordado una clave para su sesión, y el servidor se ha identificado ante el cliente con su clave pública RSA (u opcionalmente DSA, en la versión 2 del protocolo). Pero aún falta que el cliente se identifique ante el servidor, que deberá decidir entonces si deja o no acceder al cliente remoto. La identificación del cliente podrá ser mediante pareja de usuario y contraseña, rhost, rhost más identificación de máquina mediante clave RSA o simplemente mediante claves RSA o DSA.

De todos los mecanismos sólo nos interesan el primero y el último. En el primero, el servidor nos dará acceso siempre y cuando la pareja de usuario y contraseña introducida por el cliente sean los de un usuario válido en el sistema operativo del servidor, salvo restricciones adicionales. En la identificación por claves el cliente dispone, al igual que el servidor, de su propia pareja de claves, que envía al servidor durante la identificación. Si el servidor confía en el usuario cuya clave ha recibido, entonces le dará permiso de acceso.

A grandes rasgos el mecanismo de conexión y de identificación del protocolo SSH es sencillo, aunque conviene destacar un par de aspectos relevantes de cara al uso y configuración de los programas relacionados:

  • Las conexiones las inicia siempre el cliente hacia el puerto TCP número 22 del servidor.
  • Las versiones de los protocolos soportados por cliente y servidor deben coincidir, o la conexión no se llevará a cabo.
  • El servidor siempre necesita disponer de una pareja de claves, puesto que usa la clave pública para establecer la conexión segura con el cliente. El tipo de clave tiene que estar soportado en el cliente.
  • El cliente y el servidor deben tener algún algoritmo de cifrado en común, o la conexión no se establecerá.
  • Dependiendo de los mecanismos de identificación soportados por ambas partes, o exigidos por el servidor, la identificación podrá o no fallar.
  • Aún cuando haya un mecanismo de identificación soportado por ambas partes, el cliente deberá proporcionar credenciales válidas al servidor, bien sea una pareja de usuario y contraseña, bien una clave pública.

Al margen de todo lo anterior, el servidor del protocolo SSH, sshd podrá implementar restricciones adicionales de acceso, así como el propio sistema operativo donde ejecuta. Por ejemplo, no es infrecuente que sshd esté compilado con soporte de TCP-wrappers, que esté configurado para aceptar o rechazar el acceso a determinados usuarios o máquinas cliente, o simplemente que algún firewall intermedio no permita establecer la conexión.

Instalación y configuración inicial

1.-Abrir una terminal como root y escribir:

# Apt-get install openssh-server

2.-Cuando se termina de instalar viene con una configuración por default que debemos cambiar para tener una mejor seguridad para esto nos vamos al archivo /etc/ssh/sshd_config

# /etc/ssh/sshd_config

El archivo es algo extenso solo se mencionaran las secciones que son de gran importancia:

El servicio SSH por default trabaja sobre el puerto 22 pero se puede cambiar:

Port 22 ## PUERTO POR DEFAULT

El parámetro ListenAddress especifica las direcciones de las interfaces de donde se van a recibir peticiones OJO con esta sección si vamos a accesar desde una red externa como la casa entonces dejarlo como esta sino pues hay que especificar la red:

ListenAddress 0.0.0.0 ## IP por Default para acceder desde cualquier red

Esta es la sección critica a mi manera de ver porque indicamos si el usuario ROOT puede acceder vía ssh yo en lo personal lo deshabilito y entro con un usuario del sistema diferente a root

PermitRootLogin no

También podemos especificar si se va a ejecutar aplicaciones graficas mediante SSH por ejemplo podemos usar VLC a través de SSH por si no son muy dados a usar comandos yo lo dejo como esta:

X11Forwarding no

Otra opción es permitir el acceso a ciertos usuarios de la siguiente manera:

AllowUsers tusuario, miotrousuario, uncolado

En fin son muchas las opciones que trae el archivo seria bueno que le echaran un vistazo y modifiquen lo que mejor crean ustedes que es para su servidor pero siempre pensando en la seguridad y los riesgos que conlleva hacer una mala configuración.

Por último reiniciamos el servicio:

# /etc/init.d/ssh restart

NOTA: Si están detrás de un firewall tienen que abrir el puerto que han especificado pero si están en DMZ pues les recomiendo que pongan reglas IPTABLE por seguridad.

Ahora a hacer un test desde un cliente usando el terminal:

# Ssh usuario@midominio

Cuando se logueen verán lo siguiente:

Cuando se loguea

También se pueden conectar desde un Windows utilizando la herramienta Putty

Loguearse usando Putty

Mas info sobre configuración: Aquí

Fuente: Aquí

Descargar el Putty: Aqui

Monitorear procesos en GNU/Linux

Posted by Epsilon On enero - 19 - 2010

En entornos Unix existen  herramientas para todos los gustos que nos ayudan a monitorear o  administrar procesos,  en esta entrada nombraremos algunas aplicaciones nativas de Unix y otras que no lo son, y que nos sirven para visualizar los procesos del sistema su pid,  y otra informacion importante.

Comando PS

Es un comando muy util y con muchas opciones, para listar los procesos que se estan corriendo en el sistema podemos hacer lo siguiente:

ps -e

ps -A

Con cualquiera de los dos comandos anteriores podemos listar  los procesos con su respectivo PID.  Si deseamos mas informacion como:   el usuario, la carga de cpu y memoria, el tiempo y por supuesto su nombre con la ruta del ejecutable usamos los siguientes parametros :

ps -aux

Ahora si deseamos encontrar un proceso  en especifico podemos usar grep

ps -e | grep guake

Herramienta Top

Existe una herramienta un poco mas interactiva que viene por defecto en todas las  distribuciones de GNU/Linux llamada top, esta aplicacion nos muestra en tiempo real toda la informacion relevante de cada proceso que se esta ejecutando, para lanzarlo solo basta escribir en consola top:

top_procesos

En la imagen vemos claramente alguna informacion importante como:

  • PID
  • USUARIO
  • %CPU
  • %MEMORIA
  • NOMBRE

Herramienta Watsup

Por otra parte si no eres muy amante de la consola, watsup es la herramienta perfecta para ti,  es un monitor de procesos  grafico de codigo abierto (GPL), para descargarlo puedes ir a este enlace para instalarlo debemos seguir estos sencillos pasos:

make
make install

Para ejecutarlo simplemente escribes en una consola watsup  o tecleas alt+f2 y escribes watsup, inmediatamente nos saldra la pantalla en la cual podemos ver los proceso actuales e incluso matar el que nosotros deesemos:

proceso-watsup

Como dividir un archivo de texto demasiado grande

Posted by Epsilon On enero - 11 - 2010

Algunas veces resulta muy molesto trabajar con archivos  de texto  demasiado grandes, ya que para visualizarlos el sistema debe cargar  el archivo completo en la memoria de nuestra maquina,  si estamos trabajando con archivos  de 10 millones de lineas en adelante,  al abrirlo este consumira demasiada memoria y hará que nuestro sistema colapse por completo.

Para solucionar este incomodo problema, los entornos unix traen una utilidad llamada split, la cual nos ayuda como su nombre lo indica a o partir un archivo de texto el cual sea demasiado grande.

La sintaxis de split es:

split [parámetros opcionales] [archivo de entrada] [archivo de salida]

Entre los parámetros tenemos:

  • -l -> numero de lineas en las que se va a o partir el archivo por defecto son 1000
  • -b -> divide el archivo no por lineas, sino por tamaño (expresado en bits)
  • -b k n -> divide el archivo no por lineas, sino por tamaño (donde n es un multiplo de 1024 bytes)

Después de los parámetros,  le damos el archivo de entrada y un nombre de salida,  hay que aclarar que el archivo de salida tendrá la siguiente notación:

nombrea nombreb nombrec nombred nombree nombref etc……

Algunos ejemplos:

split -l 5000 diccionario.txt parte-

Esta sentencia me arrojara  lo siguiente:

parte-a parte-b parte-c  hasta que el archivo quede completamente dividido-

Algo muy sencillo pero util,  trabajar con backups o archivos de textos que este en el orden de los millones. Por ultimo si alguien posteriormente desea  pegar las partes lo puede hacer muy facilmente usando cat.

cat parte-a parte-b parte-c > todocompleto.txt

Primeras horas con OpenBSD 4.6

Posted by mirphak On diciembre - 30 - 2009

openbsdtext Primeras horas con OpenBSD 4.6

Dejando a un lado la rivalidad entre sistemas operativos tipo Unix, mostraremos  algunos aspectos importantes a tener en cuenta  al adentrarnos en el mundo  OpenBSD1

Instalación

Descargar iso.

Debemos tener claro  que en  OpenBSD  cambia la nomenclatura  de los dispositivos (Discos duros, interfaces, ..), sólo algo diferente a lo acostumbrado.  Se sale del propósito del post mostrar una guía paso a paso de la instalación, por eso dejo  un manual hecho por la comunidad  openbsdcolombia (descargar).  La secuencia de instalación de la versión 4.6 difiere de la que se utiliza en el manual, pero nada de que preocuparse.

FELICITACIONES!  su sistema OpenBSD ha sido instalado satisfactoriamente !

Si en el proceso de instalación decidimos instalar las  X (xbase40, xserver40, ..), las iniciamos con el comando  startx, veremos una xterm, un reloj, y un panel de escritorios  bastante minimalista.

Colección de Ports y Paquetes

La instalación de Software adicional  en OpenBSD se hace utilizando Ports,  que son un conjunto de ficheros  de tipo make donde se indica:

- De dónde se optiene el paquete

- Como llevar a cabo la obtención del paquete

- Las dependencias del  paquete

- Como aplicar cambios en las fuentes (sólo si es necesario)

- Y  como configurarlo, compilarlo e instalarlo

EL grupo de desarrolo  advierte que la colección de ports y  paquetes  no recibe la misma auditoría de seguridad  que sigue OpenBSD.

Instalación de un Entorno de Escritorio

pkg_add

En los  how-to  que rondan la red  vemos que la instalación de software en OpenBSD es bastante fácil :

pkg_add -r xfce4 , pkg_add -r gnome, si hacemos la prueba  seguramente nos saldrá  esto    No packages available in the PKG_PATH,

- También  vemos cosas como   #cd /usr/ports/net/irssi #make install,   pero  el directorio  ports no está

Bueno para el primer “problema” (No packages available in the PKG_PATH) se  deduce que  es necesario indicar  la ruta  donde están los paquetes, entonces  #export  PKG_PATH=” ftp://ftp.openbsd.org/pub/OpenBSD/4.6/packages/i386/” , ya con esto  podemos instalar por ejemplo gnome: #pkg_add  -r  gnome-session

Para solucionar lo del directorio ports,  simplemente debemos bajar el paquete  ports.tar.gz  y  descomprimirlo en  /usr:

#cd /usr

#tar  xvfpz ports.tar.gz

ya con esto podemos instalar software utilizando ports:

#cd /usr/ports/net/irssi

#make install

screenshotru.th Primeras horas con OpenBSD 4.6

- Instalando Scapy: #cd /usr/ports/net/scapy    #make  install , se demora bastante!!   y  pensar que antes uno se las veía con todas esas dependencias  en algún lfs.

Uzbl: Un navegador web liviano, minimalista y muy personalizable

Posted by Epsilon On diciembre - 29 - 2009

Si estas cansado de el amplio consumo de CPU y memoria de tu navegador preferido (ya sea Firefox, opera, chromium, etc..) te presento  UZBL un navegador web de código abierto  muy minimalista,  que cumple con la filosofia Unix:

Escribir programas que hacen una cosa y la hacen bien. Escribir programas para trabajar juntos. Escribir programas para manejar flujos de texto, ya que es una interface universal

Antes de empezar con el proceso de instalación hay que aclara que si eres de los usuarios que te gusta que tu navegador tenga un sin fin de addons y servicios adicionales, este no es el navegador para ti, por el contrario si eres un usuario el cual solo le interesa que tu navegador sirva para lo que fue diseñado (abrir paginas web), esta aplicacion sera perfecta para ti.

Ventajas de Uzbl

  • 100%  Personalizable (editar menús, cambiar colores, atajos)
  • rápido
  • soporta flash player
  • Soporta pestañas
  • Al ser tan minimalista no quiere decir que no tenga, marcadores, historiales.
  • navegacion con el teclado.

Instalación de UZBL

Ya que este proyecto es demasiado nuevo ( marzo de 2009 ) solo se encuentra en los repositorios de archlinux, gentoo, ubuntu, la versión testing de (squeeze)  y por supuesto en la versión inestable (sid),  para los usuarios de estas versiónes, pueden instalar uzbl de esta forma:

apt-get install uzbl

Sin embargo para lo usuarios de otras distribuciones, las cuales no tengan uzbl en sus repositorios, necesitaran hacer lo siguiente:

apt-get install git-core git-arch git-cvs git-daemon-run git-doc git-email git-gui git-svn gitk gitweb libwebkit-dev

Ahora descargamos las fuentes desde la pagina web oficial:

git clone git://github.com/Dieterbe/uzbl.git

Siguiente punto compilar:

make
make install-uzbl-core
make install-uzbl-browser
make install-uzbl-tabbed

Por ultimo debemos copiar el archivo de configuracion tomando como base un ejemplo, para esto hacemos lo siguiente:

cp /usr/local/share/uzbl/examples/config/uzbl/config /home/tu_usuario/.config/uzbl/config
nota: si la carpeta .config o uzbl no se encuentran en tu home, debes crearlas.

Es importante tener en cuenta que este archivo es parte fundamental del navegador, en el se encuentra toda la configuracion  y es alli donde debemos modificar lo que deseamos, desde la apariencia hasta los atajos del teclado.

Usando el navegador web uzbl

Despues de tenerlo instalado solo basta ejecutarlo, dependendiendo de lo que queramos ejecutamos:

uzbl-tabbed -> navegacion con pestañas
uzbl-brower -> navegador simple

algunos atajos de teclado son (recuerda que puedes cambiarlos a tu antojo):

j -> baja la pagina
k -> Sube pagina
h -> corre hacia la izquierda
l ->  corre hacia la derecha
b -> Pagina atras
m -> pagina adelante
o  -> abrir pagina (despues de presionar o digita la url)
r -> actualizar

Aunque llevo poco probandolo  me parece muy bueno, sencillo  y agradable (nada de molestas barras), y me gusto mucho por lo configurable, cada uno puede  adecuarlo a su gusto, por ultimo dejo un screenshot del menu de click derecho que configure.

Free Image Hosting at www.ImageShack.us

No soy un guru manejando este navegador, pero seria bueno ir probandolo a fondo y conociendo sus otras caracteristicas que deben ser muchas mas, esto es simplemente un abrebocas a que se animen a probarlo  y nos cuenten sus experiencias.

Como corregir inconsistencias en el sistema de archivos con FSCK

Posted by jhonber On diciembre - 26 - 2009

Qué es FSCK (En Wikipedia):

FSCK (file system check o bien file system consistency check) es una utilidad de los sistemas Unix y similares, como Linux y AIX que se utiliza ante alguna inconsistencia del sistema de archivos para corregir los posibles errores en el sistema.

FSCK se ejecuta automáticamente al arranque del sistema, si se encuentra alguna anomalía en el mismo; pero además de eso puede ser usado manualmente.

Modo de empleo:

fsck  [-opciones]  /dev/hdXXX  (o sdXXX)

Opciones:

-a confirmar automáticamente. No recomendado.
-c comprobar bloques en el disco.
-f forzar la verificación aunque todo parezca normal.
-v (verbose) despliega más información.
-r Modo interactivo. Espera nuestra respuesta.
-y asume yes de respuesta.

El siguiente argumento para el comando FSCK es la partición donde queremos hacer la verificación. (Depende de nuestro disco lo haremos con  /dev/hdXXX  o  con /dev/sdXXX ).

Nota: Se recomienda que la partición donde hagamos la verificación se encuentre DESMONTADA.

Un ejemplo de uso puede ser (Con el cual el comando comprobaría los bloques en el disco y asumiría ‘yes’ como respuesta):

# fsck  -c  -y  /dev/hdXXX

La salida de dicho comando serán algunos avisos sobre si se han encontrado errores en el sistema de archivos y si se han corregido correctamente.

Automatizar FSCK para que se ejecute al arranque del sistema

Esto se puede conseguir editando el archivo /etc/fstab

#   /etc/fstab

Archivo fstab:

##################################
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/hda6           /                           ext3        defaults           0                1
/dev/hda2           /home                  ext3        defaults           0                2
/dev/hda5          none                     swap      sw                     0                0
/dev/hdb            /media/cdrom0  udf,iso9660 user,noauto    0               0
/dev/hda7          /media/hda7       ext3         defaults             0                2
##################################

Debajo de <pass> es donde debemos colocar el argumento que hará que FSCK verifique cada X arranques del sistema dicha partición, Los valores posibles son “0″  “1″ o “2″ El sistema de fichero raíz / debe tener “1″ si deseamos activarlo, y el resto de particiones deben tener “2″ para el mismo propósito. Los sistemas de ficheros que no necesitan comprobación como swap o el CD-ROM Tendrán el valor de “0″.

Bueno no esta demás recomendar usar con cuidado este comando (Úsalo bajo tu cuenta y riesgo) ;)

Hasta la próxima y Felices Fiestas para todos !!!

Nuevo reto: Analisis Forense

Posted by Epsilon On diciembre - 25 - 2009

reto informatica forense

Para todos aquellos  que quieran hacer algo muy interesante y productivo en esta época de vacaciones, nuestro amigo Dragon,  ha diseñado un reto forense denominado análisis forense(muchas gracias a dragon por haberse tomado la molestia de crear este reto y compartirlo con nosotros), en los siguientes enlaces encontraras un paquete con todo lo necesario para desarrollarlo:

parte 1
parte 2
parte 3
parte 4
parte 5

Para descomprimir el paquete necesitan una clave, pueden pedirla a cualquiera de estos dos correos:

dragonjar en gmail
4v4t4r en gmail

el escenario del reto es el siguiente:

Gracias a una denuncia por ciberBullyng a la Unidad de Delitos Informáticos Lunix, se pretende llevar a cabo un análisis forense a un sistema propiedad de un sospechoso que tiene contacto con la víctima. Este análisis se realizará bajo la sospecha que desde éste equipo se están realizando actos delictivos y judicializables.
Se sospecha que éste distribuye contenido pedófilo por medio de Internet.

El objetivo y las reglas:

El objetivo es realizar un análisis forense al sistema de la persona sospechosa. Para ello se entrega un snapshot del sistema objetivo. Esta instantánea podrá ser restaurada para llevar a cabo el respectivo análisis en “caliente” por medio de los aplicativos software VMWare Player o VMWare Server (ambas aplicaciones gratuitas y multiplataforma).

La finalidad del análisis será determinar entre otros los siguientes puntos:

  1. Antecedentes del Sistema/Escenario
  2. Recolección de datos
  3. Descripción de la evidencia
  4. Entorno del análisis/Descripción de las herramientas
  5. Análisis de la evidencia/Información del sistema analizado /Aplicaciones /Servicios
  6. Metodología
  7. Descripción de los hallazgos
  8. Huellas del comportamiento y de las actividades del sospechoso
  9. Cronología de las actividades del sospechoso
  10. Posibles víctimas del sospechoso
  11. Rastros del sospechoso
  12. Conclusiones
  13. Recomendaciones a los padres
  14. Referencias

Esperamos que todos participen ya que es un buen método para aprender sobre un tema tan amplio como lo es la informática forense, no hay mejor metodología de aprendizaje que la practica, cualquier cosa estaremos dispuestos a resolver dudas y esperen muy pronto la solución a este reto.