Archivo de Categoría: Linux

Solucionar cambio de hora Dual Boot Ubuntu – Windows

Es habitual que cuando tengamos alguna versión de Linux y Windows instalados con Dual Boot se cambie la hora cada vez que nos cambiamos.

Básicamente esto pasa porque Linux trabaja el reloj del PC por defecto como hora universal y Windows, al contrario, lo hace como hora local. Para solucionar esto hay dos opciones, configurar Linux como local o Windows como universal.

A mi me gusta más configurar Windows como Universal, así que eso vamos a hacer…

  • Abrir regedit
  • Navegar hasta:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
  • Boton derecho y seleccionar “Nuevo -> Valor de DWORD (32 bits)”

regedit-1

  • Como nombre agregamos “RealTimeIsUniversal” (sin las comillas, obviamente)
  • Se hace doble click para editar el valor y cambiarlo de 0 a 1.regedit-2

Con eso ya está listo. Ahora solamente hay que reiniciar y entrar a Linux nuevamente para que cambie la hora. La próxima vez que se se inicie con Windows ya no se habrá cambiado la hora y no volverá a pasar.

Obtener A+ en Qualy’s SSL Labs

En el post anterior expliqué cómo obtener un certificado gratuito y dejarlo con A en Qualy’s SSL Labs, pero si eso no es todo y queremos tener A+ aquí explicaré cómo hacerlo.

instantánea118

En realidad en términos de configuración es bastante simple, basta con agregar lo siguiente en la configuración del server de nginx:

add_header Strict-Transport-Security max-age=63072000;

Pero, ¿qué es esto?

Para explicarlo en simple (o en Cetáceo) básicamente se fuerza que toda la navegación sea por HTTPS, incluso la primera comunicación, para evitar que al momento de generar una redirección desde un HTTP un “atacante” se pueda poner “al medio” e interceptar la comunicación antes que sea segura.

*NOTA: El max-age lo pueden configurar como quieran, está en segundos y el del ejemplo es igual a 2 años.

Certificado SSL gratis con Let’s Encrypt en nginx

Vamoh a calmarno’ y dejaré de lado todas las flores a la fundación Linux que siempre se merece junto con todo lo que un  lo que el código abierto y GNU/Linux ha aportado en nuestras vidas geeks y me centraré en un tutorial paso a paso, que espero me sirva como ayuda memoria, de cómo generar un certificado SSL gratis, ponerlo en un proxy reverso con nginx y dejarlo tiqui taca para que pase las más exigentes pruebas de blancura para obtener un A en la prueba de Qualys SSL Labs.  

instantánea96

Requisitos, y cosas que no enseñaré cómo hacer porque hay un montón de tutoriales en internet

  • Servidor Linux, en mi caso CentOS 6 (Sí, aun no me pego el salto a RHEL 7)
  • Dominio o subdominio
  • nginx configurado como proxy
  • Acceso a internet desde el servidor para generar el certificado
  • Un poco de paciencia

Tampoco puedo saltarme todo, así que… ¿Qué es Let’s Encrypt? Básicamente es una autoridad certificadora libre, abierta, automática y gratuita, como debe ser, patrocinada por la Linux Foundation. En otras palabras se cagó a todas las empresas que cobraban lo que querían por hacer algo tan básico y simple como generar un certificado de seguridad para hacer Internet un lugar más seguro para todos los que día a día interactuamos y enviamos información sensible por la red (como las fotos de mis vacaciones, cof cof).

Para obtener el certificado  se debe usar el cliente certbot que nos ayudará a instalar todas las dependencias necesarias en nuestro servidor y generar el certificado en un par de pasos.

OJO: Todo esto se debe realizar solamente en el servidor de nginx, no en el servidor donde realmente esta nuestro sitio, que como es un proxy reverso no necesariamente es el mismo donde corre nuestra web, esto debido a que nginx es nuestro extremo expuesto a internet y será el quién se encargará de la seguridad de la comunicación que finalmente llega al usuario.

En este caso a modo de ejemplo, nginx no lo configuraré como proxy reverso apuntando a otro servidor, simplemente servirá el index por defecto que viene cuando se instala.

Instalar el certbot

Antes de todo, se deben instalar los repositorio epel

yum install epel-release

