viernes, 20 de diciembre de 2013

[LINUX-Túnel SSH] Crear un túnel por medio de SSH en Linux

Un túnel por SSH puede servir para muchas cosas, en mi caso yo lo uso para conectarme a la computadora del trabajo, o en el trabajo para poder llegar a ciertos servidores que solo se les puede llegar por medio de otro equipo.

Lo único que necesitamos es tener instalado una aplicación llamada sshuttle, que se puede descargar de acá: https://github.com/apenwarr/sshuttle

Si se descarga de está pagina tendrán los binarios necesarios para la ejecución del programa, si no también se puede instalar de los repositorios en caso de que se utilice un SO como Ubuntu, mediante el siguiente comando:
 sudo apt-get install sshuttle

Una vez instalada la aplicación se puede ejecutar la misma como un demonio con la siguiente sintaxis:
 /ruta_del_binario/sshuttle -r USUARIO_SERVIDOR_TUNEL@IP_SERVIDOR_TUNEL:PUERTO IP_DESTINO | RANGO_IPS_DESTINO -D
  • La opción "-r" indica que es hacia un servidor remoto
  • USUARIO_SERVIDOR_TUNEL se reemplaza por el usuario de ssh del servidor que va a funcionar de túnel
  • IP_SERVIDOR_TUNEL se reemplaza por la IP del servidor que se va a utilizar de túnel
  • PUERTO el puerto de SSH del servidor, por lo general el 22, pero puede ser otro
  • IP_DESTINO | RANGO_IPS_DESTINO se escribe la IP del equipo remoto al que se quiere llegar o atravesar por el túnel, o el rango de IPs esto asignando un /0 /8 /16 /24 al final de la IP
  • La opción "-D" se utiliza para que el sshuttle se ejecute como demonio
  • (Opcional) como opción opcional se puede utilizar el "-x" seguido de un espacio y la IP o rango de IPs(con formato /8 /16 /24) para excluir dichas IPs de utilizar el túnel SSH

Por ejemplo:
 sshuttle -r jonathan@74.125.24.99:22 0.0.0.0/0 -x 192.168.1.0/24 -x 10.0.0.0/8 -x 201.200.105.6 -D

En este ejemplo todo el tráfico(0.0.0.0/0) pasa por el servidor 74.125.24.99:22 excluyendo el rango de IPs que comiencen con 192.168.1 (192.168.1.0/24), además también excluye el rango de IPs que comiencen con 10 (10.0.0.0/8) y la IP 201.200.105.6, además de esto corre en el background como un demonio ("-D").

Lo que hago para no tener que escribir todas estas reglas cada vez que lo utilizo, es que lo escribo en script de bash y lo modifico cada vez que necesito agregar exclusiones.

*NOTA: El sshuttle, requiere el usuario de root para su ejecución en el equipo local

[Túnel SSH] Crear un túnel por medio de SSH en Windows

Un túnel por SSH puede servir para muchas cosas, en mi caso yo lo uso para conectarme a la computadora del trabajo, o en el trabajo para poder llegar a ciertos servidores que solo se les puede llegar por medio de otro equipo. Lo único que se necesita para realizar esto en Windows es un cliente de SSH llamado PuTTY. Para descargarlo pueden hacerlo de la siguiente página: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
*Esta aplicación no necesita instalarse, es portable. También existe un PuTTY en linux, pero hay una mejor forma de lograr esto en linux

Lo primero que se debe hacer es ingresar a la parte de "Session" y agregar la IP del equipo que vamos a utilizar de túnel o proxy con el respectivo puerto que utiliza para ssh (Por defecto es el 22). Se escoge la opción de SSH, y se le asigna un nombre en el campo de texto debajo de "Saved Sessions", en este ejemplo se le nombró "PROXY" y se le da clic a "Save" para guardar estos datos de conexión:

Seguidamente, le damos load si ya teniamos guardada la sesión o simplemente continuamos, se expanden las opciones de la izquierda de "Connection", expanden además "SSH" y se le da clic a la opción "Tunnels", en esta sección se deberá agregar los puertos con las direcciones destino:
Entonces supongamos que se quiere llegar a un equipo 192.168.1.100 por medio de escritorio remoto, entonces agregamos en esta sección de "Tunnels", el "Source port" sería cualquier puerto que tengamos disponible en ese momento, para el ejemplo el 2115, y el "Destination" que sería la IP a la que queremos llegar, en este caso 192.168.1.100:3389, se agregó ":3389" ya que este es el puerto que utiliza por defecto el Remote Desktop. Ya cuando definimos esto se le da clic a "Add", y si se quieren guardar los cambios se van a "Session" en donde se hizo el primer paso y se le da nuevamente clic al botón "Save".
Aprovechando que estamos en "Session", le damos open y nos logueamos al equipo que nos sirve de túnel

Por último para utilizarlo con el equipo de túnel logueado, abrimos el cliente de escritorio remoto y en la dirección del equipo ponemos localhost:2115 que fue el puerto que se asignó a ese tunel.
Si se quiere agregar más equipos a este mismo túnel se repite el paso 2 de agregar puertos a este túnel.

