{"id":7,"date":"2011-09-22T14:20:49","date_gmt":"2011-09-22T12:20:49","guid":{"rendered":"http:\/\/anadebreuil.wordpress.com\/?p=4"},"modified":"2011-09-22T14:20:49","modified_gmt":"2011-09-22T12:20:49","slug":"instalacion-y-configuracion-de-pam_smb_auth-en-fedora-15","status":"publish","type":"post","link":"https:\/\/www.anadebreuil.org\/blog\/?p=7","title":{"rendered":"Instalaci\u00f3n y configuraci\u00f3n de pam_smb_auth en Fedora 15"},"content":{"rendered":"<p>Este tutorial tiene por objeto documentar c\u00f3mo configurar una m\u00e1quina Linux, en concreto un Fedora 15, para que verifique el acceso de un usuario contrastando su contrase\u00f1a contra un servidor de dominio de una Red de Windows y, en caso de que el acceso sea correcto, creando el directorio HOME del usuario en caso de a\u00fan no lo tenga en esa m\u00e1quina.<\/p>\n<p>Para ello utiliza el m\u00f3dulo <em>pam_smb_auth<\/em>, por ser mucho m\u00e1s sencillo de utilizar en redes donde existe un servicio NIS y donde los usuarios de la Red de Windows se mantienen en un servidor que tambi\u00e9n es Linux, ya que consideramos que el uso de <em>pam_winbind<\/em> es m\u00e1s propio de sistemas donde adem\u00e1s se desea eliminar la depencia de NIS.<\/p>\n<p>Para una mejor comprensi\u00f3n de PAM (Pluggable Authentication Modules) puede ser bueno que lea, aunque sea r\u00e1pidamente, la informaci\u00f3n de las HOWTO de <em>Samba<\/em>, <a title=\"Chapter 28. PAM-Based Distributed Authentication\" href=\"http:\/\/www.samba.org\/samba\/docs\/man\/Samba-HOWTO-Collection\/pam.html\" target=\"_blank\">http:\/\/www.samba.org\/samba\/docs\/man\/Samba-HOWTO-Collection\/pam.html<\/a>.<br \/>\n<!--more--><\/p>\n<h3>Procedimiento<\/h3>\n<p>Lo primero que tenemos que hacer es instalar el paquete <strong>pam_smb_auth<\/strong>, pero este paquete ya no se distribuye con Fedora desde la versi\u00f3n 14, y en la versi\u00f3n 13 el paquete que se distribu\u00eda era el de Fedora 12. El paquete puede obtenerse de varias formas:<\/p>\n<ul>\n<li>Utilizando un SRPM anterior de Fedora.<\/li>\n<li>Compilando directamente el c\u00f3digo fuente del paquete, que puede encontrarse en <a href=\"ftp:\/\/ftp.samba.org\/pub\/samba\/pam_smb\/\" target=\"_blank\">ftp.samba.org<\/a>.<\/li>\n<\/ul>\n<p>Yo he utilizado el primer m\u00e9todo, as\u00ed que me centrar\u00e9 en \u00e9l. Actualmente el SRPM a\u00fan lo he encontrado en el <em>mirror<\/em> de Fedora de la RedIris de Espa\u00f1a, en el fichero <a title=\"ftp.rediris.es\/mirror\/fedora\/13\/Fedora\/source\/SRPMS\/pam_smb-1.1.7-11.fc12.src.rpm\" href=\"ftp:\/\/ftp.rediris.es\/mirror\/fedora\/13\/Fedora\/source\/SRPMS\/pam_smb-1.1.7-11.fc12.src.rpm\" target=\"_blank\">pam_smb-1.1.7-11.fc12.src.rpm<\/a>.<\/p>\n<p>Se necesita compilar de nuevo, necesitaremos un PC con un Fedora que tenga instalado todo lo necesario para compilar paquetes (<em>rpmbuild<\/em>, <em>gcc<\/em>, <em>gcc-c++<\/em>, <em>make<\/em>, <em>automake<\/em>, etc.). Adem\u00e1s, la compilaci\u00f3n de este paquete nos exige tener instalados <em>pam-devel<\/em> y <em>autoconf213<\/em>. Una vez tengas todo instalado, cualquier podemos compilar el paquete mediante el comando:<\/p>\n<pre>$ rpmbuild --rebuild --target=i686 pam_smb-1.1.7-11.fc12.src.rpm<\/pre>\n<p>Se puede no usar la opci\u00f3n <em>&#8211;target<\/em> para usar la configuraci\u00f3n por defecto de la m\u00e1quina, o poner un objetivo distinto que soporte nuestro compilador (la alternativa m\u00e1s habitual ser\u00e1 <em>&#8211;target=x86_64<\/em>). Este comando dejar\u00e1 (si termina correctamente) el binario en el fichero <strong>$HOME\/rpmbuild\/RPMS\/i686\/pam_smb-1.1.7-11.fc15.i686.rpm<\/strong>. En mi caso me qued\u00e9 con una copia en <strong>$HOME<\/strong> para usarla m\u00e1s tarde y poder distribuirla a otros equipos, y borr\u00e9 la ruta <strong>$HOME\/rpmbuild<\/strong> porque no la necesitaba para nada m\u00e1s. Instalamos este fichero, pero para ello adoptamos la identidad de <em>root<\/em>:<\/p>\n<pre>$ cd\n$ sudo rpm -U --verbose <strong>pam_smb-1.1.7-11.fc15.i686.rpm<\/strong><\/pre>\n<p>A partir de aqu\u00ed, todos los comandos deben hacerse con la identidad de <em>root<\/em>.<br \/>\nEditamos el fichero <strong>\/etc\/pam_smb.conf<\/strong> que se ha instalado antes para que apunte a una m\u00e1quina con un servidor de Dominio de Windows (valdr\u00eda cualquier Windows NT, Windows Server, Linux+Samba, etc.). El fichero consta de tres l\u00edneas: el nombre del Dominio, la m\u00e1quina de autenticaci\u00f3n y la m\u00e1quina auxiliar de autenticaci\u00f3n (pueden ser la misma). Por ejemplo:<\/p>\n<pre>MYDOMINIO\nSERVER1\nSERVER2<\/pre>\n<p>En Linux la autenticaci\u00f3n se hace mediante PAM, y los ficheros de configuraci\u00f3n de PAM est\u00e1n en <strong>\/etc\/pam.d<\/strong>. Todas las configuraciones de PAM instaladas en Fedora incluyen el substack <em>system-auth<\/em> o <em>password-auth<\/em>, que son enlaces suaves a los ficheros <em>system-auth-ac<\/em> y <em>password-auth-ac<\/em>, que a su vez son ficheros generados por las herramientas de configuraci\u00f3n de Fedora. Como <em>pam_smb<\/em> ya no es soportado por Fedora, sus herramientas ya no la contemplan, y tenemos que verlas como \u00abagentes peligrosos\u00bb que pueden estropearnos la configuraci\u00f3n sin que queramos. Vamos a proceder creando nuestro propio fichero y haciendo que estos enlaces apunten al nuestro. Si alguna vez alg\u00fan \u00abagente peligroso\u00bb deshace nuestra configuraci\u00f3n s\u00f3lo tendremos que rehacer los enlaces suaves (\u00faltimo paso). Creamos el fichero <strong>\/etc\/pam.d\/file-auth-new<\/strong>, como copia del fichero <strong>system-auth-ac<\/strong>y lo editamos:<\/p>\n<pre>$ cd \/etc\/pam.d\n$ cp -a system-auth-ac file-auth-new\n$ vi file-auth-new<\/pre>\n<p>El fichero debe quedar as\u00ed (en negrita ponemos lo que a\u00f1adimos y tachamos lo que quitamos):<\/p>\n<pre>#%PAM-1.0\n<del># This file is auto-generated.<\/del>\n<del># User changes will be destroyed the next time authconfig is run.<\/del>\n\nauth required   pam_env.so\nauth sufficient pam_unix.so nullok try_first_pass\n<strong>auth sufficient pam_smb_auth.so nolocal<\/strong>\nauth requisite  pam_succeed_if.so uid &gt;= 500 quiet\nauth required   pam_deny.so\n\naccount required   pam_unix.so <strong>broken_shadow<\/strong>\naccount sufficient pam_localuser.so\naccount sufficient pam_succeed_if.so uid &lt; 500 quiet\naccount required   pam_permit.so\n\npassword requisite  pam_cracklib.so try_first_pass retry=3 type=\npassword sufficient pam_unix.so sha512 nis nullok try_first_pass use_authtok\npassword required   pam_deny.so\n\nsession optional                   pam_keyinit.so revoke\nsession required                   pam_limits.so\n-session optional                  pam_systemd.so\n<strong>session optional pam_mkhomedir.so umask=0077<\/strong>\nsession [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid\nsession required                   pam_unix.so<\/pre>\n<p>Una vez creado, configuramos PAM para que use este fichero en vez de los que vienen por defecto en Fedora:<\/p>\n<pre>$ cd \/etc\/pam.d\n$ ln -vsi file-auth-new system-auth\n$ ln -vsi file-auth-new password-auth<\/pre>\n<p>Y esto deb\u00eda ser suficiente, pero antes de terminar vamos a verificar que no hemos metido la pata o quiz\u00e1 no podamos volver a entrar en el sistema.<\/p>\n<h3>Verificaci\u00f3n<\/h3>\n<p>La verificaci\u00f3n desde el usuario <em>root<\/em> se hace en dos pasos: cambiando un usuario <em>userone<\/em>y luego cambiando a un usuario cualquiera a ver si podemos (necesitamos la contrase\u00f1a de ese usuario cualquiera, as\u00ed que usa tu identidad para la prueba). En el ejemplo marco en negrita el PROMPT del sistema para que os fij\u00e9is en qu\u00e9 usuario ejecuta cada comando:<\/p>\n<pre><strong>[root ~]#<\/strong> su - userone\n<strong>[userone ~]$<\/strong> su - usertwo\nContrase\u00f1a:\n<strong>[usertwo ~]$<\/strong> exit\n<strong>[userone ~]$<\/strong> exit\n<strong>[root ~]#<\/strong> _<\/pre>\n<p>Si fuese la primera vez que el usuario accede al sistema, tambi\u00e9n veremos en pantalla alg\u00fan mensaje inform\u00e1ndonos de que se ha creado su directorio $HOME. Si acabada la prueba nos sobra ese directorio, y podemos borrarlo sin m\u00e1s con el comando <strong>rm -f \/home\/<em>user<\/em><\/strong>.<\/p>\n<h3>\u00daltimas consideraciones<\/h3>\n<ul>\n<li>La opci\u00f3n <strong>nolocal<\/strong> de <em>pam_smb_auth.so<\/em> se pone para que no trate de autenticar primero el usuario con el fichero <strong>\/etc\/passwd<\/strong> (es el comportamiento por defecto). Como ya tenemos encima una llamada a <em>pam_unix.so<\/em> que hace precisamente esto, el comportamiento por defecto de <em>pam_smb_auth.so<\/em> ser\u00eda redundante. Adem\u00e1s, como <em>pam_unix.so<\/em> viene de serie en Fedora es de suponer que esa tarea la haga de forma m\u00e1s acorde con la distribuci\u00f3n que <em>pam_smb_auth.so<\/em>. O visto de otra forma: <span style=\"color:#ff0000;\">si quitamos la l\u00ednea de <em>pam_unix.so<\/em> los usuarios locales no podr\u00e1n entrar en la m\u00e1quina, ni siquiera <em>root<\/em>, porque <em>pam_smb_auth.so<\/em> va ignorar lo que haya en <strong>\/etc\/passwd<\/strong><\/span>.<\/li>\n<li>La opci\u00f3n <strong>broken_shadow<\/strong> que incorporamos en la primera l\u00ednea de comprobaci\u00f3n de la cuenta (<em>account<\/em>) es necesaria porque sino el m\u00f3dulo <em>pam_unix.so<\/em> ver\u00eda que hay una cuenta obtenida desde el fichero <strong>nis:passwd<\/strong> que no puede resolver contra <strong>\/etc\/shadow<\/strong>.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Este tutorial tiene por objeto documentar c\u00f3mo configurar una m\u00e1quina Linux, en concreto un Fedora 15, para que verifique el acceso de un usuario contrastando su contrase\u00f1a contra un servidor de dominio de&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,7],"tags":[17,19,22],"class_list":["post-7","post","type-post","status-publish","format-standard","hentry","category-linux","category-tutoriales","tag-nis","tag-pam_smb_auth","tag-smb"],"_links":{"self":[{"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7"}],"version-history":[{"count":0,"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/7\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.anadebreuil.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}