Ahora se obtiene una copia de certbot y se le dan los permisos necesarios,

wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto

¿certbot-auto? Es lo mismo que certbot pero instala todas las dependencias necesarias para hacer todo más fácil.

Ahora vamos a ejecutarlo y generar el certificado. Pero antes de eso, para facilitar la verificación de nuestra propiedad del sitio web en cuestión, vamos detener nginx o apache (o lo que tengamos corriendo en puerto 80) para que certbot-auto levante temporalmente un servicio corriendo en ese puerto.

./certbot-auto certonly -d seguro.fpipe87.com

instantánea99

instantánea100

Ahora se debe configurar nuestro sitio web en nginx, en este caso yo lo haré en /etc/nginx/conf.d/ssl.conf para que sea un poco más ordenado.

La configuración debe ser tal cual como está abajo, solamente se debe cambiar el dominio en cuestión y lo que va dentro de location / { } porque es qué se mostrará cuando se acceda.

server {
listen       443 ssl;
server_name  seguro.fpipe87.com;

ssl_certificate      /etc/letsencrypt/live/seguro.fpipe87.com/cert.pem;
ssl_certificate_key  /etc/letsencrypt/live/seguro.fpipe87.com/privkey.pem;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers “EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA38
4:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-A
ES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES1
28-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4”;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security max-age=600000;

location / {
root   html;
index  index.html index.htm;
}
}
instantánea104

Con esa configuración ya estamos casi listos y tenemos lo más dificil listo. El test marcará B y para dejarlo A basta solo un paso más.

instantánea103

Ahora se ejecuta un comando para generar un nuevo grupo Diffie-Hellman. Google Chrome, Mozilla Firefox, and Microsoft Internet Explorer aumentaron el mínimo de bits necesarios en la encriptación a 1024. En este caso vamos a generar uno de 4096 bits para evitar futuros problemas con OpenSSL

openssl dhparam -out /etc/letsencrypt/live/seguro.fpipe87.com/cert.dhparam.pem
4096

instantánea106

Esto se puede demorar un par de minutos dependiendo obviamente de la potencia de nuestro servidor.

Luego basta con agregar esto a la configuración de nginx

ssl_dhparam          /etc/letsencrypt/live/seguro.fpipe87.com/cert.dhparam.pem;

instantánea111

Reiniciamos nginx y probamos nuevamente (OJO, para re scannear hay que presionar donde dice “Clear Cache”)

instantánea107

Ok, con esto sacamos el error de Diffie-Hellman pero sigue siendo marcando B porque nos falta agregar algo más. Si bajamos y vemos los detalles solo falla esto:

instantánea108

Esto es porque nos falta agregar la información de Let’s Encrypt en el certificado generado. Basta con abrir el archivo y agregar lo siguiente al final del certificado.

https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem.txt

vim /etc/letsencrypt/live/seguro.fpipe87.com/cert.pem

Para que quede así más o menos así:

instantánea109

Ahora sí está todo listo, reiniciamos por última vez nginx para que tome los cambios y vamos a probar nuevamente en la página. Tal como se muestra en la imagen a continuación marcará A y estará en verde.

instantánea110

Bueno, eso es todo y pese a que parece largo en realidad no lo es tanto y tenemos nuestro certificado gratis y seguro.

Cualquier duda o sugerencia lo pueden dejar en los comentarios y con gusto los ayudaré.

CentOS: Instalar “setup”

“setup command not found”

La versión minimal no trae esta utilidad así que hay que instalarla, basta con estos comandos.

yum install setuptool -y
yum install system-config-network* -y
yum install system-config-firewall* -y
yum install system-config-securitylevel-tui -y
yum install system-config-keyboard -y
yum install ntsysv -y

Access denied for user ‘user’@’localhost’ (using password: YES)

Después de crear un usuario con la sentencia típica

GRANT all privileges ON *.* TO ‘user’@’%’ IDENTIFIED BY ‘micontrasena’;

Trataba de conectarme pero no lograba, la solución era muy simple.
instantánea44

Buscando y buscando encontré que el problema es el usuario anónimo que estaba activado.

Basta con ejecutar el típico

mysql_secure_installation

Aquí se desactiva el usuario anónimo y otras cosas básica.