Anteriormente demostré cómo era posible implementar un acceso SSH como root, a pesar de que estuviera deshabilitada la opción PermitRootLogin
en la configuración del demonio. Ahora voy a demostrar cómo es posible lograr el mismo comportamiento en sistemas FreeBSD y OpenBSD utilizando doas
en vez de sudo
.
OpenBSD utiliza un reemplazo para sudo
llamado doas
, el cual es más pequeño y simple.
Instalación de doas en FreeBSD
Esta herramienta está incluida por defecto en los sistemas OpenBSD, y puede instalarse en sistemas FreeBSD desde el port security/doas
:
# portsnap fetch update # portmaster security/doas
Luego es necesario crear el archivo de configuración:
# touch /usr/local/etc/doas.conf # chown root:wheel /usr/local/etc/doas.conf # chmod 0640 /usr/local/etc/doas.conf
Creación del usuario "backdoor"
El primer paso en la configuración de este esquema consiste en crear el usuario "backdoor".
En FreeBSD a través del comando pw
:
# pw useradd backdoor -c "Backdoor" -g operator -m -M 0750 -s /bin/tcsh
En OpenBSD se hace igual que en GNU/Linux, pues utiliza useradd
, aunque la shell por defecto es ksh (KornShell):
# useradd -c "Backdoor" -m -d /home/backdoor -s /bin/ksh backdoor
Luego se genera la contraseña, en ambos sistemas con la herramienta passwd
, como en cualquier sistema Unix:
# passwd backdoor
Configuración de doas
Editar el archivo de configuración de doas
(/usr/local/etc/doas.conf
en FreeBSD):
# vi /etc/doas.conf
En ambos sistemas, la ruta al binario del servidor SFTP es la misma:
permit nopass backdoor cmd /usr/bin/su permit nopass backdoor cmd /usr/libexec/sftp-server
Se observa que la configuración de doas
es muy simple, básicamente se indica qué usuario puede ejecutar qué comando.
Configuración del perfil de login de "backdoor"
Cambiar al usuario "backdoor":
# su - backdoor
En FreeBSD, la shell tcsh levanta la configuración de login desde el archivo ~/.login
:
# vi .login
Agregar la siguiente línea al final del archivo:
exec /usr/local/bin/doas /usr/bin/su - root
La ruta a doas
está bajo /usr/local
, pues es instalado desde los ports.
En OpenBSD se debe editar el archivo ~/.profile
(man ksh
):
$ vi .profile
La ruta cambia pues doas
es parte del sistema base:
exec /usr/bin/doas /usr/bin/su - root
Guardar y cerrar la sesión como "backdoor":
$ exit
Creación del script para el servicio SFTP:
A continuación es necesario crear el script para correr el servicio SFTP como root:
# cat >> /usr/local/bin/sftp-server.sh <<EOT #!/bin/sh DOAS="" if [ "\${USER}" == "backdoor" ] ; then DOAS="/usr/bin/doas" fi exec \${DOAS} /usr/libexec/sftp-server "\$@" EOT
El contenido es idéntico para ambos sistemas, a excepción de la ruta a doas
, que en sistemas FreeBSD debe ser cambiada a /usr/local/bin/doas
:
DOAS="/usr/local/bin/doas"
Luego, dar permisos de ejecución la script:
# chmod +x /usr/local/bin/sftp-server.sh
Configuración del servicio SSH
En la configuración del subsistema SFTP, hacer que apunte al script anteriormente creado:
# sed 's/\(Subsystem.*sftp.*\)\(\/usr\/libexec\/sftp-server\)/#\1\2\ \1\/usr\/local\/bin\/sftp-server.sh/' /etc/ssh/sshd_config > /etc/ssh/sshd_config.new # mv /etc/ssh/sshd_config /etc/ssh/sshd_config.old # mv /etc/ssh/sshd_config.new /etc/ssh/sshd_config
Reiniciar el servicio SSH. En FreeBSD:
# service sshd restart
En OpenBSD:
# rcctl restart sshd
Referencias
man tcsh man ksh man doas
doas(1) - OpenBSD manual pages