Muchas gracias a mi hermano Fabio Chavarría por explicarme como hacer esto en Windows

lunes, 9 de diciembre de 2013

[SOLARIS] Comando para ver información del sistema

Otra entrada vieja de mi wiki, que me es útil de vez en cuando, no me encuentro con equipos solaris muy a menudo jeje
Comando:

 /usr/platform/`uname -i`/sbin/prtdiag

Ejemplo de output del comando:
 System Configuration: Sun Microsystems  sun4u Sun Fire V210
System clock frequency: 167 MHZ
Memory size: 2GB        

==================================== CPUs ====================================
              E$          CPU                    CPU
CPU  Freq      Size        Implementation         Mask    Status      Location
---  --------  ----------  ---------------------  -----   ------      --------
0    1002 MHz  1MB         SUNW,UltraSPARC-IIIi    2.4    on-line     MB/P0
1    1002 MHz  1MB         SUNW,UltraSPARC-IIIi    2.4    on-line     MB/P1

================================= IO Devices =================================
Bus     Freq  Slot +      Name +
Type    MHz   Status      Path                          Model
------  ----  ----------  ----------------------------  --------------------
pci     66    MB          pci108e,1648 (network)                           
              okay        /pci@1f,700000/network@2

pci     66    MB          pci108e,1648 (network)                           
              okay        /pci@1f,700000/network@2,1

pci     33    MB          isa/su (serial)                                  
              okay        /pci@1e,600000/isa@7/serial@0,3f8

pci     33    MB          isa/su (serial)                                  
              okay        /pci@1e,600000/isa@7/serial@0,2e8

pci     33    MB          isa/rmc-comm-rmc_comm (seria+                    
              okay        /pci@1e,600000/isa@7/rmc-comm@0,3e8

pci     33    MB          pci10b9,5229 (ide)                               
              okay        /pci@1e,600000/ide@d

pci     66    MB          scsi-pci1000,21 (scsi-2)                         
              okay        /pci@1c,600000/scsi@2

pci     66    MB          scsi-pci1000,21 (scsi-2)                         
              okay        /pci@1c,600000/scsi@2,1

pci     66    MB          pci108e,1648 (network)                           
              okay        /pci@1d,700000/network@2

pci     66    MB          pci108e,1648 (network)                           
              okay        /pci@1d,700000/network@2,1


============================ Memory Configuration ============================
Segment Table:
-----------------------------------------------------------------------
Base Address       Size       Interleave Factor  Contains
-----------------------------------------------------------------------
0x0                1GB               4           BankIDs 0,1,2,3
0x1000000000       1GB               4           BankIDs 16,17,18,19

Bank Table:
-----------------------------------------------------------
           Physical Location
ID       ControllerID  GroupID   Size       Interleave Way
-----------------------------------------------------------
0        0             0         256MB           0,1,2,3
1        0             1         256MB           
2        0             1         256MB           
3        0             0         256MB           
16       1             0         256MB           0,1,2,3
17       1             1         256MB           
18       1             1         256MB           
19       1             0         256MB            

Memory Module Groups:
--------------------------------------------------
ControllerID   GroupID  Labels         Status
--------------------------------------------------
0              0        MB/P0/B0/D0    
0              0        MB/P0/B0/D1    
0              1        MB/P0/B1/D0    
0              1        MB/P0/B1/D1    
1              0        MB/P1/B0/D0    
1              0        MB/P1/B0/D1    
1              1        MB/P1/B1/D0    
1              1        MB/P1/B1/D1

[LINUX] Comando CHMOD para cambiar permisos

Esta entrada es viejita, pero siempre me recuerda como funcionan los permisos en sistemas UNIX, además que voy a dejar de pagar mi sitio y estoy re-escribiendo cosas de mi wiki jeje

Para cambiar el los permisos a uno o varios archivos, se ejecuta el comando chmod ### donde # son números del 1 al 7, y donde el primero representa los permisos del usuario, el segundo el grupo y el tercero representa a otros.

Estos valores son la suma de los siguiente permisos que se quieren asignar:
  • 1 ejecución
  • 2 escritura
  • 4 lectura 
Ejemplos:
Si se quiere asignar permisos de ejecución + escritura + lectura se asigna un 7:

 1   +    2    +    4   =   7

Si todos (usuario, grupo y otros) tienen permiso a ejecución + escritura + lectura entonces se ejecuta el comando:

 chmod 777 nombre_archivo 

*Nota: nunca deberían de utilizar permisos 777 sobre ficheros importantes, quieren simplificar la administración y darle permisos a todos, mejor usen Windows jeje

Si se quiere asignar permisos de ejecución + lectura se asigna un 5:

 1   +    4             =   5

Si el usuario tiene todos los permisos, el grupo y otros tienen ejecución + lectura entonces se ejecuta el comando:
 chmod 755 nombre_archivo

Para solo escritura 2:
 chmod 722 nombre_archivo

Además si desean realizar cambios en permisos sobre un directorio y todo su contenido simplemente agregan -R al comando:
 chmod -R 755 directorio