La idea de esta práctica no se basaba ni en crear la máquina virtual, ni en instalar Ubuntu Server, eso lo puede hacer cualquiera. Lo que queremos es experimentar, aprender y trastear. En este caso es para hacer una auditoría de usuarios y grupos del sistema.
¿Qué es lo primero que he hecho hoy? Como me molestaba el tema de que se iniciaba cloud-init automáticamente, pero no sé si lo utilizaré un dia, no lo voy a borrar. Simplemente vamos a crear un archivo en la carpeta donde se guardan las "instrucciones" del programa que es la carpeta /etc/cloud(en este caso), creamos un archivo que le diga al programa que se desactive cloud-init.disable, con sudo touch /etc/cloud/cloud-init.disabled. Y el día que lo quiera usar, simplemente tendré que borrar éste archivo.(Arreglado)
Antes que nada yo también estoy aprendiendo a crear scripts mientras hacemos esto. He encontrado un script y estoy buscando qué significa, a ver si lo podemos entender y después usarlo el día que lo necesitemos. Lo creamos en /usr/local/bin/ y le damos el título de audit-users.sh. Dice así:
Lo he recortado del archivo directamente para no subirlo con errores y ya lo he comprobado para ver si funciona :D...
$!/bin/bash Es la manera que le decimos al sistema cómo interpretar el script, le comunicamos, ejecuta éste texto usando Bash.
echo es un comando que imprime texto en la consola, ¿Qué "imprime"? Pues lo que está entre comillas que es lo que describe en cada línea (ya sea Usuarios Sistema, Cuentas sin contraseña....) y si esta linea lleva -e, es la manera de interpretar algún texto en este caso queremos que interprete a \n que hace un salto de línea. Digamos que estas líneas "echo" ayudan a la descripción a la hora de emprender el script.
A continuación: awk -F: '$3 < 1000 {print $1} /etc/passwd. Qué hacemos? awk sirve para procesar texto y analizarlo.-F: Indica que cada línea se divide en :(dos puntos).$3 es el tercer campo de la línea en /etc/passwd, qué hay en /etc/passwd? Es dónde se encuentran los usuarios y algunos Sistemas/ Servicios. Que si entramos en el archivo vemos una estructura de usuario:contraseña:UID:GID:comentario:home:shell.
(Ah y se me olvidaba que hemos instalado nano. sudo apt update && sudo apt install nano. Todo esto para que veamos el archivo antes de realizar el script).
Entonces con la línea en el script, solicitamos todos los "usuarios del sistema" que tengan un UID menor de 1000 en la tercera línea. Y finalizamos ésta línea con: {print $1}, que significa que si cumple la condición anterior entonces imprime la primera palabra hasta : en el archivo /etc/passwd. La frase completa es: awk -F: '$3 <1000 {print$1}' /etc/passwd. Los usuarios que marcan 1000 o más, son usuarios humanos.
Siguiente línea después de su descripción es para cuentas que no tienen contraseña, las contraseñas se guardan cifradas, pero queremos saber si cumplen el siguiente patrón si en la segunda columna entre dos puntos en el archivo /etc/shadow está vacío, se mostrará: awk -F: '($2 == "") {print $1}' /etc/shadow.
Tercera y definitiva, getent group | awk -F: '$4 {print $1}' | grep -v '^$'. Ésta es muy diferente a las demás usa getent group, que lista todos los grupos en el sistema. Y volvemos al patrón parecido con awk -F: porque también se lista en columnas de :. El cuarto campo de este archivo es la lista de los miembros del grupo, por ejemplo, nombre del grupo_:contraseña:GID:miembrosdelgrupo. Si ponemos !$4 (si el campo 4 está vacío) y con grep -v '^$' eliminamos las líneas vacías que pueden aparecer en la salida del script.
Entonces con la línea en el script, solicitamos todos los "usuarios del sistema" que tengan un UID menor de 1000 en la tercera línea. Y finalizamos ésta línea con: {print $1}, que significa que si cumple la condición anterior entonces imprime la primera palabra hasta : en el archivo /etc/passwd. La frase completa es: awk -F: '$3 <1000 {print$1}' /etc/passwd. Los usuarios que marcan 1000 o más, son usuarios humanos.
Siguiente línea después de su descripción es para cuentas que no tienen contraseña, las contraseñas se guardan cifradas, pero queremos saber si cumplen el siguiente patrón si en la segunda columna entre dos puntos en el archivo /etc/shadow está vacío, se mostrará: awk -F: '($2 == "") {print $1}' /etc/shadow.
Tercera y definitiva, getent group | awk -F: '$4 {print $1}' | grep -v '^$'. Ésta es muy diferente a las demás usa getent group, que lista todos los grupos en el sistema. Y volvemos al patrón parecido con awk -F: porque también se lista en columnas de :. El cuarto campo de este archivo es la lista de los miembros del grupo, por ejemplo, nombre del grupo_:contraseña:GID:miembrosdelgrupo. Si ponemos !$4 (si el campo 4 está vacío) y con grep -v '^$' eliminamos las líneas vacías que pueden aparecer en la salida del script.
Después de guardar éste archivo, escribimos la siguiente orden: sudo chmod +x /usr/local/bin/audit-users.sh. Ésto le da los permisos al archivo y lo hace ejecutable. Si lo abrimos veremos:
También podríamos hacer un log automático y con el día en el que éstamos con poniendo en nuestra consola(en el directorio /var/log):
Comentarios
Publicar un comentario