abril 15, 2024

BitCuco

¡Hola Mundo!

SSH, SCP, Nmap: Paquetes de Software de Consola

ssh

Hola amigos, el día de hoy haremos una reseña de los mejores paquetes de software para la consola: ssh, scp, nmap y otras herramientas.

Como a mas de uno quizás ya le haya pasado, cuando trabajamos no siempre podemos hacerlo desde el entorno gráfico. Por varias razones, siempre debemos recurrir a la consola.

Y esto tiene una cierta lógica. Muchas veces porque no encontramos alguna forma de realizar tareas desde el entorno gráfico, y otras, por simple comodidad. Aunque parezca que la consola es algo para usuarios muy avanzados, esto no es del todo real. Y tampoco es compleja.

Una vez que nos acostumbramos a trabajar con ella, mucha de las tareas cotidianas en sistemas, las realizamos directamente por consola. Y esto, independientemente de si tenemos o no un servidor gráfico.

En las tareas de cualquier administrador de sistema o usuario un poco mas avanzado, la consola siempre esta presente. Desde ella podremos realizar desde tareas simples, como la edición de archivos de texto, hasta tareas mucho mas avanzadas.

Los paquetes de software disponibles nos permitirán hacer cualquier tipo de tarea. Encontraremos diferentes paquetes de software para todos los gustos. Desde análisis de redes, transferencia de archivos, editores de texto, y muchas herramientas para información general del sistema.

A lo largo de esta nota, iré comentando sobre los paquetes de software que considero esenciales e importantes para el trabajo. No solo comentaré para que sirve cada comando, sino que ademas daré ejemplos de uso de los mismos. Hecha esta pequeña introducción, comencemos!

Paquetes de Software: Categorías

Lo primero que haremos es ir segmentando por categorías los diferentes paquetes de software. Y esto es para tratar de agrupar y dividir los diferentes usos. Que un paquete de software sea para la consola, no significa que la finalidad sea la misma.

Es por tal motivo que lo iremos segmentando dependiendo el uso de cada uno. Vale mencionar que todos estos paquetes de software están disponibles en la mayoría de distribuciones GNU/Linux, desde la robusta Debian hasta otras como la conocida Ubuntu.

Redes y Conectividad

En esta categoría hablaremos de las principales herramientas para realizar diferentes tareas en redes: ssh, scp y nmap, que sirven desde conseguir información hasta realizar diferentes tipos de análisis.

Con estos comandos podremos obtener diferente información, realizar pruebas de conectividad, transferir archivos a través de la red, entre otras cosas.

SSH

El primer comando del que voy a hablar es ssh. Este comando, muy utilizado por aquellos que se conectan a servidores, es uno de los más interesantes.

En una nota anterior hemos hablado de los diferentes servicios VPS. Para poder conectarse a estos servicios, deberemos conocer como manejarnos con SSH. La sintaxis del comando es relativamente simple, y el comando que pondré a continuación, aplicará para la gran mayoría de casos:

ssh usuario@dominio/ip -p XXXXX

Analizando la sintaxis del comando, ssh es el comando, y seguido a esto pondremos las credenciales de autenticación. Las credenciales me refiero al nombre de usuario y obviamente a la dirección de la máquina, que puede ser un FQDN (dominio) o una dirección IP.

A su vez, podremos detallar el puerto de conexión. SSH utiliza el puerto 22, y si la máquina donde nos vamos a conectar utiliza dicho puerto, no hace falta colocar el parámetro -p. Sin embargo si el puerto se ha cambiado en sshd_config, podemos especificar el puerto en ssh.

Como ejemplo conectaremos vía ssh a un servidor cuyo dominio o FQDN es vps-1840677-x.dattaweb.com y utilizaremos el usuario root en el puerto 5123.

ssh [email protected] -p 5123
ssh scp
Ejemplo de uso del comando SSH

Si es la primera vez que nos conectamos, ssh nos dará una alerta que no es un host conocido. Aceptándolo, para los próximos inicios de sesión, no tendremos que indicarle nuevamente de hacerlo, dado que estará recordado.

En la imagen anterior vimos como es la salida de ssh una vez autenticado el usuario en el sistema, proporcionando un acceso remoto al servidor, igual que el existente al utilizar la herramienta PuTTY en Windows.

SCP

Quizás muchos de ustedes no conozcan el comando scp, y fue hasta hace poco que lo comencé a utilizar, dado que la situación me llevo a eso. Como bien sabemos, cuando conectamos a un servidor, tenemos diferentes formas de acceder a la información en el y transferirla desde y hacia nuestro equipo físico.

