Secure Shell Hacks – Linux

E aqui una pequeña wiki de SSH¡¡¡

SSH hacks

Cómo me conecto por ssh sin contraseñas

En primer lugar es necesario generar una pareja de claves en tu máquina (‘client‘), en este caso ‘bender‘:

cesar@bender ~ $ ssh-keygen -t dsa

Te preguntará un passphrase que es recomendable introducir, aunque también se puede dejar en blanco. Tras esta operación obtendrás los ficheros:

cesar@bender ~ $ ls ~/.ssh
id_dsa
id_dsa.pub
known_hosts

El fichero ‘id_dsa‘ contiene la clave privada y no debería salir de tu ordenador. Debe tener permisos 600:

cesar@bender ~ $ chmod 600 .ssh/id_dsa

El fichero ‘id_dsa.pub‘ contiene tu clave pública. Para autorizar una clave pública en una máquina remota ‘kastor‘:

cesar@bender ~ $ cat ~/.ssh/id_dsa.pub | ssh kastor 'cat - >> .ssh/authorized_keys'

No olvides poner dos símbolos «>», puesto que en caso contrario te cargarás otras claves autorizadas en la máquina ‘kastor‘. La próxima vez que hagas ‘ssh kastor‘ entrará sin más. Si has puesto passphrase, tendrás que hacer primero:

cesar@bender ~ $ ssh-add

Solución de problemas

  • Sigue sin dejar conectarme: Asegúrate de que los permisos de ‘~/.ssh/authorized_keys‘ en la máquina remota son 644.
  • Cuando escribo ‘ssh-add‘ aparece el mensaje Could not open a connection to your authentication agent: La shell desde la que intentas conectarte no esta bajo el control del agente de autenticación.
  • Solucion rápida: Lanza una shell con el agente de ssh.
cesar@bender ~ $ ssh-agent bash
  • Solución mejor: lanza todas tus X bajo el ‘ssh-agent‘. Así todas las terminales colgarán de él.

El archivo /etc/hosts

Para un acceso rápido por ssh resulta muy útil definir alias de tus máquinas comunes en el fichero ‘/etc/hosts‘:

cesar@bender ~ $ sudo vim /etc/hosts
#
# Syntax:
#
# IP-Address  Full-Qualified-Hostname  Short-Hostname
#
192.168.1.4     kastor.zylk.net kastor

Esta operación requiere privilegios de administrador o superusuario.

Como manejar las llaves de ssh ? Uso de keychain

Una posibilidad es iniciar el ordenador en ‘init 3‘ sin X y redefinir tu ‘startx‘: Este es mi ‘~/bin/startx-ssh‘:

cesar@bender ~ $ vim ~/bin/startx-ssh
#!/bin/bash

keychain ~/.ssh/id_dsa || exit
source ~/.keychain/`hostname`-sh
startx

exit

Al iniciarlo, me pide el passphrase. Otra posibilidad es incluir estas dos líneas en tu archivo ‘.gnomerc‘ o similar en otros entornos gráficos.

keychain  ~/.ssh/id_dsa
source ~/.keychain/`hostname`-sh

Y ahora, si hago login desde otra máquina, o quiero que un cron pueda conectarse a otras máquinas, incluyo las siguientes líneas:

cesar@bender ~ $ source ~/.keychain/`hostname`-sh

Si quiero cerrar el acceso, hago:

cesar@bender ~ $ keychain --stop

Para volverlo a arrancar:

cesar@bender ~ $ keychain ~/.ssh/id_dsa

Cómo y por qué usar un túnel ssh?

Has trabajado alguna vez detrás de un firewall? Tienes una página web privada de una institución detrás de un firewall a la que sólo pueden acceder las máquinas de esa institución? Has intentado alguna vez mover un fichero desde detrás de un firewall a otra máquina que esta detrás de otro firewall? Entonces, lo que necesitas es hacer un túnel ssh.

