Archive for the ‘ssh’ Category

Transfiriendo archivos con openssh

November 1, 2008

SCP viene de secure copy, es una implementación de OpenSSH para realizar copias seguras a través de una red e Internet, en sustitución de rcp.

Un requisito es que la máquina a donde nos conectamos tenga un servidor de SSH activo (no importa que el cliente no). La sintaxis básica es:

scp [opciones] origen destino

Aquí aclaramos que hemos simplificado la sintaxis para facilitar la lectura, sin embargo puede ser más intrincada. cuando decimos [opciones], son los parámetros con que operamos; origen es el archivo o archivos que vamos a copiar y destino es a donde se va a copiar. Un ejemplo muy sencillo es el siguiente:

scp miarchivo.txt usuario@10.4.1.254:/home/carpeta/

En este caso, sólo tomamos un archivo local (miarchivo.txt) y lo pasamos a un servidor dentro de la LAN, donde vemos las siguientes características:

  • usuario es el nombre del usuario activo en el servidor de destino, no necesariamente tiene que ser el mismo que el que ejecuta el comando localmente.
  • @10.4.1.254 indica “en 10.4.1.254″, es posible sustituir la IP por el nombre de dominio del equipo, como por ejemplo, “miservidor.net”.
  • :/home/carpeta/ define la carpeta donde se guardaran los archivos, donde debe tener permisos el usuario del primer punto. Sírvanse notar los dos punto (:), que separan el servidor de la carpeta interna.

El caso inverso, donde copiamos un archivo remoto a nuestra máquina es:

scp usuario@10.4.1.254:/home/carpeta/miarchivo.txt /home/miusuario

En todos los casos, es necesario escribir el password del usuario remoto, en caso contrario no podrá conectarse.

Usando diferentes opciones:

:

scp -r ~/Documentos/respaldo/ usuario@10.4.1.254:/home/carpeta/

Con el parámetro -r se realiza recursivamente la copia, tomando todos los archivos y carpetas que tenemos bajo la ubicación indicada, dejando una copia en el servidor de destino con la siguiente ruta: /home/carpeta/respaldo/. Noten esta sutil diferencia:

