Si está cuidando la seguridad de los sistemas Linux, estos son los comandos que debes conocer.

Hay muchos aspectos de la seguridad en los sistemas Linux, desde la configuración de cuentas hasta la garantía de que los usuarios legítimos no tengan más privilegios de los que necesitan para realizar su trabajo. Este es un vistazo a algunos de los comandos de seguridad más esenciales para el trabajo diario en sistemas Linux.

1. sudo

Ejecutar comandos privilegiados con sudo – en lugar de cambiar de usuario a root – es una buena práctica esencial, ya que ayuda a garantizar que sólo se utiliza el privilegio de root cuando es necesario y limita el impacto de los errores. Tu acceso al comando sudo depende de la configuración de los archivos /etc/sudoers y /etc/group.

sudo adduser <nuevo_usuario>
Añadir usuario con comando sudo

Añadir usuario con comando sudo

Si ejecutas sudo y preguntas quién eres, por ejemplo, obtendrás confirmación de que estás ejecutando el comando como root.

sudo whoami
Comando sudo whoami

Comando sudo whoami

Si gestionas la configuración de sudo para los usuarios, también debes sentirte cómodo con el comando visudo.

2. visudo

El comando visudo te permite hacer cambios en el fichero /etc/sudoers abriendo el fichero en un editor de texto y comprobando la sintaxis de los cambios. Ejecuta el comando con “sudo visudo” y asegúrate de que entiendes la sintaxis.

Los privilegios pueden ser asignados por usuario o por grupo. En la mayoría de los sistemas Linux, el fichero /etc/sudoers ya estará configurado con grupos como los que se muestran a continuación que permiten asignar los privilegios a los grupos configurados en el fichero /etc/group. En esos casos, no necesitas usar el comando visudo en absoluto – sólo debes estar familiarizado con los grupos que otorgan privilegios de root de esta manera, y hacer tus actualizaciones al archivo /etc/group.

%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
%wheel ALL=(ALL:ALL) ALL

Ten en cuenta que los nombres de grupo están precedidos por el signo %.


Probablemente puedes mostrar el grupo que proporciona acceso a sudo en tu archivo /etc/group como este, ya que probablemente es uno de ellos:

egrep "admin|sudo|wheel" /etc/group
Acceso sudo a usuarios Linux

Acceso sudo a usuarios Linux

La forma más fácil de darle privilegios a alguien es añadirlo al grupo autorizado en /etc/group. Sin embargo, eso significa que pueden ejecutar cualquier comando como root. Si deseas que algunos usuarios tengan autoridad de root para un conjunto limitado de comandos (por ejemplo, añadir y eliminar cuentas), puedes definir los comandos que deseas que puedan ejecutarse a través de un alias de comando como este:

Cmnd_Alias ACCT_CMDS = /usr/sbin/adduser, /usr/sbin/deluser

Luego da al usuario o grupo la habilidad de ejecutar estos comandos usando sudo con un comando como este:

<usuario> ALL=(ALL) ACCT_CMDS
%<grupo>  ALL=(ALL:ALL) ACCT_CMDS

La primera línea permite al usuario ejecutar los dos comandos (adduser y deluser) con sudo mientras que la segunda asigna los mismos privilegios a cualquiera del <grupo> en el fichero /etc/group.

3. who y w

Los comandos who y w te muestran quién ha iniciado sesión en el sistema, aunque w muestra más información, como por ejemplo desde dónde se ha iniciado la sesión, cuándo se ha iniciado y cuánto tiempo ha estado inactivo.

w
Comando w en Linux

Comando w en Linux

Utiliza el comando “sudo update-alternatives – config editor” si no te gusta el editor predeterminado que se utiliza cuando ejecutas el comando visudo. Ofrecerá un número de editores como opciones y cambiará tu configuración.

4. last

El comando last muestra los inicios de sesión recientes de los usuarios y a menudo resulta útil cuando se intenta realizar un seguimiento de los cambios u otras actividades.

