Configurar sudo para facer o noso sistema máis seguro

Recentemente lendo un artigo acerca da conveniencia de usar sudo ou desbotalo e usar root, puiden ver que a configuración que ven por defecto de sudo non é a máis segura. Xa sexa que o instalemos nós e engadamos o noso usuario ao ficheiro de sudoers, como que xa veña co sistema, os valores por defecto son febles. Por exemplo, cando pomos o contrasinal este queda gardado por un tempo sen que teñamos que volvelo por. Tamén temos a opción de executar calquer comando de root con sudo.
Isto fai que se alguén se fixese ca nosa sesión e tivésemos o contrasinal posto, puidese facer o que quixese.

No artigo relacionado, o autor, reflexiona sobre á sua preferencia acerca de usar sudo ou acceder como root a facer o que precise e volver á sesión de usuario para seguir traballando. Os puntos de vista que aporta son certeiros. E aínda que poida estar ou non de acordo ca súa decisión final, o certo é que no contido ten razón. O comando sudo é demasiado poderoso para deixalo sen configurar. Polo que neste artigo imos ver de xeito breve algunha das configuracións que podemos facer para minimizar os riscos.

Onde

Para comezar, non vou editar o ficheiro /etc/sudoers, se non que vou crear o meu propio que se procesará despois do ficheiro básico. Fixándome no ficheiro sudoers vexo que xa ten incluída a seguinte directiva ao final do mesmo @includedir /etc/sudoers.d. Se lemos o README que hai nesa ruta, xa se indica que a partir da mesma liña deixará de parsear o ficheiro actual e faráo cos ficheiros desa ruta. Sempre que non conteñan ~ ou . no nome.
Así pois co comando sudo visudo /etc/sudoers.d/ficheiro crearei o ficheiro onde estarán as miñas políticas para o comando.

Mudar o editor

Por defecto o editor que se utiliza, a lo menos con Debian no meu caso, é nano. Polo que vou mudar para usar vim, xa que heme máis cómodo. Así engado a seguinte liña ao ficheiro Defaults editor=/usr/bin/vim. Inmediatamente ao gardar e volver a entrar en visudo xa estou en vim.

Tempo de gracia

Revisando a documentación de sudo, unha das cousas que nos sinalan é o período de gracia. Isto fai que unha vez posto o contrasinal, non nolo volva a pedir durante cinco minutos. Co cal, por exemplo, se facemos algo e nos erguemos do posto; alguén tería marxe para facer algo con permisos de root.
Para previr isto con visudo, o que facemos é engadir unha liña que desactivará o período de gracia. Con Defaults timestamp_timeout=0 faremos que nos pida o contrasinal sempre que utilicemos sudo.

Rexistrar os comandos de sudo

Aproveitarei tamén para rexistrar calquer comando que se execute con sudo. Así en caso de ocorrer algo, terei a opción de ir ao arquivo a ver cales foron os comandos executados. Isto non é só no caso de que alguén alleo faga algo, se non que no caso de meter eu a pata poderei ver que foi o que corrín e revertilo.
Cas seguintes liñas isto queda resolto:

Defaults log_output
Defaults logfile=/var/log/sudo.log

Raspberry Pi OS

No caso do sistema operativo da Raspberry, ao seguir estes pasos seguía a pedir o contrasinal. Isto era porque no directorio /etc/sudoers incluíron un ficheiro 010_pi-nopasswd que lle dí que non pida nunca o contrasinal e pisaba a miña configuración. Só contiña a directiva pi ALL=(ALL) NOPASSWD: ALL, co que ao borralo funcionou como eu quería.

Conclusión

De momento vou deixar estas preferencias e irei probando a ver que tal vai. No caso de que nalgún momento queira ser máis restrictivo, outros parámetros poden ser atopados na documentación do proxecto

Referencias

Link de onde xurdiu a idea de securizar sudo: https://c3po.mataroa.blog/blog/nunca-uso-sudo/
Web do proxecto sudo https://www.sudo.ws/