Last active
April 29, 2023 16:12
-
-
Save LuisPalacios/6132bb17999934f5eb51cf186d94910f to your computer and use it in GitHub Desktop.
Fichero /etc/knockd.conf para mi router/firewall basado en Linux
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Fichero /etc/knockd.conf | |
# | |
# El Port Knocking (llamar a la puerta) consiste en enviar (típicamente) tres paquetes a tu servidor | |
# (firewall) para que te abra un puerto concreto. Tenemos el puerto de SSH (22) cerrado (haciendo | |
# drops). Mandamos desde internet tres paquetes (SYN) con una cadencia determinada; el router/firewall | |
# se da por enterado (están llamando a la puerta) y te abre durante un rato (a la IP desde donde estás | |
# mandado esos paquetes) el puerto 22. Boom !!! ya puedes entrar !!! | |
# | |
# Este fichero es un ejemplo de configuración y está relacionado con este apunte: | |
# https://www.luispa.com/administración/2023/04/08/networking-avanzado.html | |
# | |
[options] | |
logfile = /var/log/knockd.log | |
[git] | |
# Ejemplo para un servidor GIT (basado en GitLab) | |
# Para llamar desde un cliente Linux ejecutaría: | |
# knock -4 -d 1000 -v mi-git-server.midominio.com 33872 21234 33523 | |
# | |
# Inserto una nueva regla al principio de la cadena, abriendo los puertos 22,80 y 443 | |
# hacia mi servidor interno git (192.168.1.123) durante 1h | |
# | |
sequence = 33872,21234,33523 | |
seq_timeout = 10 | |
tcpflags = syn | |
start_command = /sbin/iptables -t nat -I PREROUTING -i ppp0 -p tcp -m multiport --dports 22,80,443 -j DNAT --to-destination 192.168.1.123 && /sbin/iptables -I FORWARD -s %IP% -p tcp -m multiport --dports 22,80,443 -d 192.168.1.123 -j ACCEPT | |
cmd_timeout = 3600 | |
stop_command = iptables -t nat -D PREROUTING -i ppp0 -p tcp -m multiport --dports 22,80,443 -j DNAT --to-destination 192.168.1.123 && /sbin/iptables -D FORWARD -s %IP% -p tcp -m multiport --dports 22,80,443 -d 192.168.1.123 -j ACCEPT | |
[hass] | |
# Ejemplo para un servidor Home Assistant (Ip1) y Grafana (Ip2) internos. | |
# | |
# Para llamar desde un iPhone donde tengo el cliente HASS me instalaría el | |
# App PortKnock y la configuraría para llamar a los puertos: 48734 74956 33533, | |
# además configuraría la Validación: puerto 28123 (puerto por el que escucha NPM) | |
# | |
# Inserto una nueva regla al principio de la cadena, abriendo el puerto 28123 | |
# hacia mi servidor Nginx Proxy Manager (.124) y el puerto 23000 al mismo | |
# Nginx Proxy Manager (.124). Por ambos va a ir tráfico "https" y será NPM | |
# el que derive dicho tráfico a mis servidores internos HASS y Grafana respectivamente. | |
# | |
sequence = 48734,74956,33533 | |
seq_timeout = 10 | |
tcpflags = syn | |
start_command = /sbin/iptables -t nat -I PREROUTING -i ppp0 -p tcp -m multiport --dports 28123 -j DNAT --to-destination 192.168.1.124 && /sbin/iptables -I FORWARD -s %IP% -p tcp -m multiport --dports 28123 -d 192.168.1.124 -j ACCEPT && /sbin/iptables -t nat -I PREROUTING -i ppp0 -p tcp -m multiport --dports 23000 -j DNAT --to-destination 192.168.1.124 && /sbin/iptables -I FORWARD -s %IP% -p tcp -m multiport --dports 23000 -d 192.168.1.124 -j ACCEPT | |
cmd_timeout = 3600 | |
stop_command = /sbin/iptables -t nat -D PREROUTING -i ppp0 -p tcp -m multiport --dports 28123 -j DNAT --to-destination 192.168.1.124 && /sbin/iptables -D FORWARD -s %IP% -p tcp -m multiport --dports 28123 -d 192.168.1.124 -j ACCEPT && /sbin/iptables -t nat -D PREROUTING -i ppp0 -p tcp -m multiport --dports 23000 -j DNAT --to-destination 192.168.1.124 && /sbin/iptables -D FORWARD -s %IP% -p tcp -m multiport --dports 23000 -d 192.168.1.124 -j ACCEPT | |
[ssh] | |
# Ejemplo para poder entrar por SSH a mi propio servidor firewall (a mi mismo) | |
# En este caso también abro el puerto 22 durante 1h | |
# | |
sequence = 12345,54321,33222 | |
seq_timeout = 10 | |
tcpflags = syn | |
start_command = /sbin/iptables -I INPUT -s %IP% -p tcp -m tcp -m multiport --dports 22 -j ACCEPT | |
cmd_timeout = 3600 | |
stop_command = /sbin/iptables -D INPUT -s %IP% -p tcp -m tcp -m multiport --dports 22 -j ACCEPT | |
[openvpn] | |
# Ejemplo para poder entrar con Passepartout al servicio OpenVPN. Abro el puerto durante una hora | |
# solo a la IP desde donde me llaman. En este ejemplo asumo que he configurado tanto el servidor | |
# como el cliente para trabajar por el puerto udp 4444 | |
# | |
sequence = 43123,44123,45123 | |
seq_timeout = 10 | |
tcpflags = syn | |
start_command = /sbin/iptables -I INPUT -s %IP% -p udp -m udp -m multiport --dports 4444 -j ACCEPT | |
cmd_timeout = 3600 | |
stop_command = /sbin/iptables -D INPUT -s %IP% -p udp -m udp -m multiport --dports 4444 -j ACCEPT | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment