8.8. Autentificaci�n con PPP

Con el PPP, cada sistema puede obligar al otro ordenador a identificarse usando uno de los dos protocolos de autentificaci�n disponibles. Estos son el Protocolo de Autentificaci�n por Contrase�a (PAP), y el Protocolo de Autentificaci�n por Reto (CHAP). Cuando se establece una conexi�n, cada extremo puede pedir al otro que se autentifique, independientemente de que sea el llamante o el llamado. M�s adelante, utilizar� relajadamente “cliente” y “servidor” cuando quiera distinguir entre el sistema autentificado y el autentificador. Un demonio PPP puede pedir a la otra m�quina autentificaci�n enviando otra petici�n m�s de configuraci�n de LCP indicando el protocolo de autentificaci�n deseado.

8.8.1. PAP frente a CHAP

PAP, que es utilizado por muchos proveedores de Internet (ISP), funciona b�sicamente de la misma forma que el procedimiento normal de registro. El cliente se autentifica a s� mismo enviando un nombre de usuario y una contrase�a (opcionalmente encriptada) al servidor, la cual es comparada por el servidor con su base de datos de claves o secrets. [1] Esta t�cnica es vulnerable a los intrusos que pueden intentar obtener la contrase�a escuchando en una l�nea serie y a otros que hagan sucesivos intentos de ataque por el m�todo de prueba y error.

CHAP no tiene estos defectos. Con CHAP, el autentificador (i.e. el servidor) env�a una cadena de “reto” generada aleatoriamente al cliente, junto a su nombre de ordenador. El cliente utiliza el nombre del ordenador para buscar la clave apropiada, la combina con el reto, y encripta la cadena utilizando una funci�n de codificaci�n de un solo sentido. El resultado es devuelto al servidor junto con el nombre del ordenador cliente. El servidor realiza ahora la misma computaci�n, y advierte al cliente si obtiene el mismo resultado.

Otra caracter�stica de CHAP es que no solicita autentificaci�n al cliente solamente al comienzo de la sesi�n, sino que env�a retos a intervalos regulares para asegurarse de que el cliente no ha sido reemplazado por un intruso, por ejemplo cambiando la l�nea telef�nica, o debido a una configuraci�n err�nea del m�dem que causa que el demonio PPP no se perciva que la llamada original de tel�fono se ha cortado y alg�n otro se ha conectado.

El pppd mantiene las claves secretas para el CHAP y el PAP en dos ficheros separados, llamados /etc/ppp/pap-secrets y /etc/ppp/chap-secrets respectivamente. Si introduce un ordenador remoto en alguno de los dos ficheros, tendr� un buen control de cual de los protocolos CHAP o PAP se utilizar� para autentificarnos con �l y viceversa.

Por omisi�n, pppd no pide autentificaci�n al ordenador remoto, pero aceptar� el autentificarse a s� mismo cuando se lo pida el ordenador remoto. Como CHAP es mucho m�s fuerte que PAP, el pppd intenta usar el anterior siempre que es posible. Si el otro ordenador no lo acepta, o pppd no encuentra una clave CHAP para el sistema remoto en su fichero chap-secrets, cambia al PAP. Si tampoco tiene clave PAP para su compa�ero, renunciar� a autentificarse. Como consecuencia de esto, se cerrar� la conexi�n.

Este comportamiento puede ser modificado de varias formas. Por ejemplo, cuando se a�ade la palabra auth, pppd solicitar� al otro ordenador que se autentifique. pppd aceptar� el uso de CHAP o PAP para ello, siempre y cuando tenga una clave para su compa�ero en su base de datos CHAP o PAP respectivamente. Hay otras opciones para activar o no un determinado protocolo de autentificaci�n, pero no las describir� aqu�. Puede leer la p�gina de manual del pppd(8) para m�s detalles.

Si todos los sistemas con los que conversa PPP est�n de acuerdo en autentificarse con usted, deber�a poner la opci�n auth en el fichero global /etc/ppp/options y definir contrase�as para cada sistema en el fichero chap-secrets. Si un sistema no acepta CHAP, a�ada una entrada para �l al fichero pap-secrets. De esta forma, puede asegurarse de que ning�n sistema sin autentificar se conecta a su ordenador.

