Página no encontrada – Otro sysadmin suelto por estos mundos de dios https://sistematizando.net Otro sysadmin suelto por estos mundos de dios Thu, 06 Aug 2020 07:41:09 +0000 es hourly 1 https://wordpress.org/?v=6.4.3 Usando sshuttle para hacernos una pseudo vpn https://sistematizando.net/2020/07/01/usando-sshuttle-para-hacernos-una-pseudo-vpn/ Wed, 01 Jul 2020 14:57:58 +0000 https://sistematizando.net/?p=116 Actualmente, las redes corporativas, a menudo ofrecen una VPN (virtual private network) para ofrecer comunicaciones seguras a sus trabajadores. Sin embargo los protocolos que utilizan a veces pueden ser un tanto lentos. Si tienes acceso a un host en la red remota, a través de SSH podrías configurar una redirección de puertos. No obstante, esto puede ser pesado, especialmente si necesitas trabajar con un número elevado de hosts en esa red.

La aplicación sshuttle permite configurar una VPN rapidamente con solamente un acceso SSH. Sigue leyendo para mas información sobre como utilizarla.

Sshuttle ha sido diseñado exactamente para la clase de escenario descrito más arriba. El único requisito en el lado remoto es que el host tenga disponible python.

Instalando shuttle

En mi caso yo utilizo Fedora como sistema operativo por lo que es sencillo instalarla desde los repositorios oficiales:
$ sudo dnf install sshuttle
Una vez instalada, puedes encontar interesante echar un vistazo a la página del manual
$ man sshuttle

Configurando la vpn

El caso más simple es aquel en el que redirigimos todo el tráfico a la red remota. Tenemos que usar el parámetro -r con el usuario SSH y el nombre del host remoto.
$ sshuttle -r username@remotehost 0.0.0.0/0


Sin embargo, puedes querer acotar la VPN a ciertas subredes en lugar de pasar por ella todo el tráfico de red. Digamos que tu empresa usa las subredes 10.0.0.0 y 172.16.0.0. El comando para redirigir el tráfico a esas redes a través de la vpn sería:
$ sshuttle -r username@remotehost 10.0.0.0/8 172.16.0.0/16


Esto funciona estupendamente para host en la red remota de los que conocemos su dirección IP. Pero ¿Que sucede si nuestra oficina tiene montones de hosts? podemos utilizar el parámentro --dns para redirigir también las consultas dns a la oficina
$ sshuttle --dns -r username@remotehost 10.0.0.0/8 172.16.0.0/16


Para ejecutar sshuttle como demonio podemos utilizar el parámetro -D

Si te apetece leer mas acerca de sshuttle y como funciona pues ir a la documentación oficial. Si quieres revisar su código pues ir a la página de su proyecto en github

]]>
MariaDB en CentOS 7 https://sistematizando.net/2020/06/19/mariadb-en-centos-7/ Fri, 19 Jun 2020 08:00:00 +0000 https://sistematizando.net/?p=105 Recientemente he actualizado a la última versión de WordPress y me he dado cuenta de que se ha añadido una nueva fucionalidad llamada «Site Health» que nos permite revisar la configuración del blog y nos da una serie de recomendaciones para mejorar su configuración.

Una de las recomendaciones aconsejaba actualizar la versión de MariaDB de la 5.5 a la 10.4. Como muchos de vosotros sabréis, en los repositorios oficiales de Centos 7 unicamente tenemos la versión 5.5 por lo que necesitaremos instalar los repositorios oficales de MariaDB.

Estas son las instrucciones para hacerlo:
Antes de empezar, no te olvides de hacer una copia de seguridad de las bases de datos que tengas en el servidor.

Paramos el servicio de MariaDB
systemctl stop mariadb
Nos bajamos el script que configura los repositorios necesarios
wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
Le damos permisos de ejecución
chmod +x mariadb_repo_setup

Ejecutamos el script
./mariadb_repo_setup

Actualizamos el sistema. Entre los paquetes ha actualizar estarán los relacionados con MariaDB
yum update

Levantamos el servicio de mariadb
systemctl start mariadb
Y ejecutamos:
mysql_upgrade
Por último habilitamos el servicio mariadb que puede haberse quedado desactivado con la actualización
systemctl enable mariadb

Documentación de referencia

]]>
Configurar ssl en nginx con let’s encrypt https://sistematizando.net/2016/08/17/configurar-ssl-en-nginx-con-lets-encrypt/ Wed, 17 Aug 2016 07:00:55 +0000 http://sistematizando.net/?p=54 Hoy os voy a explicar como configurar el servidor web nginx para servír contenido a través del protocolo HTTPS y como obtener un certificado válido para nuestro domino utilizando Let’s encrypt.

Lo primero de todo, necesitamos generar un certificado para nuestro dominio. Para ello vamos a utilizar la utilidad certbot que podemos instalar desde el repositorio de epel. Si no lo tenemos configurado en nuestro servidor lo podemos hacer ejecutando

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

para posteriorme instalar la utilidad

yum install certbot

A continuación, ya podemos generar un certificado con el siguiente comando

certbot certonly --webroot -w ${DirectoryRoot} -d ${dominio.com} -d www.${dominio.com}

