Todos los usuarios de Linux en estos días estarían familiarizados con sudo comando (significa "superusuario hacer"). Necesitamos popularizar sudo haciendo cumplir en lugar de alentar a los usuarios a usar su para obtener privilegios de root para realizar tareas administrativas. Pero hay mucho más que necesita saber sobre sudo. Con la ayuda de sudo, puede ejecutar comandos fácilmente como cualquier otro usuario, ¡no solo como usuario raíz! Si sudo no se gestiona correctamente, es casi peor que simplemente compartir las credenciales de root, porque proporciona una falsa sensación de seguridad. Veamos algunas de las mejores prácticas para controlar el acceso al sistema con sudo y al mismo tiempo permitir que los usuarios sean productivos. Sepa cómo usar sudo y siga estas mejores prácticas, y luego podrá relajarse y disfrutar cada bocado de su sándwich.
Nota:Debe usar el visudo Comando para editar el archivo /etc/sudoers. ¡Cuidado al editar!
1. No permitir acceso ilimitado a usuarios con sudo
No configure sudo para permitir que los usuarios cambien a raíz o cualquier otra cuenta. En su lugar, intente configurar sudo para permitir que los usuarios ejecuten comandos específicos como los usuarios con los que necesitan operar.
Por ejemplo:existe la necesidad de que un usuario instale un software. Permítales ejecutar solo RPM o APT o YUM como root sin siquiera cambiar al usuario root como se muestra a continuación:
peter ALL =(ALL) PASSWD : /usr/bin/apt-get, /usr/bin/yum, /bin/rpm
Esto permitiría a peter para ejecutar sudo apt-get, sudo yum y sudo rpm sin ninguna contraseña, ¡pero no permitiría ningún otro comando!
2. No otorgue TODOS los privilegios de root a un usuario sudo
No use ALL mientras otorga permisos de acceso a un usuario sudo. Es uno de los errores más comunes que cometen los administradores. Esto permite a los usuarios usar el comando su para otorgarse privilegios permanentes de raíz, evitando así las funciones de registro de comandos de sudo.
peter ALL=(ALL:ALL) ALL
Una mejor manera es otorgar acceso a archivos de programa específicos, por ejemplo:Usuario peter obtendría acceso a todos los archivos de programa en los directorios /sbin/ y /usr/sbin, más el comando /opt/oracle/check.pl.
Nota:se requiere una barra inclinada final (/) para especificar una ubicación de directorio
peter ALL=(ALL) PASSWD: /sbin/, /usr/sbin, /opt/oracle/check.pl
3. No conceda acceso ilimitado sin contraseña a los privilegios de root
Por ejemplo, piense que un intruso obtiene acceso a una cuenta de usuario, que tiene acceso sudo sin contraseña a privilegios de root. ¡Él podría hacer lo que ni siquiera podrías pensar! En su lugar, conceda acceso a un usuario a privilegios de root con contraseñas (su propia contraseña).
peter ALL=(ALL) PASSWD:ALL
Esto permitiría al usuario peter para ingresar la contraseña cada vez que usa sudo para obtener privilegios de root.
4. Utilice la directiva include para configuraciones sudo específicas
Dentro de entornos de grandes empresas, siempre es mejor mantener configuraciones de sudo específicas basadas en aplicaciones además de configuraciones locales. Por ejemplo:si desea incluir el mismo conjunto de directivas para administrar Apache y MySQL, puede dividirlo en un sudo.mysql separado. y use una directiva de inclusión para llamarlo desde el archivo sudoers principal.
#include /etc/sudo.mysql
5. Otorgue acceso a Sudo a grupos en lugar de a usuarios individuales
Por ejemplo:tener un grupo de administradores que tenga privilegios administrativos que gestione la instalación y actualización de paquetes. De esta manera, no es necesario editar el archivo sudoers cada vez que agrega o elimina un nuevo usuario. Simplemente asegúrese de que los usuarios se administren correctamente y se agreguen o eliminen del grupo de administración.
%admin ALL=(ALL) ALL
Esto permitirá a las personas del grupo admin para ejecutar todos los comandos.
6. Establezca el tiempo de espera apropiado para sudo
Sudo utiliza la función de marca de tiempo para saber cuándo fue el último comando sudo ejecutado por el usuario. Durante este período de tiempo, el usuario puede volver a ejecutar el comando sin que se le solicite la contraseña (la contraseña del usuario). Por defecto, sudo recuerda su contraseña durante 15 minutos. Una vez que caduca, se le solicita al usuario la contraseña nuevamente para volver a ejecutar el comando. Si desea cambiar el valor predeterminado, simplemente ingrese una entrada en sudoers. Por ejemplo, para establecer el valor de tiempo de espera para todos los usuarios en cualquier comando que ejecute en 5 minutos, podría usar:
Defaults timestamp_timeout=x
donde x es la expiración del tiempo de espera en minutos. Si especifica 0 (cero), siempre se le pedirá la contraseña. Si especifica un valor negativo, el tiempo de espera nunca caducará. P.ej. Valores predeterminados timestamp_timeout=5
Si necesita configurar para un usuario en particular (peter), simplemente ingrese la siguiente entrada en el archivo sudoers:
Defaults:peter timestamp_timeout=5
Esta característica no funcionará si tiene NOPASSWD en la entrada del usuario en sudoers.
7. Bloquee la ruta de los archivos binarios usando la directiva ruta_segura en sudo
Una buena práctica es bloquear a los usuarios en áreas específicas, asegurando así que los usuarios no puedan ejecutar comandos fuera de la ruta_segura. Use la siguiente directiva en sudoers, especificando secure_path :
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
8. Registre cada actividad de sudo en un archivo separado
De forma predeterminada, los comandos sudo se registran en un archivo de registro junto con otros mensajes del sistema. Esto no es aceptable para los servidores, ya que habría varios usuarios. Configure sudo para que tenga su propio archivo de registro para una fácil visibilidad del uso de sudo y las actividades de los sudoers. Por supuesto, esto también ayuda a controlar los eventos sudo fallidos.
Defaults logfile=/var/log/sudo.log
Si tiene más, agréguelos en los comentarios a continuación.