La idea básica es que desde tu máquina (‘client.machine‘) tienes acceso a una máquina ‘bridge.machine‘ que no es a la que quieres acceder, pero que desde ella si podrías acceder a tu objetivo ‘target.machine‘. El túnel te permite operar de forma transparente desde ‘client.machime‘ hasta ‘target.machine‘. Hay dos tipos de túneles: túneles directos e inversos. En un túnel directo (forward) se hace corresponder un puerto de destino (‘dport‘) en la ‘target.machine‘, con un puerto local (‘lport‘) en tu máquina ‘client.machine‘. Esto se hace de la siguiente manera:

cesar@bender ~ $ ssh -NfL lport:target.machine:dport bridge.machine

Regla nemotécnica: acuérdate de la liga de futbol americano (NFL) y que la del medio es en minúscula.
HINT: Por cierto, aseguraros que el puerto local no está siendo usado, por ejemplo que apache este escuchando en ese puerto (aunque este mapeado con un virtual host deshabilitado). Por otro lado la opción verbose (-NfvL) puede ayudar en la traza de algún error.

Conectarse por ssh a target.machine

Primero construiríamos el túnel:

cesar@bender ~ $ ssh -NfL 6666:target.machine:22 bridge.machine

Y a continuación basta con hacer lo siguiente para entrar directamente en ‘target.machine‘:

cesar@bender ~ $ ssh -p6666 localhost

O bien:

cesar@bender ~ $ scp -P6666 fichero localhost:/el/path/que/te/venga/bien

Esto requiere que en tu ‘$HOME/.ssh/config‘ añadas la línea:

NoHostAuthenticationForLocalhost yes

Ejemplos de uso para los túneles ssh

Conexión a una web de una red privada

Si montas un servicio en un ordenador detrás de un firewall, este no va a estar disponible fuera porque en general los puertos estarán capados. Por ejemplo, una web dentro de una máquina de una red privada sin salida al exterior. A través de un túnel ssh se puede acceder a este servicio.

cesar@bender ~ $ ssh -NfL 8080:target.machine:80 bridge.machine

Después en el navegador, la web de ‘target.machine‘ estará disponible en ‘http://localhost:8080‘.

Conexión al LDAP de una red privada

cesar@bender ~ $ ssh -Nvf -L 9999:kastor.zylk.net:389 cesar@kastor.zylk.net

Aunque el puerto del LDAP (389) esta capado, yo puedo acceder a él desde fuera de la red si tengo un acceso a ‘kastor‘ haciéndolo pasar a través del puerto 22 (el del ssh) y mapeandolo a un puerto, digamos el 9999 en mi máquina local. Situación inicial:

               |             |
localhost:9999   ----------- | kastor.zylk.net:389
               |             |

Túnel:

               |          22 |                     |
localhost:9999   -----------   kastor.zylk.net:22    kastor.zylk.net:389
               |             |                     |

Una vez hecho el túnel, puedo configurar en mi agenda el acceso al LDAP con servidor localhost y puerto 9999. Nota: En realidad el proceso incorpora tres máquinas, la local, la de salida y la del servicio. Lo que pasa es que en este caso las dos ultimas son la misma.

Administrar el servidor CUPS de una red privada

Desde mi máquina:

cesar@bender ~ $ ssh -Nvf -L 63131:cups.zylk.net:631 cesar@kastor.zylk.net

Túnel:

               |          22 |                 |
localhost:63131   -----------   kastor.zylk.net   cups.zylk.net:631
               |             |                 |

De este modo me puedo conectar a la interfaz web de administración desde mi máquina en http://localhost:63131

Cómo definir tus propios hosts sin ser root?

Una situación bastante común es que tener acceso a una cuenta en una máquina sin privilegios de administrador o superusuario. Para conectarte a ‘kastor.zylk.net‘ con login ‘cesar‘:

cesar@bender ~ $ ssh cesar@kastor.zylk.net

La solución está en el fichero ‘$HOME/.ssh/config‘:

Host kastor
Hostname kastor.zylk.net
User cesar
Port 22
ForwardX11 no
Protocol 2,1