Comando last en Linux

Comando last en Linux

Este tipo de información puede ser útil para decidir si es necesario hacer un seguimiento.

5. find

El comando find se utiliza para muchos tipos de búsquedas. Cuando se trata de seguridad, es posible que busques archivos que no tengan propietarios (ni cuentas correspondientes) o que sean escribibles y ejecutables para todos. Los comandos find son fáciles de componer pero requieren cierta familiaridad con sus muchas opciones para definir lo que se está buscando.

sudo find /home -nouser
sudo find / -perm -o=wx
Comando find en Linux

Comando find en Linux

El primero de estos dos comandos encontrará archivos sin propietarios definidos actualmente. El segundo encontrará archivos que probablemente cualquiera puede ejecutar y modificar.

Ten en cuenta que la -o en el segundo comando se refiere al grupo “other” – no al propietario y no al grupo asociado con los archivos.

6. file

El comando file mira un archivo y determina qué tipo de archivo está basado en su contenido, no en su nombre. Muchos archivos (como los archivos jpeg) contienen identificadores cerca del comienzo de los archivos que los identifican.

ls -l
file <archivo.extensión>

7. which

El comando which identifica el ejecutable que se ejecutará cuando escribas su nombre. Esto no siempre será lo que crees que es. Si un troyano se ha insertado en el sistema de archivos en una ubicación que aparece en la ruta de búsqueda antes que la legítima, se ejecutará en su lugar. Esta es una buena razón para asegurarte de que tu ruta de búsqueda incluye directorios como /usr/bin antes de añadir menos ubicaciones estándar y especialmente antes de “.” (directorio actual).

which date
/usr/local/bin/date <=== probablemente no es lo que queríamos

Puedes comprobar la ruta de búsqueda de un usuario cambiando al usuario y haciéndole echo:

sudo su - <usuario>
echo $PATH
Uso del comando which

Uso del comando which

Incluso si las rutas de búsqueda de los usuarios están configuradas en un archivo de sistema como /etc/profile o /etc/bash.bashrc, pueden haber sido alteradas por la configuración local.

8. ss

El comando ss es una herramienta para investigar sockets y te permite hacer cosas como mostrar puertos de escucha y conexiones activas. Sin añadir algunas restricciones, ss va a mostrar mucha más información de la que probablemente deseas ver. Después de todo, muchas partes del sistema operativo se comunican a través de sockets. Si deseas generar una lista de conexiones o puertos de escucha establecidos (es decir, servicios disponibles para sistemas externos), los comandos de este tipo resultarán muy útiles.

Conexiones establecidas:

ss -t
ss | grep ESTAB | grep tcp
Comando ss en Linux

Comando ss en Linux

Puertos en escucha (listening):

ss -ltn

9. ufw

Si estás ejecutando un firewall en tu sistema Linux – un paso importante para controlar el acceso al sistema, los comandos utilizados para iniciar/parar, habilitar/deshabilitar, modificar y mostrar el estado o las reglas activas son críticos. Aquí hay algunos comandos de ejemplo para ufw – el “uncomplicated firewall” que encontrarás en muchos sistemas Ubuntu:


sudo ufw status verbose

El siguiente comando es para desactivar el cortafuegos/firewall.

sudo ufw disable

10. iptables

También es importante saber cómo listar las reglas del firewall para iptables. Estos comandos te proporcionarán una lista completa de las reglas de netfilter:

sudo iptables -vL -t filter
sudo iptables -vL -t nat
sudo iptables -vL -t mangle
sudo iptables -vL -t raw
sudo iptables -vL -t security

11. ip

El comando ip te permite mostrar información sobre tus interfaces de red. En el siguiente ejemplo, vemos el loopback y la interfaz pública.

ip a
Ejemplo de comando ip en Linux

Ejemplo de comando ip en Linux

12. ip route

El comando ip route mostrará tu tabla de enrutamiento:

