
التحكم المركزي بجدار الحماية
يوفر التحكم المركزي في جدار الحماية طريقة مركزية لإدارة جدار الحماية على خوادم متعددة أو موازنات الأحمال التي تعمل بـ iptables. بهذه الطريقة يمكنك السماح/الحظر/الحذف/البحث عن نطاقات الإساءة بسرعة باستخدام أمر واحد على عدة خوادم. يصل إلى تلك الخوادم عبر SSH.
يدعم كلاً من IPv4 و IPv6.
تم اختباره على Debian 6.x / 7.x / 8.x / 9.x، لكن يجب أن يعمل على أي توزيعة.
لاستخدام وظائف 'precheck' و 'protected' و 'findip' لـ IPv6، تحتاج إلى تثبيت وحدة Python 'netaddr'. لا يحتاج IPv4 إلى ذلك لأنه يستخدم مطابقة البادئة على الشكل الثنائي لعنوان IP.
Debian: apt-get install python3-netaddr
من الأكثر كفاءة استخدام 'ipset' بالإضافة إلى iptables. يمكن استخدام Ipset لإدارة القوائم التي يمكن لـ iptables الرجوع إليها واستخدامها. هذا يعمل بشكل أسرع ومعالجة القائمة أكثر مرونة وهي الطريقة المفضلة لاستخدام هذا النص.
Debian: apt-get install ipset
نظرًا لأن هذا النص يتصل بالخوادم المعطاة عبر SSH، يجب أن يكون هذا الوصول متاحًا قبل استخدامه.
انسخ ملف الإعدادات النموذجي من cfc.cfg-example إلى cfc.cfg في المرة الأولى.
يمكن ضبط الإعدادات التالية في ملف الإعدادات:
action: يضبط الإجراء عند إضافة قاعدة، القيمة الافتراضية: DROP
checkaggrbin: المسار إلى نص checkaggr.py، القيمة الافتراضية: ./checkaggr.py
cleanupconfirmation: يطلب تأكيدًا قبل تشغيل الأمر clean، قم بتعيينه إلى false للاستخدام مع cron، القيمة الافتراضية: true
date: يضبط تنسيق التاريخ لتعليقات جدار الحماية، القيمة الافتراضية: $(date +%d%m%Y) -> 22062016
dateipset: يضبط تنسيق التاريخ لتعليقات جدار الحماية ipset، اتركه على الوضع الافتراضي لتجنب كسر بعض الوظائف، القيمة الافتراضية: $(date +%Y%m%d) -> 20160622
ipsetname: يضبط اسم قائمة IPSET، القيمة الافتراضية: blockedips
ipsetservers: يضبط الخوادم التي تستخدم IPSET بدلاً من iptables، القيمة الافتراضية: "lvs05.example.com lvs06.example.com"
fwchain: اسم سلسلة جدار الحماية للإضافة/الحذف/البحث، القيمة الافتراضية: INPUT
masklimit: الحد الأقصى لحجم نطاقات IP التي يمكن إضافتها، القيمة الافتراضية: /21
precheck: تحقق مما إذا كان عنوان IP الذي سيتم إضافته موجودًا بالفعل في جدار الحماية أو جزءًا من نطاق أكبر تمت إضافته، قد يكون بطيئًا بعض الشيء على جدران الحماية الكبيرة لـ IPv6 (~25 ثانية للبحث عن 500 نطاق IP لكل خادم)، القيمة الافتراضية: true
protected: تمكين النطاقات المحمية المضافة، القيمة الافتراضية: true
protectedranges: نطاقات IP المستبعدة من وظيفة 'add'، عادةً النطاقات المملوكة للشبكة المحلية، القيمة الافتراضية: "172.16.0.0/12 10.0.0.0/8 192.168.0.0/16"
pythonbin: موقع ثنائي Python المستخدم، القيمة الافتراضية: /usr/bin/python3
servers: يضبط الخوادم التي تستخدم iptables فقط، القيمة الافتراضية: "lvs01.example.com lvs02.example.com lvs03.example.com lvs04.example.com"
يتم تمييز وظائف IPv6 باللاحقة '6'
عند إدخال عناوين IP/النطاقات باستخدام الأوامر التالية، افعل ذلك بصيغة CIDR، حيث يتم التحقق من صحتها ولن يتم قبول أي شيء آخر.
add:
cfc.sh add n.n.n.n/NN '<optional comment>'
cfc6.sh add <IPv6_address_range> '<optional comment>'
يضيف نطاق(عناوين) IP المعطى إلى جدران الحماية مع الإجراء المضبوط لجميع حركة المرور من ذلك المصدر. يقوم بإنشاء تعليق افتراضيًا مع التاريخ الحالي، يمكنك إضافة تعليق اختياري باستخدام علامات الاقتباس المفردة لإضافة سبب أو مالك ذلك النطاق على سبيل المثال. يمكن البحث عن ذلك التعليق لاحقًا.
addstring:
cfc.sh addstring <protocol>:<dport> <string>
cfc6.sh addstring <protocol>:<dport> <string>
يضيف منع سلسلة إلى iptables لبروتوكول معين ومنفذ وجهة معين. مثال عملي سيكون منع User-Agent موجه إلى مجموعة من خوادم الويب، لذا اتصال tcp موجه إلى المنفذ 80 مع السلسلة: Firefox/28.0، سيتم منع جميع حركة المرور الواردة المطابقة لتلك السلسلة نحو منفذ tcp 80:
cfc.sh addstring tcp:80 'Firefox/28.0'
احذر، قد يكون لهذا عواقب كبيرة إذا لم تكن السلسلة محددة بما فيه الكفاية!
clean:
cfc.sh clean <older_than_number_of_days>
ينظف جميع قواعد جدار الحماية CFC الأقدم من n عدد الأيام. ضع في اعتبارك أنها تعتمد على تنسيق التاريخ الافتراضي! لذا إذا قمت بتخصيص تنسيق التاريخ، فستحتاج إلى تعديل النص في قسم 'clean'.
del:
cfc.sh del n.n.n.n/NN
cfc6.sh del <IPv6_address_range>
يحذف نطاق(عناوين) IP/القاعدة المعطاة من جدران الحماية
delstring:
cfc.sh delstring <protocol>:<dport> <string>
cfc6.sh delstring <protocol>:<dport> <string>
يحذف منع سلسلة في iptables لبروتوكول معين ومنفذ وجهة معين.
find:
cfc.sh find <string>
cfc6.sh find <string>
يبحث في جدران الحماية عن السلسلة المعطاة (غير حساس لحالة الأحرف)، يمكن أن تكون هذه (جزءًا من) عنوان IP / نطاق / تعليق
findip:
cfc.sh findip n.n.n.n/NN
cfc6.sh findip <IPv6_address_range>
يبحث في جدران الحماية إذا كان نطاق(عناوين) IP المعطى جزءًا بالفعل من قاعدة مضافة، قد يكون بطيئًا بعض الشيء على جدران الحماية الكبيرة لـ IPV6 (~25 ثانية للبحث عن 500 نطاق IP لكل خادم). يستخدم IPv4 مطابقة البادئة على الشكل الثنائي لعنوان IP بدلاً من ذلك وهو أسرع بحوالي 500%، ويستخدم هذا أيضًا لميزات precheck و protectedranges.
ipsethostinit:
cfc.sh ipsethostinit <server_name>
cfc6.sh ipsethostinit <server_name>
يضيف قائمة IPSET إلى المضيف المحدد وقاعدة iptables تشير إليها باستخدام المعلمات المحددة في cfc.cfg. هذا يحتاج إلى القيام به مرة واحدة فقط قبل إضافة قواعد جدار الحماية.
last:
cfc.sh last <nr_of_most_recent_rules>
cfc6.sh last <nr_of_most_recent_rules>
يعرض آخر إدخالات تمت إضافتها إلى جدران الحماية