Consejos para asegurar tu red WiFi

Soy una persona que valora mucho las formas. Por ejemplo, cuando un vecino logró colarse en mi WiFi el verano pasado ya me encargué de dejarlo claro que mejor no andar jodiendo con esos temas. En cambio, cuando llegó un nuevo vecino y me ofreció compartir los gastos no sólo le he dejado usarla, sino que se lo dejo de gratis (aunque me ha regalado unas botellicas de vino, un chaval agradecido).

2000px-Wi-Fi_Logo.svg

En todo caso, la mayoría de la gente no quiere a otros pululando por su red ¿cómo podemos fortificarla?. Vamos con una serie de consejos (que, por otra parte, no pueden garantizar protección total, eso por desgracia es una quimera):

  • Utiliza un cifrado fuerte, WPA/WPA2 – PSK es el más robusto para redes domésticas. No es infalible, desde luego, pero sí bastante más consistente que otras opciones.
  • El nombre de la red (el SSID) puede ser utilizado para crackearla con un ataque de diccionario, así que cambiarlo será una de las primeras cosas que deberías hacer (y pones un nombre que probablemente no esté en los diccionarios habituales, tipo CaghoN0KaRaLloDTeUPae).
  • Cambiar la contraseña por defecto es otro must. Hay herramientas para crackear redes que se basan en los algoritmos que usan las compañías para generar las contraseñas por defecto. Como siempre que hablamos de claves, usa una contraseña fuerte (puedes servirte de un generador aleatorio de contraseñas).
  • Desactiva el WPS (por los motivos expuestos en el enlace).
  • Cambia periódicamente la contraseña y el nombre de la red, y apágala cuando no la estés usando. El tiempo es un factor fundamental para encontrar la clave, por tanto si lo apagas le estás limitando ese tiempo al atacante, mientras que un cambio de contraseña tirará por tierra todo el trabajo ya realizado. Tienes la opción de ocultar la WiFi también, pero yo nunca le he acabado de ver la práctica, ya que el atacante puede configurar su equipo para buscar redes ocultas.
  • Seguramente la configuración de tu router te permita hacer un filtrado por MAC (hablo de media access control, no de orenadores con manzanitas).Todos los routers suelen tener esta opción, basta con que accedáis al mismo, la busquéis, hagáis una lista blanca con las MAC de vuestros dispositivos y bloqueéis el resto. Es un coñazo si un amigo viene a casa y quiere conectarse a la WiFi, y puede ser burlado, pero es un escollo más para el atacante.
  • Fortifica tu Router: Si alguien logra romper tu contraseña, a pesar de toda la seguridad extra aplicada, lo que menos te interesa es que entre en la configuración de tu punto de acceso. Esencial, desde luego, es cambiar tanto la contraseña por defecto como el usuario (una simple búsqueda en Google te puede decir la del tuyo). Básico tambien es tener el firmware actualizado. Pero la medida más efectiva, que permiten casi todos los routers y que además no genera mucho problema al 90% de los usuarios, es restringir el acceso al router vía WiFi, para que sólo puedan acceder a él los usuarios conectados mediante cable, lo cual ya te da un plus de fortificación.

Con esta serie de consejos, ya te lo comentaba arriba, no lograrás la seguridad completa e infranqueable (lo dicho, una quimera, no existe a día de hoy, y seguramente no existirá), pero al menos ganarás bastantes puntos respecto a lo que supone dejar todas las configuraciones por defecto.

Instalar KeePass en Ubuntu e integrarlo en nuestro navegador

¿El gestor de contraseñas KeePass2 no es una herramienta sólo para Windows? En principio sí, y además tenemos para Linux otras herramientas muy válidas, algunas ya instaladas de forma predefinida en nuestra distribución (por ejemplo KeePassX, pero hasta donde he llegado no permite integración con el navegador, de ahí este tutorial), pero algunos usuarios que han migrado desde el SO de Redmond lo echan de menos ¿es posible utilizarlo en mi nuevo Ubuntu? Sí, con el antes citado KeePassX, ¿y la integración con el navegador de KeePassHttp? Lo dicho antes, KeePassX en principio no lo permite pero tenemos una solución para instalar KeePass2 e integrarlo en Chrome o en Firefox.

