Hoy hablaremos de cómo podemos configurar nuestro comando sudo, pero que es SUDO.
sudo es una utilidad que nos permite ejecutar comando con privilegios de otro usuario (lo normal es el usuario root) para el sistema Linux o Mac OSX.
Toda las acciones que realicemos con sudo quedaran registradas en principio en «/var/log/Auth.log«
Antes de pasar a explicar como configurar «/etc/sudoers» para definir los privilegios otorgados, comentaremos algunos parametros importantes de sudo:
- -l nos dará información de cómo está configurado nuestro sudoers.
- -u Ejecuta el comando con privilegio de ese usuario, debemos tener autorización en el fichero sudoers.
- -g Ejecuta el comando con privilegio de ese grupo, debemos tener autorización en el fichero sudoers.
- -e para editar el archivo con “nano”, es lo mismo que ejecutar sudo nano.
La configuración se encuentra como hemos comentado en /etc/sudoers y se recomienda editar con visudo que nos bloquea el fichero y evita que lo use otro usuario, además nos realiza un análisis del fichero al cerrarlo.
La estructura típica del fichero /etc/sudoers sera:
- Alias
- Opciones
- Reglas de acceso
Los permisos que tendrá son solo de lectura root usuario y grupo, esto es importante para evitar que si acceden con otro usuario pueda ver los permisos de los usuarios (y así conocer que usuarios atacar para obtener privilegios) o peor todavía poder escribirlo con cualquier usuario y de esta forma darse permisos de administrador.
Al final del todo tenemos un ejemplo de archivo sudoers, pero iniciamos ya la explicación con los «Alias».
ALIAS
tipo_alias nombre_alias = elemento1, elemento2, ..
Los tipos de alias son:
- User_Alias: Define usuarios o grupos si se antepone «%», en el queso de querer referirnos a todos los usuarios pondremos «ALL» y si deseamos negar alguno antepondremos «!».
- Host_Alias: Definimos los host y podran ser IPs o dominios.
- Cmnd_Alias: Define comandos.
- Runas_Alias: Igual que usuarios pero con UID si anteponemos el caracter «#·».
Opciones
Nos permite definir las características de comportamiento de sudo, y la sintaxis es la siguiente:
Defaults<nivel>opcion1, opcion2,…
Los niveles son los siguientes:
- » «: Global y afecta a todos los usuarios.
- :usuario: Afecta a un usuario especifico.
- >Runas: Afecta a comando ejecutándose con un usuario especifico.
- @equipo: Afecta a todos los usuarios de un equipo.
- !comandos: Afecta a un comando especifico.
Para una lista completa de opciones podemos leer la página oficial, y las más interesantes son:
- rootpw: Cuando nos autentificamos pide la clave de root.
- !authenticate: No requiere autentificación, puede modificarlo las etiquetas «TAGs» PASSWD y NOPASSWD.
- timestamp_timeout=x: expiración de la contraseña, un
0 se pedirá siempre. - passwd_tries=x: Reintentos de clave.
- noexec: Es como si la etiqueta NOEXEC estuviera configurada.
- umask=: Crea esa máscara en la creación de archivos.
- badpass_message=: Mensaje de error autentificación.
- logfile: Fichero donde genera LOG, por defecto syslog.
- journalctl_COMM=sudo
Reglas
Definimos las reglas de acceso del sudo
usuario host = (usuarios:grupos) [ETIQUETAS] comando1, comando2, …
El usuario podrá ser un usuario o un alias y si se antepone «%» nos referiremos a grupos. ALL es cualquier usuario.
TAGs (Etiquetas)
- PASSWD y NOSPASSWD: Obliga o no la solicituc de identificación.
- EXEC y NOEXEC: Previene la ejecución de shell desde el comando invocado, que permitiría ejecutar acciones con ese privilegio.
# ***************************************************
# www.pinguytaz.net
# Plantilla ejemplo de “sudoers”
# ***************************************************
# ****************** DEFINICION DE ALIAS *************
## Usuarios
User_Alias ADMINS = javier, usu1
#User_Alias NOU1 = ALL, !usu1
## Maquinas
#Host_Alias MIRED = 192.168.56.*
## Comandos
Cmnd_Alias ACTUALIZA = /usr/bin/apt
#Cmnd_Alias REBOOT = /sbin/halt, /sbin/reboot, /sbin/poweroff
#Cmnd_Alias NET_ADMIN = /sbin/ifconfig, /sbin/iptables
# ****************** DEFINICION DE OPCIONES *************
## La identificación es con la contraseña de root.
#Defaults rootpw
## Definimos opciones para LOG
Defaults logfile=/var/log/sudo
## Definimos el máximo numero de reintentos y mensaje que
## aparecerá.
Defaults:ALL timestamp_timeout=2. passwd_tries=1
Defaults badpass_message=”Error de contraseña”
# *************** DEFINICION DE REGLAS *************
## Permite todo a los usuarios del grupo sudo.
%sudo All=(ALL:ALL) ALL
## Se permite que el usuario javier ejecute los comandos de
## actualización sin que se les pida la clave.
# javier All=(root) NOPASSWD: ACTUALIZA
## Evita la salida al Shell desd vi usado con sudo.
ALL ALL = (ALL) NOEXEC /bin/vi