├── ACL └── AccesControlList │ └── Documentation.md ├── DHCP └── Documentation.md ├── DNS └── Documentation.md ├── FileShare ├── FTP File Transfer Protocol │ ├── FTP SSH File Transfer Protocol por SSH │ │ └── Documentation.md │ └── SFTP Secure File Transfer Protocol │ │ └── Documentacion.md └── NFS+SMABA │ ├── Documentation.md │ └── Documentation.pdf ├── Proxy └── Documentation.md ├── README.md ├── Security ├── DataDuplicator │ └── Documentation.md ├── ProxyChain │ └── Tor │ │ ├── Documentation.md │ │ └── proxychain.conf ├── SQUID Proxy Server │ ├── Documentation.md │ └── Documentation.pdf └── VPN │ └── OpenVpn │ ├── Documentation.md │ └── Documentation.pdf └── WebPage ├── Apache2 ├── Documentation.md └── Documentation_PagWeb_Apache2_Linux.pdf ├── Wordpess ├── Documentation.md └── Documentation.pdf └── nginx ├── Documentation.md └── Documentation.pdf /ACL/AccesControlList/Documentation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Theritex/LinuxGuide/8d8f9d9e1a4533c860d11e6ec87d48a34a6427b8/ACL/AccesControlList/Documentation.md -------------------------------------------------------------------------------- /DHCP/Documentation.md: -------------------------------------------------------------------------------- 1 | # Configuracion DHCP Ubuntu Server 2 | 3 | 4 | La máquina que contendrá el servidor de DHCP será Ubuntu Server. 5 | Esta será la encargada de realizar las concesiones de las diferentes IP's. 6 | 7 | ## Instalación y Estado del Servicio 8 | 9 | Comprueba que la máquina cliente y la máquina servidor tienen los nombres correctos y los 10 | adaptadores de red operativos y configurados de forma que pertenezcan a la misma red. 11 | Demuestra que funciona la comunicación entre ambas máquinas, para ello llevaremos a cabo el siguiente comando `ping IP`. 12 | Instala el servicio DHCP, el paquete a instalar se llama: `isc-dhcp-server` 13 | 14 | Utiliza el comando `service isc-dhcp-server status` para ver el estado en el que se encuentra el servicio DHCP. 15 | Obtendrás una salida como la siguiente (No se escucha ninguna interfaz) 16 | 17 | Posteriormente prueba a iniciar el servicio mediante el siguiente comando `isc-dhcp-server start` para iniciar el servicio. 18 | Obtendrás un error, pues no has configurado el servicio correctamente. 19 | 20 | ## Sobre los Comandos 21 | 22 | - isc-dhcp-server start: Iniciar el servicio 23 | - isc-dhcp-server stop: Detiene el servicio 24 | - isc-dhcp-server force-reload: Recarga la configuración del servicio sin detenerlo. 25 | - isc-dhcp-server restart: Reinicia el servicio por completo 26 | - isc-dhcp-server status: Muestra el estado en el que se encuentra el servicio 27 | 28 | ## Configuración y Estado del Servicio 29 | 30 | Comprueba el syslog del sistema con `tail -10 /var/log/syslog` justo despues de haber reiniciado el servicio. 31 | Si la información que aparece no es útil, ejecuta `journalctl -n 50` para mostrar las __últimas 50 lineas del log__ y averiguar qué ha pasado. 32 | 33 | Tras le ejecución de estos comandos, podremos observar errores o advertencias en el servicio, los cuales nos indicarán errores en el código, información sobre el consumo de CPU, la salida del código, siendo un ejemplo: 34 | `code=exited, status=1/FAILURE - failed with result ‘exit-code’` 35 | 36 | ## Configuración del servicio DHCP - Tarjetas de Red 37 | Configura el servicio DHCP para que únicamente se utilice la tarjeta LAN (red interna). 38 | 39 | El fichero de configuración a modificar es: `isc-dhcp-server`, en la ruta absoluta: 40 | `/etc/default/isc-dhcp-server`, mediante el siguiente comando: 41 | `sudo nano /etc/default/isc-dhcp-server`. 42 | 43 | Hay que añadirle la siguiente línea: `INTERFACESv4="enp0s3"` (sustituyendo la interfaz por la salida a la que daremos IP a otros equipos). 44 | 45 | Nos dirigimos al fichero de configuración mediante el siguiente comando: 46 | `sudo nano /etc/dhcp/dhcpd.conf` 47 | Y descomentamos la siguiente línea: 48 | `authoritative;` 49 | Servidor Autoritativo (authoritative): Al habilitar esta opción, le estás diciendo al servidor DHCP que es el servidor DHCP principal de la red. 50 | Cuando un servidor DHCP se configura como autoritativo, responderá rápidamente a cualquier solicitud de clientes DHCP (como solicitudes de dirección IP) y puede también enviar respuestas cuando detecte que otro servidor DHCP está enviando configuraciones erróneas o contradictorias. 51 | 52 | ## Configuración de Rangos de IP 53 | 54 | Configura el servicio dhcp para dar 3 rangos de direcciones (de 10 IPs cada uno), de la red administrada por el servidor, a las máquinas que realizan la petición DHCP. 55 | Separa estos rangos por 5 direcciones IP no utilizadas entre sí. 56 | Dentro del fichero `dhcpd.conf`, en la ruta `/etc/dhcp/dhcpd.conf`, editamos las siguientes líneas: 57 | ``` 58 | subnet [IP-Local] netmask [mascara-red] { 59 | range rango-inicial rango-final; 60 | } 61 | ``` 62 | Siendo así el siguiente ejemplo de rangos: 63 | ``` 64 | 192.168.0.10 a la 192.168.0.20 65 | 192.168.0.32 a la 192.168.0.42 66 | 192.168.0.53 a la 192.168.0.63 67 | ``` 68 | 69 | ## Obtención de IP por DHCP Windows/Ubuntu 70 | Arranca la máquina cliente Linux y configurala de forma que tome su IP automáticamente y comprueba qué IP ha recibido, puedes usar el software desarrollado por quien ha documentado este servicio [AutonNetplan](https://github.com/Nisamov/autonetplan). 71 | 72 | En este caso la máquina cliente Ubuntu ha recibido la ip: `192.168.0.10` 73 | 74 | Arranca la máquina cliente Windows. Configurala de forma que tome su IP 75 | automáticamente y comprueba qué IP ha recibido. 76 | 77 | En este caso la máquina Windows Cliente ha recibido la ip: `192.168.0.11` 78 | 79 | ## Configuración y DNS 80 | 81 | Especifica la puerta de enlace predeterminada (default gateway) en las opciones que tenemos definidas por el servidor, y los servidores DNS en las opciones de dentro del ámbito que hemos definido. 82 | 83 | ¿Cuál es la utilidad del DNS y de la puerta de enlace? 84 | - DNS: (Domain Name System)es un sistema que traduce de dirección web a dirección IP para permitir la conexión a servidores. 85 | - Puerta de enlace: Suele ser un equipo configurado para otorgar a las máquinas una red LAN, conectándose con a una conexión exterior 86 | 87 | ¿Son necesarios para ésta práctica? 88 | - No lo son, esta práctca es un ejemplo de DHCP local, no obstante siempre se puede ampliar. 89 | 90 | Si tenemos definidas diferentes opciones en el servicio, en el ámbito y en las reservas, ¿cuáles se aplican en cada caso? Compruébalo cambiando alguna opción de dentro del ámbito. 91 | - Servidor DHCP (Afecta a todos los ámbitos y reservas “Prioridad 3”) 92 | - Ámbito (Afecta al ámbito y reservas de dicho ámbito “Prioridad 2”) 93 | - Reserva de IP (Afecta a las reservas “Prioridad 1”) 94 | 95 | Para establecer una IP reservada, necesitamos los siguientes datos: MAC e IP a reservar. 96 | Para obtener un ejemplo de las líneas a añadir: 97 | ``` 98 | # Hardware ethernet es la MAC de la máquina a la que le reservaremos la IP 99 | hardware ethernet 00:1F:6A:21:71:3F; 100 | # Fixed address es la direccion IP reservada para la máquina 101 | fixed-address 192.168.0.22; 102 | ``` 103 | Esta IP que le otorgamos debe encontrarse dentro del rango que le establezcamos, de lo contrario no otorgará la misma. 104 | 105 | ## Asignación de IP (reservas) 106 | 107 | Asignar siempre la misma IP a la misma máquina a través de DHCP (reserva) 108 | 109 | Configurar parámetros opcionales diferentes y comprobar que realmente aplica estas 110 | opciones preferentemente a las opciones de la subred. 111 | 112 | La ip ha de estar fuera del rango que se otorgan las IP, dentro del fichero 113 | `/etc/dhcp/dhcpd.conf` 114 | 115 | ## DHCP Leases 116 | Comprueba que la reserva funciona en una máquina cliente. 117 | 118 | Comprueba cómo aparecen estas reservas en el fichero de concesiones `/var/lib/dhcp/dhcpd.leases`. 119 | 120 | Averigua cómo se pueden saber las concesiones dadas, buscando en su registro. 121 | 122 | ¿En qué fichero se encuentran? 123 | - Se encuentran en el fichero /var/lib/dhcp/dhcpd.leases 124 | 125 | ¿Qué información nos proporciona cada una de las entradas que se muestran? 126 | - No me muestra la reserva por lo que no puedo indicar la que me informa. 127 | 128 | ¿Aparecen las reservas? 129 | - No se muestra en las reservas (no obstante, la ip se otorga correctamente) 130 | 131 | ## Tiempo de concesión 132 | 133 | Modifica el tiempo de concesión del servidor "default-lease-time" a 1 minuto. 134 | 135 | Comprueba qué pasa en el fichero de registro de concesiones y en el cliente (comandos: `ipconfig -all` o `ip a`). 136 | 137 | Estos cambios deben hacerse dentro del fichero: `/etc/dhcp/dhcpd.conf` 138 | Ahora,modifica el `max-lease-time` a `5` minutos. Vuelve a hacer la anterior prueba. 139 | 140 | `max-lease-time 5;` 141 | 142 | ¿Qué ha pasado? 143 | El parámetro `max-lease-time` se utiliza para indicar el máximo tiempo de concesión de una IP, si un cliente solicitara una concesión por encima de este tiempo, se le asignaría el máximo. 144 | 145 | Su sintaxis es la siguiente: `max-lease-time segundos;` 146 | 147 | ¿Qué diferencia hay entre `default-lease-time`, `max-lease-time` y `min-lease-time`? 148 | 149 | Si es default (por defecto) significa que si no se indica nada, el tiempo de concesión es el default. 150 | 151 | Si es max (máximo), significa que es el tiempo máximo de concesión, al mismo tiempo que si es min (mínimo), significa lo contrario, el tiempo mínimo de concesión. 152 | 153 | ## Explicación Características 154 | 155 | Además de describir todos los pasos realizados con sus resultados, explicad en una frase las siguientes características que se pueden especificar: 156 | 157 | - Dominio para los clientes: “Grupo” donde se encuentran los clientes, permitiendo 158 | administrarlos de una forma más sencilla. 159 | - Tiempo de cesión: Es el tiempo medio que el servidor permite a un equipo utilizar una ip 160 | - Tiempo de cesión máximo: Tiempo máximo que el servidor permite a un equipo utilizar una 161 | ip. 162 | - Dirección de difusión: Es la dirección donde se envían datos. 163 | 164 | ## Resolución de Preguntas 165 | 166 | ¿Qué quiere decir que un servidor DHCP tenga la opción "authoritative" activada? 167 | - Cuando un servidor DHCP tiene la opción "authoritative" activada, está indicando que la configuración de red definida en ese servidor es la correcta y debe ser tomada como definitiva por los clientes DHCP. Si un cliente DHCP intenta usar una dirección IP que no corresponde a las configuraciones de este servidor autoritativo, el servidor puede instruir al cliente a deshacerse de esa dirección IP y solicitar una nueva configuración. 168 | 169 | ¿Prevalece sobre otros servidores DHCP? 170 | - La opción "authoritative" no hace que un servidor DHCP prevalezca automáticamente sobre otros servidores DHCP en la red. Sin embargo, en caso de conflictos donde los clientes reciban respuestas de múltiples servidores, los clientes pueden interpretar la respuesta del servidor autoritativo como la correcta y preferir su configuración. En redes bien diseñadas, generalmente solo hay un servidor DHCP autoritativo para evitar conflictos. 171 | 172 | ¿Qué utilidad tiene? 173 | - La principal utilidad de tener la opción "authoritative" activada es evitar problemas con configuraciones incorrectas. Si hay dispositivos en la red que tienen configuraciones estáticas erróneas o han recibido configuraciones de un servidor DHCP antiguo o no autoritativo, el servidor autoritativo puede ayudar a corregir estas situaciones. Es especialmente útil cuando se hacen cambios significativos en la infraestructura de red y se necesita asegurar que todos los dispositivos obtienen la configuración correcta de una fuente confiable. 174 | 175 | ¿Existe una directiva opuesta? 176 | - La directiva opuesta sería configurar el servidor DHCP como "no authoritative" (no autoritativo). Esto significa que el servidor DHCP no se considera la fuente definitiva de configuraciones y no tomará acciones correctivas agresivas si detecta que un cliente está usando una configuración que no coincide con la suya. Esto puede ser útil en entornos donde hay múltiples servidores DHCP y se desea que los clientes puedan obtener configuraciones de cualquiera de ellos sin que un servidor particular se imponga como la única fuente correcta. 177 | -------------------------------------------------------------------------------- /DNS/Documentation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Theritex/LinuxGuide/8d8f9d9e1a4533c860d11e6ec87d48a34a6427b8/DNS/Documentation.md -------------------------------------------------------------------------------- /FileShare/FTP File Transfer Protocol/FTP SSH File Transfer Protocol por SSH/Documentation.md: -------------------------------------------------------------------------------- 1 | # Documentación FTP por SSH 2 | 3 | > Documentado por Andrés Ruslan Abadías Otal | [Nisamov](https://github.com/Nisamov) 4 | 5 | ## Teoría Previa a la Práctica 6 | Para establecer una conexión segura a un equipo remoto, se deberá saber las credenciales, siendo estas, usuario y contraseña para su acceso remoto. 7 | 8 | Mediante este protocolo, es posible conectarse tanto a sistemas windows como a dispositivos GNU/Linux. 9 | 10 | La conexión por ssh es un protocolo que permite la interacción entre máquinas utilizando una línea de comandos de forma segura 11 | `Puerto 22 de TCP -> IP -> Red` 12 | 13 | El `servicio sshd` es el demonio (daemon) que queda esperando peticiones al puerto 22, iendo este puerto, el puerto de conexión por defecto de tcp 14 | - SSH = “Secure Shell” 15 | 16 | ## Comandos a tener en cuenta 17 | ### Comandos: 18 | ```bash 19 | # Iniciar sesión como usuario 20 | ssh {nombre-usuario}@{IP} 21 | #Enviar archivo.txt 22 | put archivo.txt 23 | 24 | # Fichero de configuración de ssh 25 | nano /etc/ssh/sshd_config 26 | # Recargar configuración de sshd (ssh) 27 | service sshd restart 28 | 29 | # Conectarse por SSH a un sistema remoto 30 | ssh [user]@[ip] 31 | └─ sudo apt install openssh-server 32 | ``` 33 | ### Ejemplo: 34 | ```bash 35 | ssh asir@192.168.115.205 36 | put controller.exe 37 | ``` 38 | ## Práctica FTP - SSH 39 | Para comenzar con la práctica, deberemos acceder el fichero de configuración `vsftpd.conf` mediante el siguiente comando: 40 | ```bash 41 | nano /etc/vsftpd.conf 42 | ``` 43 | Dentro de este fichero escribiremos el siguiente contenido: 44 | ```bash 45 | write_enable=YES 46 | listen port=3000 47 | ftp_data_port=4000 48 | ``` 49 | Esto permite que nos conectemos por el puerto 3000 y enviemos los datos por él 4000 mediante ftp. 50 | 51 | 52 | ### Envío de archivos: 53 | Este comando permite loguearnos como `usuario`: 54 | ```bash 55 | scp {/home/dirección/nuestro/archivo.extensión} {usuario}@{IP:/home/ubicación/archivo/destino} 56 | ``` 57 | Siendo así un ejemplo práctico: 58 | ```bash 59 | #En este ejemplo nos logueamos como user1 enviando nuestor fichero a su directorio /desktop 60 | scp /home/user/desktop/file.txt user1@192.168.102.111:/home/user1/desktop/ 61 | ``` 62 | 63 | # Ejemplo de uso: 64 | ```bash 65 | # Encriptar un fichero 66 | # Se puede sustituir el tipo de encriptación (-aes-256-cbc) mediante openssl help 67 | openssl genrsa -aes-256-cbc -out nombre-privada.key 4096 68 | # Crear key de privada a clave publica 69 | openssl rsa -in nombre-privada.key -pubout > nombre-pública.key 70 | # Conexion remota a equipo 192.168.115.205 71 | scp /home/user/nombre-publica.key 192.168.115.205@user:/home/user/ 72 | # Desencriptacion de clave 73 | openssl rsautl --decrypt -inkey claveprivada.key -in encriptado.enc 74 | ``` -------------------------------------------------------------------------------- /FileShare/FTP File Transfer Protocol/SFTP Secure File Transfer Protocol/Documentacion.md: -------------------------------------------------------------------------------- 1 | # Documentación FTP 2 | 3 | > Documentado por Andrés Ruslan Abadías Otal | [Nisamov](https://github.com/Nisamov) 4 | 5 | ## Teoría Previa a la Práctica 6 | Contamos con dos tipos de encriptación, siendo estos los siguientes: 7 | - Encriptación simétrica 8 | - Encriptación asimétrica 9 | 10 | Para llevar a cabo las encriptaciones deberemos crear una llave, contamos con dos tipos de llaves a crear, siendo estas, la llave `pública` o `privada`, estas mismas pueden usar una encriptación en binario o ascii, permitiéndonos elegir el tipo de encriptación durante su creación. 11 | - Llave pública (usada para encriptar) 12 | - Llave privada (usada para desencriptar RSA {mensaje general encriptado con RSA}-> 4096 bits) 13 | - Passphrase: Clave Privada 14 | 15 | # Instalación de Dependencias: 16 | Instalamos los programas que necesitaremos usar a continuación: 17 | ```bash 18 | #Actualizamos los paquetes 19 | sudo apt update 20 | #Instalación de requisitos 21 | sudo aptinstall ftp 22 | sudo apt install vsftpd 23 | sudo apt install gpg 24 | sudo apt install ufw 25 | ``` 26 | 27 | ## FTP Establecer Canal Encriptado y Seguro 28 | Para llevar a cabo dicho protocolo, son necesarias dos maquinas, entre las cuales se va a establecer un canal, cifrado y seguro. 29 | Ambas máquinas deberán tener una direecion ip estática, evitando así problemas en momentos de desconexión. 30 | 31 | ## Instalación 32 | Comenzamos con la instalación de los requisitos: 33 | ```bash 34 | #Acceso al fichero de configuración de ftp 35 | sudo nano /etc/vsftpd.conf 36 | ``` 37 | Dentro de este fichero aparecerá contenido ya escrito, del cual, cuenta con una línea comentada, siendo esta `#Port 22`, esta misma linea deberá ser descomentada, habilitando así las conexiones por el puerto 22. 38 | 39 | Tras este cambio, guardamos el fichero de configuración y reinciiamos el servicio `sshd`. 40 | ```bash 41 | #Reiniciamos el servicio sshd 42 | sudo service sshd restart 43 | ``` 44 | ## Conexión Remota 45 | Para conectarnos con el cliente, deberemos tener en cuenta su direccion IP estática, mediante el comando `sftp {ip}` podremos conectarnos a el, únicamente sabiendo las credenciales de uno de los usuarios que se almacenan en ese equipo. 46 | ```bash 47 | #Conexión remota al equipo 192.168.102.120 48 | sudo sftp 192.168.102.120 49 | ``` 50 | 51 | Para compartir ficheros, deberemos tener en cuenta nuestra posición actual, si estamos dentro del equipo remoto o en nuestro equipo local, para ello, deberemos estar dentro de nuestro equipo local, mediante el comando `put {fichero}`, enviamos el fichero a al equipo remoto. 52 | ```bash 53 | #Enviamos el fichero "fichero.txt" 54 | put fichero.txt 55 | ``` 56 | --- 57 | ## Lista Comandos uso 58 | ```bash 59 | gpg -k Ver claves 60 | gpg --gen-key Crear una key 61 | gpg --symmetric -a ejercicio.txt Cifrado simétrico 62 | gpg --symmetric ejercicio.txt Cifrado simétrico en binario 63 | gpg --symmetric -o ejercicio.twofish/3des ejercicio.txt Pasar a encriptación 3des o twofish 64 | gpg --full-generate-key Creación completa de una key (elección de Bits) 65 | ``` -------------------------------------------------------------------------------- /FileShare/NFS+SMABA/Documentation.md: -------------------------------------------------------------------------------- 1 | # FileShare - NFS+SAMBA 2 | 3 | > Documentado por Andrés Ruslan Abadías Otal | [Nisamov](https://github.com/Nisamov) 4 | 5 | ## Documentación SAMBA 6 | ### Instalación 7 | Instalamos el servicio samba como root: 8 | ```bash 9 | sudo apt install samba 10 | ``` 11 | ## Creación de directorios compartidos 12 | Tras la instalación, procedemos a crear un directorio, en este caso dentro de la ruta `/home/Documents`: 13 | ```bash 14 | #Creamos los directorios que compartiremos en un futuro 15 | mkdir carpeta1 16 | mkdir carpeta2 17 | # - Ubicación actual: /home/Documents 18 | ``` 19 | Otorgamos permisos necesarios a los directorios creados: 20 | ```bash 21 | #Agregamos los maximos permisos a todas las carpetas que contengan "carpeta" sin importar su continuación, permitiendo englobar tanto a carpeta1 como a carpeta2 22 | chmod 777 carpeta* 23 | # - Ubicación actual: /home/Documents 24 | ``` 25 | ### Edición fichero de configuración SAMBA 26 | Editamos el fichero de configuración de samba con root: 27 | ```bash 28 | sudo nano /etc/samba/smb.conf 29 | ``` 30 | En el interior del fichero de configuración crearemos una estructura similar a la siguiente: 31 | ```bash 32 | #Nombre carpeta1 33 | [nombreCarpeta] 34 | #Permisos de la carpeta 35 | permiso1 36 | permiso2 37 | permiso3 38 | permiso4 39 | #Nombre carpeta2 40 | [nomrbeCarpeta2] 41 | #Permisos de la carpeta 42 | permiso1 43 | permiso2 44 | permiso3 45 | permiso4 46 | ``` 47 | Ese ejemplo permite mostrar de una manera sencilla la siguiente estructura a la cual está basada: 48 | ```bash 49 | [carpeta1] 50 | comment = Comentario de carpeta pública 51 | path = /home/Documents/carpeta1 52 | browseable = yes 53 | guest ok = yes 54 | # Similar a guest ok 55 | public = yes 56 | writeable = yes 57 | # Pemrisos de directorios (777) 58 | directory mask = 0… 59 | # Pemrisos de ficheros (777) 60 | create mask = 0… 61 | # Usuarios permitidos 62 | valid users = usuario1, usuario2 63 | # Se le asigna automáticamente una lista de lectura 64 | write list = usuario1, usuario2 65 | read list = usuario2 66 | # Oculta todo el contenido que cuente con una de estas extensiones 67 | veto files = /*.avi/*.mp3/*.pdf/ 68 | # Elimina todo el contenido que clasificado como vetar en los veto files 69 | delete veto files = yes 70 | ``` 71 | ### Reinicio de servicios 72 | Reiniciamos y analizamos los servicios: 73 | ```sh 74 | #Reiniciamos el servicio nmbd 75 | service nmbd restart 76 | #Reiniciamos el servicio smbd 77 | service smbd restart 78 | #Comprobamos el estado del servicio nmbd 79 | service nmbd status 80 | ``` 81 | Si es requerido agregar un usuario al cual otorgarle los permisos de acceso, usaremos el siguiente comando: 82 | ```sh 83 | sudo adduser usuario 84 | ``` 85 | 86 | ## Documentación NFS 87 | ### Instalación 88 | Instalamos los paquetes necesarios para su correcto funcionamiento: 89 | ```sh 90 | #Paquete necesario para el cliente 91 | sudo apt install nfs-common 92 | #Paquete necesario para los servidores 93 | sudo apt install nfs-kernel-server 94 | ``` 95 | ### Edición fichero configuración NFS 96 | Abrimos y editamos el fichero de configuración al cual otorgarle permisos: 97 | ```sh 98 | #Abrimos y editamos el fichero /etc/exports 99 | sudo nano /etc/exports 100 | ``` 101 | Dentro de este fichero habrá que tener en cuenta una estructura la cual segur para poder asignar tantos directorios como es requerido: 102 | Estructura base: 103 | ```sh 104 | direccion/carpeta/en/servidor direccion.ip.servidor(permiso1,permiso2,permiso3) 105 | ``` 106 | Tras ver la estructura base, puedes identificar la estructua a agregar dentro de `/etc/exports`: 107 | ```sh 108 | /home/user/carpeta1 40.0.0.0/8(rw,sync,subtree_check,no_root_squash) 109 | /home/user/carpeta2 40.0.0.0/8(rw,sync,subtree_check,no_root_squash) 110 | /home/user/carpeta3 *(ro,sync,subtree_check,root_squash) 111 | ``` 112 | Para poder configurar la linea previa, es necesario conocer los permisos disponibles: 113 | ```sh 114 | rw Lectura y escritura 115 | ro Solo lectura 116 | nfs-kernel-server restart 117 | root_squash Degradar root (quita permisos a los root) 118 | no_root_squash No degradar root 119 | sync Sincronización 120 | async No sincronizar 121 | subtree_check Comprobar de donde procede 122 | no_subtree_check No comprobar de donde procede 123 | wdelay Retarde la escritura en disco para permitir solicitudes consignadas 124 | no_wdelay Desactiva la opción predeterminada wdelay 125 | ``` 126 | ### Instalación de dependencias 127 | Dentro de la maquina cliente es necesario instalar `rpcbind`, debido a que es una dependencia de nfs-kernel-server: 128 | ```sh 129 | sudo apt install rpcbind 130 | ``` 131 | ### Montaje de directorios 132 | Tras la einstalación de `rpcbind` en la maquina cliente, montamos el directorio dentro de la ruta que se quiera, mientras usamos la maquina cliente: 133 | ```sh 134 | sudo mount IP:/nombreCarpeta /rutaLocalEnLaQueMontarla 135 | ``` -------------------------------------------------------------------------------- /FileShare/NFS+SMABA/Documentation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Theritex/LinuxGuide/8d8f9d9e1a4533c860d11e6ec87d48a34a6427b8/FileShare/NFS+SMABA/Documentation.pdf -------------------------------------------------------------------------------- /Proxy/Documentation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Theritex/LinuxGuide/8d8f9d9e1a4533c860d11e6ec87d48a34a6427b8/Proxy/Documentation.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LinuxGuide 2 | LinuxGuide es un repositorio creado para la documentación completa de servicios en Linux. 3 | 4 | Se recomienda usar [LinuxCommands](https://github.com/Theritex/LinuxCommands) como guía para entender los comandos que aparecen en este repositorio. 5 | 6 | > [ ! ] El repositorio está ordenado de forma sistemática. 7 | 8 | ## Colaboración 9 | - [Nisamov](https://github.com/Nisamov) - Representante de la empresa Theritex y principal colaborador del repositorio. 10 | - Alfredo bercero Gracia - Colaborador -------------------------------------------------------------------------------- /Security/DataDuplicator/Documentation.md: -------------------------------------------------------------------------------- 1 | # DataDuplicator :: dd 2 | 3 | > Documentado por Andrés Ruslan Abadías Otal | [Nisamov](https://github.com/Nisamov) 4 | 5 | ## Descripción: 6 | El comando dd es una herramienta de línea de comandos utilizada en sistemas operativos tipo Unix y Linux para realizar copias exactas de datos de un archivo, dispositivo o partición a otro archivo, dispositivo o partición. Puede ser utilizado para copiar y convertir datos de diferentes formas. 7 | 8 | ## Estructura: 9 | Estructura: `InputFile; OutputFile; Bits` 10 | 11 | Uso: `dd if=ArchivoOrigen of=ArchivoDestino.extensión bs=BloquesACopiar` 12 | 13 | ```bash 14 | # Ejecutar estos comandos, es potencialmente peligroso, no se recomienda llevar a cabo su ejecucion 15 | 16 | # Genera un archivo diskdestroyer.txt con 999999 bits copiados tipo null 17 | dd if=/dev/null of=diskdestroyer.txt bs=999999 18 | # Genera un archivo diskdestroyer.txt con 999999 bits copiados tipo random 19 | dd if=/dev/random of=diskdestroyer.txt bs=999999 20 | # llena hasta el límite el directorio de arranque sda1 (luego no funciona), deibo a no haber especificado una cantidad concreta de bits 21 | dd if=/dev/random of=/dev/sda1 22 | ``` 23 | 24 | ## Informacion Adicional 25 | 26 | Si le pido acceder al dispositivo /dev/zero y le pido que me de X número de sectores, rellena con null 27 | Si no se indica el número de bytes copiados, se rellena a más no poder. -------------------------------------------------------------------------------- /Security/ProxyChain/Tor/Documentation.md: -------------------------------------------------------------------------------- 1 | # Proxy Chains - Tor 2 | 3 | > Documentado por Andrés Ruslan Abadías Otal | [Nisamov](https://github.com/Nisamov) 4 | 5 | ## Requisitos: Instalación de Tor Browser 6 | 7 | Descripción: 8 | Proxychains es un software de código abierto para sistemas Linux y viene preinstalado con Kali Linux, la herramienta redirige las conexiones TCP a través de proxies como TOR, SOCKS4, SOCKS5 y HTTP (S) y nos permite encadenar servidores proxy. Con las cadenas de proxy, se puede ocultar la dirección IP del tráfico de origen y evadir IDS y firewalls. 9 | ```bash 10 | sudo -i >> Acceso como root 11 | service Tor status >> Comprobamos si Tor esta instalado siguiendo su estado 12 | apt-get install tor >> Instalamos Tor si no está instalado todavía 13 | service tor start >> Iniciamos el servicio tor 14 | service Tor status >> Comprobamos si Tor está operativo 15 | nano /etc/proxychains.conf >> Entramos en la configuración de las proxychains 16 | ``` 17 | ## Configuración: 18 | ``` 19 | Eliminar comentario de cadena dinámica 20 | comentar Cadena estricta y cadena aleatoria 21 | Eliminar comentario de DNS proxy 22 | Eliminar solicitudes de DNS de proxy (no se filtran datos de DNS del comentario) 23 | Escribir calcetines5 127.0.0.1 9050 en la última línea de la lista de proxy 24 | ``` 25 | Tras aplicar la configuracion, reiniciamos el servicio de tor: 26 | ```bash 27 | # Reinicio de servicio Tor 28 | service Tor restart 29 | ``` 30 | Configuracion ProxyChain - Tor 31 | La configuracion final se puede encontrar en la siguiente linea: 32 | >Linea 164 y 165 en el fichero [proxychain.conf](Security\ProxyChain\Tor\proxychain.conf) -------------------------------------------------------------------------------- /Security/ProxyChain/Tor/proxychain.conf: -------------------------------------------------------------------------------- 1 | # proxychains.conf VER 4.x 2 | # 3 | # HTTP, SOCKS4a, SOCKS5 tunneling proxifier with DNS. 4 | 5 | 6 | # The option below identifies how the ProxyList is treated. 7 | # only one option should be uncommented at time, 8 | # otherwise the last appearing option will be accepted 9 | # 10 | dynamic_chain 11 | # 12 | # Dynamic - Each connection will be done via chained proxies 13 | # all proxies chained in the order as they appear in the list 14 | # at least one proxy must be online to play in chain 15 | # (dead proxies are skipped) 16 | # otherwise EINTR is returned to the app 17 | # 18 | #strict_chain 19 | # 20 | # Strict - Each connection will be done via chained proxies 21 | # all proxies chained in the order as they appear in the list 22 | # all proxies must be online to play in chain 23 | # otherwise EINTR is returned to the app 24 | # 25 | #round_robin_chain 26 | # 27 | # Round Robin - Each connection will be done via chained proxies 28 | # of chain_len length 29 | # all proxies chained in the order as they appear in the list 30 | # at least one proxy must be online to play in chain 31 | # (dead proxies are skipped). 32 | # the start of the current proxy chain is the proxy after the last 33 | # proxy in the previously invoked proxy chain. 34 | # if the end of the proxy chain is reached while looking for proxies 35 | # start at the beginning again. 36 | # otherwise EINTR is returned to the app 37 | # These semantics are not guaranteed in a multithreaded environment. 38 | # 39 | #random_chain 40 | # 41 | # Random - Each connection will be done via random proxy 42 | # (or proxy chain, see chain_len) from the list. 43 | # this option is good to test your IDS :) 44 | 45 | # Make sense only if random_chain or round_robin_chain 46 | #chain_len = 2 47 | 48 | # Quiet mode (no output from library) 49 | #quiet_mode 50 | 51 | Proxy DNS requests - no leak for DNS data 52 | # (disable all of the 3 items below to not proxy your DNS requests) 53 | 54 | # method 1. this uses the proxychains4 style method to do remote dns: 55 | # a thread is spawned that serves DNS requests and hands down an ip 56 | # assigned from an internal list (via remote_dns_subnet). 57 | # this is the easiest (setup-wise) and fastest method, however on 58 | # systems with buggy libcs and very complex software like webbrowsers 59 | # this might not work and/or cause crashes. 60 | proxy_dns 61 | 62 | # method 2. use the old proxyresolv script to proxy DNS requests 63 | # in proxychains 3.1 style. requires `proxyresolv` in $PATH 64 | # plus a dynamically linked `dig` binary. 65 | # this is a lot slower than `proxy_dns`, doesn't support .onion URLs, 66 | # but might be more compatible with complex software like webbrowsers. 67 | #proxy_dns_old 68 | 69 | # method 3. use proxychains4-daemon process to serve remote DNS requests. 70 | # this is similar to the threaded `proxy_dns` method, however it requires 71 | # that proxychains4-daemon is already running on the specified address. 72 | # on the plus side it doesn't do malloc/threads so it should be quite 73 | # compatible with complex, async-unsafe software. 74 | # note that if you don't start proxychains4-daemon before using this, 75 | # the process will simply hang. 76 | #proxy_dns_daemon 127.0.0.1:1053 77 | 78 | # set the class A subnet number to use for the internal remote DNS mapping 79 | # we use the reserved 224.x.x.x range by default, 80 | # if the proxified app does a DNS request, we will return an IP from that range. 81 | # on further accesses to this ip we will send the saved DNS name to the proxy. 82 | # in case some control-freak app checks the returned ip, and denies to 83 | # connect, you can use another subnet, e.g. 10.x.x.x or 127.x.x.x. 84 | # of course you should make sure that the proxified app does not need 85 | # *real* access to this subnet. 86 | # i.e. dont use the same subnet then in the localnet section 87 | #remote_dns_subnet 127 88 | #remote_dns_subnet 10 89 | remote_dns_subnet 224 90 | 91 | # Some timeouts in milliseconds 92 | tcp_read_time_out 15000 93 | tcp_connect_time_out 8000 94 | 95 | ### Examples for localnet exclusion 96 | ## localnet ranges will *not* use a proxy to connect. 97 | ## note that localnet works only when plain IP addresses are passed to the app, 98 | ## the hostname resolves via /etc/hosts, or proxy_dns is disabled or proxy_dns_old used. 99 | 100 | ## Exclude connections to 192.168.1.0/24 with port 80 101 | # localnet 192.168.1.0:80/255.255.255.0 102 | 103 | ## Exclude connections to 192.168.100.0/24 104 | # localnet 192.168.100.0/255.255.255.0 105 | 106 | ## Exclude connections to ANYwhere with port 80 107 | # localnet 0.0.0.0:80/0.0.0.0 108 | # localnet [::]:80/0 109 | 110 | ## RFC6890 Loopback address range 111 | ## if you enable this, you have to make sure remote_dns_subnet is not 127 112 | ## you'll need to enable it if you want to use an application that 113 | ## connects to localhost. 114 | # localnet 127.0.0.0/255.0.0.0 115 | # localnet ::1/128 116 | 117 | ## RFC1918 Private Address Ranges 118 | # localnet 10.0.0.0/255.0.0.0 119 | # localnet 172.16.0.0/255.240.0.0 120 | # localnet 192.168.0.0/255.255.0.0 121 | 122 | ### Examples for dnat 123 | ## Trying to proxy connections to destinations which are dnatted, 124 | ## will result in proxying connections to the new given destinations. 125 | ## Whenever I connect to 1.1.1.1 on port 1234 actually connect to 1.1.1.2 on port 443 126 | # dnat 1.1.1.1:1234 1.1.1.2:443 127 | 128 | ## Whenever I connect to 1.1.1.1 on port 443 actually connect to 1.1.1.2 on port 443 129 | ## (no need to write :443 again) 130 | # dnat 1.1.1.2:443 1.1.1.2 131 | 132 | ## No matter what port I connect to on 1.1.1.1 port actually connect to 1.1.1.2 on port 443 133 | # dnat 1.1.1.1 1.1.1.2:443 134 | 135 | ## Always, instead of connecting to 1.1.1.1, connect to 1.1.1.2 136 | # dnat 1.1.1.1 1.1.1.2 137 | 138 | # ProxyList format 139 | # type ip port [user pass] 140 | # (values separated by 'tab' or 'blank') 141 | # 142 | # only numeric ipv4 addresses are valid 143 | # 144 | # 145 | # Examples: 146 | # 147 | # socks5 192.168.67.78 1080 lamer secret 148 | # http 192.168.89.3 8080 justu hidden 149 | # socks4 192.168.1.49 1080 150 | # http 192.168.39.93 8080 151 | # 152 | # 153 | # proxy types: http, socks4, socks5, raw 154 | # * raw: The traffic is simply forwarded to the proxy without modification. 155 | # ( auth types supported: "basic"-http "user/pass"-socks ) 156 | # 157 | [ProxyList] 158 | # add proxy here ... 159 | # meanwile 160 | # defaults set to "tor" 161 | 162 | # Proxy usado en los proxychain 163 | 164 | socks4 127.0.0.1 9050 165 | socks5 127.0.0.1 9050 -------------------------------------------------------------------------------- /Security/SQUID Proxy Server/Documentation.md: -------------------------------------------------------------------------------- 1 | # Proxy Server - Squid 2 | 4 | > Documentado por Andrés Ruslan Abadías Otal | [Nisamov](https://github.com/Nisamov) 5 | 6 | ## Introduccion: 7 | 8 | Squid es uno de los proxy cachés más utilizados hoy en día y tiene como principal función atender a las 9 | peticiones HTTP de una red interna. Es un popular programa de software libre que implementa un 10 | servidor proxy y un dominio para caché de páginas web, publicado bajo licencia GPL. 11 | 12 | Tiene una amplia variedad de utilidades, desde acelerar un servidor web, guardando en caché peticiones 13 | repetidas a DNS y otras búsquedas para un grupo de gente que comparte recursos de la red, hasta caché de 14 | web, además de añadir seguridad filtrando el tráfico. 15 | 16 | Está especialmente diseñado para ejecutarse bajo entornos tipo Unix. 17 | Squid ha sido desarrollado durante muchos años y se le considera muy completo y robusto. Aunque 18 | orientado principalmente a HTTP y FTP es compatible con otros protocolos. 19 | 20 | ## Principales características: 21 | 22 | Squid posee las siguientes características: 23 | - Proxy y Memoria Caché de HTTP, FTP, y otras direcciones: Squid proporciona un servicio 24 | de Proxy que soporta peticiones HTTP, HTTPS y FTP a equipos que necesitan acceder a 25 | Internet y a su vez provee la funcionalidad de caché especializado en el que se almacena de 26 | forma local las páginas consultadas recientemente por los usuarios. De esta forma, incrementa 27 | la rapidez de acceso a los servidores de la Web y FTP que se encuentra fuera de la red interna. 28 | - Proxy por SSL: Squid también es compatible con SSL (Secure Socket Layer) con el que 29 | también acelera las transacciones cifradas, y es capaz de ser configurado con amplios controles 30 | de acceso sobre las peticiones de usuarios. 31 | 32 | - Jerarquías de caché: Squid puede formar parte de una jerarquía de caches. Varios proxys 33 | trabajan conjuntamente sirviendo las peticiones de las páginas. Un navegador solicita siempre 34 | las páginas a un solo proxy, si éste no tiene la página en la caché hace peticiones a sus 35 | hermanos, que si tampoco las tienen las hacen a su/s padre/s. Estas peticiones se pueden realizar 36 | mediante dos protocolos: HTTP e ICMP. 37 | 38 | - ICP, HTCP, CARP, memoria caché digests: Squid sigue los protocolos ICP, HTCP, CARP y 39 | memoria caché digests que tienen como objetivo permitir a un proxy "preguntar" a otros proxys 40 | caché si poseen almacenado un recurso determinado. 41 | 42 | - Caché transparente: Squid puede ser configurado para ser usado como proxy transparente por 43 | lo que las conexiones son enrutadas dentro del proxy sin configuración por parte del cliente, y 44 | habitualmente sin que el propio cliente conozca de su existencia. De forma predeterminada, 45 | - Squid utiliza el puerto 3128 para atender peticiones, pero se puede especificar que lo haga en 46 | cualquier otro puerto disponible o que lo haga en varios puertos disponibles a la vez. 47 | 48 | - WCCP: A partir de la versión 2.3 Squid implementa WCCP (Web Cache Control Protocol). 49 | 50 | - Permite interceptar y redirigir el tráfico que recibe un router hacia uno o más proxys caché, 51 | haciendo control de la conectividad de éstos. Además permite que uno de los proxys caché 52 | designado pueda determinar puede distribuir el tráfico redirigido a lo largo de todo el array de 53 | proxys caché. 54 | 55 | - Control de acceso: Ofrece la posibilidad de establecer reglas de control de acceso. Esto 56 | permite establecer políticas de acceso en forma centralizada, simplificando la administración de 57 | una red. 58 | 59 | - Aceleración de servidores HTTP: Cuando un usuario hace petición hacia un objeto en 60 | Internet, éste es almacenado en la caché, si otro usuario hace petición hacia el mismo objeto, y 61 | éste no ha sufrido ninguna modificación desde que lo accedió el usuario anterior, Squid 62 | mostrará lo que ya se encuentra en la caché en lugar de volver a descargar desde Internet. Esta 63 | función permite navegar rápidamente cuando los objetos ya están en la guarida y además 64 | optimiza enormemente la utilización del ancho de banda. 65 | 66 | - SNMP: Squid permite activar el protocolo SNMP, éste proporciona un método simple de 67 | administración de red, que permite supervisar, analizar y comunicar información de estado 68 | entre una gran variedad de máquinas, pudiendo detectar problemas y proporcionar mensajes de 69 | estados. 70 | 71 | - Caché de resolución DNS: Squid está compuesto también por el programa dnsserver, que se 72 | encarga de la búsqueda de nombres de dominio. Cuando Squid se ejecuta, produce un número 73 | configurable de procesos dnsserver, y cada uno de ellos realiza su propia búsqueda en DNS. De 74 | esta forma, se reduce la cantidad de tiempo que la caché debe esperar a estas búsquedas DNS. 75 | 76 | ## Esquema de simulación: 77 | 78 | PC-PT (Ubuntu Desktop) – `172.30.1.10` 79 | 80 | Server-PT (Ubuntu Proxy Server) – `172.30.0.1` 81 | 82 | `[Ubuntu Desktop]----[Switch]----[Ubuntu Proxy Server]----[Internet]` 83 | 84 | ## Requisitos: 85 | 86 | El software del servidor requiere la instalación, entre otros, del paquete squid (servidor). 87 | 88 | Para llevar a cabo este proceso completamente, es necesario instalar lo siguiente dentro del equipo servidor (Ubuntu Proxy Server [172.30.0.1]): 89 | - Apache2 90 | - Squid 91 | - Squidguard 92 | 93 | ```sh 94 | sudo apt update 95 | sudo apt install apache2 96 | sudo apt install squid 97 | sudo apt install squidguard 98 | ``` 99 | 100 | ## Revisión de Conexión 101 | 102 | Antes de continuar, es necesario revisar si hay conexión entre los equipos, de lo contrario, no funcionará lo que se haga a continuación. 103 | 104 | ## Fichero Configuración Squid: 105 | 106 | El archivo de configuración es **squid.conf** situado en el directorio **/etc/squid/** resultante de la 107 | instalación. La configuración del servicio será pues modificando, eliminando o añadiendo nuevas 108 | opciones a este archivo. Por tanto se recomienda que antes de modificar nada en su interior se 109 | realice una copia de seguridad para poder restaurarlo a su estado original en caso de ser necesario. 110 | La ruta completa es: **/etc/squid/squid.conf** 111 | 112 | ## Configuración del Proxy en Ubuntu Server: 113 | 114 | Descomentar los parámetros **Proxy-cache»**, asegurándose de que tienen el valor indicado. 115 | Estos parámetros, han sido explicados previamente, es importante revisar la infromación para llevar a cabo la práctica sin problemas. 116 | 117 | Permitir que cualquier ordenador de nuestra red interna tenga acceso a internet. Si existen 118 | otras redes preconfiguradas para poder acceder a internet, eliminar su permiso. 119 | 120 | El proxy sólo debe permitir acceder al puerto **http (80)** y al **https (443)**, pero **no** al **ftp (21)**. 121 | Si existen otros puertos preconfigurados para poder acceder a internet, eliminar su permiso. 122 | (Comentar los puertos no indicados), dejando el siguiente resultado: 123 | ```conf 124 | acl localnet src 0.0.0.1-0.255.255.255 125 | acl localnet src 10.0.0.0/8 126 | acl localnet src 100.64.0.0/10 127 | acl localnet src 169.254.0.0/16 128 | acl localnet src 172.16.0.0/16 129 | acl localnet src 172.30.0.0/16 # Red local 172.30.0.0/16 130 | acl localnet src 192.168.0.0/16 131 | acl localnet src fc00::/7 132 | acl localnet src fe80::/10 133 | 134 | acl SSL_ports port 443 135 | acl Safe_ports port 80 136 | #acl Safe_ports port 21 137 | acl Safe_ports port 443 138 | #acl Safe_ports port 70 139 | #acl Safe_ports port 210 140 | #acl Safe_ports port 1025-65535 141 | #acl Safe_ports port 280 142 | #acl Safe_ports port 488 143 | #acl Safe_ports port 591 144 | #acl Safe_ports port 777 145 | ``` 146 | 147 | Reincia el servicio para aplicar los cambios, depende de la distribución usada, el comando para reiniciar el servicio puede variar: 148 | Distribuciones Debian/Ubuntu: 149 | `service squid restart`/`service squid3 restart` 150 | En algunos casos, los servicios se reinician mediante el sitema init, es posible que puedas reiniciarlo mediante este servicio: 151 | `/etc/init.d/squid restart` 152 | Si no es viable ninguna opcion semejante, lo más seguro es apagar y volver a encender el equipo. 153 | 154 | ## Configuración del Proxy en Ubuntu Desktop - Sistema Operativo y Navegador 155 | 156 | Configurar manualmente el proxy de sistema en Ubuntu Desktop y modificar la configuración del navegador web de forma que se conecte a internet a través de este proxy de sistema. 157 | Conseguir acceder a dos sitios web de internet desde el navegador web de la máquina cliente. 158 | 159 | Para llevar esto a cabo hay que realizar algunos ajustes en el proxy del Ubuntu Desktop, estableciéndolo en `configuración manual` y posteriormente, dentro de los parámetros indicados, hay que agregar lo siguiente: 160 | 161 | Esta información es presentada más adelante nuevamente. 162 | ``` 163 | ip: 172.30.0.1 (La dirección Ip del Servidor) 164 | Puerto: 3128 165 | ``` 166 | 167 | ## Lectura Manual de los Accesos a Internet a trvés del Proxy 168 | 169 | Para este proceso, es necesario conocer las rutas de los ficheros de acceso **/var/log/squid/access.log** 170 | 171 | Dentro de la ruta: **/var/log/squid/** 172 | Para mostrar las ultimas 50 lineas, se ha usado el comando: **sudo tail -n 50 access.log** 173 | Para mostrar todo el contenido pudiendo subir o bajar: **sudo less access.log** 174 | 175 | ## Instalación y Configuración de SARG 176 | 177 | Para continuar con el proceso, instalaremos SARG, este nos permitirá ver y previsualizar las direcciones a las que accede el cliente, de una manera más comoda. 178 | 179 | Instalación de SARG: 180 | ``` 181 | sudo apt update 182 | sudo apt install sarg 183 | ``` 184 | Ruta de SARG: **/etc/sarg/sarg.conf** 185 | 186 | ## Cambios en el fichero sarg.conf 187 | 188 | IDIOMA: si aparece esta opción, según la versión utilizada, se recomienda establecer el Español **‘Spanish’**. 189 | 190 | Ubicación de los archivos de SQUID access.log: revisar que la ruta es correcta. 191 | 192 | Utilización de gráficas: para utilizar información visual se aconseja aplicar **graphs yes** y **graph_days_bytes_bar_color “ESCRIBIR-UN-COLOR-EN-INGLÉS”** para habilitar la visualización de las gráficas, cambiar el color naranja definido como predeterminado por otro color a su elección. 193 | 194 | Directorio de salida de los informes: Se recomienda revisar la ruta donde se almacenarán los informes. 195 | 196 | Es muy interesante visitar esta ruta para saber cómo SARG organiza la información. 197 | 198 | Para elegir que los informes se guarden sin límites compruebe que la opción lastlog esté a 0. 199 | 200 | Formato de fecha: elegir la opción e para establecer el formato europeo **(dd/mm/yy)**. 201 | 202 | Información de SARG: habilitar la opción para ver la información que SARG extrae de los logs de SQUID. 203 | Para ello habilitar la opción **show_sarg_info** a **yes**. 204 | 205 | ## Ejecución Manual de Informes 206 | 207 | Una vez tenemos SARG configurado, sólo queda que genere informes de acceso de los datos 208 | guardados en los logs de squid. Para ello ejecutar el comando: 209 | **sudo sarg** (o bien) **sudo sarg-reports today** 210 | 211 | [Troubleshooting]: Es posible que ejecutando el comando se devuelva un error respecto a la 212 | resolución de IPs; si es así, leerlo y arreglar el problema en el archivo de configuración para que ya 213 | no salga este aviso cuando ejecutemos el SARG. 214 | 215 | Con este comando generará un informe con todos los datos almacenados en los logs de squid. 216 | También se puede realizar otros tipos de informes más detallados: por días, por franja de fechas, 217 | por una hora específica, por un usuario específico (éste último no es aplicable en este punto de la 218 | práctica), por un dominio destino específico, etc... 219 | 220 | ## Primer Acceso a la Información de SARG 221 | 222 | Para poder visualizar los informes generados por SARG sólo deberemos acceder desde un cliente y 223 | su navegador **http://IP_DEL_SERVIDOR/sarg**, en este caso sería **http://172.30.0.1/sarg**. 224 | 225 | [Troubleshooting]: Si no es accesible se deberá generar un enlace simbólico del directorio donde se 226 | almacenan las páginas web de nuestro servidor en el directorio de salida de los informes del SARG 227 | con el comando: 228 | **sudo ln –sv /var/lib/sarg/ /var/www/html** 229 | 230 | Una vez que hemos conseguido acceder, ver qué información proporciona esta herramienta una 231 | vez instalada y configurada. 232 | 233 | Para establecer conexión en el dispositivo servidor, es necesario configurar el proxy en el equipo 234 | cliente de la siguiente forma: 235 | - Poxy por configuración Manual 236 | - Proxy por HTTPS: `172.30.0.1` por el puerto `3128` 237 | Todos los puertos se reenvían al puerto `3128` 238 | 239 | ## Autenticación de Conexión por Usuario 240 | 241 | A continuación configuraremos el servidor SQUID para habilitar el acceso a internet sólo a tres usuarios definidos por usted. En el nombre de estos usuarios deberá constar las iniciales de uno de los miembros del grupo, por ejemplo en este caso serían: abg1, abg2 y abg3. 242 | 243 | Crear tres usuarios: 244 | Utilizamos el comando **-c** para crear una lista nueva de usuarios 245 | Usaremos el nombre del usuario como contraseña **(user:abg1 – passwd: abg1)** 246 | ``` 247 | sudo htpasswd -c /etc/squid/passwd abg1 248 | sudo htpasswd /etc/squid/passwd abg2 249 | sudo htpasswd /etc/squid/passwd abg3 250 | ``` 251 | Permitir a squid leer el archivo de usuarios: 252 | ``` 253 | sudo chmod 400 /etc/squid/passwd 254 | sudo chown proxy /etc/squid/passwd 255 | ``` 256 | En el archivo de configuración de SQUID modificar los siguientes comandos: 257 | ``` 258 | auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd 259 | auth_param basic children 5 260 | auth_param basic realm Squid proxy-caching web server 261 | auth_param basic casesensitive off 262 | ``` 263 | Finalmente modificar el acceso de los usuarios de nuestro proxy para dar sólo permiso y pedir autenticación a los usuarios creados anteriormente. 264 | Se deben añadir las siguientes líneas al archivo de configuración **squid.conf**: 265 | ``` 266 | acl ncsa_users proxy_auth REQUIRED 267 | http_access allow ncsa_users 268 | ``` 269 | 270 | ## Posibles Preguntas sobre el Programa 271 | 272 | **¿Es posible saber si ha habido intentos de acceso no autorizado de algún usuario (credenciales mal 273 | escritas o erróneas)?:** 274 | 275 | Si, mediante los ficheros **cache.log**(Registro general de avisos y errores, aquí es posible ver 276 | accesos no autorizados) y **access.log**(Registro de acceso permitido por parte de dispositivos cliente 277 | conectados). 278 | 279 | Las rutas de estos ficheros son: **/var/log/squid/access.log** y **/var/log/squid/cache.log** 280 | 281 | ## Definición de Listas de Control de Acceso (ACL) 282 | 283 | Las ACL son el mecanismo que determinan un elemento o grupos de elementos. 284 | Posteriormente estas ACL son utilizadas para determinar el acceso o prohibición a los elementos descritos 285 | anteriormente en el listado. 286 | 287 | **acl dominios_prohibidos dstdomain www.marca.es www.as.com** 288 | 289 | En esta ACL se describen dos dominios distintos que queremos que estén prohibidos. Para aplicar 290 | esta negación de servicio sólo deberemos utilizar esta ACL creada: 291 | 292 | **http_access allow localnet !dominios_prohibidos** 293 | 294 | En el comando anterior fíjemonos que lo que se hace es dar permiso a toda la red pero no al listado 295 | de dominios presentes en la ACL llamada **dominios_prohibidos**. 296 | 297 | Podemos definir entonces la sintaxis general de las ACL según sus partes: 298 | 299 | **acl name type (string|"filename") [string2] [string3] ["filename2"]** 300 | 301 | Las ACL también pueden ser archivos que contengan los elementos a tener presentes. Por ejemplo, y siguiendo con el ejemplo anterior, podemos generar un archivo llamado dominios_prohibidos donde cada línea del archivo sea un dominio diferente. 302 | 303 | Este archivo se crea normalmente en **/etc/squid/NOMBRE_DE_ACL**. 304 | Es decir, debe existir un archivo llamado dominios_prohibidos en **/etc/squid** que contenga en su interior los dominios a denegar. 305 | 306 | Para crear esta ACL sólo deberemos hacerlode la siguiente manera: 307 | 308 | **ACL dominios_prohibidos dstdomain “/etc/squid/dominios_prohibidos”** 309 | 310 | Debe tenerse en cuenta que las ACL dependiendo del tipo de filtrado que se desea utilizar y su futura utilización. 311 | Es importanyr recordar que con escribir la línea de la ACL no es suficiente, hay que aplicarla posteriormente con 312 | una línia de acceso http **(http_access)**. -------------------------------------------------------------------------------- /Security/SQUID Proxy Server/Documentation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Theritex/LinuxGuide/8d8f9d9e1a4533c860d11e6ec87d48a34a6427b8/Security/SQUID Proxy Server/Documentation.pdf -------------------------------------------------------------------------------- /Security/VPN/OpenVpn/Documentation.md: -------------------------------------------------------------------------------- 1 | # Documentación OpenVPN 2 | 3 | > Documentado por Andrés Ruslan Abadías Otal | [Nisamov](https://github.com/Nisamov) 4 | 5 | Una VPN crea una camino virtual a través de internet para conectarse sin una conexión directa a una red. 6 | 7 | Para poder comenzar a usar este servicio, deberemos instalar los siguientes requisitos: 8 | ```bash 9 | #Actualiza la paquetería del sistema 10 | sudo apt update 11 | #Instala las dependecias 12 | sudo apt install vsftpd 13 | sudo apt install openssh-server 14 | sudo apt install ftp 15 | sudo apt install openssl 16 | sudo apt install git 17 | sudo apt install openvpn 18 | ``` 19 | Para continuar, deberemos clonar un repositorio de GitHub (Viejo): 20 | ```bash 21 | git clone https://github.com/OpenVPN/easy-rsa-old 22 | ``` 23 | Hacemos una copia del repositorio y la guardamos como un backup, permitiendonos vovler a comenzar desde un punto de partida en caso de hacer algo mal. 24 | ```bash 25 | cp easy-rsa-old /home/Documents/easy-rsa-old-bk 26 | ``` 27 | A continuación, establecemos la red en estática con ayuda del netplan: 28 | ```bash 29 | #Accede al fichero de configuración 30 | sudo nano /etc/netplan/00-network-manager-all.yml 31 | ``` 32 | ```bash 33 | network: 34 | version: 2 35 | renderer: networkd (por defecto está NetworkManager) 36 | ethernets: 37 | enp0s3: 38 | dhcp4: no 39 | addresses: [192.168.10.10/24] 40 | gateway4: 192.168.10.1 41 | nameservers: 42 | addresses: [8.8.8.8] 43 | ``` 44 | Aplicamos los cambios de red: 45 | ```bash 46 | sudo netplan apply 47 | ``` 48 | Tras aplicar la configuración de red, moveremos el repositorio local `2.0` de forma recursiva, excluyendo las capas que lo guardan, renombrándolo como `easy-rsa` dentro de la misma dirección (debería estar situado dentro del escritorio). 49 | ```bash 50 | cp -r ./easy-rsa-old/easy-rsa/2.0/ easy-rsa 51 | ``` 52 | Estos datos te informarán sobre el contenido del repositorio renombrado: 53 | ``` 54 | > build-ca Crear certificado autorizado 55 | > build-dh Diff hellman (encripta todo el trayecto de comunicación) 56 | > build-key-server Crea llaves de certificados de servidor 57 | > build-key Crea llaves de certificado de cliente 58 | > vars Archivo donde se indica ubicación, cliente (por defecto Estados Unidos - San Francisco) 59 | ``` 60 | En el interior del fichero `easy-rsa/vars` agregaremos el siguiente contenido, el cual nos permitirá agregar valores diferentes a cada linea. 61 | ```bash 62 | #Editamos el fichero vars 63 | sudo nano vars 64 | ``` 65 | Contenido en el interior del fichero `var`: 66 | ```bash 67 | export KEY_COUNTRY=”Country” 68 | export KEY_PROVINCE=”Province” 69 | export KEY_CITY=”City” 70 | export KEY_ORG=”Key” 71 | export KEY_EMAIL=”email@dom.x” 72 | export KEY EMAIL=”email@host.domain” 73 | export KEY_CN=key 74 | export KEY_NAME=key_name 75 | export KEY_OU=Key_Informativa 76 | export PKCS11_MODULE_PATH=DNI Electrónico 77 | export PKCS11_PIN=1234 78 | ``` 79 | 80 | Crear VPN: 81 | ```bash 82 | mv openssl.1.0.0.cnf openssl.cnf 83 | ``` 84 | Detalles certificado 85 | ```bash 86 | . ./vars >>Propiedades de certificado 87 | ./clean-all >>Borrar certificados creados 88 | ./build-ca >>Crear certificado “ca.crt” dentro de /keys 89 | ./build-key-server >>Servidor 90 | ./build-dh >>Crear el dh dentro de /keys 91 | ``` 92 | 93 | Archivo Configuración VPN: 94 | ```bash 95 | # Accedemos a la ruta - ejemplos de configuracion openvpn 96 | cd /usr/share/doc/openvpn/examples/sample-config-files 97 | # Copiamos el fichero comprimido del servidor y lo movemos a la siguiente ruta 98 | cp server.conf.gz /home/user/easy–rsa/keys 99 | # Dentro de la ruta previa, accedemos al directorio 100 | cd /home/user/easy-rsa/keys 101 | # Decomprimimos en .gz - Descomrpimir y transformarlo en un archivo legible 102 | gunzip server.conf.gz 103 | # Copiamos el fichero por ruta absoluta a la siguiente ruta 104 | cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /home/user/easy-rsa/keys/ 105 | # Accedemos al interior del fichero .conf y descomentamos lo siguiente 106 | nano /etc/vsftpd.conf 107 | # En el interior del fichero de configuracion 108 | #-- Descomentar “write_enable=YES” 109 | #Guardamos y salimos para finalmente reiniciar el servicio vsftpd 110 | service vsftpd restart 111 | ``` 112 | 113 | Conexión por FTP 114 | ftp usuario@ip 115 | contraseña 116 | put ca.crt 117 | put client.conf 118 | put cliente.key 119 | put cliente.crt 120 | put cliente.csr 121 | 122 | Rutas e informacion de ficheros de configuracion 123 | ```bash 124 | # Información server.conf (servidor) 125 | nano /home/user/easy-rsa/keys/server.conf 126 | # Establecer dirección de los archivos en máquina servidor 127 | ca /home/user/easy-rsa/keys/ca.crt 128 | # Establecer dirección de los archivos en máquina servidor 129 | cert /home/user/easy-rsa/keys/servidor.crt 130 | # Establecer dirección de los archivos en máquina servidor 131 | key /home/user/easy-rsa/keys/servidor.key 132 | # Almacenamiento de IPs que otorgar a los clientes 133 | ifconfig-pool-persist /home/user/easy-rsa/keys/ipp.txt 134 | 135 | tls-auth ta.key 0 >>Comentar esta linea 136 | status /home/user/easy-rsa/keys/openvpn-status.log >>Registro de personas que se loguean 137 | 138 | openvpn server.conf >>Iniciar VPN en el servidor 139 | 140 | Información client.conf (cliente) 141 | ca /home/user/ca.crt >>Establecer dirección de los archivos en máquina cliente 142 | cert /home/user/cliente.crt s>>Establecer dirección de los archivos en máquina cliente 143 | key /home/user/cliente.key >>Establecer dirección de los archivos en máquina cliente 144 | 145 | tls-auth ta.key 0 >>Comentar esta linea 146 | openvpn user.conf >>Iniciar VPN en el cliente 147 | ``` -------------------------------------------------------------------------------- /Security/VPN/OpenVpn/Documentation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Theritex/LinuxGuide/8d8f9d9e1a4533c860d11e6ec87d48a34a6427b8/Security/VPN/OpenVpn/Documentation.pdf -------------------------------------------------------------------------------- /WebPage/Apache2/Documentation.md: -------------------------------------------------------------------------------- 1 | # Documentación Apache2 2 | 3 | > Documentado por Andrés Ruslan Abadías Otal | [Nisamov](https://github.com/Nisamov) 4 | 5 | ## Instalación 6 | Para evitar posibles problemas durante la instalación, se recomienda actualizar los paquetes del sistema. 7 | ```sh 8 | # Esto es unicamente opcional 9 | sudo apt update && sudo apt upgrade -y 10 | ``` 11 | 12 | Instalación de apache2: 13 | Instalamos el servicio con los privilegios de administrador. 14 | ```bash 15 | sudo apt install apache2 16 | ``` 17 | 18 | ## Creación de la página 19 | Para crear una página hay que dirigirse a la dirección `/var/www/`, donde veremos un fichero llamado `index.html`. 20 | Para crear la primera página, creamos un directorio dentro de la ubicación anterior con el nombre del dominio (por organización) que queramos, este tiene que acabar en un prefijo `.es, .org, .com`... 21 | Posteriormente accedemos al interior del directorio creado y ahi dentro creamos un fichero llamado `index.html`. 22 | ```bash 23 | #Nos dirigimos a la ubicación mencionada 24 | cd /var/www/ 25 | # - Ubicación actual: /var/wwww 26 | 27 | #Creamos el directorio con el prefijo 28 | mkdir mipagina.es 29 | # - Ubicación actual: /var/www 30 | 31 | #Accedemos al directorio 32 | cd mipagina.es 33 | # - Ubicación actual: /var/www/mipagina.es 34 | 35 | #Creamos el fichero dentro del directorio creado 36 | touch index.html 37 | # - Ubicación actual: /var/www/mipagina.es 38 | ``` 39 | 40 | ## Edición de la página 41 | Para dar estructura a la página, hay que editar el fichero `index.html` creado anteriormente, para ello es necesario tener los conocimientos básicos de HTML5. 42 | Si se quiere agregar diseño y funcionalidad, es requerido usar ficheros `.css` y `.js`. 43 | ```bash 44 | #Editamos el fichero index.html 45 | sudo nano index.html 46 | # - Ubicación actual: /var/www/mipagina.es/index.html 47 | ``` 48 | 49 | Dentro del fichero `index.html` agregamos la estructura básica de HTML5: 50 | ```html 51 | 52 | 53 |
54 | 55 | 56 |Este es el contenido de tu pagina
63 | 64 | 65 | 66 | 67 | ``` 68 | 69 | En el código anterior vemos comentarios con la opcion de dejar lineas que permiten agregar codigo CSS y JavaScript, esto es completamente opcional, se recomienda hacer eso lo últmo. 70 | Para poner un ejemplo de como sería la estructura con la implementación de estilos y scripts tnemos que tener en cuenta que estos ficheros se deberian agregar en subdirectorios dentro de la ruta de la pagina principal. 71 | Esto permitira un acceso rapido, asi como una buena organizacion, en el siguiente ejemplo se presenta la estructura ideal para este proceso. 72 | 73 | ## Estructura de directorio 74 | ``` 75 | var 76 | └── www 77 | └── mipagina.es 78 | ├── index.html 79 | ├── styles 80 | │ └── style.css 81 | └── scripts 82 | └── script.js 83 | ``` 84 | 85 | Para crear esta misma estructura hay que estar dentro de la ruta de la pagina principal `mipagina.es` y crear dos directorios, el primero seria `styles`, donde almacenaremos los ficheros de estilos `.css` y el segundo `scripts`, donde almacenaremos ficheros `.js`. 86 | 87 | Para llevar a cabo este proceso opcional, hay que hace lo siguiente: 88 | ```bash 89 | #Nos posicionamos dentro de la ruta de la pagina 90 | cd /var/www/mipagina.es 91 | # - Ubicación actual: /var/www/mipagina.es 92 | 93 | #Creamos dos directorios 94 | mkdir styles 95 | mkdir scripts 96 | # - Ubicación actual: /var/www/mipagina.es 97 | ``` 98 | ## Estilo y Funcionamiento de la pagina con CSS y JS 99 | 100 | Tras la creacion de los directorios, deberemos llenarlos con el codigo necesario, este estara almacenado dentro de ficheros, los cuales son llamados por la pagina principal `index.html`. 101 | Para crear estos ficheros es necesario acceder a cada directorio y crear un fichero con su correspondiente contenido: 102 | ```bash 103 | #Nos posicionamos dentro de la ruta JavaScript (scripts) 104 | cd /var/www/mipagina.es/scripts 105 | # - Ubicación actual: /var/www/mipagina.es/scripts 106 | 107 | #Creamos el primer fichero de scripts con touch, esto nos abrira una ventana para introducir texto 108 | sudo touch script.js 109 | # - Ubicación actual: /var/www/mipagina.es/scripts/script.js 110 | ``` 111 | 112 | Tras crear el fichero dentro de la ruta especificada, nos abrira una ventana donde ingresar texto plano, en esta ventana ingresaremos codigo JavaScript, el cual estara vinculado a la pagina principal (debido al nombre y ruta usados, estos mismos estan referenciados en la pagina web, por lo que si se quiere, se puede cambiar la ruta de la pagina, no obstante, para su correcto funcionamiento es recomendable usar una ruta clara y fija. 113 | 114 | El codigo del fichero JavaScript puede ser el que se desee, en este caso se usara un codigo simple como muestra de correcto funcionamiento: 115 | ```js 116 | //Alerta que muestra el correcto funcionamiento del codigo 117 | alert("El Codigo JavaScript Funciona correctamente"); 118 | //Log en consola indicando el correcto funcionamiento del mismo 119 | console.log("Correcto funcionamiento"); 120 | ``` 121 | 122 | Para poder aplicar estilos en la pagina, es necesario usar el mismo sistema usado durante la creacion de scripts de `JavaScript`, para ello iremos a la ruta de los estilos creada anteriormente y crearemos un fichero donde almacenaremos el codigo de los estilos de la apgina principal, este fichero debera contener el nombre referenciado en la pagina web, el cual es `style.css`, para que pueda funcionar, asi como el codigo `.js` debera estar en la misma ruta que la mencionada en la pagina web (/var/www/mipagina.es/styles). 123 | ```bash 124 | #Nos posicionamos en la ruta de lso estilos (styles) 125 | cd /var/www/mipagina.es/styles 126 | # - Ubicación actual: /var/www/mipagina.es/styles 127 | 128 | #Creamos un fichero el cual almacenara los estilos de la pagina, esto nos abrira una ventana para introducir texto, de la misma manera que sucedio con la creacion del fichero de scripts de JavaScript 129 | sudo touch style.css 130 | # - Ubicación actual: /var/www/mipagina.es/scripts/style.css 131 | ``` 132 | 133 | Posteriormente agregamos contenido dentro del fichero, este ha de ser código `CSS`, esto permitira a la pagina obtener un estilo, bien sea un color de fondo, efectos, fuentes de texto... 134 | 135 | Un ejémplo sencillo de codigo `CSS` es el siguiente: 136 | ```css 137 | /*Color de fondo en el cuerpo de la pagina*/ 138 | body { 139 | background-color: #fefbd8; 140 | } 141 | 142 | /*Color de fondo en los titulos h1*/ 143 | h1 { 144 | background-color: #80ced6; 145 | } 146 | 147 | /*Color de fonod en los divs*/ 148 | div { 149 | background-color: #d5f4e6; 150 | } 151 | 152 | /*Estilos cuerpo de texto*/ 153 | p { 154 | font-family: 'Open Sans'; 155 | font-size: 14px; 156 | color: #ccc; 157 | line-height: 18px; 158 | margin-bottom: 20px; 159 | } 160 | ``` 161 | Con esto hecho, tenemos la apgina web montada enlazada con los scripts y diseño, a continuación deberemos crear un certificado, para ello instalaremos `openssl`: 162 | ```bash 163 | sudo apt install openssl 164 | ``` 165 | A continuación habilitaremos el modo `ssl`: 166 | ```bash 167 | sudo a2enmod ssl 168 | ``` 169 | Finalmente reiniciaremos el servicio apache2: 170 | ```bash 171 | sudo systemctl restart apache2 172 | ``` 173 | 174 | Con este comando habremos instalado `openssl` y habilitado el modo `ssl`, permitiendonos continuar con la configuración y creación de certificados. 175 | 176 | [ ! ] En caso de usar VirtualBox, pondremos la máquina en adaptador puente. 177 | 178 | Tras este previo paso hecho, accederemos a la localización de directorios y ficheros de configuración, para ello accederemos a la siguiente ubicación y copiaremos el fichero `000-default.conf`. 179 | ```bash 180 | #Accedemos a la ruta donde se almacena la configuración de las páginas dentro de apache 181 | cd /etc/apache2/sites-available 182 | # - Ubicación actual: /etc/apache2/sites-available 183 | 184 | #Clonamos el fichero 000-default.conf y lo renombramos con el nombre de nuestra pagina, seguido de un ".conf" 185 | sudo cp 000-default.conf mipagina.es.conf 186 | # - Ubicación actual: /etc/apache2/sites-available 187 | ``` 188 | Tras hacer una clonación, accedemos al interior de la copia creada por nosotros con el nombre de nuestra pagina, a la cual le aplicaremos atributos para hacer que la pagina funcione. 189 | 190 | Para esto accedemos con permisos de root y agregamos el siguiente contenido sustituyendo todo lo que pueda haber en su interior: 191 | ```bash 192 | #Editamos el contenido como root 193 | sudo nano mipagina.es.conf 194 | # - Ubicación actual: /etc/apache2/sites-available/mipagina.es.conf 195 | ``` 196 | 197 | Dentro del fichero agregamos el siguiente contenido: 198 | ```bash 199 |Contenido cuerpo de página
38 | 39 | 40 | ``` 41 | En internet, iremos a la pagina duckdns.org y nos adaremos de alta, registrando el nombre de la página, esot nos permitirá ofrecer serviicos mediante una direccion que nos proporcionará duckdns. 42 | 43 | Accedemos a la ruta de nginx `/etc/nginx/sites-available` y creamos el fichero de configuración: 44 | ```bash 45 | #Accedemos a la ruta 46 | cd /etc/nginx/sites-available 47 | #Copiamos el fichero y lo renombramos como mipagina 48 | sudo cp default mipagina 49 | #Editamos el fichero 50 | sudo nano mipagina 51 | ``` 52 | Dentro del fichero previo, agregarmeos el siguiente contenido: 53 | ```yml 54 | server { 55 | listen 80; 56 | root /var/www/mipagina.es; 57 | index index.html index.htm; 58 | #Aquí hacemos referencia a la direccion con la que nos vincularemos dentro de duckDNS 59 | server_name mipagina.duckdns.org www.mipagina.duckdns.org; 60 | location / { 61 | try_files $uri $uri/ =404; 62 | } 63 | } 64 | ``` 65 | Posteriormente hacemos uin enlace simbólico 66 | ```bash 67 | sudo ln -s /etc/nginx/sites-available/mipagina.es /etc/nginx/sites-enabled/mipagina.es 68 | ``` 69 | Editamos el fichero `/ect/hosts`: 70 | ```bash 71 | sudo nano /etc/hosts 72 | ``` 73 | Dentro de este ficheroi, tendremos que tener la siguiente estructura: 74 | ```bash 75 | 127.0.0.1 localhost 76 | 127.0.1.1 theritex 77 | 40.0.0.2 index.es www.index.es 78 | # The following lines are desirable for IPv6 capable hosts 79 | ::1 ip6-localhost ip6-loopback 80 | fe00::0 ip6-localnet 81 | ff00::0 ip6-mcastprefix 82 | ff02::1 ip6-allnodes 83 | ff02::2 ip6-allrouters 84 | ``` 85 | Reiniciamos el servicio nginx: 86 | ```bash 87 | #Reiniciamos el servicio 88 | service nginx restart 89 | #Comprobamos su estado 90 | service nginx status 91 | ``` 92 | Para comprobar su correcto funcionamiento, buscaremos nuestra página con el enlace que hayamos creado, dependiendo de la direccion registrada variará este mismo: 93 | ```bash 94 | #Realizamos las busquedas de la pagina en internet 95 | mipagina.es.duckdns.org 96 | www.mipagina.es.duckdns.org 97 | ``` 98 | Para continuar con la página, instalaremos más servicios, en este caso será openssl: 99 | ```bash 100 | #Instalamos el servicio openssl 101 | sudo apt install openssl 102 | ``` 103 | Accede a la ruta `/etc/nginx` y crea un directorio donde almacenar las claves: 104 | ```bash 105 | #Accedemos a la ruta previa 106 | cd /etc/nginx 107 | #Creamos un directorio 108 | mkdir ssl 109 | #Le otrogamos permisos al directorio previo 110 | chmod 700 ssl 111 | ``` 112 | Ahora procedemos a crear las llaves: 113 | ```bash 114 | #Creamos las claves y solicitud dentro de /etc/nginx/ssl 115 | openssl genpkey -algorithm RSA -out /etc/nginx/ssl/clave_privada.key -out /etc/nginx/ssl/solicitud.csr 116 | #Accedemos a la ruta ssl y comprobamos el resultado 117 | cd ssl 118 | #Comprobación de la creación de “clave_privada.key” y “solicitud.csr” 119 | ls -al 120 | #Genemamos un certificado dentro del mismo directorio 121 | openssl x509 -req -days 365 -in /etc/nginx/ssl/solicitud.csr -signkey /etc/nginx/ssl/clave_rpivada.key -out /etc/nginx/ssl/certificado.crt 122 | #Comprobación de la creación de “certificado.crt” 123 | ls -al 124 | ``` 125 | Posteriormente nos dirigimos a la ruta `/etc/nginx/sites-enabled/mipagina` para editarla y agregar más contenido: 126 | ```bash 127 | sudo nano /etc/nginx/sites-enabled/mipagina 128 | ``` 129 | Dentro de esta ruta agregaremos el siguiente contenido: 130 | ```yml 131 | server { 132 | listen 80; 133 | root /var/www/mipagina.es; 134 | index index.html index.htm; 135 | server_name mipagina.duckdns.org www.mipagina.duckdns.org; 136 | location / { 137 | try_files $uri $uri/ =404; 138 | } 139 | } 140 | 141 | server { 142 | listen 443 ssl; 143 | server_name mipagina.duckdns.org www.mipagina.duckdns.org; 144 | root /var/www/mipagina.es; 145 | index index.html index.htm; 146 | ssl_certificate /etc/nginx/ssl/certificado.crt; 147 | ssl_certificate_key /etc/nginx/ssl/clave_privada.key 148 | location / { 149 | try_files $uri $uri/ =404; 150 | } 151 | } 152 | ``` 153 | Este contenido nos permitirá estbalecer conexión con la dirección `duckdns`, así como especificaremos la ruta de los ficheros, siendo estos los certificados y claves requeridas para una conexión segura. 154 | 155 | Por último reiniciaremos los siguiente servicios y si el procedimiento se ha llevado a cabo, su página estaría lista para ser vista desde cualquier dispositivo. 156 | ```bash 157 | #Reiniciamos todos los servicios 158 | service nginx restart 159 | service apache2 restart 160 | service openssl restart 161 | #Comprobamos el estado de cada uno de estos servicios 162 | service nginx status 163 | service apache2 status 164 | service openssl status 165 | ``` -------------------------------------------------------------------------------- /WebPage/nginx/Documentation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Theritex/LinuxGuide/8d8f9d9e1a4533c860d11e6ec87d48a34a6427b8/WebPage/nginx/Documentation.pdf --------------------------------------------------------------------------------