scp -r ~/Documentos/respaldo/* usuario@10.4.1.254:/home/carpeta/

A diferencia del anterior, la ruta final será /home/carpeta/, ya que es el contenido y no la carpeta padre la que copia. Otra variación es:

scp -r -p ~/Documentos/respaldo/ usuario@10.4.1.254:/home/carpeta/

El parámetro -p mantiene la fecha, hora, usuario y privilegios de los archivos, muy util cuando clonamos la estructura de un servidor. Sino queremos ver las barritas de avance, usamos:

scp -r -q ~/Documentos/respaldo/* usuario@10.4.1.254:/home/carpeta/

Cuando lo soportan tanto por el cliente como el servidor, podemos hacer que los archivos se compacten al vuelo así:

scp -r -C ~/Documentos/respaldo/* usuario@10.4.1.254:/home/carpeta/

Si el puerto de SSH se ha cambiado digamos el 1995, hacemos los siguiente:

scp -r -P 1995 ~/Documentos/respaldo/* usuario@10.4.1.254:/home/carpeta/

Notese como -p y -p son dos parámetros diferentes. Finalmente, si tenemos un ancho de banda limitado, podemos definirlo en KB de la siguiente manera:

scp -r -l 20 ~/Documentos/respaldo/* usuario@10.4.1.254:/home/carpeta/

Algunas ventajas adicionales del uso de este comando es que es más rápido (en modo texto) que FTP en casi el 50% dado que el proceso de I/O es de archivo en archivo, no leyendo los archivos sino hasta que es su turno. Los usuarios de Windows pueden realizar este proceso mediante el programas como WinSCP. Recomendamos leer el man scp para que conozcan todas las opciones.



scp file-to-send user@host:/path/to/place/file

$ scp /etc/passwd user2@earth:
user password:
passwd 100% |*****************************| 918 00:00

scp usuario@host:directorio/ArchivoOrigen ArchivoDestino
scp ArchivoOrigen usuario@host:directorio/ArchivoDestino


Instalacion, arranque y configuracion de SSH en sistemas linux

May 22, 2008

Para instalar SSH en el equipo podemos ejecutar el siguiente

# apt-get install ssh

Para desinstalar:

apt-get remove --purge ssh

Archivos importantes:

• sshd_config: archivo de configuración del servidor SSH
• ssh_config: archivo de configuración del cliente SSH
• ssh_host_*_key: clave privada de la máquina (* puede ser rsa o dsa)
• ssh_host_*_key.pub: clave pública de la máquina (* puede ser rsa o dsa).

Arrancar el demonio SSH
Si queremos que nuestra máquina disponga de un servidor SSH debemos arranc
el servicio correspondiente. El servicio SSH se puede encontrar en el directorio /etc/ini
junto a otros muchos servicios de Linux.

También es posible encontrarlo usualmente
/usr/sbin/sshd.

Para arrancarlo basta con ejecutar el comando:

/etc/init.d/ssh start [stop | reload | force-reload | restart]

Conectarnos al servidor SSH

La aplicación cliente de SSH la encontramos normalmente en /usr/bin/ssh. Podemos
conectarnos a un servidor ssh ejecutando este comando con los siguientes parámetros:

$ ssh [nombre_usuario@]nombre_máquina

Configuracion del archivo sshd_config:

Pasemos entonces a modificar el archivo de configuración del servidor ssh:

/etc/ssh/sshd_config   (puede variar en algunas distros)

Tiene varias líneas de configuración, pero para este documento solo nos concentraremos en las que harán nuestro servidor ssh mas seguro, asi que listaré a continuación como deberán quedar estas variables y después las explicaré una por una cual es su función.

Port 432                           (o el que se quiera menor a 1024)
Protocol 2
LoginGraceTime 30
PermitRootLogin no
MaxAuthTries 2
MaxStartups 3
AllowUsers sergio o también:
AllowUsers sergio analuisa@10.0.1.100

Port: Por default el demonio ssh funciona en el puerto 22, y precisamente muchos scripts de ataques están dirigidos a este puerto, el cambiar de puerto no garantiza que el servicio ya no será localizable, de hecho con herramientas como nmap o amap es sumamente fácil descubrir que un servicio ssh esta a la escucha en otro puerto distinto al 22, pero al menos no será localizable por varios scripts que de manera automática escanean redes y en cuanto a ssh se enfocan solo al puerto 22.

Protocol 2: Hay dos versiones de ssh en cuanto a su protocolo de comunicación, la versión 1 y la versión 2. La 1 esta en desuso pero todavía se incluye por compatibilidad, tiene varias vulnerabilidades conocidas y su uso no es ya recomendable. Un error frecuente es dejar al demonio ssh que permita el uso de las dos versiones (Protocol 2,1). Para evitar el uso del protocolo 1 y sus posibles ataques a este, basta con indicar en esta línea que solo admita comunicaciones de ssh basadas en el protocolo 2.

LoginGraceTime 30: El número indica la cantidad de segundos en que la pantalla de login estará disponible para que el usuario capture su nombre de usuario y contraseña, si no lo hace el login se cerrará, evitando así dejar por tiempo indeterminado pantallas de login sin que nadie las use, o peor aun, que alguien este intentando mediante un script varias veces el adivinar un usuario y contraseña. Aqui conviene identificar en nuestros usuarios el tiempo promedio que tardan en ingresar su usuario y contraseña y darles unos cuantos segundos más de margen por los usuarios lentos para que ingresen sus credenciales. Si somos el único usuario del sistema considero que con 20 o 30 segundos es mas que suficiente.

PermitRootLogin no: Esta es quizás la más importante directiva de seguridad que podemos indicar para fortalecer nuestro servidor ssh. Prácticamente todos los sistemas Linux y Unix crean por default al usuario root, entonces sabemos que existe!!!. Muchos ataques de fuerza bruta se concentran en atacar al usuario root con la esperanza de que tenga una contraseña débil (¡que es mas común de lo que pensamos!).
Entonces si ya sabemos una parte de la ecuación (root) solo será cuestión de tiempo para que alguien con paciencia y suerte vulnere el sistema. Al poner en ‘no’ la variable PermitRootLogin el usuario root no tendrá permiso de acceder mediante ssh y por lo tanto cualquier intento de ataque directo a root será inútil. Con esto siempre tendremos que ingresar como un usuario normal y ya estando adentro entonces mediante su o sudo podremos usar funciones de root, no problem. Ahora bien, para el nombre de login del usuario normal te recomiendo que también NO uses palabras conocidas como: admin, manager, juan, pedro, sistemas, etc. Usa algo mas dífcil de adivinar como jgon (de juan gonzález) o sispat (de sistemas pato) o mejor aun también puedes combinar algún guión bajo o mayúsculas, minúsculas y números en la cuenta de login. Con lo anterior el hacker tendrá que atinarle o crackear tanto al nombre del usuario como su contraseña.

MaxAuthTries 2: El número indica la cantidad de veces que podemos equivocarnos en ingresar el usuario y/o contraseña, en este caso después de dos intentos, se perderá o cerrará la conexión. Claro, es totalmente posible volver a intentarlo, pero como son dos intentos por vez, evitaremos ataques basados en la persistencia de la conexión, como se perderá al tercer intento de conexión, el ataque cesará.

MaxStartups 3: El número indica la cantidad de pantallas de login, o cantidad de conexiones simultaneas de login que permitirá el sshd por ip que intente conectarse. Hay ataques muy efectivos que dividen el ataque en decenas y puede ser que en cientos (si el sistema atacado lo permite) de conexiones de login. Es decir, el ataque divide en una gran cantidad de logins los intentos por ingresar, aumentando sus posibilidades de más rapidamente adivinar al usuario y contraseña. Con esta directiva limitamos a tan solo 3 pantallas de login. Que quede claro, una vez logueados en el sistema, es posible tener mas de 3 terminales de ssh, se refiere exclusivamente a pantallas de login.

AllowUsers: En sistemas donde se tiene varios usuarios, quizás existan varios que solo pueden acceder desde la LAN por ejemplo, o quizás solo desde ciertos equipos. O incluso que solo desde su PC puedan trabajar en Linux por lo que no hay razón para que se conecten remotamente via ssh. Con esta directiva podemos indicar los usuarios que pueden ingresar via ssh. Si solo indicamos al usuario:

AllowUsers sergio

El usuario sergio podrá ingresar desde cualquier PC en cualquier lugar, no se está validando el host.
Si se quiere mas seguridad, es posible indicar también el host mediante el símbolo @

AllowUsers sergio@192.168.0.25     (solo desde la IP indicada)
AllowUsers sergio@192.168.0.* (Toda la red indicada)
AllowUsers sergio@*.pato.com analuisa@ventas.pato.com
(sergio desde cualquier equipo del dominio indicado, analuisa solo desde el equipo indicado)

winscp cliente sftp de transferencia de archivos

May 5, 2008

http://winscp.net/eng/docs/lang:es

WinSCP es una aplicación de Software Libre. WinSCP es un cliente SFTP gráfico para Windows que emplea SSH. El anterior protocolo SCP también puede ser empleado. Su función principal es facilitar la transferencia segura de archivos entre dos sistemas informáticos, el local y uno remoto que ofrezca servicios SSH

Otro cliente ssh

April 1, 2008

http://www.ssh.com/

No esta nada mal ya que permite transferencia de archivos (download como upload), lo unico malo es pago.

SSH para windows

February 25, 2008

FreeSSH Server: FreeSSH Server puede instalarse en Windows NT version 4.0, Windows 2000 y XP. Para conectarnos al ordenador remoto necesitamos un cliente SSH como Putty. Este ultimo se puede bajar como un .exe y ser ejecutad sin mayores problemas.

FreeSSH: http://freesshd.com/index.php

Putty: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

OpenSSH for windows:

http://sshwindows.sourceforge.net/


Follow

Get every new post delivered to your Inbox.