En primer lugar, recomendaría que solo use la cuenta raíz. Si lo configura así:
- Configure su
sshd_config
en la máquina de destino para PermitRootLogin without-password
.
- Úselo
ssh-keygen
en la máquina que extrae la copia de seguridad para crear una clave privada SSH (solo si aún no tiene una clave SSH). No establezca una frase de contraseña. Google un tutorial si necesita detalles para esto, debería haber muchos.
- Agregue el contenido de
/root/.ssh/id_rsa.pub
la máquina de respaldo a la /root/.ssh/authorized_keys
de su máquina de destino.
- Ahora su máquina de respaldo tiene acceso de root a su máquina de destino, sin tener que usar autenticación de contraseña.
entonces la configuración resultante debería ser bastante segura.
sudo
, especialmente combinado con NOPASSWD
lo recomendado en los comentarios, no tiene beneficios de seguridad con solo usar la cuenta raíz. Por ejemplo esta sugerencia:
agregue lo siguiente a su /etc/sudoers
archivo:rsyncuser ALL= NOPASSWD:/usr/bin/rsync
esencialmente da rsyncuser
permisos de raíz de todos modos. Usted pregunta:
@MartinvonWittich ¿Es fácil obtener un shell raíz completo porque se rsync
ejecuta con sudo
? Camina [m] e [a través] que por favor.
Bueno, simple Con la configuración recomendada, rsyncuser
ahora puede ejecutarse rsync
como root sin siquiera solicitar una contraseña. rsync
es una herramienta muy poderosa para manipular archivos, por lo que ahora rsyncuser
tiene una herramienta muy poderosa para manipular archivos con permisos de root. Encontrar una manera de explotar esto me llevó solo unos minutos (probado en Ubuntu 13.04, requiere dash
, bash
no funcionó):
martin@martin ~ % sudo rsync --perms --chmod u+s /bin/dash /bin/rootdash
martin@martin ~ % rootdash
# whoami
root
# touch /etc/evil
# tail -n1 /etc/shadow
dnsmasq:*:15942:0:99999:7:::
Como puede ver, me he creado un shell de raíz; whoami
identifica mi cuenta como root, puedo crear archivos /etc
y puedo leer /etc/shadow
. Mi hazaña era establecer el bit setuid en el dash
binario; hace que Linux siempre ejecute ese binario con los permisos del propietario, en este caso root.
Tener una raíz real no es [recomendado] por buenas razones. - redanimalwar Hace 15 horas
No, trabajar torpemente alrededor de la cuenta raíz en situaciones en las que es absolutamente apropiado usarlo no es por buenas razones. Esta es solo otra forma de programación de culto de carga : realmente no entiendes el concepto detrás de sudo vs root, simplemente aplicas ciegamente la creencia "la raíz es mala, sudo es buena" porque lo has leído en alguna parte.
Por un lado, hay situaciones en las sudo
que definitivamente es la herramienta adecuada para el trabajo. Por ejemplo, cuando trabajas de manera interactiva en un escritorio gráfico de Linux, digamos Ubuntu, entonces tener que usar sudo
está bien en esos raros casos en los que a veces necesitas acceso root. Ubuntu intencionalmente tiene una cuenta raíz deshabilitada y lo obliga a usar sudo
de forma predeterminada para evitar que los usuarios usen siempre la cuenta raíz para iniciar sesión. Cuando el usuario solo quiere usar, por ejemplo, el navegador web, iniciar sesión como root sería algo peligroso y, por lo tanto, no tener una cuenta raíz de forma predeterminada impide que las personas estúpidas hagan esto.
Por otro lado, hay situaciones como la suya, en las que un script automatizado requiere permisos de root para algo, por ejemplo, para hacer una copia de seguridad. Ahora, usar sudo
la cuenta raíz no solo no tiene sentido, también es peligroso: a primera vista rsyncuser
parece una cuenta ordinaria sin privilegios. Pero como ya he explicado, sería muy fácil para un atacante obtener acceso completo a la raíz si ya hubiera obtenido rsyncuser
acceso. Entonces, esencialmente, ahora tiene una cuenta raíz adicional que no se parece en absoluto a una cuenta raíz, lo que no es algo bueno.
root
cuenta en primer lugar.sudo
, especialmente combinado conNOPASSWD
lo recomendado en los comentarios, realmente no mejora la seguridad de su máquina.