Ejecutando numerosos acopladores en este momento en una nueva compilación para un servidor de laboratorio doméstico y tratando de asegurarse de que todo esté bloqueado y seguro. Uso el servidor para una variedad de cosas, tanto que requieren acceso desde el mundo exterior (nextcloud) como cosas a las que solo accederé desde mi red interna (plex). Por supuesto, el servidor está detrás de un enrutador que limita los puertos abiertos pero busca seguridad adicional. Me gustaría restringir aquellos acopladores a los que solo quiero acceder a través de la red interna, a 192.168.0.0/24. De esa manera, si de alguna manera un puerto se abriera en mi enrutador, no estaría expuesto (¿estoy siendo paranoico?).
Actualmente, los archivos docker-compose están exponiendo puertos a través de:
.... ports: - 8989:8989 ....Por supuesto, esto funciona bien, pero es accesible para todo el mundo si abro el puerto en mi enrutador. Sé que puedo vincularme a localhost a través de
.... ports: - 127.0.0.1:8989:8989 ....Pero eso no me ayuda cuando intento acceder a la ventana acoplable desde mi red interna. He leído numerosos artículos sobre redes docker y varias banderas y también leí sobre la posibilidad de solución de iptables.
Cualquier orientación es muy apreciada.
Gracias,
Simplemente no declare ningún puerto en docker-compose, son visibles automáticamente entre contenedores.
Utilizo un contenedor de búsqueda elástica de esta manera y un kibana separado puede conectarse a él por el nombre del servidor declarado en el yml.
si de alguna manera un puerto se abriera en mi enrutador, no estaría expuesto
Usando este procedimiento, los puertos nunca son visibles fuera del entorno de la ventana acoplable (es decir, fuera == en su red local).
Si lo que te preocupa es que se publiquen puertos en tu LAN al hacer el procedimiento que te comenté, no es así.
en realidad eres muy cercano a
ports: - 127.0.0.1:8989:8989como con esto, es accesible localmente en su servidor, lo suficientemente divertido, su enlace al truco localhost es exactamente lo que estaba buscando para mi propia configuración xD
a partir de este punto, en realidad hay un par de formas de configurarlo para que pueda acceder a él en su red local.
el primero es el que estoy usando en mi propia configuración: reenvío ssh
puede, si aún no lo ha hecho, configurar un archivo .ssh/config para reenviar puertos localhost a su computadora. teniendo en cuenta su ejemplo, la sintaxis es la siguiente
Host some-hostname HostName 192.168.xx User user-of-server LocalForward 8989 127.0.0.1:8989 some-hostname es un nombre abreviado que puede elegir, user-of-server es el usuario real con el que configuró para iniciar sesión, 192.168.xx es la dirección IP local real de su servidor y también puede incluir un IdentityFile /path/to/ssh/key . con esto, puede ejecutar ssh some-hostname para ingresar a su servidor desde cualquier computadora en su red local y su servidor estará disponible en localhost:8989 en esa computadora específica
el segundo es un proxy inverso como nginx, esto también se puede ejecutar en un contenedor docker y puede vincularlo a cualquier puerto como, por ejemplo, a 6443 y puede montar su archivo de configuración en el contenedor con
volumes: - 'config:/etc/nginx/conf.d' ports: - 6443:443 volumes: config: driver: local driver_opts: type: none; o: bind device: "./config"en ./config/defaul.conf podría configurar algo como
server { listen 443 ssl http2; server_name 192.168.xx; ssl_certificate /etc/letsencrypt/signed_chain.crt; ssl_certificate_key /etc/letencrypt/domain.key include /etc/nginx/includes/ssl.conf location /{ ### force timeouts if one of backend is died ## ### such died, many backend, very timeouts ## proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; ### Set headers #### proxy_set_header Accept-Encoding ""; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host:server_port; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-Proto $scheme; add_header Front-End-Https on; proxy_buffering off; proxy_pass http://127.0.0.1:8989 }entonces debería estar disponible en y solo en 192.168.xx:6443