Diferencia entre revisiones de «Scripts»

Sacado de cristobal.wiki, presentado sin garantia y con mucho <3.
Ir a la navegaciónIr a la búsqueda
Sin resumen de edición
Línea 1: Línea 1:
En el [[GitHub]] hay varios scripts.
En el [[GitHub]] hay varios scripts.


Hay tres tipos de script, los '''auxiliares''', los "'''testing'''" y los '''finales'''.
Hay cuatro tipos de script, los '''auxiliares''', los "'''testing'''", los '''retirados''' y los '''finales'''.


=== Auxiliares ===
=== Auxiliares ===
Línea 60: Línea 60:


==== gen_variables.sh ====
==== gen_variables.sh ====
Guarda las variables en un fichero, solo se ejecuta si has decidido romper las cosas y ejecutar el script principal sin superusuario (Lo cual no recomiendo)
Guarda las variables en un fichero, solo se ejecuta si has decidido romper las cosas y ejecutar el script principal sin [[superusuario]] (Lo cual no recomiendo)
 
=== Testing ===
Los scripts testing son scripts que se usan para probar funciones y/o contenidos de el sistema.
 
==== testsubshell.sh ====
Escribe una variable a una subshell y usa la opción estándar del POSIX -x para que la cargue en una instancia de tu $SHELL actual nueva.
 
Si el script devuelve "Pasado con exito, si estas viendo esto, la subshell ha ejecutado este comando y ha salido bien, si no es asi, asegurate de que tu shell soporta los argumentos heredados de otros scripts", funciona bien, si no hace nada, tienes que ajustar tu shell para que permita usar argumentos pasados desde le proceso padre.
 
==== copias.sh ====
(La versión en el repositorio no esta al día)
 
Pruebas de netcat y envió de comandos sin RPC (Llamadas directas a la shell)
 
Este script sera ignorado en favor de una forma menos automática, pero millones de veces mas segura.
 
La idea principal del script era que netcat generara una clave, la enviara, usaría la clave como cifrado de PGP para la copia, y terminara la conexión, pero esto causa un problema de seguridad debido a que la clave se envía de forma clara al servidor/de vuelta, lo cual introduce un fallo de seguridad en el transporte, si alguien leyera los primeros bytes de la transmisión y los usara para des-encriptar la copia, todo el proceso se vería nulificado.
 
==== ajustar.sh ====
Una versión menos refinada y menos elegante de generar_red.sh
 
Las variables están "hardcoded", lo que requiere re-escribir el script cada vez que queramos hacer algún cambio. El actual usa variables del entorno y variables pasadas por argumentos al script.
 
=== Retirados ===
Una colección de scripts que se usaban con el antiguo sistema de cliente <-> router <-> squid <-> internet.
 
La mayoria de estos se han re-implementado de nuevo de una alguna forma u otra.
 
==== Permitir_Root_SSH_Contra.sh ====
Básicamente el (actualmente en uso) rootssh.sh pero mucho mas destructivo (Sobrescribe el buffer del archivo)
 
==== instalacion.sh ====
Una versión primitiva del script de instalación que instalaba "squid" y lo configuraba (Mal) para aceptar todas las conexiones hacia todos los puertos.
 
==== routerALPINE.sh ====
Un script hecho para alpine (usando ash en vez de bash) que instalaba lo necesario para dar servicio DNS, DHCP y enrutamiento en la (retirada) maquina router con Alpine Linux.
 
==== segundorouter.sh ====
Lo mismo que arriba pero cambiaba algunas configuraciones.
 
Este "router" no iba a pasar por el proxy, por si, por ejemplo, los profesores, querían salir al internet directamente.
 
=== Finales ===
Estos scripts llaman a todos los anteriores (si son relevantes) y/o instalan el proxy completo.
 
==== todo.sh -> main.sh ====
 
==== main.sh ====
Un script que te pregunta si quieres personalizar la instalación o no, si es que si, llama y orquesta los otros scripts que sean necesarios, preguntándote lo que necesite.
 
==== root.sh ====
La parte de la instalacion que requiere root. Tomas las variables del entorno y los archivos ".custom" como entrada para configurar la instalacion.
 
=== pordefecto.sh ===
Script "mini-ficado" que hace la instalación por defecto.
 
Solo tienes que ejecutarlo y dejar que funcione.
 
==== todo.sh.old ====
Script roto que se usaba antes, se han copiado grandes fragmentos del codigo para los scripts nuevos.

Revisión del 11:47 17 dic 2025

En el GitHub hay varios scripts.

Hay cuatro tipos de script, los auxiliares, los "testing", los retirados y los finales.

Auxiliares

Los scripts auxiliares se encuentran en la carpeta /aux/ en el repositorio. entre ellos están:

generar_cert.sh

generar_cert.sh nos genera un certificado openssl y lo mete en /etc/squid/ssl_cert, esta carpeta se podrá cambiar dentro de poco.

No acepta argumentos, pero puedes abrirlo manualmente y escribirle la información que te pide.

También intenta recrear la base de datos de SSL de Squid, si esto falla, es por que ya existe. No te preocupes.

Ejemplo de uso:

aux/generar_cert.sh

generar_dhcp.sh

Este script genera la config para el servidor dhcp (dhcpd.conf), toma varios argumentos, numerados, son:

  1. IP de la Red (La maquina donde estamos ejecutando esto)
  2. El dispositivo (Por ejemplo, enp0s8, eth2...)
  3. Red (La IP de la red (NO ES LO MISMO QUE EL 1), por ejemplo: 10.0.0.0)
  4. (Opcional) --append, le decimos que no re-cree el archivo cosas/dhcp.custom, sino que añade a el. --append **tiene** que estar en la posición 4, si no, sera ignorado.