Host cups
Hostname localhost
User zylk
Port 9999

Con lo cual puedes hacer directamente:

cesar@bender ~ $ ssh kastor

El ssh sabe que tiene que conectarse a la máquina ‘kastor.zylk.net‘ y usar el login ‘cesar‘. Y ahora sabe que tiene que conectarse al puerto 9999 de ‘localhost‘ usando como login ‘zylk‘. Con esto tienes ya total transparencia en los túneles. Sobre todo si te haces un alias para levantarlo del tipo de:

cesar@bender ~ $ alias tncups='ssh -NfL 9999:cups.zylk.net:22 cesar@kastor'

Ejecutas el alias, que puedes copiar en tu ‘.bashrc‘:

cesar@bender ~ $ tncups

y te puedes conectar directamente a ‘cups.zylk.net‘ de forma transparente desde el exterior.

cesar@bender ~ $ ssh cups

Utilizando el sistema de ficheros sshfs

El objetivo es tener un sistema de ficheros remoto. Una especie de NFS o samba, pero seguro a través de ssh. Instalo sshfs:

$ sudo apt-get install sshfs

Me añado al grupo «fuse»:

$ sudo vi /etc/group

Luego ejecuto:

$ sshfs cesar@kastor.zylk.net:/data1/z-docs /mnt/z-docs/

Cómo conectarse unicamente via certificado?

Configurar el demonio de ssh de modo que sólo se puedan realizar conexiones ssh a la máquina si el usuario remoto está en la lista ‘authorized_keys‘.

$ sudo vim /etc/sshd_config
PasswordAuthentication no
UsePAM no

Por defecto esta opción está marcada como yes. También se puede definir donde están las listas autorizadas (claves públicas). Por defecto las define el usuario:

#AuthorizedKeysFile     %h/.ssh/authorized_keys

Reinicio el servicio:

$ /etc/init.d/sshd restart

Desactivar el login a root por ssh

Desactivo conexiones remotas ssh a la cuenta root, como medida de prevención de ataques ssh.

$ sudo vim /etc/sshd_config
PermitRootLogin no

Reinicio el servicio:

$ /etc/init.d/sshd restart

Las mejores Cheat Sheets de Linux

Aqui os dejo amigos Linuxeros una lista de las mejores Cheat Sheets (Chuletas en Castellano) de Linux, para todos los iniciados, expertos y gurús de GNU/Linux ¡¡¡¡

PDF | Command Line Interface (CLI), Security, Networking

HTML | CLI, Gnome/KDE

HTML | Linux Distributions Cheat Sheets

HTML/PDF | vi, sed, awk

Manual de detección de vulnerabilidades en LINUX y UNIX

Manual de detección de vulnerabilidades en LINUX y UNIX
Jesus Nerney, Cesa narvaez|PDF|compresion.rar|español|6mb

La curiosidad del hombre y su capacidad para crear, le ha permitidodesde siempre avanzar a nivel tecnológico a medida que la vidamisma se encarga de imponerle nuevos retos, pero esta curiosidad abordasiempre en diferentes sentidos. Por un lado, están los queaprovechan su creatividad para construir paso a paso un mundo mejor,donde todos podamos participar y disfrutar de las bondades del biencreado. Por el otro, están aquellos que la aprovechan para finesdestructivos. En el medio se encuentra el resto de la humanidad,disfrutando o sufriendo con los nuevos descubrimientos. Incluso sepuede hablar de otro grupo que actúa de igual forma con unos ycon otros: aquellos que dedican su vida a buscar las posibles fallas delos descubrimientos realizados bien sea para mejorarlos, o simplementepara buscar conocimiento.

Enlace para descargar: http://tuentishare.com/post/libros-ebooks/277/manual-de-deteccin-de-vulnerabilidades-en-linuxunix.html

Videotutorial de JQuery

jQuery es una biblioteca o framework de Javascript, creada inicialmente por John Resig, que permite simplificar la manera de interactuar con los documentos HTML, manipular el arbol DOM, manejar eventos, desarrollar animaciones y agregar interacción con la tecnología AJAX a páginas web. Fue presentada en enero de 2006 en el BarCamp NYC.

jQuery, al igual que otras bibliotecas, ofrece una serie de funcionalidades basadas en Javascript que de otra manera requerirían de mucho más código. Es decir, con las funciones propias de esta biblioteca se logran grandes resultados en menos tiempo y espacio.

01.- Curso de jQuery. Introducción
VideoTutorial Nº1 del Curso de jQuery, el framework de Javascript que permite simplificar la manera de interactuar con los documentos web, permitiendo manejar eventos, desarrollar animaciones y agregar interacción con las tecnologías AJAX a páginas web necesitando mucho menos tiempo y código para hacerlo. En este primer VideoTutorial hacemos una introducción en la que vemos cuales son las ventajas del uso de este tipo de frameworks, así como las funcionalidades que nos ofrece. Terminamos creando el primero proyecto con jQuery y explicando la sintaxis y estructura básica que utiliza.

02.- Curso de jQuery. Selectores CSS y XPath.
VideoTutorial Nº 2 del Curso de jQuery en el que empezamos a ver los selectores: Acceder a partes concretas del DOM con selectores; El DOM; La Función Factoría $ ( ); Selectores CSS; Selectores XPath. En total algo más de media hora.

03.- Curso de jQuery. Selectores Personalizados.
VideoTutorial 3 del Curso de jQuery en el que terminamos de ver los distintos tipos de selectores: Selectores personalizados; Dar estilo a filas de tablas; Métodos Transversales DOM; Dar estilo a cabeceras; Uso de los métodos next() y siblings(). En total unos 35 minutos.

04.- Curso de jQuery. Eventos y Gestores de Eventos.
VideoTutorial Nº 4 del Curso de jQuery. Eventos y Gestores de Eventos. Como hacer que el Código vigile y responda: Ejecutar tareas cuando se carga una página; Ejecutar múltiples scripts con un único selector; Abreviaturas de Código; Eventos iniciados por el Usuario; uso del método .bind( ) y el evento click; Uso de la palabra clave this; Uso de la iteración implícita de jQuery. 34 minutos en unos 70 megas.

05.- Curso de jQuery. Gestores de Eventos Complejos
Videotutorial Nº 5 del Curso de JQuery en el que seguimos viendo los Eventos y gestores de eventos: Iteración implícita; Creación de colas y encadenamientos; Atajos de Evento; Eventos Complejos; .toggle( ) y .hover( ); Mostrar y ocultar elementos del DOM; Personalizar aspecto del cursor sobre distintos elementos. Media hora en 54 megas.

06.- Curso de jQuery. Limitar alcance eventos.
VT 6 del Curso de jQuery. Limitar el alcance de los eventos: El recorrido de un evento; Capturing Event y Bubbling Event; Limitar y finalizar eventos; El objeto Event de JavaScript; Objetivos del Evento, el método .target( ); Detener la propagación de un evento; El método .stopPropagation( ); Eliminar un gestor de evento; uso del método .unbind( ); El método .one( ); Simular un Evento: El método .trigger( ). Unos 36 minutos.

07.- Curso de jQuery. Efectos. El método .css
VideoTutorial Nº 7 del Curso de jQuery en el que empezamos con una introducción al uso de efectos y vemos y trabajamos con el método .CSS: Modificar CSS inline; Uso del método .CSS como Getter y Setter; Uso de los métodos parseFloat( ) y .slice( ). Ejemplo práctico del uso del método. Media hora en algo más de cincuenta megas.

08.- Curso de jQuery. Efectos. .hide, .show y .animate
VideoTutorial Nº 8 del Curso de jQuery. Efectos: Los métodos .hide( ) y .show( ); Uso del parámetro velocidad; .fadeIn( ); fadeOut( ); fadeTo( ); slideDown( ); slideUp( ); Métodos múltiples: .animate( ); Construir un .show animado; Crear una animación personalizada; Efectos simultáneos y efectos en cola; Trabajar con un conjunto único de elementos. En total unos 25 minutos en 56 megas.

