destapeman
FUCK PUSSYS, YES BADASS
Moderador
Paladín de Nodo
Jinete de Nodo
Burgués de Nodo
Noderador
Nodero
Noder
Buenas noders,
Hace mucho que no traigo nada de propia cosecha, hoy os vengo a enseñar como crear un servicio sencillo pero que podréis extrapolar a cualquier ámbito a la hora de administrar un servidor.
¿Por qué es importante automatizar las tareas?
Porque nos ahorra trabajo a futuro, y como buenos informáticos, somos unos vagos y para qué vamos a trabajar nosotros si lo pueden hacer las máquinas, que para eso están digo yo.
Hoy os voy a enseñar a configurar un servicio de NAT para que cada vez que arranquemos nuestro servidor que hace de router, el nateo se haga de forma automática o para poder parar/reanudar el propio servicio cuando veamos que sea necesario.
El esquema de red donde nos encontramos para que os hagáis una idea del plano general es la siguiente:
El reenvío de IP permite que tu máquina redirija el tráfico entre las dos redes, para ello tendremos que editar el archivo edita el archivo /etc/sysctl.conf y añadir la siguiente línea al fichero:
Nos aseguramos que la línea se ha añadido descomentada filtrando con grep primero para sacar solo las líneas que no empiecen por ‘#’ y luego solo las líneas que no empiecen por ‘ ’:
Para aplicar los cambios de el fichero sin necesidad de reiniciar ejecutamos la siguiente orden:
• Tarjeta de red en modo bridge: Esta se conectará a la red externa (como la red de tu router físico).
• Tarjeta de red interna: Esta servirá para la red 10.0.3.0/24, donde se conectarán los equipos.
Para modificar el fichero de configuración de las tarjetas de red abrimos con un editor de texto tipo nano el archivo /etc/netplan/50-cloud-init.yaml y añadimos la siguiente configuración:
Activaremos el enmascaramiento (NAT) para permitir que el tráfico de la red interna salga a la red externa a través de enp0s3. Para ello configuraremos un servicio persistente para que cada vez que arranque el equipo, después de que se configuren las tarjetas de red, se ejecute el servicio y se cree el nateo para evitar tener que configurarlos cada vez que accedamos a la máquina y para poder detener el nateo si nos interesase en algún momento.
Para empezar crearemos un script en /usr/local/***/ al que llamaremos configure-nat.sh. Este script tendrá 5 partes:
Guardamos el script y configuramos el servicio en la ruta /etc/systemd/system y creamos el archivo nat.service donde lo configuraremos.
En él incluiremos las siguiente configuración:
Pasemos a explicar como funciona cada línea de configuración:
[Unit]
Después activaremos el servicio:
Y lo iniciaremos:
Verificamos que el servicio está arrancado:
CONCLUSIONES:
¿Por qué es interesante este tipo de configuración? Porque nos permite modulizar la administración y nos la facilita ahorrándonos el tener que meter el nateo manualmente cada vez que entremos o reiniciemos la máquina. Además quenos da pie a crear futuros servicios para hacer menos tediosa la administración del sistema.
Es mejor trabajar una vez mucho, que no todos los días un poco.
Al crear un servicio de este tipo podemos estandarizar procedimientos de actuación frente a problemas o amenazas. Imaginémonos que nos entra un ransomware o que han hecho una persistencia en la DMZ, con solo uan orden podremos cortar el flujo de la comunicación entre redes, protegiendo el resto de entornos de una forma fácil y rápida. La rapidez es algo fundamental cuando se tienen problemas.
Si tenéis alguna duda os leo.
Hace mucho que no traigo nada de propia cosecha, hoy os vengo a enseñar como crear un servicio sencillo pero que podréis extrapolar a cualquier ámbito a la hora de administrar un servidor.
¿Por qué es importante automatizar las tareas?
Porque nos ahorra trabajo a futuro, y como buenos informáticos, somos unos vagos y para qué vamos a trabajar nosotros si lo pueden hacer las máquinas, que para eso están digo yo.
Hoy os voy a enseñar a configurar un servicio de NAT para que cada vez que arranquemos nuestro servidor que hace de router, el nateo se haga de forma automática o para poder parar/reanudar el propio servicio cuando veamos que sea necesario.
CONTEXTO:
Estoy cursando actualmente el segundo año de ASIR y la primera práctica de Redes era crear un servidor que haga de router para la red interna que configuraremos más adelante donde se alojará nuestra DMZ con todos los servidores alojados en ella. Seguramente quien estudie algo similar a esto habrá creado un entorno de trabajo similar así que lo podréis aplicar a vuestro día a día.El esquema de red donde nos encontramos para que os hagáis una idea del plano general es la siguiente:
CONFIGURAR EL IP FORWARDING
El reenvío de IP permite que tu máquina redirija el tráfico entre las dos redes, para ello tendremos que editar el archivo edita el archivo /etc/sysctl.conf y añadir la siguiente línea al fichero:
Bash:
sudo echo “net.ipv4.ip_forward=1 ” >> /etc/sysctl.conf
Nos aseguramos que la línea se ha añadido descomentada filtrando con grep primero para sacar solo las líneas que no empiecen por ‘#’ y luego solo las líneas que no empiecen por ‘ ’:
Bash:
sudo cat /etc/sysctl.conf | grep -v ‘^\s*#’ | grep -v ‘^\s*$’
Para aplicar los cambios de el fichero sin necesidad de reiniciar ejecutamos la siguiente orden:
Bash:
sudo sysctl -p3.
CONFIGURAR LAS INTERFACES DE RED
• Tarjeta de red en modo bridge: Esta se conectará a la red externa (como la red de tu router físico).
• Tarjeta de red interna: Esta servirá para la red 10.0.3.0/24, donde se conectarán los equipos.
Para modificar el fichero de configuración de las tarjetas de red abrimos con un editor de texto tipo nano el archivo /etc/netplan/50-cloud-init.yaml y añadimos la siguiente configuración:
Bash:
sudo nano /etc/netplan/50-cloud-init.yaml
Bash:
network:
version: 2
renderer: networkd
ethernets:
enp0s3: # Tarjeta 1 en modo bridge
dhcp4: true # Para que coja la conf de red del DHCP server
enp0s8: # Tarjeta 2 en modo inet
addresses:
- 10.0.3.1/24 # Primera IP configurada
routes:
- to: 0.0.0.0/0
via: 172.24.124.192
nameservers:
addresses:
- 8.8.8.8 # DNS de Google
- 8.8.4.4 # DNS de Google por si falla el primero
CONFIGURAR EL SERVICIO NAT
Activaremos el enmascaramiento (NAT) para permitir que el tráfico de la red interna salga a la red externa a través de enp0s3. Para ello configuraremos un servicio persistente para que cada vez que arranque el equipo, después de que se configuren las tarjetas de red, se ejecute el servicio y se cree el nateo para evitar tener que configurarlos cada vez que accedamos a la máquina y para poder detener el nateo si nos interesase en algún momento.
Para empezar crearemos un script en /usr/local/***/ al que llamaremos configure-nat.sh. Este script tendrá 5 partes:
- Declaración de intérprete y variables:
Bash:
#!/***/bash
# Variables
wan_iface=$(ip -o link show | awk -F': ' 'NR==2 {print $2}') # Interfaz de salida
backup_dir="/etc/iptables/backups" # Directorio de backups
backup_file="$backup_dir/iptables-backup-$(date +'%Y%m%d_%H%M%S').rules" # Archivo de backup con fecha
- Creación de función para backups
Bash:
# Función para habilitar NAT
enable_nat() {
echo "Habilitando NAT..."
sudo iptables -t nat -A POSTROUTING -o "$wan_iface" -j MASQUERADE
echo "NAT habilitado."
}
- Creación de función para activar NAT
Bash:
# Función para habilitar NAT
enable_nat() {
echo "Habilitando NAT..."
sudo iptables -t nat -A POSTROUTING -o "$wan_iface" -j MASQUERADE
echo "NAT habilitado."
}
- Creación de función para desactivar NAT
Bash:
# Función para deshabilitar NAT
disable_nat() {
echo "Deshabilitando NAT..."
sudo iptables -t nat -D POSTROUTING -o "$wan_iface" -j MASQUERADE
echo "NAT deshabilitado."
}
- Comprobación de la función elegida
Bash:
# Comprobación del parámetro de entrada
case "$1" in
start)
backup_iptables # Realizar el backup antes de habilitar NAT
enable_nat
;;
stop)
backup_iptables # Realizar el backup antes de deshabilitar NAT
disable_nat
;;
*)
echo "Uso: $0 {start|stop}"
exit 1
;;
esac
Guardamos el script y configuramos el servicio en la ruta /etc/systemd/system y creamos el archivo nat.service donde lo configuraremos.
Bash:
sudo nano /etc/systemd/system/nat.service
En él incluiremos las siguiente configuración:
Bash:
[Unit]
Description=Servicio para habilitar NAT en el router
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/***/ configure-nat.sh start
ExecStop=/usr/local/***/configure-nat.sh stop
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Pasemos a explicar como funciona cada línea de configuración:
[Unit]
• Description=Servicio para habilitar NAT en el router
• Proporciona una breve descripción del servicio. Este texto se mostrará cuando consultes el estado del servicio o en registros relacionados con el servicio.
• After=network.target
• Indica que este servicio debe iniciarse después de que la red esté disponible .network.target es un objetivo (target) de systemd que asegura que todas las interfaces de red estén configuradas y activas antes de que se inicie este servicio.
[Service]• Type=simple
• Este tipo indica que el servicio se considera activo tan pronto como el procesonprincipal se ha iniciado. Es el tipo más simple y común, y se utiliza cuando el servicio no se ejecuta en segundo plano (daemon).
• ExecStart=/usr/local/***/configure-nat.sh start
• Especifica el comando que se ejecutará para iniciar el servicio. En este caso, invoca el script configure-nat.sh con el argumento start para habilitar el NAT.
• ExecStop=/usr/local/***/ configure-nat.sh stop
• Especifica el comando que se ejecutará para detener el servicio. Aquí se llama almismo script con el argumento stop para deshabilitar el NAT.
• RemainAfterExit=yes
• Indica que el servicio debe considerarse activo incluso después de que el proceso de ExecStart haya terminado. Esto es útil para servicios que realizan su trabajo y luego finalizan, pero aún deben ser considerados activos para que el estado refleje que han sido ejecutados correctamente.
[Install]• WantedBy=multi-user.target
• Define el objetivo (target) que debe activarse para que este servicio se inicie.multi-user.target es un nivel de ejecución que indica que el sistema está enmodo multiusuario, es decir, permite múltiples usuarios y suele ser el estado normal para un sistema. Al habilitar el servicio, se crea un enlace simbólico en el directorio de targets, lo que hace que el servicio se inicie automáticamente en ese contexto.
Antes de activar el servicio recargaremos systemd con el comando:
Bash:
sudo systemctl daemon-reload
Después activaremos el servicio:
Bash:
sudo systemctl enable nat.service
Y lo iniciaremos:
Bash:
sudo systemctl start nat.service
Verificamos que el servicio está arrancado:
Bash:
sudo systemctl status nat.service
CONCLUSIONES:
¿Por qué es interesante este tipo de configuración? Porque nos permite modulizar la administración y nos la facilita ahorrándonos el tener que meter el nateo manualmente cada vez que entremos o reiniciemos la máquina. Además quenos da pie a crear futuros servicios para hacer menos tediosa la administración del sistema.
Es mejor trabajar una vez mucho, que no todos los días un poco.
Al crear un servicio de este tipo podemos estandarizar procedimientos de actuación frente a problemas o amenazas. Imaginémonos que nos entra un ransomware o que han hecho una persistencia en la DMZ, con solo uan orden podremos cortar el flujo de la comunicación entre redes, protegiendo el resto de entornos de una forma fácil y rápida. La rapidez es algo fundamental cuando se tienen problemas.
Si tenéis alguna duda os leo.