Sustituyendo ${DirectoryRoot} por la ruta de sistema a la raiz de nuestro dominio y ${dominio.com} por el nombre de nuestro dominio.

El comando anterior habrá generado cuatro enlaces simbolicos en la ruta /etc/letsencrypt/live/${dominio.com}/:

  • cert.pem -> ../../archive/${dominio.com}/cert1.pem
  • chain.pem -> ../../archive/${dominio.com}/chain1.pem
  • fullchain.pem -> ../../archive/${dominio.com}/fullchain1.pem
  • privkey.pem -> ../../archive/${dominio.com}/privkey1.pem

Las rutas que vamos a usar en el fichero de configuración de nginx son las de los enlaces simbólicos puesto que los ficheros del directorio archive pueden ir cambiando con las sucesivas renovaciones del certificado.

Una vez que ya tenemos un certificado válido para nuestro dominio nos toca adaptar la configuración de nginx para que haga uso de el.

Para una primera aproximación, vamos a hacer uso del mismo bloque server{} para configurar el acceso a nuestro dominio a través de http y https.  Por el momento nos bastará con abrir la configuración correspondiente y añadir las siguientes lineas:

ssl    on;
listen 443;
ssl_certificate /etc/letsencrypt/live/${dominio.com}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/${dominio.com}/privkey.pem;

Como podeis observar, como clave pública he utilizando el fichero fullchain.pem en lugar del cert.pem. Lo he hecho de esta manera debido a que fullchain.pem contiene la ruta completa de certificación incluyendo nuestro certificado y todos los certificados intermedios que sean necesarios para validarlo.

Más adelante os explicaré como redirigir todas las peticiones inseguras hacía el protocolo seguro. Para ello necesitaremos dos bloques server{} (uno escuchando en el puerto 80 y otro en el 443).

Solo nos queda reiniciar el servicio nginx

systemctl restart nginx

Y para finalizar un par de advertencias:

La primera es deciros que teneis que tener en cuenta que los certificados generados con let’s encrypt tienen una fecha de expiración de 90 días por lo que tenemos que estar pendientes de renovarlo (o mejor aún programar una tarea en el cron del servidor que lo haga automáticamente).

Y por otro lado, como habeis podido deducir, la configuración SSL que hemos realizando es la más básica posible. Más adelante os hablaré de como conseguir mejorarla para llegar a conseguir una puntuación A+ en el test de ssllabs.com

]]>
nginx en Centos 7 https://sistematizando.net/2016/08/12/nginx-en-centos-7/ Fri, 12 Aug 2016 13:19:01 +0000 http://jortega.net/?p=16 En un primer momento había montado el servidor desde el que sirvo el blog utilizando un entorno LAMP (Linux, Apache, MySQL, Php) pero hoy me he decidido a cambiar apache por nginx y convertirlo en un LEMP (Linux, /E/nginx, MySQL, Php)

La verdad es que el cambio no ha resultado ser muy traumático, me esperaba que fuese algo más complicado.

Como nginx no existe en los repos oficiales de CentOS lo primero que tenemos que hacer configurar el repositorio de nginx en el servidor. Para ello creamos el fichero

  • /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

Para instalar el servidor nginx. ejecutamos:

yum install nginx

Como hasta este momento tenía instalado apache, tenemos que parar el servicio web

systemctl stop httpd

Como motor de php utilizo php-fpm y hasta el momento lo tenía con la configuración por defecto escuchando por el puerto 9000 pero ya que me he puesto hacer cambios en el servidor, he decidido ulilizar un socket unix en lugar de un puerto tcp. Para ello editamos el fichero

  • /etc/php-fpm.d/www.conf

y sustituimos la linea

listen = 127.0.0.1:9000

por

listen = /var/run/php-fpm/php-fpm.sock

Finalmente reiniciamos el servicio

systemctl restart php-fpm

Ahora tenemos que configurar el servidor de nginx. En mi caso lo que he hecho es dejar un fichero de configuración más o menos estandar en la ruta /etc/nginx/nginx.conf y crear un fichero de configuración especifico para cada virtual host dentro del directorio /etc/nginx/vhost/.

Lógicamente, deberemos hacer referencia a los ficheros de los virtual host desde el fichero /etc/nginx/nginx.conf con la directiva

include /etc/nginx/vhosts/*.conf;

A continuación os pongo un ejemplo de fichero de configuración de un virtualhost que podeis utilizar y retocar como mejor os parezca

server {
    listen       80;

    server_name  dominio.com www.dominio.com;

    root   {path de sistema de vuestro dominio};
    index  index.php index.html index.htm;

    location / {
	try_files $uri $uri/ /index.php?q=$request_uri;
    }
    location ~ \.php$ {
	try_files $uri =404;
       	fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
       	fastcgi_index index.php;
       	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       	include fastcgi_params;
    }

}

Por último solo nos queda arrancar y configurar el servicio para que levante en el inicio del sistema. Para ello:

systemctl start nginx
systemctl enable nginx

En próximos artículos hablare de como configurar el servidor para servir contenido a través de https y de como tratar de securizar nuestra instalación de nginx.

]]>