27 de febrero de 2008

Seguridad: Configuracion correcta de SU y SUDO


SU:

Seguramente conocerán el comando 'SU', el cual nos permite cambiar hacia la cuenta de root rapidamente. Los que tengan varios usuarios en la pc y/o tengan usuarios remotos con shells, corren el riesgo de que cualquiera que consiga su contraseña de root pueda loguearse con ella.

Hay una forma de evitar que 'SU' pueda ser usado por todos los usuarios del equipo, o sea, limitarlo a que solo los que queramos puedan usarlo, para ello, editamos este fichero:

/etc/pam.d/su


Y le agregamos estas dos lineas al principio (verificar que no esté ya):

auth sufficient /lib/security/pam_rootok.so debug


auth required /lib/security/Pam_wheel.so group=wheel


De esta forma, impedimos que cualquier usuario que no se encuentre en el grupo 'WHEEL', pueda hacer uso del comando 'SU'
Si queremos, podemos cambiar el grupo 'WHEEL' por otro que queramos, siempre que recordemos no equivocarnos aqui ya que estamos modificando un fichero importante del sistema.

Si usamos el servidor OpenSSH para shells remotas, recuerden modificar el siguiente fichero:

/etc/ssh/sshd_config


Y agreguen la siguiente linea, o modifiquenla si ya está, para que quede de la siguiente manera:

PermitRootLogin no


De esta forma, un usuario de nuestra shell no podrá de ninguna forma hacer uso del usuario 'ROOT' por mas que haya conseguido nuestra contraseña, ya sea 'accidentalmente'. No tiene 'SU', no puede conectarse como root, y ahp, su intento de kakeo no funcionó. :)

Recuerden siempre ponerle el atributo 'inalterable' con chattr a nuestros ficheros que acabamos de modificar, para evitar que pueda ser modificado de nuevo sin nuestro permiso.

# chattr +i /etc/pam.d/su


# chattr +i /etc/ssh/sshd_config


Ahora podemos quedarnos tranquilos, nadie obtendrá root por una mala configuración nuestra o por un accidente. :)


SUDO:

Tambien, muchos de los usuarios novatos suelen usar sudo para ejecutar comandos como root, y otros lo hacen por comodidad, esto puede causar problemas con varias sesiones en una misma pc o si solemos usar shells en nuestra pc, ya que una mala configuracion de sudo puede permitir a alguien no autorizado el uso de este, o puede aprovecharse de defectos en el sistema para conseguir acceso al uso de sudo.

Para evitar esto, tenemos que estar seguros de que nuestra configuracion de sudo es la correcta, para eso, abrimos el siguiente fichero:

/etc/sudoers


Y dentro, verificamos cuales son los usuarios que estan permitidos a usar sudo.

Una buena configuracion seria permitir sudo a todos los usuarios del grupo 'WHEEL' y 'ROOT', colocando unas lineas que contengan lo siguiente:

%wheel ALL=(ALL) ALL


root ALL=(ALL) ALL


Tambien, para mas comodidad nuestra, aunque arriesgando un poco la seguridad (local, por lo que si no hay nadie que pueda llegar a usar nuestras pcs mientras no estamos, se puede usar tranquilamente.) podemos usar esta linea en lugar de las anteriores:

%wheel ALL=(ALL) NOPASSWD: ALL


Esto nos permite usar sudo a los usuarios del grupo WHEEL sin la necesidad de poner password cada vez que se lo use.

Despues de haber hecho las modificaciones necesarias, le aplicamos la tecnica del chattr con el atributo 'inalterable' para que nadie pueda cambiar la configuracion de nuevo mas que nosotros:

# chattr +i /etc/sudoers


Y por ultimo, tambien podemos cambiarle los permisos y el owner al binario/ejecutable de 'sudo' (normalmente ubicado en /usr/bin/sudo) para evitar que sea usado en caso de que algo haya fallado.
Para eso, le podemos cambiar el grupo a 'WHEEL', y los permisos a 4110, y asi estaremos seguros de que nadie tocará sudo sin permiso:

# chown root:wheel /usr/bin/sudo


# chmod 4110 /usr/bin/sudo


Y hacemos lo mismo con /usr/bin/sudoedit:

# chown root:wheel /usr/bin/sudoedit


# chmod 4110 /usr/bin/sudoedit


Ahora si, para el que dijo que sudo no es seguro, tomá ;)

Saludos, Elidix.

1 comentario:

Anónimo dijo...

sigue siendo inseguro :D

pero mi mujer como veran es una excelente instructora y especialista en seguridad y redes.

Firma: qbe

al resto, puede irse a la .anamreH uS eD ahcnoC

:)