KeePass2 hace uso de librerías de .NET
, por lo que necesitaremos incluirlas en la instalación, siriviéndonos de la del proyecto MONO :

sudo apt-add-repository ppa:jtaylor/keepass
sudo apt-get update
sudo apt-get install keepass2 mono-complete

El siguiente paso será descargar el módulo KeePassHttp desde GitHub. Tras descargarlo y descomprimirlo en tu equipo busca el archivo KeePassHttp.plgx y muévelo a la carpeta /usr/lib/keepass2/plugins (si no existe dicha carpeta, créala, necesitarás permisos de administrador para esto, así que usa sudo).

Una vez hecho esto si ejecutas KeePass2 verás la opción KeePassHttp Options en el menú de Herramientas (Tools), lo cual será señal de que el módulo está funcionando (si no lo ves es que algo falló). Tras esto basta instalar los complementos para los navegadores: ChromeIPass y PassIFox para el navegador de Mozilla. En el caso de Firefox tendrás que reiniciar el navegador tras instalar (Chrome creo recordar que no).

Tras eso, al abrir el navegador, te pedirá que introduzcas una clave de encriptación para operar con KeePassHttp, que será almacenada en tu llavero de claves de KeePass2. Una vez la hayas introducido ya podrás comenzar a utilizar KeePass integrado con tu navegador, pudiendo rellenar los campos e usuario y contraseña con un simple click en tu menú contextual.

Servicio AntiBotNet de la OSI

La Oficinia de Seguridad del Internauta, dependiente de INTECO y del Ministerio de Industria suele presentar además de múltiples consejos de seguridad informática básica en su web algunos productos para mejorar la seguridad de los usuarios. En el pasado ya hablamos por aquí de CONAN, una herramienta para chequear la seguridad de teléfonos Android. Hoy el producto a comentar, que podéis ver en el vídeo de arriba, es su servicio AntibotNet, que verificará que vuestro equipo no pertenezca a una red zombi. Podéis acceder a dicho servicio en el siguiente enlace, desde el que también podréis descargar los complementos para Chrome.

El servicio en principio chequeará vuestra IP externa y comprobará que no aparezca en su base de datos de ip’s relacionadas con incidentes con BotNets. Sobre su fiabilidad ya no podría deciros nada, no tengo herramientas para comprobarla, desde la información que vierten en su propia web afirman que puede haber falsos positivos, pero dicen que su fiabilidad es muy alta (claro que tampoco van a decir que es una patata). En cuanto al complemento para Chrome lo que hará será avisaros automáticamente si vuestra IP apareciera por algún motivo en su base de datos.

El uso de este servicio implica que estaréis enviando vuestra dirección IP a un servicio dependiente del gobierno español, tenedlo claro a la hora de pensar en vuestra privacidad y en lo queréis enviar o no, si bien afirman que la IP pública sólo la guardan para estadísticas y sin relacionarla con ningún usuario (eso es cuestión de que os lo queráis creer o no). En todo caso puede ser una herramienta muy útil para determinados usuarios.

Cifrar nuestro tráfico con DNSCrypt

El cifrado del tráfico entre nuestro equipo y el ISP es una medida de seguridad que nos permitirá protegernos de ataques Man in the Middle, de intentos de espiar nuestras comunicaciones y dificultará al ISP la posibilidad de aplicarnos algunas restricciones (ahora que la neutralidad de la red está en peligro).

Nuestra solución segura será usar DNSCrypt, un software disponible para Windows, Linux, BSD, Android, iOS y OSX. Aquí nos ocuparemos de la instalación en Linux. Como no existe ningún paquete .deb, .rpm o repositorio que podamos utilizar para instalarlo nos tocará compilar el código fuente. Como paso previo, pues, tendremos que tener en el equipo los paquetes necesarios para instalar. En los linux de la familia Debian lo amañamos con un

sudo apt-get install build-essential

Luego tocará descargar la librería libsodium, una librería necesaria para la compilación:

tar -xvzf libsodium-0.5.0.tar.gz
cd libsodium-0.5.0
./configure
make

make check  ##esto verificará si está todo en orden

sudo make install

El siguiente paso es descargar ya el código de DNSCrypt, descomprimirlo y compilarlo

sudo ldconfig #necesitamos lanzar esta configuración primero