La salida va por defecto a cosas/dhcp.custom

Ejemplo de uso:

aux/generar_dhcp.sh 10.0.0.1 enp0s8 10.0.0.0 --append

generar_red.sh

Toma varios argumentos, que luego usa como pistas (No son estrictamente necesarios, pero los recomiendo)

  1. 1, o cualquier otra cosa (1=Generar todo de nuevo (Sobrescribe en vez de añadir), cualquier otra cosa=ignorado)
  2. IP de tu maquina en la red
  3. Adaptador de red (enp0s8, eth0...)
  4. Dirección de la red
  5. Mascara de red

Si faltan estos, el script funcionara con normalidad, pero no te dara "pistas" sobre lo que puede ir en cada campo.

generar_squid.sh

Genera un archivo de squid.conf "valido" con las opciones del entorno establecidas por los scripts de configuración, y las marca en el archivo de configuración como comentarios, esto sirve para hacer el sistema mas reproducible.

Entre otras cosas, cambia si se decide que los profesores no salen a internet por el proxy y si los alumnos pueden acceder al router de los profesores.

instalar.sh

Instala los paquetes necesarios, si la variable del entorno "interfaz" es "no", no instala ni NGINX ni PHP.

iptables.sh

Hace la configuración de IPTABLES, para dejar pasar a internet lo que entre por la interfaz enp0s8, 9 y 10, pasándolos al proxy (La enp0s8 solo pasa por el proxy si se configura como "si")

pers2.sh

Te hace preguntas sobre la interfaz de configuracion, los alumnos y si los profesores salen a internet a traves del proxy.

personalizaciones.sh

Es un boilerplate que llama a los scripts de generar redes y generar DHCP, o genera sus propias configuraciones si le dices que "N"(o).

rootssh.sh

El script que se activa si activas "permitir login por ssh de root con contraseña", esto toma como entrada el archivo /usr/share/openssh/sshd_config y lo cambia, descomentando y cambiando la linea "PermitRootLogin" de "prohibit-password" a "yes", guardando el nuevo archivo sin ningun otro cambio al archivo "/etc/ssh/sshd_config", luego reinicia el servicio de openssh

gen_variables.sh

Guarda las variables en un fichero, solo se ejecuta si has decidido romper las cosas y ejecutar el script principal sin superusuario (Lo cual no recomiendo)

Testing

Los scripts testing son scripts que se usan para probar funciones y/o contenidos de el sistema.

testsubshell.sh

Escribe una variable a una subshell y usa la opción estándar del POSIX -x para que la cargue en una instancia de tu $SHELL actual nueva.

Si el script devuelve "Pasado con exito, si estas viendo esto, la subshell ha ejecutado este comando y ha salido bien, si no es asi, asegurate de que tu shell soporta los argumentos heredados de otros scripts", funciona bien, si no hace nada, tienes que ajustar tu shell para que permita usar argumentos pasados desde le proceso padre.

copias.sh

(La versión en el repositorio no esta al día)

Pruebas de netcat y envió de comandos sin RPC (Llamadas directas a la shell)

Este script sera ignorado en favor de una forma menos automática, pero millones de veces mas segura.

La idea principal del script era que netcat generara una clave, la enviara, usaría la clave como cifrado de PGP para la copia, y terminara la conexión, pero esto causa un problema de seguridad debido a que la clave se envía de forma clara al servidor/de vuelta, lo cual introduce un fallo de seguridad en el transporte, si alguien leyera los primeros bytes de la transmisión y los usara para des-encriptar la copia, todo el proceso se vería nulificado.

ajustar.sh

Una versión menos refinada y menos elegante de generar_red.sh

Las variables están "hardcoded", lo que requiere re-escribir el script cada vez que queramos hacer algún cambio. El actual usa variables del entorno y variables pasadas por argumentos al script.

Retirados

Una colección de scripts que se usaban con el antiguo sistema de cliente <-> router <-> squid <-> internet.

La mayoria de estos se han re-implementado de nuevo de una alguna forma u otra.

Permitir_Root_SSH_Contra.sh

Básicamente el (actualmente en uso) rootssh.sh pero mucho mas destructivo (Sobrescribe el buffer del archivo)

instalacion.sh

Una versión primitiva del script de instalación que instalaba "squid" y lo configuraba (Mal) para aceptar todas las conexiones hacia todos los puertos.

routerALPINE.sh

Un script hecho para alpine (usando ash en vez de bash) que instalaba lo necesario para dar servicio DNS, DHCP y enrutamiento en la (retirada) maquina router con Alpine Linux.

segundorouter.sh

Lo mismo que arriba pero cambiaba algunas configuraciones.

Este "router" no iba a pasar por el proxy, por si, por ejemplo, los profesores, querían salir al internet directamente.

Finales

Estos scripts llaman a todos los anteriores (si son relevantes) y/o instalan el proxy completo.

todo.sh -> main.sh

main.sh

Un script que te pregunta si quieres personalizar la instalación o no, si es que si, llama y orquesta los otros scripts que sean necesarios, preguntándote lo que necesite.

root.sh

La parte de la instalacion que requiere root. Tomas las variables del entorno y los archivos ".custom" como entrada para configurar la instalacion.

pordefecto.sh

Script "mini-ficado" que hace la instalación por defecto.

Solo tienes que ejecutarlo y dejar que funcione.

todo.sh.old

Script roto que se usaba antes, se han copiado grandes fragmentos del codigo para los scripts nuevos.