Simplemente configure un contenedor ElasticSearch para usar con la aplicación Laravel de la empresa.Creación de docker-compose.yml y ejecutarlo es impecable y sencillo, pero el problema ocurre cuando quiero cortafuegos para que solo sea accesible desde una IP específica de la aplicación Laravel mencionada.
Mientras investigaba, noté que muchas personas tienen estos problemas en los que el tráfico al puerto reenviado por Docker queda completamente expuesto al público y que no pueden cortafuegos correctamente.
Encontré varios solución en las últimas 6 horas de las cuales ninguna estaba funcionando. Supongo que esto tiene algo que ver con la forma en que Docker procesa/reenvía el tráfico entrante y mi conocimiento de iptables no es tan vasto como para poder entender lo que está sucediendo por mi cuenta.
Este es mi docker-compose.yml (por lo que vale):
version: '3.4'services: elasticsearch: image: khezen/elasticsearch:6.1.1 container_name: elasticsearch environment: NETWORK_HOST: 0.0.0.0 HOSTS: 127.0.0.1 CLUSTER_NAME: fd-es NODE_NAME: node-1 HEAP_SIZE: 31g HTTP_SSL: "true" ELASTIC_PWD: "somepasswd" HTTP_CORS_ENABLE: "true" HTTP_CORS_ALLOW_ORIGIN: /https?:\/\/localhost(:[0-9]+)?/ ulimits: memlock: soft: -1 hard: -1 volumes: - ./config/elasticsearch.yml:/elasticsearch/config/elasticsearch.yml - ./data:/elasticsearch/data - ./logs:/elasticsearch/logs ports: - 9200:9200 networks: - es-network restart: alwaysnetworks: es-network: driver: bridge
Estas son mis reglas de iptables utilizadas actualmente, que son hasta cierto punto lo que quiero, pero todo el tráfico al puerto 9200 desde cualquier cliente aún se deja pasar en lugar de ser accesible solo desde mi aplicación:
*filter:INPUT DROP [0:0]:FORWARD DROP [0:0]:OUTPUT ACCEPT [779:162776]:DOCKER - [0:0]-A DOCKER -s xxx.xxx.xxx.xxx -p tcp -m tcp --dport 9200 -j ACCEPT-A DOCKER -o docker0 -p tcp -m tcp --dport 9200 -j ACCEPT-A DOCKER -p tcp --dport 9200 -j DROP-A INPUT -i lo -j ACCEPT-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT-A INPUT -m conntrack --ctstate INVALID -j DROP-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT-A INPUT -p udp -m conntrack --ctstate NEW -j ACCEPT-A INPUT -p tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j ACCEPT-A INPUT -p tcp -m tcp --dport 44344 -j ACCEPT-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable-A INPUT -p tcp -j REJECT --reject-with tcp-reset-A INPUT -j REJECT --reject-with icmp-proto-unreachable-A INPUT -j DROP
Intenté deshabilitar el soporte de iptables de Docker y deshabilitar las redes de puente y ajusté las reglas de iptables un par de docenas de veces, pero fue en vano.
Agradecería cualquier sugerencia y ayuda para que esto suceda porque no tengo ideas ni resultados de búsqueda para este problema.
Gracias de antemano!