tar -xvzf dnscrypt-proxy-1.4.0.tar.gz
cd dnscrypt-proxy-1.4.0
./configure
make

sudo make install

Muy bien, DNSCrypt está instalado, lo siguiente es configurarlo. Nos vamos a editar nuestra conexión de red y en la configuración de IPv4 elegimos en el campo Método la opción Sólo direcciones automáticas (DHCP) y en el campo Servidores DNS ponemos la dirección 127.0.0.1 (si os da problemas al probarlo cambiad por, por ejemplo, 127.0.0.2). Después desde el terminal ejecutamos restart network-manager. Tras hacer esto nos quedaremos sin conexión a internet ya que hemos desconfigurado las DNS y hasta que no se ejecute DNSCrypt no volverán a estar funcionales. Por tanto, lo ejecutamos:

/usr/local/sbin/dnscrypt-proxy --daemonize --pidfile=/run/dnscrypt-proxy.pid --edns-payload-size=4096

Para comprobar que todo funciona prueba a entrar en http://www.opendns.com/welcome/ para ver que la conexión ha vuelto. Como ya dije arriba es posible que usando 127.0.0.1 falle, así que si os pasa matáis el proceso de DNSCrypt, cambiáis la IP por, por ejemplo, 127.0.0.2 y volvéis a lanzar DNSCrypt añadiendo esa dirección como parámetro tal que así:

/usr/local/sbin/dnscrypt-proxy --daemonize --pidfile=/run/dnscrypt-proxy.pid --edns-payload-size=4096 --local-address=127.0.0.2

Ahora vamos con un último paso ¿quieres que DNSCrypt se ejecute cada vez que iniciamos el sistema? Si estás en un sistema basado en Debian toca modificar el archivo /etc/rc.local y pegamos, justo antes de la instrucción exit 0 una de las siguientes líneas:

#en caso de que utilicéis la ip 127.0.0.1
exec /usr/local/sbin/dnscrypt-proxy --daemonize --pidfile=/run/dnscrypt-proxy.pid --edns-payload-size=4096

#en caso de la 127.0.0.2
exec /usr/local/sbin/dnscrypt-proxy --daemonize --pidfile=/run/dnscrypt-proxy.pid --edns-payload-size=4096 --local-address=127.0.0.2

En la documentación de DNSCrypt podéis leer más opciones sobre parámetros, resolución de problemas, cambiar OpenDNS por un DNS alternativo…

CONAN mobile: herramienta de seguridad para tu Android

CONAN mobile es una herramienta gratuita desarrollada por los técnicos de INTECO que te permitirá chequear el estado de la seguridad de tu móvil o tablet, proporcionándote consejos y soluciones para mejorarla.

Funciona en Android 2.2 y superiores, y te muestra información sobre diferentes ámbitos:

  • Configuración: Te mostrará los ajustes de tu configuración que pueden ser potencialmente peligrosas, las redes WIFI inseguras a la que estés conectado o los dispositivos Bluetooth con los que estés emparejado.
  • Aplicaciones: Listará las aplicaciones que están reconocidas como maliciosas, las que podrían serlo, las que no están actualizadas a la última versión y las que no están registradas. También te mostrará los permisos de la aplicación organizados por su nivel de inseguridad.
  • Servicio de seguridad proactivo: Alerta de comportamientos anómalos en el dispositivo tales como cambios en el fichero /etc/host, llamadas y sms a servicios de pago, conexiones a la red realizadas por las aplicaciones… y además analiza las redes WIFI a las que nos conectamos y las apps que descargamos.

Al momento de escribir esto la aplicación se encuentra en fase beta, por lo que todavía puede presentar fallos en su funcionamiento, además de sólo estar disponible para el mercado español. Para profundizar en su uso tenéis este videotutorial. Podéis descargarla desde GooglePlay

Social Lab: Un juego que te enseña seguridad en redes sociales.

Desarrollado conjuntamente por la universidad de Deusto y Telefónica, Social Lab es un wargame, un juego que replica el funcionamiento de una red social al estilo de Facebook o Tuenti y donde se te plantearán desafíos consistentes en conseguir datos sobre unos usuarios ficticios.

