├── DNS └── Documentation.md ├── Proxy └── Documentation.md ├── ACL └── AccesControlList │ └── Documentation.md ├── WebPage ├── nginx │ ├── Documentation.pdf │ └── Documentation.md ├── Wordpess │ ├── Documentation.pdf │ └── Documentation.md └── Apache2 │ ├── Documentation_PagWeb_Apache2_Linux.pdf │ └── Documentation.md ├── FileShare ├── NFS+SMABA │ ├── Documentation.pdf │ └── Documentation.md └── FTP File Transfer Protocol │ ├── FTP SSH File Transfer Protocol por SSH │ └── Documentation.md │ └── SFTP Secure File Transfer Protocol │ └── Documentacion.md ├── Security ├── VPN │ └── OpenVpn │ │ ├── Documentation.pdf │ │ └── Documentation.md ├── SQUID Proxy Server │ ├── Documentation.pdf │ └── Documentation.md ├── DataDuplicator │ └── Documentation.md └── ProxyChain │ └── Tor │ ├── Documentation.md │ └── proxychain.conf ├── README.md └── DHCP └── Documentation.md /DNS/Documentation.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Proxy/Documentation.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ACL/AccesControlList/Documentation.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /WebPage/nginx/Documentation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Theritex/LinuxGuide/HEAD/WebPage/nginx/Documentation.pdf -------------------------------------------------------------------------------- /WebPage/Wordpess/Documentation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Theritex/LinuxGuide/HEAD/WebPage/Wordpess/Documentation.pdf -------------------------------------------------------------------------------- /FileShare/NFS+SMABA/Documentation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Theritex/LinuxGuide/HEAD/FileShare/NFS+SMABA/Documentation.pdf -------------------------------------------------------------------------------- /Security/VPN/OpenVpn/Documentation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Theritex/LinuxGuide/HEAD/Security/VPN/OpenVpn/Documentation.pdf -------------------------------------------------------------------------------- /Security/SQUID Proxy Server/Documentation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Theritex/LinuxGuide/HEAD/Security/SQUID Proxy Server/Documentation.pdf -------------------------------------------------------------------------------- /WebPage/Apache2/Documentation_PagWeb_Apache2_Linux.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Theritex/LinuxGuide/HEAD/WebPage/Apache2/Documentation_PagWeb_Apache2_Linux.pdf -------------------------------------------------------------------------------- /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) -------------------------------------------------------------------------------- /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 | ``` -------------------------------------------------------------------------------- /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 | ``` -------------------------------------------------------------------------------- /WebPage/nginx/Documentation.md: -------------------------------------------------------------------------------- 1 | # Documentación NGINX 2 | 3 | > Documentado por Andrés Ruslan Abadías Otal | [Nisamov](https://github.com/Nisamov) 4 | 5 | [ ! ] Recomendación: Se recomienda revisar el contenido de la [Documentación de apache2](https://github.com/Theritex/LinuxGuide/blob/main/WebPage/Apache2/Documentation.md), pues contiene información que puede ser útil a la hora de llevar a cabo este servicio. 6 | 7 | Instalamos los servicios necesarios para poder continuar: 8 | ```bash 9 | sudo apt install nginx 10 | sudo apt install apache2 11 | ``` 12 | Posteriormente accederemos al fichero de configuración de red y estableceremos una ip fija en nuestro equipo. 13 | 14 | Accedemos a la ruta `/var/www` y creamos un directorio en su interior: 15 | ```bash 16 | #Accedemos a la ruta 17 | cd /var/www 18 | #Creamos un directorio en su interior 19 | mkdir mipagina.es 20 | #Le otorgamos permisos 21 | sudo chmod 777 mipagina.es 22 | #Accedemos al directorio creado 23 | cd mipagina.es 24 | #Creamos un index.html, que será nuestra página principal 25 | nano index.html 26 | ``` 27 | Tras crear y abrir el fichero `index.html`, agregamos la estructura basica de una página web: 28 | ```html 29 | 30 | 31 |
32 | 33 | 34 |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 | ``` -------------------------------------------------------------------------------- /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 -------------------------------------------------------------------------------- /WebPage/Wordpess/Documentation.md: -------------------------------------------------------------------------------- 1 | # Documentación Wordpress 2 | 3 | > Documentado por Andrés Ruslan Abadías Otal | [Nisamov](https://github.com/Nisamov) 4 | 5 | [ ! ] Recomendación: Para obtener referencias y más apuntes, dirígase a nuestra [Documentación Apache2](https://github.com/Theritex/LinuxGuide/blob/main/WebPage/Apache2/Documentation.md). 6 | 7 | Para este ejercicio hay que instalar Ubuntu, en este caso usaremos un `Ubuntu desktop 22.04.04s`. 8 | 9 | Tras la instalación, actualizamos la máquina con el siguiente comando: 10 | ```bash 11 | #Actualizamos los paquetes de la maquina 12 | sudo apt update 13 | ``` 14 | A continuación upgradeamos la máquina (recomendado): 15 | ```bash 16 | #Upgradeamos la maquina 17 | sudo apt upgrade 18 | ``` 19 | 20 | A continuación, instalamos el siguiente contenido, los cuales son las dependencias y paquetería de los programas que vamos a usar mediante el comando que aparece a continuación: 21 | ```bash 22 | #Instalamos los reqisitos de uso 23 | sudo apt install apache2 php8.1 php8.1-bcmath php8.1-curl php8.1-gd php8.1-mbstring php8.1-mysql php8.1-pgsql php8.1-xml php8.1-zip mariadb-server mariadb-client wget 24 | ``` 25 | De otro modo, también podemos instalar los requisitos mediante los siguientes comandos (instalación por secciones): 26 | ```bash 27 | sudo apt install apache2 28 | sudo apt install php7.4 29 | sudo apt install wget 30 | sudo apt install mariadb-server 31 | sudo apt install mariadb-client 32 | sudo apt install php8.1 33 | sudo apt install php8.1-mysql 34 | sudo apt install php8.1-curl 35 | sudo apt install php8.1-gd 36 | sudo apt install php8.1-bcmath 37 | sudo apt install php8.1-cgi 38 | sudo apt install php8.1-ldap 39 | sudo apt install php8.1-mbstring 40 | sudo apt install php8.1-xml 41 | sudo apt install php8.1-soap 42 | sudo apt install php8.1-xsl 43 | sudo apt install php8.1-zip 44 | #En caso de ser necesario, instalar: 45 | sudo apt install libapache2-mod-php php-mysql -y 46 | ``` 47 | Este comando nos permitirá instalar todos los paquetes en un solo comando, evitando tener que ir por fragmentos, ahorrandonos tiempo. 48 | 49 | Usando el entorno gráfico instalamos wordpress y lo descomprimimos, 50 | Movemos el directorio a la ruta raíz. 51 | 52 | Hay que tener en cuenta nuestra posicion actual dentro del sistema operativo, pues si tenemos worpress descomprimido en la ruta /Desktop o /Downloads, hay que estar ubicado en esta misma ruta, o bien se deberá modificar el ruta principal del objetivo para poder hacer que el comando pueda funcionar sin problemas: 53 | ```bash 54 | #Clonamos el repositorio descomprimido dentro de la ruta raíz con el nombre "wordpress" 55 | sudo mv wordpress /wordpress 56 | # - Ubicación actual: /home/user/Downloads 57 | ``` 58 | Posteriormente a los pasos previos, hay que otorgar permisos a los directorios con los que vamos a trabajar: 59 | ```bash 60 | #Accedemos a la ruta de la clonacion del directorio worpress 61 | cd /wordpress 62 | #Otorgamos permisos dentro del repositorio 63 | sudo chown www-data:www-data . 64 | sudo chown www-data:www-data -R * 65 | # - Ubicación actual: /wordpress 66 | ``` 67 | Tras otorgar los pemisos necesarios, cambiamos la ruta por defecto de apache2. 68 | Deshabilitamos el fichero de configuración de apache2: 69 | ```bash 70 | #Accedemos a la ruta /sites-available 71 | cd /etc/apache2/sites-available 72 | #Deshabilitamos la configuración por defecto 73 | sudo a2dissite 000-default 74 | # - Ubicación actual: /etc/apache2/sites-available 75 | ``` 76 | Recargamos el servicio apache para comprobar los cambios: 77 | ```bash 78 | #Reiniciamos el servicios apache2 79 | sudo service apache2 restart 80 | ``` 81 | Creamos un nuevo fichero de configuración en la misma ruta previa: 82 | ```bash 83 | #Accedemos a la ruta en caso de habernos movido de ubicación 84 | cd /etc/apache2/sites-available/ 85 | #Creamos el fichero de configuración y accedemos a su edición 86 | sudo nano wordpress.conf 87 | # - Ubicación actual: /etc/apache2/sites-available/ 88 | ``` 89 | Agregamos el contenido de la configuración con las rutas necesarias apra su funcionamiento: 90 | ```bash 91 |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 |