Una de las más conocidas y simples, es utilizar el administrador de archivos disponible en los servicios contratados. Otra de las formas clásicas, y quizás la mas utilizada, es transferir archivos por FTP o SFTP, siendo éste último comparable con la seguridad de scp.

Ahora, al conectarnos por ssh, ¿nunca se han preguntado como descargar un archivo? En un servidor VPS completamente vacío, sin nada adicional, ¿De que forma transferimos los archivos? La respuesta a esta pregunta, ya deben saberlo, es con SCP.

SCP nos permitirá transferir archivos desde el servidor hacia nuestro equipo y viceversa. Su sintaxis no es para nada compleja. Les mostraré a continuación como hacer para transferir desde y hacia nuestro equipo local:

scp -P XXXXX /ruta/al/archivo.txt usuario@dominio/ip:/ruta/destino

Esta es la sintaxis para transferir archivos desde nuestro equipo hacia al servidor usando scp.

Como pueden, se debe indicar el puerto en caso que sea diferente al 22, luego la ruta al archivo que queremos transferir, y por último, las credenciales para loguearnos en el servidor. Como ejemplo, voy a transferir un archivo hacia mi servidor:

scp -P 5123 Documentos/Web.pdf [email protected]:/root

De esta manera, transferimos el archivo Web.pdf desde nuestro equipo local a la carpeta /root del servidor. Ahora lo que haremos es traer ese archivo hacia nuestro equipo local con la misma sintaxis de scp, invertido el origen y destino:

scp -P 5123 [email protected]:/root/Web.pdf Escritorio/
scp ssh
Ejemplo de uso de SCP

En este otro ejemplo, básicamente invertimos el comando, poniendo primero la dirección y ruta al servidor, y luego la ruta local. A continuación les dejo una imagen. Recuerden que les pedirá la contraseña cada vez que hagan una transferencia con scp.

Nmap

Mas de uno habrá escuchado hablar de Nmap. Nmap es una completa herramienta de análisis de puertos. Inicialmente fue creado para Linux, pero hoy en día es multiplataforma.

Nmap es una herramienta muy potente a la hora de analizar sitios web o servidores, y poder ver los puertos que tenemos abiertos, servicios, entre otras cosas. Esto nos sirve para poder tomar las medidas necesarias de seguridad acorde a los resultados obtenidos.

Además Nmap es una herramienta muy completa, y nos ofrece infinidad de combinaciones para que ajustemos los escaneos a nuestra necesidad. Para listar las diferentes opciones, utilizaremos el siguiente comando:

nmap —help

Como podemos ver en la salida de la imagen a continuación, la combinación de argumentos de Nmap es mas que completa, y se ajusta a todo tipo de necesidades. Nosotros vamos a hacer, a modo de ejemplo, un escaneo de puertos, activando también traceroute, detección de sistema operativo y script. La sintaxis sería la siguiente:

nmap -v -A sitio.com
nmap
Nmap

El argumento -A activará todo lo relativo a detección de sistema operativo, traceroute y demases. En cuanto al argumento -v, se refiere a verbosity, es decir, el nivel de detalle que va a mostrar nmap en pantalla.

Con las diferentes combinaciones de argumentos, podremos ajustar todo tipo de escaneo a nuestras necesidades. Nmap es una herramienta muy útil para cualquier administrador de sistemas.

Ping, Nslookup, Netstat: Comandos de red más populares

Para ir cerrando la parte de redes y conectividad, haré una breve reseña de los comandos esenciales para trabajar con redes. Estos comandos nos permitirá diagnosticar diferentes escenarios y ayudarnos con nuestras tareas esenciales de red. Vamos a mencionarlos:

  • ping: no hay mucho que aclarar en este comando, lo habrán utilizado cientos de veces. Sirve para probar conectividad con otra dirección, sea LAN o WAN. Ejemplo: ping dominio.com o X.X.X.X (dirección IP).
  • nslookup: esta utilidad nos permite ver si los DNS estan resolviendo correctamente los nombres y direcciones ip. Ejemplo: nslookup dominio.com
  • traceroute: este comando sirve para mostrar las posibles rutas o caminos de los paquetes hacia un determinado servidor. Muestra el camino que realiza antes de llegar a destino. Ejemplo: traceroute dominio.com o X.X.X.X (dirección IP).
  • ip: el comando ip nos permitirá ver la información de nuestra red. Mediante la utilización de argumentos, nos mostrará la información que le solicitemos. Por ejemplo, si queremos saber nuestra dirección ip local, escribiremos ip address. Este comando reemplaza a los conocidos ifconfig e iwconfig.
  • netstat: este comando nos permite ver las conexiones activas de nuestro equipo, tanto entrantes como salientes. La utilización de este comando puede ser ampliada y ajustada con diferentes argumentos, los cuales podremos utilizar ejecutando netstat —help.

