المهمة: أغلق جميع الاتصالات الواردة باستثناء عناوين IP المحددة.
هناك بيئة اختبار تتكون من لينكس وثلاثة نوافذ مع عناوين IP ثابتة. على نظام التشغيل linux ، يتم تثبيت جهاز
الالتحام باستخدام zbbix وصور redmine. وعلى نظامي الويندوز ، يتم تثبيت وكلاء أجهزة zabbix وتهيئتهم ، في الثالث تحتاج إلى تنظيم القدرة على عرض zabbix. من الضروري تقييد المستخدمين الآخرين من خادم zabbix ، ولكن ليس على سبيل المثال لا الحصر.
يتم تنفيذ جميع الأوامر كجذر.
الوثائق الرسمية تقول القاعدة iptables DOCKER-USER. من الضروري فقط تغيير هذه القاعدة. أولاً ، نحن ننظر إلى القواعد ، ونركز فقط على بعض القواعد.
يمكن ملاحظة أن القاعدة ذات الهدف DOCKER-USER هي الأولى في قاعدة FORWARD. لذلك ، يجب عليك فقط تغييره.
iptables -L FORWARD -n -v Chain FORWARD (policy DROP 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 421K 169M DOCKER-USER all -- * * 0.0.0.0/0 0.0.0.0/0 419K 167M DOCKER-ISOLATION-STAGE-1 all -- * * 0.0.0.0/0 0.0.0.0/0
من جدول قواعد DOCKER ، يمكنك معرفة المنافذ المفتوحة وعناوين ip الداخلية للحاويات.
iptables -L DOCKER -n -v Chain DOCKER (4 references) pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp -- !docker_redmine docker_redmine 0.0.0.0/0 172.16.237.2 tcp dpt:3000 0 0 ACCEPT udp -- !br-c56432fe07cc br-c56432fe07cc 0.0.0.0/0 172.16.238.2 udp dpt:162 0 0 ACCEPT tcp -- !br-c56432fe07cc br-c56432fe07cc 0.0.0.0/0 172.16.238.3 tcp dpt:10051 0 0 ACCEPT tcp -- !br-c56432fe07cc br-c56432fe07cc 0.0.0.0/0 172.16.238.4 tcp dpt:443 5 248 ACCEPT tcp -- !br-c56432fe07cc br-c56432fe07cc 0.0.0.0/0 172.16.238.4 tcp dpt:80
لا توجد قواعد خاصة في قاعدة DOCKER-USER ؛ فالاتصال بأكمله يمر عبر نفسه.
iptables -L DOCKER-USER -n -v Chain DOCKER-USER (1 references) pkts bytes target prot opt in out source destination 4180 1634K RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
بادئ ذي بدء ، سنتعامل مع شبكة zabbix ، أي أننا سنؤسس اسم شبكة ثابت. لذلك عندما تقوم بإعادة إنشاء عامل الإرساء ، لا يتغير اسم الشبكة. من الحالة الحالية للشبكة ، لدى zabbix شبكة تسمى br-c56432fe07cc ، وهي ليست جيدة جدًا. في ملف * .yaml ، أضف سطرًا واحدًا مسؤولًا عن اسم الشبكة zbx_net_frontend: "com.docker.network.bridge.name:" docker_zabbix ".
جزء من التكوين:
networks: zbx_net_frontend: driver: bridge driver_opts: com.docker.network.enable_ipv6: "false" com.docker.network.bridge.name: "docker_zabbix"
بعد أن أعدنا الشبكة. يجب استبداله بـ * .yaml.
docker-compose -f docker-compose_v3_ubuntu_mysql_latest.yaml down docker-compose -f docker-compose_v3_ubuntu_mysql_latest.yaml up -d
نحن ننظر إلى قاعدة دوكر.
iptables -L DOCKER -n -v Chain DOCKER (4 references) pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp -- !docker_redmine docker_redmine 0.0.0.0/0 172.16.237.2 tcp dpt:3000 0 0 ACCEPT udp -- !docker_zabbix docker_zabbix 0.0.0.0/0 172.16.238.2 udp dpt:162 0 0 ACCEPT tcp -- !docker_zabbix docker_zabbix 0.0.0.0/0 172.16.238.3 tcp dpt:10051 0 0 ACCEPT tcp -- !docker_zabbix docker_zabbix 0.0.0.0/0 172.16.238.4 tcp dpt:443 5 252 ACCEPT tcp -- !docker_zabbix docker_zabbix 0.0.0.0/0 172.16.238.4 tcp dpt:80
يبقى لإضافة القاعدة إلى جدول USER DOCKER. بادئ ذي بدء ، نقدم قاعدة DROP لجميع الاتصالات بشبكة docker_zabbix من الواجهة الخارجية (لدي
eth0 ).
iptables -I DOCKER-USER -i eth0 -o docker_zabbix -j DROP
الآن يتم رفض كافة الاتصالات إلى شبكة docker_zabbix. لنقم بتمكين الاتصال لعنوان IP واحد ، وبصورة أكثر دقة ، يمكن أن تستمر الحزمة على طول FORWARD.
iptables -I DOCKER-USER -i eth0 -s 192.168.43.55 -j RETURN
لم يتم تحديد شبكة docker_zabbix بشكل صريح هنا. نتحقق من توافر zabbix من المضيف 192.168.43.55 باستخدام بوويرشيل.
tnc 192.168.43.136 -port 8081 ComputerName : 192.168.43.136 RemoteAddress : 192.168.43.136 RemotePort : 8081 InterfaceAlias : vEthernet (Swich_in) SourceAddress : 192.168.43.55 TcpTestSucceeded : True
8081 منفذ مفتوح لرسو السفن zabbix. للتأكد من أن zabbix ينتمي إلى المنفذ 8081.
docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c047f18a4445 zabbix/zabbix-web-nginx-mysql:ubuntu-4.2-latest "docker-entrypoint.sh" About an hour ago Up About an hour (healthy) 0.0.0.0:8081->80/tcp, 127.0.0.1:8443->443/tcp zabbix_zabbix-web-nginx-mysql_1
ولكن تذكر أن القواعد يجب أن تحدد المنفذ 80 وليس 8081. إذا حددت المنفذ 8081 ، فلن يتم فتح الوصول إلى zabbix. للمضيف الثاني ، الأمر.
iptables -I DOCKER-USER -i eth0 -p tcp --dport 80 -s 192.168.43.10 -j RETURN
للمضيف الثالث ، افتح المنفذ 10051 فقط ، يتم استخدام عامل نشط على هذا المضيف.
iptables -I DOCKER-USER -i eth0 -p tcp --dport 10051 -s 192.168.43.13 -j RETURN
مشكلة أخرى ، لا يمكننا الخروج من الحاويات إلى العالم الخارجي. البرامج النصية للإشعار لا تعمل ولا يمكن التحقق من توفر المواقع. كان هناك أمر آخر لحل الاتصالات الموجودة بالفعل.
iptables -I DOCKER-USER -i eth0 -o docker_zabbix -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
لا تنس أنه بعد إعادة تشغيل الخادم ، تمحى القواعد التي تم إنشاؤها.