Las dos secciones siguientes hablan sobre los dos ficheros de claves de PPP, pap-secrets y chap-secrets. Est�n situados en /etc/ppp y contienen tripletes de clientes, servidores y contrase�as, seguidas opcionalmente por una lista de direcciones IP. La interpretaci�n de los campos de servidor y cliente es distinta en CHAP y PAP, y tambi�n depende de si nos autentificamos nosotros con el otro ordenador, o si solicitamos al servidor que se autentifique con nosotros.

8.8.2. El fichero de claves CHAP

Cuando tiene que autentificarse con alg�n servidor utilizando CHAP, pppd busca en el fichero chap-secrets una entrada cuyo campo de cliente sea igual al nombre del ordenador local, y cuyo campo de servidor sea igual al nombre del ordenador remoto enviado en el reto del CHAP. Cuando solicita a la otra m�quina que se autentifique, los roles son simplemente al rev�s: el pppd entonces buscar� una entrada que tenga el campo de cliente igual al nombre del ordenador remoto (enviado en la respuesta del CHAP del cliente), y el campo de servidor igual al nombre del ordenador local.

El siguiente es un fichero de ejemplo de chap-secrets para vlager:[2]

    # CHAP secrets for vlager.vbrew.com
    #
    # client         server           secret                addrs
    #---------------------------------------------------------------------
    vlager.vbrew.com  c3po.lucas.com   "Use The Source Luke" vlager.vbrew.com
    c3po.lucas.com    vlager.vbrew.com "arttoo! arttoo!"     c3po.lucas.com
    *                 vlager.vbrew.com "TuXdrinksVicBitter"  pub.vbrew.com

Cuando se intenta establecer una conexi�n PPP con c3po, c3po pide a vlager que se autentifique usando el CHAP mediante el env�o de un reto de CHAP. El demonio pppd entonces examina chap-secrets buscando una entrada cuyo campo de cliente sea igual a vlager.vbrew.com y el campo de servidor sea c3po.lucas.com, y encuentra la primera l�nea mostrada en el ejemplo.[3] Entonces produce la respuesta de CHAP a partir de la cadena del reto y la clave (Use The Source Luke), y la env�a de vuelta a c3po.

Al mismo tiempo, pppd produce un reto del CHAP para c3po, conteniendo una �nica cadena de reto y su nombre de ordenador completo vlager.vbrew.com. c3po construye una respuesta de CHAP de la manera que acabamos de decir, y se la devuelve a vlager. pppd extrae ahora el nombre del cliente (c3po.vbrew.com) de la respuesta, y busca en el fichero chap-secrets una l�nea que tenga c3po como cliente y vlager como servidor. La segunda l�nea se corresponde con esto, as� que el pppd combina el reto del CHAP y la clave arttoo! arttoo!, las encripta, y compara el resultado con la respuesta de CHAP de c3po.

El cuarto campo opcional lista las direcciones IP que son aceptables por los clientes nombrados en el primer campo. Las direcciones pueden ser dadas en notaci�n cuaternaria o como nombres de ordenador que son resueltos posteriormente. Por ejemplo, si c3po solicita usar una direcci�n IP que no est�a en esta lista durante la negociaci�n IPCP, la petici�n ser� rechazada, e IPCP se desconectar�. En el fichero de ejemplo anterior, c3po est� limitado a poder usar s�lo su propia direcci�n. Si el campo de direcci�n est� vac�o, se permitir� cualquier direcci�n; un valor de “-” evita el uso de una cierta direcci�n IP con un cliente.

La tercera l�nea del fichero chap-secrets de prueba, permite a cualquier ordenador establecer un enlace PPP con vlager, pues si aparece la expresi�n * en los campos de cliente o servidor, ser� valido cualquier nombre. El �nico requisito es que sepa la clave, y utiliza la direcci�n de pub.vbrew.com. Pueden aparecer perfectamente entradas con comodines en los nombres en cualquier lugar del fichero de claves, pues el pppd siempre utilizar� la entrada m�s espec�fica que pueda ser aplicada a un par cliente/servidor.