Creo que con esto finalizamos la sección de redes y conectividad. Claro que es imposible nombrar todas las utilidades disponibles, pero creo que estas son las mas útiles para el día a día de un usuario promedio. De todas formas, como siempre digo en cada articulo, los invito a dejar en los comentarios lo que consideren que este faltando.

netstat nmap
Netstat

Información del Sistema

En esta sección veremos los comandos mas importantes a la hora de ver información de nuestro sistema. Les mostraremos como ver los procesos, la memoria utilizada, la cantidad de espacio en disco, y mucho más.

Siempre lo principal a la hora de diagnosticar problemas, es conocer a detalle donde estamos trabajando y con que. Con esto quiero decir, que antes de sacar conclusiones apresuradas ante una eventual falla, tenemos que tener toda la información en la mano, para saber por donde comenzar.

Me ha pasado de ver colegas que muchas veces, se han “matado” buscando una solución para algo, y luego resultó ser algo mucho mas simple de lo que parecía.

Esto es porque en ciertos casos, por hacer las cosas mas rápido, terminamos no haciendo lo primero, que es saber donde estamos parados. En esta sección hablaré de los comandos para poder visualizar toda la información importante acerca del equipo donde estamos trabajando.

Inxi

Para quienes no lo conozcan, inxi es una completa herramienta de información del sistema. No es un simple comando, sino que se trata de un script escrito en bash que nos permitirá obtener información completa de todo nuestro equipo.

Es similar a lo que obtendríamos corriendo Aida en un equipo con sistema Microsoft Windows. Inxi tiene una gran cantidad de argumentos que nos permitirán ajustar la información que queremos visualizar.

Si solo ejecutamos inxi, obtendremos información básica de nuestro equipo, como el tipo de procesador y velocidad, la versión del kernel en ejecución, el uptime del equipo, cantidad de memoria ram, espacio en disco, entre otras cosas.

Utilizando los argumentos de inxi, que los podemos utilizar ejecutando inxi —help, podremos ver todas las posibilidades. Como ejemplo para este comando, lo ejecutaremos de la siguiente forma:

inxi -F

De esta manera, obtendremos toda la información general relevante para la mayoría de usuarios. Obtendremos información de nuestro sistema, tipo de equipo, y todo lo relativo a procesador, redes, audio, video, pero con un nivel de detalle mayor al comando inxi sin argumentos.

inxi paquetes de software
Inxi

Free, top, cat: Comandos de información útiles

En esta sección, así como hice en la sección de redes, es tratar de agrupar los comandos de información de sistema lo mas breve posible. Dentro de ellos listaré los mas utilizados, o aquellos que nos servirán mas para el día a día.

  • free: el comando free nos mostrará información sobre la memoria del sistema. Podremos ver la memoria utilizada, la libre, y la que esta en cache. La forma de utilización mas util es con el argumento -h.
  • lsblk: con este comando listaremos todas las particiones de un disco, y nos mostrará la información como si fuese un arbol. Solo nos indicará el punto de montaje y el espacio que tiene cada partición.
  • top: con top podremos ver la información de todos los procesos que se encuentran corriendo en nuestro sistema. También nos brinda información sobre la memoria al igual que free.
  • cat: el comando cat nos permitirá visualizar el contenido de cualquier archivo del sistema. Un ejemplo del uso de este comando, es ejecutando cat /proc/cpuinfo. Con este comando obtendremos información a detalle de nuestro procesador.
paquetes de software
Comandos de información

Conclusiones – ¿Me servirán ssh, scp y nmap?

Como pueden ver, es posible trabajar desde la consola sin necesidad de entorno gráfico, gracias a las poderosas herramientas que Linux nos ofrece, entre ellas, ssh, scp, nmap, netstat, entre otras. Claro que todo depende de la situación y de lo que es mas cómodo para cada uno.

En el mundo GNU/Linux, nos encontraremos con opciones como la poderosa openSUSE, que trae a YaST, y nos permitirá básicamente prescindir de toda la utilización de la consola. Pero la realidad, es que siempre estamos atados a ella, y no lo digo porque sea algo malo.

Al contrario, nos permite con un simple comando ver mucha información, sin necesidad de recurrir a otros métodos.

Prometo realizar otra nota donde ampliaremos toda esta información, dado que es imposible hablar de todos los paquetes de software. Es un mundo muy amplio y hay para todo tipo de tareas. Espero la nota haya sido de su agrado. Nos vemos la próxima.