09.- Curso de JQuery. Efectos. Funciones Callback
VideoTutorial Nº 9 y último de los dedicados a los Efectos. Vemos el uso de las funciones Callback. Mostramos como poner en Cola métodos que no pertenecer a Efectos, como el método .CSS por ejemplo. 13 minutos en 18 megas.

10.- Curso jQuery. Manipulación del DOM.
VideoTutorial 10 del Curso de jQuery en el que iniciamos un nuevo bloque dedicado a la manipulación del DOM: Como cambiar aspecto y contenido de la página con comandos. Manipulación de atributos; Modificar varios atributos a la vez; El función loop .each; Los métodos .attr( ) y .removeAttr( ); Crear Código html con la función factoría $ ( ); Metodos para insertar código en páginas web. Unos 30 minutos.

11.- Curso jQuery. Mover Elementos.
VideoTutorial 11 del Curso de jQuery: Manipulación del DOM: Mover elementos. Crear un sistema de notas al pie; Uso de .append( ); .appendTo( ) y wrap( ). 25 minutos en los que creamos en cinco líneas de código un completo sistema de creación de notas al pie automatizado.

12.- Curso jQuery.Copiar Elementos.
VideoTutorial 12 del Curso de jQuery. Terminamos el bloque dedicado a la manipulación del DOM, viendo como copiar elementos. Uso del método .clone( ); Profundidad del método; Creación de un sistema de llamadas; Resumen métodos Manipulación DOM. 23 minutos.

13.- Curso de jQuery. Métodos AJAX de jQuery
VideoTutorial Nº 13 del Curso de jQuery. Métodos AJAX de jQuery. Las tecnologías AJAX; Cargar datos de modo asíncrono; AHAH(Asynchronous HTTP y HTML), añadir HTML; El método .load( ); Trabajar con Objetos JavaScript; La sintaxis JSON; Funciones jQuery globales; Uso de la función global $.getJSON( ); Ejecutar un Script; Acceder directamente a un script desde jQuery; uso de la función global $.getscript( ). 36 minutos.

14.- Curso de jQuery. Trabajo con XML y AJAX en jQuery
VideoTutorial 14 del Curso de jQuery. Trabajo con AJAX y XML en JQuery. Cargar un documento XML; La función $.get( ); Uso de la sintaxis XPath en jQuery; Elegir un formato de datos: ventajas e inconvenientes de cada uno. Media hora.

15.- Curso de jQuery. Pasar Datos al Servidor
VideoTutorial 15 del Curso de jQuery. Pasar Datos al Servidor. Ejecutar una petición GET; Ejecutar una petición POST; Uso de Serialize( ); Los métodos .ajaxStart( ) y .ajaxStop( ); Creación de un throbber; La función de bajo nivel $.ajax( ); Ajax y Eventos; Determinar el alcance de los eventos. Usar Event Bubbling. 49 minutos. Terminamos el bloque dedicado a Ajax y la presentación de las herramientas fundamentales de jQuery. A partir del próximo empezamos a ver usos prácticos de todas estas herramientas combinadas.

Descargar

http://hotfile.com/dl/9908574/242d662/jquery.part01.rar.html
http://hotfile.com/dl/9908582/c16fe42/jquery.part02.rar.html
http://hotfile.com/dl/9908589/91e9af2/jquery.part03.rar.html
http://hotfile.com/dl/9908600/6afd631/jquery.part04.rar.html
http://hotfile.com/dl/9908608/c89b41c/jquery.part05.rar.html
http://hotfile.com/dl/9908619/8f5c321/jquery.part06.rar.html
http://hotfile.com/dl/9908630/3ea4dd3/jquery.part07.rar.html
http://hotfile.com/dl/9908646/9a26254/jquery.part08.rar.html
http://hotfile.com/dl/9908654/67b7ba1/jquery.part09.rar.html