Hay algunas cosas que decir sobre la manera en que pppd encuentra los nombres de ordenadores que busca en el fichero de claves. Como se explic� anteriormente, el nombre del ordenador remoto es siempre proporcionado por el otro ordenador en el paquete de reto o respuesta del CHAP. El nombre del ordenador local ser� obtenido por omisi�n llamando a la funci�n gethostname(2). Si ha configurado el nombre del sistema como el nombre del ordenador sin calificar, entonces tendr� que dar al pppd el nombre del dominio a a�adir usando la opci�n domain:
    # pppd … domain vbrew.com

Esto a�adir� el nombre del dominio de la Cervecera a vlager para todas las actividades relacionadas con la autentificaci�n. Otras opciones que modifican la idea que tiene el pppd del nombre del ordenador local son usehostname y name. Cuando da la direcci�n IP local en la l�nea de comando usando local:remote y local es un nombre en vez de un cuarteto num�rico, el pppd utilizar� �ste como el nombre local.

8.8.3. El fichero de claves PAP

El fichero de claves PAP es muy similar al utilizado por CHAP. Los dos primeros campos siempre contienen un nombre de usuario y un nombre de servidor; el tercero alberga la clave PAP. Cuando el sistema remoto env�a una petici�n de autentificaci�n, pppd usa la entrada en la que el campo de servidor es igual al nombre del ordenador local, y el campo de usuario igual al nombre de usuario enviado en la petici�n. Cuando se autentifica a s� mismo al otro ordenador, pppd toma la clave a enviar de la l�nea con el nombre de usuario igual al nombre del usuario local, y con el campo de servidor igual al nombre del ordenador remoto.

Un fichero de claves PAP sencillo puede parecerse a �ste:
    # /etc/ppp/pap-secrets
    #
    # user          server          secret          addrs
    vlager-pap      c3po            cresspahl       vlager.vbrew.com
    c3po            vlager          DonaldGNUth     c3po.lucas.com

La primera l�nea se usa para autentificarnos a nosotros mismos cuando hablemos con c3po. La segunda l�nea describe como un usuario llamado c3po tiene que autentificarse con nosotros.

El nombre vlager-pap de la primera columna es el nombre de usuario que nosotros mandamos a c3po. POr omisi�n,pppd tomar� el nombre del ordenador local como el nombre de usuario, pero tambi�n se puede especificar un nombre diferente usando la opci�n user, seguida del nombre deseado.

Para escoger una de las entradas del fichero pap-secrets para la autentificaci�n con el compa�ero, pppd tiene que saber el nombre del ordenador remoto. Como no tiene manera de averiguarlo, tiene que especificarlo en la l�nea de �rdenes usando la palabra remotename, seguida por el nombre del ordenador remoto. Por ejemplo, para usar la entrada comentada anteriormente para la autentificaci�n con c3po, tenemos que a�adir la siguiente opci�n a la l�nea de �rdenes del pppd:
    # pppd ... remotename c3po user vlager-pap

En el cuarto campo (y todos los siguientes), puede especificar qu� direcciones IP est�n permitidas para ese ordenador particular, de la misma forma que en el fichero de claves CHAP. El otro ordenador solo podr� pedir direcciones de esa lista. En el fichero de ejemplo, la entrada que c3po usar� cuando llame a la linea donde c3po es el cliente, le permitir� usar su IP aut�ntica y no otra.

D�se cuenta de que PAP es un m�todo de autentificaci�n bastante d�bil, y se recomienda utilizar el CHAP siempre que sea posible. Por eso, no explicaremos el PAP en gran profundidad aqu�; si esta interesado en utilizar el PAP, encontrar� algunas caracter�sticas m�s de �ste comentadas en la p�gina del manual del pppd(8).

Notas

[1]

“secrets” es s�lo el nombre que da PPP a las contrase�as. Las contrase�as de PPP no tienen las mismas limitaciones de tama�o que las contrase�as de registro de Linux.

[2]

Las comillas no son parte de la contrase�a, simplemente sirven para proteger el espacio en blanco del interior de la contrase�a.

[3]

Este nombre de ordenador se toma del reto de CHAP.