Generar clave publica/privada y copiarla en el servidor para acceder sin usar la contraseña

Vamos a generar una clave publico/privada para acceder a un servidor sin estar metiendo constantemente la contraseña

Paso 1.

Genero la clave publica/privada
ssh-keygen -b 4096 -t rsa

Dale a enter cada vez que te aparezca un dialogo.

Lo copio al servidor que quiero acceder en un futuro sin pedir la contraseña sustituyte 199.199.199.199 por la ip de tu servidor.
ssh-copy-id root@199.199.199.199
Nos pedira la contraseña del servidor y cuando este validado ya agregado nuestra clave en el servidor.

Instalar servidor vpn (openVPN) + creacion subdominio en ubuntu

Para instalar OpenVPN server con Interfaz web para administrar usuarios basta con ejecutar los siguientes comandos:

wget https://raw.githubusercontent.com/theonemule/simple-openvpn-server/master/openvpn.sh
chmod +x openvpn.sh
./openvpn.sh --adminpassword=TestVPN25

Una vez instalado simplemente tenemos que entrar mediante ip mediante https

Estos comandos lo he sacado de la página https://clouding.io/kb/instalar-openvpn-en-ubuntu/ . Te aconsejo visitarla ya que solo he puesto lo básico para instalar el VPN.

Una vez instalado el servidor OpenVPN he querido poder entrar al panel de control a través del subdominio vpn.informaticosmurcia.es para poder acceder de una forma sencilla y fácil de recordar.

Bueno antes de nada saber que el script de arriba instala el servidor web lighttpd para poder realizar la administración del servidor VPN. Yo de forma particular utilizo en mi servidor de pruebas el servidor web nginx.

Primero voy a mover los ficheros que el script de OpenVPN me ha generado en /var/www/ a una carpeta diferente para poder luego redirigir el trafico de la url vpn.informaticosmurcia.es a esa carpeta:

  • Creo un directorio dentro de /var/www/ llamado vpn.informaticosmurcia.es
  • Muevo los ficheros creados por el script de instalacion del OpenVPN
    • mv /var/www/download.sh /var/www/vpn.informaticosmurcia.es/download.sh
    • mv /var/www/index.sh /var/www/vpn.informaticosmurcia.es/index.sh
    • Editamos el fichero /lighttpd.conf y cambiamos el puerto por defecto y el directorio raiz por defecto
      server.document-root        = "/var/www/vpn.informaticosmurcia.es"
      server.port                 = 6969

      Una vez cambiado reiniciamos el servicio lighttpd.

       service lighttpd restart
    • Creamos el fichero de configuracion del subdominio en nginx.
      nano /etc/nginx/sites-available/vpn.informaticosmurcia.es

      Realizamos la configuración del fichero:

      server {
        listen          80;
        server_name     vpn.informaticosmurcia.es;
       
        location / {
              proxy_set_header X-Forwarded-Host $host;
              proxy_set_header X-Forwarded-Server $host;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_pass https://127.0.0.1:6969/;
        }
      
       
      }
      
      

      Lo que hace Nginx es que todo lo que provenga de la url vpn.informaticosmurcia.es lo vamos a rediriguir de forma tasparente a nuestro servidor lighttpd que esta en el puerto 6969 en nuestro servidor.

    • Habilitamos en el servidor nginx el dominio.
      sudo ln -s /etc/nginx/sites-available/vpn.informaticosmurcia.es /etc/nginx/sites-enabled/vpn.informaticosmurcia.es

      Y reiniciamos el servidor nginx

      sudo service nginx restart

      Una vez hecho ya podemos acceder de forma comoda a nuestro servidor OpenVPN a través de vpn.informaticosmurcia.es

  • —- Dejo el fichero de configuración por si os da algun error:
  • :/etc/openvpn$ cat server.conf
    port 1194
    proto udp
    dev tun
    sndbuf 0
    rcvbuf 0
    ca ca.crt
    cert server.crt
    key server.key
    dh dh.pem
    tls-auth ta.key 0
    topology subnet
    server 10.8.0.0 255.255.255.0
    ifconfig-pool-persist ipp.txt
    push "redirect-gateway def1 bypass-dhcp"
    push "dhcp-option DNS 8.8.8.8"
    push "dhcp-option DNS 8.8.4.4"
    keepalive 10 120
    cipher AES-256-CBC
    
    user nobody
    group nogroup
    persist-key
    persist-tun
    status openvpn-status.log
    verb 3
    crl-verify crl.pem

Edito: Me ha ocurrido que instalando el servidor VPN en una maquina virtual para hacer pruebas el cliente no podia navegar. La solución es la siguiente.

iptables -I FORWARD -i tun0 -o eth0 -s 10.7.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -I POSTROUTING -o eth0 -s 10.7.0.0/24 -j MASQUERADE


tun0 es la interfaz que lan del servidor vpn
eth0 es la interfaz donde se va a redirigir el trafico hacia internet.

Proteger el directorio wp-admin con una contraseña usando .htaccess

Para aumentar la seguridad de su web y evitar, por ejemplo, que resulte vulnerable a ataques maliciosos tipo «de fuerza bruta», usted puede crear archivos .htaccess y .htpasswd que le permitián establecer una contraseña de acceso a su Panel de control o Dashboard.

Paso 1
Con un editor de texto, cree un documento llamado .htaccess (permite crear configuraciones específicas para una carpeta específica) con el siguiente contenido:

AuthType Basic
AuthName «Espacio potegido con password»
AuthUserFile /homepages/xx/xxxxxxxxx/htdocs/[Carpeta]/wp-admin/.htpasswd
require user [Usuario]