El objetivo del juego en enseñar a los usuarios las diversas técnicas de ingeniería social a las que se puede recurrir para conseguir información sobre ellos, la forma en que estos «hackers sociales» manipulan a su objetivo para que inconscientemente caiga en sus redes.

Una buena iniciativa para concienciar a los usuarios y para enseñarles formas de proteger sus cuentas y mantener su privacidad.

Outguess: software para esteganografía en Linux

La esteganografía se trata de una serie de técnicas que permiten ocultar una información a simple vista, similar en cierto modo a la criptografía pero con una idea distinta: en lugar de tornar indescifrable el mensaje la idea es esconderlo. En el caso del sotftware del que nos ocupamos nos permitirá ocultar un archivo dentro de otro. Por ejemplo meter un texto dentro de una foto, que sólo será recuperable por aquel que conozca la contraseña, el resto verán un simple y poco llamativa foto.

Lo primerito es instalar el programa, con un simple sudo apt-get install outguess en la consola. Una vez lanzado podemos trabajar con él desde la consola.

¿Cómo ocultamos un archivo? Bueno, vamos a empezar con dos archivos para un ejemplo: un archivo de texto que se llamará culpable.txt y una foto que se llamará coartada.jpg (festival del humor). En la línea de comandos debemos lanzar el programa pasándole como parámetros de entrada una contraseña (irá precedida de -k) y los datos en este orden: datos a ocultar, archivo «tapadera» y nombre que llevará el archivo generado (en este caso precedidos de un -d). Vamos con el ejemplo:

outguess -k mipassword1 -d culpable.txt coartada.jpg inocente.jpg

En este caso se generará una foto llamada inocente.jpg que aparentemente será la foto coartada.jpg pero que dentro contendrá el archivo culpable.txt para que sea extraído por aquel que sepa la contraseña.

Y ¿cómo se recupera el archivo?

Bueno, pues se necesita un comando similar, aunque añadiendo un -r al principio y como parámetros recibirá el archivo con el texto oculto y un nombre para el resultado recuperado:

outguess -r -k mipassword1 -d inocente.jpg recuperado.txt

Y de esa forma tenemos de nuevo el archivo .txt oculto, ahora bajo el nombre que le hemos dado tras recuperarlo.

No es una solución de seguridad definitiva, pero sí una ayuda a la hora de «ocultar» archivos.

Grave fallo de seguridad en Explorer

Desde OSI informan hoy que se ha encontrado una grave vulnerabilidad en Internet Explorer, que compromete al equipo en caso de visitar webs infectadas con malware, desde la versión 7 hasta la 10 (ambas inclusive) en los sistemas operativos Windows XP y Windows 7 (de Vista no dicen nada).

De momento Microsoft no ha sacado actualización ni parche, pero se espera que próximamente aparezca una actualización de seguridad. De momento recomiendan tener actualizado Microsoft EMET.

Yo personalmente lo que recomiendo es pasarse a Linux, pero allá cada cual.

Servidor de Chat con Raspberry Pi

Un amigo me ha dejado una Raspberry Pi y ando dando vueltas a experimentos varios. Esta mañana, hablando con un compañero de curso, este me comentó de un proyecto libre para convertir equipos en centros multimedia basado en software de XBOX de Microsoft (XBMC), si bien llegamos a la conclusión de que el pequeño miniordenador educativo tal vez no era lo más idóneo si quieres reproducir películas en HD (ojo, que hay una versión para Raspberry Pi de dicho software). Pero con todo esto del PRISM y el espionaje descarado de la NSA tal vez un servidor de chat pueda interesar a alguien.

Raspberry Pi de 2011
La Raspberry Pi del experimento

En este caso vamos a usar Prosody, y vamos a suponer que estáis usando la versión adaptada de Debian para la Raspberry Pi. Lo primero, como no, instalar Prosody:

sudo apt-get install prosody

Ok, ya está instalado. Con esto, el archivo de configuración básico y un par de usuarios creados ya podrías operar, pero vamos a configurar un poco la historia. Lo primero vamos a meter las librerías para encriptación, compresión y soporte de base de datos:

sudo apt-get install luasec lua-zlib luadbi

Con esto ya tenemos las librerías necesarias. Ahora toca irse al archivo de configuración y activar ciertos módulos. Dichos módulos, por defecto, vienen desactivados ya que las líneas en el archivo de configuración están comentadas con dos guiones al principio de la línea. Para descomentarlas simplemente borra esos guiones.

