استخدام قواعد إيبتبلس لا تعمل مع حاوية عامل الميناء

مجرد إعداد حاوية إلاستيكشيرتش لاستخدامها مع التطبيق لارافيل الشركة.إنشاء عامل ميناء-يؤلف.يمل وتشغيله لا تشوبه شائبة ومباشرة إلى الأمام ولكن المشكلة تحدث عندما أريد أن جدار الحماية هذا الشيء بحيث يمكن الوصول إليها فقط من واحد ، إب محددة من التطبيق لارافيل المذكورة.

أثناء البحث لاحظت أن الكثير من الناس تواجه هذه القضايا حيث حركة المرور إلى ميناء إحالتها من قبل عامل الميناء يحصل يتعرض تماما للجمهور وأنهم غير قادرين على جدار الحماية بشكل صحيح.

لقد وجدت عدة الحلول في آخر 6 ساعات لم يكن أي منها يعمل. أفترض أن هذا له علاقة مع الطريقة عامل الميناء العمليات / إعادة توجيه حركة المرور الواردة ومعرفتي إيبتبلس ليست واسعة جدا حتى أتمكن من فهم ما يحدث بمفردي.

هذا هو بلدي عامل الميناء يؤلف.يمل (لما يستحق):

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

هذه هي قواعد إيبتبلس المستخدمة حاليا والتي هي إلى حد ما ما أريد ولكن كل حركة المرور إلى المنفذ 9200 من أي عميل لا يزال يسمح من خلال بدلا من أن تكون متاحة فقط من بلدي التطبيق:

*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

حاولت تعطيل دعم إيبتبلس عامل الميناء وتعطيل جسر الشبكات وقواعد إيبتبلس أنب بضع عشرات من المرات ولكن دون جدوى.

سأقدر أي اقتراح وأساعد في تحقيق ذلك لأنني خرجت من الأفكار ونتائج البحث عن هذه المشكلة.

شكرا مقدما!

لكل من يبحث عن حل لهذه المشكلة ، الجواب هو هذا:

*filter:INPUT ACCEPT [0:0]:FORWARD DROP [0:0]:OUTPUT ACCEPT [0:0]:FILTERS - [0:0]:DOCKER-USER - [0:0]-F INPUT-F DOCKER-USER-F FILTERS-A INPUT -i lo -j ACCEPT-A INPUT -p icmp --icmp-type any -j ACCEPT-A INPUT -j FILTERS-A DOCKER-USER -i ens33 -j FILTERS-A FILTERS -m state --state ESTABLISHED,RELATED -j ACCEPT-A FILTERS -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT-A FILTERS -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT-A FILTERS -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT-A FILTERS -j REJECT --reject-with icmp-host-prohibitedCOMMIT

وجدت هنا: https://unrouted.io/2017/08/15/docker-firewall/

يعمل تماما.

سأشرح السيناريو الخاص بي حيث اختبرت ما تريد تحقيقه.

لقد أطلقت حاوية عامل ميناء حيث يتم إعادة توجيه المنفذ 9010 إلى المنفذ 8080:

docker run -p 9010:8080 swaggerapi/swagger-editor

يقوم عامل الميناء بإنشاء قاعدة دنات لسلسلة بريروتينغ التي تعيد توجيه حركة المرور من المنفذ 9010 إلى المنفذ 8080:

DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:9010 to:172.17.0.5:8080

عامل الميناء أيضا بإنشاء قاعدة في سلسلة عامل الميناء السماح لجميع حركة المرور المرسلة إلى عنوان إب الحاوية والمنفذ 8080.

ACCEPT     tcp  --  !docker0 docker0  0.0.0.0/0            172.17.0.5           tcp dpt:8080

يتم استخدام سلسلة عامل الإرساء في السلسلة الأمامية ، حيث تتم معالجة جميع حركة المرور المرسلة إلى جسر عامل الإرساء 0 وفقا للقواعد الموجودة في سلسلة عامل الإرساء.

DOCKER     all  --  *      docker0  0.0.0.0/0            0.0.0.0/0

الآن أريد تصفية حركة المرور المرسلة إلى المنفذ 8080 (تمت معالجة حركة المرور إلى المنفذ 9010 من قبل بريروتينغ والآن انها حركة المرور المرسلة إلى المنفذ 8080) حظر جميع عناوين إب مع السماح حركة المرور من إب 192.168.1.142. يمكن إضافة عنوان إب للحاوية إلى تلك القواعد لزيادة تحبب بالطبع.

أضيف القواعد التالية في بداية إلى الأمام سلسلة. بدلا من ذلك يمكنك استبدال الأمام مع عامل الميناء.

iptables -I FORWARD -p tcp --dport 8080 -j DROPiptables -I FORWARD -p tcp -s 192.168.1.142 --dport 8080 -j ACCEPT

وبفضل هذه القواعد فقط إب 192.168.1.142 يمكن أن تصل إلى منفذ 8080 المستخدمة من قبل الحاوية.

لأولئك الذين يزورون هذه الإجابة إذا كنت تريد فقط للسماح عنوان إب معين واحد للوصول إلى الحاويات استخدام الأمر إيبتبلس المقترحة في دوكر دوكس.

أعتقد أن إضافة هذا الخط كان من شأنه إصلاح مشكلتك :

*filter:INPUT DROP [0:0]:FORWARD DROP [0:0]:OUTPUT ACCEPT [779:162776]:DOCKER - [0:0]**-A INPUT -p tcp -m tcp --dport 9200 -j DOCKER**-A DOCKER -s xxx.xxx.xxx.xxx -p tcp -m tcp --dport 9200 -j ACCEPT