«/homepages/xx/xxxxxxxxx/htdocs/» es una dirección de ejemplo que usted debe substituir con la de su servidor, el nombre de la carpeta en que desee instalar el archivo y su nombre de usuario.

Para consultar la ruta de acceso a su servidor vaya su 1&1 Panel de control en Dominios>Administrar Dominios, y allí Seleccionar el dominio deseado y hacer clic en Información)

A tener en cuenta:
Si ya ha instalado un .hcaccess, esta nueva versión borrará la anterior, anulando la configuración anteriormente establecida.
Paso 2
Con un editor de texto, cree un documento llamado .htpasswd con el siguiente contenido, uno por cada usuario registrado, adaptado a su servidor:

[Usuario]:[ContraseñaEncriptada]
Paso 3

Para implementar los cambios efectuados, cargue los archivos en su carpeta /wp-admin, por ejemplo mediante un programa de FTP como Filezilla, en el que puede especificar que se trata de archivos de texto y transferirlos como ASCII, con el nombre de su servidor, su usuario y contraseña.

Una vez que estos archivos estén cargados en la carpeta /wp-admin, su página dispondrá de una capa extra de seguridad.

Fail2Ban ver jaulas y quitar ban de una ip

Script para ver todas las jaulas y el estado de cada una de ellas.

#!/bin/bash

JAILS=`fail2ban-client status | grep "Jail list" | sed -E 's/^[^:]+:[ \t]+//' | sed 's/,//g'`
for JAIL in $JAILS
do
  fail2ban-client status $JAIL
done

una vez que sabemos en que jaula esta la ip que queremos quitarle el ban usamos el siguiente comando:

sudo fail2ban-client set NOMBREJAULA unbanip xxx.xxx.xxx

 

Inslatar certificado SSL en Nginx con CertBot

He querido conocer como se pasa de una página de http a hhtps y buscando he descubierto Let’s Encrypt y con la herramienta Certbot pasar de http a hhtps de forma fácil y automática.

En este caso no quiero poner un tutorial aquí ya que en la página Certbot está muy bien explicado según el sistema operativo que tengas y el servidor web que tengas instalado.

 

Comando diff Comparar archivos en linux

 

Para comparar carpetas puedes utilizar el comando diff. A pesar de que el objetivo del comando es comparar archivos línea por línea, lo podemos utilizar para comparar el contenido de 2 carpetas.

El comando diff devuelve las diferencias entre dos archivos. Las diferencias aparecerán con el simbolo ‘< ‘o ‘>’.

< Indica el primer archivo (argumento de la izquierda)

> Indica el segundo archivo (argumento de la derecha)

Para utilizarlo basta ejecutar el siguiente comando

diff -ru carpeta1 carpeta2

Apenas descubrí que puedes especificar el parámetro -q para que no compare el contenido de los archivos

diff -ruq carpeta1 carpeta2

Tambien podemos utilizar el comando rsync para comparar carpetas. Esto tiene la ventaja de que puedes hacerlo con carpetas remotas, mediante ssh.
Para comparar una carpeta remota basta agregar el parámetro –dry-run o en su forma abreviada -n de la siguiente forma

rsync -avn /home/cirovladimir cirovladimir@192.168.0.3:/home/cirovladimir

El editor vi de linux

El editor vi

vi es un editor de texto elemental que conviene conocer porque a veces es el único a nuestro alcance.

Para aclararse con vi, tienes que tener en cuenta que vi puede encontrarse en dos estados o modos:

  • En el modo de comandos, vi está esperando que le des alguna orden (por tanto, interpreta lo que escribas como órdenes).
  • En el modo de edición, vi está esperando que escribas el texto del fichero (por tanto, interpreta lo que escribas como texto).

Cuando entras en vi, está en modo de comandos. Para pasar al modo de edición puedes pulsar i (insertar), a (añadir), o (añadir una línea). Para pasar al modo de comandos, puedes pulsar Escape o Suprimir.


Comandos más habituales de vi

 
comando descripción
i insertar antes del cursor
a añadir detrás del cursor
o añadir una línea en blanco
x borrar un carácter
j borrar el final de línea (une dos líneas)
dd borra la línea completa
u deshacer la última edición
:q salir
:q! salir sin guardar
:w guardar
:wq guardar y salir
:set nu muestra números de línea
:set nonu oculta números de línea
:n copy m copia la línea n detrás de la línea m
:n1, n2 copy m copia desde la línea n1 hasta la línea n2 detrás de la línea m

Subversion, instalación, configuración y uso en Debian

Control de versiones

Para llevar un control de los cambios que se realizan en el código fuente al desarrollar una aplicación, se suelen usar sistemas de control de versiones. Estos sistemas pueden ser usados por varios usuarios/desarrolladores al mismo tiempo, ya que éstos se conectan a un servidor central donde se guarda el repositorio que contiene el código fuente original y los cambios que se van haciendo, junto con todos los datos necesarios para conocer quien, cómo y porqué alguno de los usuarios ha realizado un cambio. De este modo el desarrollo de la aplicación es mucho más ordenado y sobretodo sencillo porque estos programas permiten volver a una versión anterior y así poder deshacer los errores que pueden aparecer en el avance de la programación.

Sigue leyendo Subversion, instalación, configuración y uso en Debian

Shell de linux – Comando tail

Este comando lo he utilizado mucho durante las tareas de debugging.
El comando tail,  muestra las últimas líneas de uno o más archivos de texto.
tail imprimirá por defecto a la salida estándar las últimas diez líneas de sus datos de entrada. Tanto las unidades de impresión (líneas, bloques, bytes) como su número pueden alterarse con opciones
Sigue leyendo Shell de linux – Comando tail