Para entrar a editar el archivo de configuración:

sudo gedit /etc/prosody/prosody.cfg.lua

Allí elegís ya los módulos a activar. Yo en el mío he activado estos:

                "privacy"; -- Support privacy lists
                "compression"; -- Stream compression
                "groups"; --Shared roster support
                "roster"; -- Allow users to have a roster. Recommended 
                "saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
                "tls"; -- Add support for secure TLS on c2s/s2s connections
                "disco"; -- Service discovery
                "private"; -- Private XML storage (for room bookmarks, etc.)
                "vcard"; -- Allow users to set vCards                
                "version"; -- Replies to server version requests
                "uptime"; -- Report how long server has been running
                "time"; -- Let others know the time here on this server
                "ping"; -- Replies to XMPP pings with pongs
                "adhoc"; -- Support for "ad-hoc commands" that can be executed with an XMPP client
                "admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands

Vosotros configurad como queráis. Ahora sí que vamos con un punto importante: ¿queremos que la gente pueda registrarse o queremos sólo poder crear usuarios nosotros para tener un mayor control del acceso? Ya que hablamos de seguridad y privacidad es un punto importante. Por defecto el módulo de registro y la opción de permitir el registro están desactivados, así que si queremos activarlo toca descomentar el módulo «register» y la línea que pone allow_registration=true. Es de suponer que no tendréis una ip fija, al menos en España lo normal es tenerla dinámica y la fija implica un sobrecargo en la factura, por lo que será cosa buena haceros con un dominio (podéis conseguir uno gratis en noip.com). Luego buscáis en la configuracion una línea que pone VirtualHost «example.com» y la cambiáis por vuestro dominio. Debajo habrá una línea que pone enabled = false, la comentáis o borráis y estará activado vuestro dominio.

Bueno, con esto ya tendrías el servidor de chat furrulando cosa buena. Pero como no queremos que un pajillero del FBI lea lo que escribimos casi mejor vamos a encriptar, que para algo metimos antes el módulo (aunque si leemos entre líneas la declaración de Snowden, es probable que la NSA ya sea capaz de romper la seguridad SSL). En todo caso lo primero es irnos a la carpeta de certificados de Prosody y desde allí trabajar:

cd /etc/prosody/certs/
sudo openssl req -new -x509 -days 365 -nodes -out "prosody.cert" -keyout "prosody.key"

Tras esto te pedirá una serie de datos que, excepto uno, no son muy relevantes. La excepción es Common Name (e.g. server FQDN or YOUR name) []:, donde tenéis que poner el nombre de dominio conseguido antes, el resto si queréis los podéis ignorar. Una vez acabado este proceso se crearán dos archivos: prosody.cert y prosody.key. Con ellos creados os toca volver a abrir para editar el archivo de configuración principal.

Ahí tenéis que copiar lo siguiente dos veces:

ssl = {
key = “/etc/prosody/certs/prosody.key”;
certificate = “/etc/prosody/certs/prosody.cert”;
}

La primera vez lo ponéis sobre las rutas ssl por defecto y ponéis exactamente lo mismo justo debajo de la línea de VirtualHost «elnombrededominioquetengáis».

Yo no me voy a meter a configurar base de datos, aunque instalara antes la librería, porque en una Raspeberry Pi no es que vayamos sobrados de recursos. Si queréis hacerlo tenéis un excelente tutorial en español aquí (fue uno de los varios que utilicé como documentación mientras hacía las pruebas).

Bueno, una vez acabado esto ya sólo nos queda lanzar Prosody:

sudo /etc/init.d/prosody start

Podéis modificar el sistema para que arranque al a vez que el sistema operativo, si lo véis necesario. Ahora con cualquier cliente de XMPP o Jabber, como Pidgin, podéis acceder a él. Cuando entréis por primera vez os pedirá que creéis una cuenta en el servidor. Bueno, si habéis habilitado el registro de usuarios bien, ¿y si no? Ya lo comentamos arriba, puedes no permitir el registro y crear tú los usuarios, si quieres un servidor de chat para un pequeño grupo de trabajo/amigos no es mala idea. Bueno, los usuarios se crean con la sintaxis sudo prosodyctl adduser nombredeusuario@eldominioquepillaras. Por ejemplo, supongamos que tu dominio es fucknsa.cc y el usuario que quieres crear se va a llamar, no sé, un nombre aleatorio, por ejemplo assange:

sudo prosodyctl adduser assange@fucknsa.cc

Por cierto, que si quieres montar el servidor de chat en una red local no necesitarás el dominio.

Bueno, ya tienes tu cacharrito con servidor de chat. A divertirse tocan.

Hashes de passwords en PHP 5.5

Uno de los problemas de los algoritmos criptográficos, como le explicaba el otro día a mi madre, es que al ser susceptibles de poder ser rotos por fuerza bruta cada X tiempo tienen que renovarse, dado que la mayor capacidad de procesamiento de los equipos (y más con la posibilidad de hacer computación distribuida) los hace vulnerables con el paso de los años. Decía un profesor mío, y un gran profesor por cierto, «por fuerza bruta todo se rompe, sólo hace falta tiempo«.

La hasta ahora última versión de PHP nos ofrece nuevas funciones a la hora de trabajar con hashes de passwords. Antes era tradicional utilizar funciones como md5(), sha1(), crypt() o hash(). El problema de usar md5() o sha1() es que usan algoritmos muy directos y ligeros. Es decir, que hacen la encriptación y resumen muy rápido, lo cual aunque beneficia el rendimiento en caso de un ataque (lo más habitual con md5() es el llamado «ataque de cumpleaños» que en lugar de intentar encontrar tu contraseña intenta encontrar simplemente una que de el mismo resultado como resumen) facilita la labor del atacante. En cambio hash() y crypt() son algoritmos más complejos, más lentos, tardan más en devolver el resultado. Algo que para el usuario es un imperceptible segundo de espera, pero que en caso de un ataque que tiene que probar millones de combinaciones se convierte en un poderoso impedimento.

En todo caso PHP 5.5 nos provee de nuevas funciones para trabajar con hashes de passwords:

  • password_get_info
  • password_hash
  • password_needs_rehash
  • password_verify

Las más importantes, en el uso normal que podemos hacer de estas funciones son la segunda y la cuarta. Empecemos entonces por password_hash():

Como su nombre indica, la función genera un hash de tu contraseña. Lógicamente tiene que recibir dicha contraseña como primer parámetro. Como segundo debe recibir una constante con el algoritmo a usar (las opciones son PASSWORD_DEFAULT, que es el que usa por defecto PHP, y PASSWORD_BCRYPT, que nos permite definir varias opciones), y si eliges PASSWORD_BCRYPT puedes pasarle como tercer parámetro una serie de opciones. Las más habituales son cost, que es el «coste de computación» o «número de vueltas» que dará el algoritmo y cuanto más alto sea este número menos rendimiento y más seguridad, y salt, que nos permite «salar» el password (añadirle una cadena para hacer más complejo el asalto a la contraseñas). Un ejemplo con las dos opciones, sacado de la web de php.net


<?php
echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT)."\n";

$options = [
    'cost' => 7,
    'salt' => 'BCryptRequires22Chrcts',
];
echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options)."\n";
?>

Como podéis ver se hacen dos hashes. El primero con los parámetros por defecto y el segundo usando PASSWORD_BCRYPT con un menor coste para el sistema (el cost en el algoritmo por defecto sería 10) pero con un salt definido. Por lo que he leído el algoritmo por defecto siempre mete un salt aunque no lo definas e incluso se recomienda que mejor dejar a PHP hacerlo antes que meter una cadena estática.

En el caso de password_verify() la cosa es más facililla. La función recibe la contraseña en texto plano y el hash, encriptado con la función password_hash(). Si conciden nos devuelve TRUE y si no coinciden nos devuelve FALSE.

De nuevo me remito al ejemplo del php.net para esto:


<?php
// Ver el ejemplo de password_hash() arriba para ver de dónde viene este hash.
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';

if (password_verify('rasmuslerdorf', $hash)) {
    echo '¡La contraseña es válida!';
} else {
    echo 'La contraseña no es válida.';
}
?>

Con estas dos funciones podéis hacer de manera muy simple un sistema de login en PHP, con apoyo de una base de datos.