Comandos de información del sistema en Linux

Existen una serie de comandos que nos dan información sobre el estado de nuestro sistema operativo Linux. Son los siguientes abajo listados:

  • date: muestra la fecha y hora actuales.
  • cal: muestra el calendario de este mes.
  • uptime: muestra el tiempo que lleva el equipo funcionando.
  • w: muestra quién está en línea.
  • whoami: muestra con qué usuario estás conectado al sistema.
  • uname -a: muestra la configuración del kernel.
  • cat /proc/cpuinfo: muestra información detallada sobre la CPU.
  • cat /proc/meminfo: muestra información detallada sobre la memoria del equipo.
  • man nombre_de_comando: muestra el manual de uso de un comando.
  • df: muestra el espacio usado del disco.
  • du: muestra el espacio usado del directorio.
  • du -sh: muestra el espacio usado del disco en un formato más legible, en Gigas.
  • whereis aplicación: muestra dónde están los binarios, documentación o código de una aplicacion.
  • which aplicación: muestra las rutas de los ficheros que serán ejecutados si llamamos a ejecución dicha aplicación.
Anuncios

Shred: Borrado seguro en Linux

Con las herramientas forenses adecuadas no es complicado recuperar los datos que han sido borrados de un disco duro siguiendo el procedimiento normal. Con vaciar la papelera de reciclaje no basta para borrarlos totalmente, ya que esos datos simplemente han sido desindexados, pero permanecen en el disco y son recuperables. ¿Hay una forma de hacer esto sin recurrir a métodos tan drásticos como la destrucción del disco duro?

Sí, para todos los sistemas operativos hay programas de borrado que permiten realizar una eliminación más intensiva de los ficheros. Hoy nos centraremos en sistemas Linux y en el software de borrado seguro Shred.

Shred viene instalado por defecto en varias distribuciones, su sintaxis es shred [opciones] nombre de fichero y puede ser invocado usando las siguientes opciones:

  • f: Force. Cambia los permisos del archivo para forzar su borrado.
  • n: Número de veces que se sobrescribirá el archivo o partición (por defecto son 3). A mayor número, más difícil será la recuperación y más tiempo tardará. Hay que poner el número de escrituras después del parámetro
  • u: Trunca y elimina el archivo después de sobrescribirlo.
  • v: Muestra el progreso en pantalla.
  • z: Zero, sobreescribe con 0 para eliminar rastros.

 
Veamos un ejemplo, donde borraríamos un fichero llamado prueba.ls de forma contundente:

shred -n 15 -fuzv prueba.ls

De esta forma le decimos que elimine el fichero sobreescribiendo 15 veces, forzando el borrado, truncando y eliminando, sobreescribiendo con ceros y mostrando el progreso en pantalla. La recuperación del mismo tras esto puede que no fuera imposible, pero sí extremadamente compleja.

Script de Linux para controlar el uso de memoria

Una entrada rápida: Un script de linux para controlar el uso de memoria en Linux, que además envía un email a la cuenta que le digamos.

#!/bin/bash
while [ true ] ;do
used=`free -m |awk 'NR==3 {print $4}'`
 
if [ $used -lt 900 ] && [ $used -gt 700 ]; then
echo "Uso elevado de memoria, hay menos de 900 megas libres." | /bin/mail -s "USO ELEVADO DE MEMORIA" micuenta@midominio.com
 
 
fi
sleep 5
done

Instalar Microsoft ODBC 17 para SQL-Server en Ubuntu 17.10

Una entrada rápida ¿Cómo se instala el driver ODBC 17 para SQL-Server de Microsoft en un equipo con Ubuntu? No es algo muy habitual usar SQL-Server en Linux, pero por si os interes la cosa va así:

sudo su 
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -

#PARA OTRA VERSIÓN
#CAMBIA EL 17.10 DE LA URL
#POR LO QUE CORRESPONDA
curl https://packages.microsoft.com/config/ubuntu/17.10/prod.list > /etc/apt/sources.list.d/mssql-release.list

exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql
# LO SIGUIENTE ES PARA LOS COMANDOS bcp Y sqlcmd
# ES OPCIONAL PERO MUY RECOMENDABLE
sudo ACCEPT_EULA=Y apt-get install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# PARA LOS ENCABEZADOS unixODBC
# ES OPCIONAL, PERO DE NUEVO RECOMENDABLE
sudo apt-get install unixodbc-dev

Linux: script para crear usuarios automáticamente con contraseñas aleatorias desde una lista dada en CSV.

Vamos con un script para automatizar tareas. Tenemos un CSV, le llamaremos user.csv, con los siguientes datos: Nombre, Primer Apellido y Usuario. Algo tal que así

Manuel,Garcia,ManuG1
Pedro,Rodriguez,PredroR2
Maria,Abalo,MariaA45
Josefa,Perez,JosefP21
Marta,Rios,MartaR91

La idea del script es la siguiente: recorre el fichero csv y crea a los usuarios con ese nombre y apellido y ese código de usuario. Asigna una contraseña generada de forma aleatoria y redirige la salida a un fichero para poder notificar a los usuarios creados su usuario y contraseña.

#!/bin/bash

OLDIFS=$IFS
IFS=","

while read firstname lastname userid 
do 
     PS=$(openssl rand -base64 12)   
     useradd -c "${firstname} ${lastname}" -p $PS -d /home/"${userid}" -s /bin/bash "${userid}"            
     echo "Usuario: ${userid} - Contraseña: $PS ....." >> resultado.txt 
done < user.csv

La opción de crear los usuarios con contraseña no es recomendable en todos los ámbitos por temas de seguridad, lo he hecho en este caso porque el ejemplo real en el que lo hice lo había requerido así el cliente, pero según la política y el contexto de seguridad no es algo recomendable en todos los casos porque podrían ser vistas por algún usuario no autorizado, así que aunque la generes así es mejor obligar a los usuarios a cambiarla. Para crearlo sin contraseña en la instrucción useradd quita el parámetro -p $PS, la línea de encima que genera el password (que ya sería inútil) y el $PS en la salida.

Hacer que un fichero en Linux no pueda ser borrado ni modificado.

A veces nos interesa que en nuestro sistema Linux haya algún fichero inmutable, que no pueda ser borrado o modificado incluso aunque se intente con permisos de superusuario. ¿Es posible? Sí, con el comando chattr y usando la opción +i. Por ejemplo:

chattr +i nombre_del_fichero

Si lo aplicamos a una carpeta esto haría no solo que la carpeta no pueda ser borrado o editada sino que tampoco se puedan añadir nuevos ficheros a la misma o borrarlos, pero sí se podrían editar estos ficheros. ¿Se puede hacer que estos tampoco puedan ser editados? Sí, habría que aplicar el comando de forma recursiva sobre la carpeta para que afecte a todo lo que esta contiene:

chattr +i -RV nombre_de_carpeta

¿Y para quitar este flag y poder borrarlo o editarlo? En lugar de +i se usa -i:

chattr -i nombre_del_fichero

¿Esto tiene alguna utilidad? Pues sí. Por ejemplo podéis hacer que el fichero de usuarios o de contraseñas del sistema sea inmutable, de forma que nadie podría darse de alta sin antes modificar los permisos del fichero para ello, dando un punto extra a la seguridad.

Mostrar asteriscos en la consola de Mac o de Linux al escribir una contraseña

Una de las cosas que más despistan cuando se empieza a trabajar con la línea de comandos de sistemas operativos basados en UNIX es que al poner una contraseña no se muestra nada. La parte buena es que si tenemos a alguien mirando por encima de nuestros hombros no le damos una pista de la longitud de nuestra contraseña, la mala es que no sabemos si hemos tecleado mal. Pero ¿se puede hacer que muestre unos asteriscos cuando la introducimos? Se puede:

Lo primero, editar el fichero de sudoers:

sudo visudo

Lo siguiente, buscar la línea que pone esto:

Defaults        env_reset

Lo tercero, modificar la línea para que luzca así:

Defaults        env_reset,pwfeedback

Esto funciona en la mayoría de linux modernos y en los Mac con OS X superior al 10.8, así que si quieres esta ayuda visual seguramente podrás disfrutarla.