+15 COMANDOS ESENCIALES DE SEGURIDAD EN LINUX
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.
- ¿Utilizas Windows? Mira los Mejores comandos CMD utilizados en Hacking
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>
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
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
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
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.
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
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
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
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
12. IP ROUTE
El comando ip route
mostrará tu tabla de enrutamiento:
ip route
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
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
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
Comentários
Postar um comentário