ip route
Comando ip route en Linux

Comando ip route en Linux

13. kill, pkill & killall

Como puedes ver en “Más de una manera de matar un proceso Unix“, los sistemas Unix y Linux ofrecen una selección conveniente de comandos para terminar procesos sin importar por qué los quieres muertos. Puedes matar por ID de proceso o por nombre. Puedes matar individualmente o en grupo. En cualquier caso, los diversos comandos kill están a tu disposición y debes estar listo para usarlos cuando sea necesario. Los ejemplos incluyen:

kill 1234
pkill bad
killall badproc

14. passwd

Aunque el comando passwd es probablemente obvio cuando se trata de la seguridad del sistema, también es uno que no debería omitirse de ninguna lista de elementos esenciales de seguridad. Es importante tener una política razonable para los cambios de contraseña, especialmente a medida que los usuarios van y vienen o cambian de roles.

Sin embargo, el comando passwd no sólo se utiliza para cambiar contraseñas. También puedes utilizarlo con privilegios sudo para cambiar las contraseñas de otros usuarios, bloquear/desbloquear o caducar cuentas, comprobar el estado de la cuenta y cambiar la configuración que determina cuándo caduca una contraseña o las advertencias de contraseña de tiempo.

Comprueba la página man (man passwd) para más detalles y utiliza comandos como estos:

sudo passwd <usuario>	<== cambiar la contraseña de <usuario>
sudo passwd -e <usuario>   <== caduca la contraseña de <usuario> (la obliga a restablecerla)
sudo passwd -i <usuario>  <== deshabilita la cuenta de <usuario>

15. pwck

El comando pwck hace una especie de comprobación de integridad en tus archivos /etc/passwd y /etc/shadow – asegurándose de que los campos requeridos estén presentes, que existan archivos y directorios, etc.

sudo pwck
Comando pwck en Linux

Comando pwck en Linux

16. setfacl & getfacl

No dejes que la fácil visualización de los permisos de tipo rwxr-x--- te haga imaginar que esto es todo lo que hay para archivar permisos en sistemas Linux. Con los comandos setfacl y getfacl, puedes dar acceso a un archivo a alguien que no sea el propietario de un archivo y que no sea miembro del grupo asociado (y no quiera que lo sea).

Supongamos que deseas que <usuario> tenga acceso de lectura a un archivo que contiene las instrucciones de instalación de su ufw, pero nada más. Utiliza un comando como este para modificar la lista de control de acceso (ACL) del archivo:

setfacl -m u:<usuario>:r ufw-setup
getfacl ufw-setup

17. sestatus & apparmor

Los comandos sestatus y apparmor pueden mostrar el estado de SELinux y las herramientas apparmor que proporcionan aislamiento entre aplicaciones mediante el control de acceso obligatorio. Si estás utilizando una u otra de estas herramientas, deberías saber cómo visualizar su status.

sudo sestatus
sudo apparmor_status
Comando apparmor_status

Comando apparmor_status

También debes saber cómo iniciar y detener estas herramientas.

sudo /etc/init.d/apparmor start
sudo /etc/init.d/apparmor stop
sudo /etc/init.d/apparmor restart

y, para SELinux, lo que representan los distintos modos:

enforcing -- Se aplica la política de seguridad de SELinux
permissive -- SELinux imprime advertencias en lugar de hacerlas cumplir
disabled -- SELinux está totalmente desactivado

¿Te ha gustado este artículo? ¡Da clic aquí por favor! Sígue este blog en su fanpage de  FacebookTwitterInstagram y/o YouTube para que no te pierdas del mejor contenido informático y hacking!


¡Mantente actualizado!

Suscríbete a nuestro boletín semanal...

Suscríbete a nuestro boletín electrónico para recibir artículos útiles y ofertas especiales. No te perderás absolutamente de nada!

Enviaremos solamente boletines al email y no compartiremos tu email.