اعداد وتثبيت وضبط أمن خدمة Bind9
From CoCCA Registry Services (NZ) Limited
Contents |
الاعدادات الافتراضيه لمعالجه ملفات المناطق Zones في برمجيات الكوكا
يتم من خلال هذه الاعدادات تحديد الطريقة المناسبة للتعامل مع ملفات المناطق التي يقوم بتوليدها برمجيات السجل بشكل دوري وذلك اعتمادا على قاعده معطيات السجل، فمن خلال هذه الاعدادات يمكن مثلاً تحديد المسار الذي سيتم فيه حفظ ملفات الزون بعد توليدها ومعالجتها، فبشكل افتراضي يتم حفظها ضمن المسار التالي:
var/named/chroot/etc/namedb/TLD/db.TLD/
وهذا يتناسب مع وجود برمجيات Bind معده مسبقاً على مخدم السجل لتعمل كمخدم اسماء نطاقات مخفي يقوم ويسمح بعملية نقل المناطق والتحديثات الخاصة بها إلى مخدمات الاسماء الخاصة باستصافة النطاق العلوي لهذا السجل، ويفضل أن يتم إعداد برمجيات Bind كما هو موصى به بالممارسات العملية الافضل التي تقوم بنشرها الآيكان.
تثبت وإعداد برمجيات Bind ضمن بيئة chroot
تعتمد برمجيات Bind عادة كأي برمجيات أخرى على وجود مستخدم ضمن نظام التشغيل ليتمكن من عمليات النفاذ للموارد، والمستخدم الذي تعتمد عليه برمجيات Bind هو named، وبالتالي تقوم فكرة chroot على سجن المستخدم named ضمن مسار محدد يعتبر هو الجذر بالنسبة له، وبالتالي في حال تم اختراق خدمه bind فلاتستطيع هذه الخدمه بالمستخدم named الوصول إلى المجلدات والمسارات الأخرى، فلذلك سنبدأ بآلية اعداد برمجيات Bind مع chroot ثم نستعرض كيفية أعداد الخدمه بشكل أمن.
للبدء بتثبيت برمجيات Bind الأمنه ضمن بيئة centos 7 ننفذ الأمر التالي على موجه الأوامر shell:
yum -y install bind-chroot
بعدها نقوم بتنفيذ الرماز التالي ليقوم بضبط سماحيات الوصول لمجلد الخاص بخدمه Bind :
/usr/libexec/setup-named-chroot.sh /var/named/chroot on
في حال تم إعداد برمجيات bind سابقاً يجب أن نقوم بإيقاف هذه الخدمه بالأمر التالي:
systemctl stop named/etc/init.d/named stop in Centos 6
نقوم بعد ذلك بتعطيل خدمه Bind في حال كانت موجودة سابقاً وذلك بالشكل التالي:
systemctl disable namedأوchkconfig named off for Centos 6
الخطوة التالية هي تشغيل خدمه Bind الجديدة من خلال الامر التالي:
systemctl start named-chroot ,
<or in Centos 6 /etc/init.d/named-chroot start </code
الخطوة التالية تفعيل خدمه Bind الجديدة، ليتم تشغيلها في حال اعاده تشغيل المخدم وفق الأمر التالي:
<code> systemctl enable named-chroot
<Or in Centos 6 chkconfig named-chroot on </code
الآن تم اعداد Bind ضمن chroot، ويمكن البدء بعملية اعداد الخدمه من خلال البحث عن ملفات الاعدادات ضمن المسار التالي:
<code> ll /var/named/chroot/etc
فيمكن أن نرى الملفات التالية ضمن المسار السابق:
named.conf, namedb, localtime, rndc.key, .... ,
وسنقوم بتعديل الملف named.conf للبدء باعداد Bind للعمل كمخدم مخفي يقوم بنقل المناطق والتحديثات الخاصه بها إلى مخدمات ثانوية مخصصة لاستضافة النطاق العلوي والنطاقات الجزئية.
الخطوة الأخيرة والتي تعتبر هامه وهي إنشاء وصله رمزية لملف الاعداد الخاص ببرمجيات bind ضمن المسار etc/ كالتالي:
ln -s /var/named/chroot/etc/named.conf /etc/named.conf
اعداد برمجيات Bind لتعمل كمخدم اسماء رئيسى مخفي Hidden Master DNS Server
سنقوم في هذه الفقرة باعدادبرمجيات bind التي قمنا بتثبيتها وفق الخطوات التي تم ذكرها في الفقرات السابقة، حيث تم تثبيت هذه البرمجيات بنفس المخدم المثبت عليه برمجيات السجل الكوكا، وكما ذكرنا سابقاً فإن الاعدادات الافتراضية لمعالجه ملفات النطاقات والمناطق zone يتم تخزينها ضمن المسار التالي على المخدم:
/var/named/chroot/etc/namedb/TLD/db.TLD
يعتبر وجود مخدم اسماء رئيسى مخفي من اللمارسات العملية المفضله، ويتم عداد برمجيات Bind الخاصه به من خلال السماح لعدد من مخدمات الاسماء الثانوية بنقل المناطق zone وباستخدام مفاتيح نقل المناطق TSIG، بحيث يسمح فقط لعدد محدود من هذه المخدمات للاستعلام عن سجل SOA الخاص بالمناطق zone والبدء بنقلها في حال كان الرقم التسلسلي لدى المخدم الأساسي أكبر، وبالتالي يجب أن تكون المنافذ (53/tcp/udp)على المخدم الرئيسى مفتوحه فقط للمخدمات الثانوية، وبالتالي فخاصية الاستعلام العودي recursion مثلاً يجب أن تكون غير متاحه.
يقسم كما نعلم ملف الاعدادات الخاص ببرمجيات Bind إلى عده أقسام، يبدأ عادةً بعده اعدادات خاصه ببرمجيات Bind نفسها، مثلاً ماهي عناوين الانترنت التي سيتم استخدامها والرد من خلالها على طلبات DNS :
;{ listen-on port 53 { Your_DNS_IPv4
;{ listen-on-v6 port 53 { You_DNS_IPv6
وكما يمكن إضافه عدد من قوائم ضبط الوصول ACL لتحديد ماهي عناوين الانترنت المسموح لها بنقل المناطق، وماهي عناوين الانترنت التي تعتبر عناوين مزعجه ويمكن أن تسبب هجومات معينه على سبيل المثال:
} acl black-hats
; 10.0.2.0/24
; 192.168.0.0/24
;{
يمكن إضافه قائمه المخدمات الثانوية المسموح لها بنقل المناطق الخاصة بالنطاق العلوي من المخدم رئيسى:
acl TLD_IP_ALLOEWD_TRANSFER {IPv4; IPv6;};
سنحدد بعدها ماهي المناطق المسموح لهذه المخدمات بنقلها من خلال استخدام view ونطلق عليها "view" "production_zones" والتي ستحوي فقط على المناطق وماهي المخدمات الثانوية المسموح لها بنقل الزون وماهو مفتاح نقل الزونات المستخدم TSIG، ومثال على ذلك كما يلي:
}view "production_zones"
;{ match-clients { any
;{match-destinations { Your_DNS_IPv4
;recursion no
; notify yes
<allow-query {TLD_IP_ALLOEWD_TRANSFER ; };</code
- {;"=key TLD_IP_ALLOEWD_TRANSFER_TSIG_KEY_TLD { algorithm hmac-sha256; secret "sldjslkdjsljdlskdaaASdSCaxscsdcmxlcmVydowpUH0wAQ
;{;server Slave_IP { keys { TLD_IP_ALLOEWD_TRANSFER_TSIG_KEY_TLD
بعد ذلك يتم تعريف المنطقة بالشكل: <code>
}zone "TLD" IN
;type master
file "/etc/namedb/TLD/db.TLD"; //based on chroot directory
;{;allow-transfer { TLD_IP_ALLOEWD_TRANSFER
;{also-notify { TLD_IP_ALLOEWD_TRANSFER
كما يمكن أخفاء رقم الاصدار الخاص ببرمجيات bind المستخدمه كخطوة اضافيه يمكن أن تسهم في حماية هذه الخدمه ويتم ذلك من خلال :
version "Not Available";
- customize the log messages and divide it to security log, query log, bind log, example: the security log can be redirected to security.log file, then we can configure the fail2ban to monitor this log file to bolck IP which try to DDoS DNS service over TCP/UDP.
أستخدام برمجيات fail2ban مع برمجيات Bind
يمكننا أيضاً أن نقوم بتوجيه التسجيلات logs الخاصة ببرمجيات Bind إلى ملفات ضمن مسارات محددة وفق تصنيفات معينه، فمثلاً ارسال كل التسجيلات المصنفه كتسجيل خاص بأمن الخدمه DNS إلى ملف معين،وبالتالي استخدام هذا الملف من قبل برمجيات تقوم بتحليل التسجيلات في هذا الملف وحجب عناوين الانترنت التي يمكن ان تقوم بمهاجمه خدمه DNS بهجمات من نوع DDoS مثلاً. لذلك من الأفضل استخدام برمجيات متل fail2ban لمراقبة ملف التسجيل، ويقوم fail2ban بدوره بكشف عناوين الانترنت التي تحاول اختراق الخدمه وبحجبها باستخدام جداول فلترة عناوين الانترنت IPtables. فيمكننا استخدام الاعدادات التالية واضافتها على ملف الاعداد الاساسي في برمجيات Bind ليتم تحويل التسجيل الخاص بأمن هذه الخدمه إلى الملف :
var/log/named/security.log/
كالتالي:
}logging
{ channel security_file
file "/var/log/named/security.log" versions 3 size 30m
; severity dynamic
;print-time yes
; {
} category security
; security_file
; {
} channel default_debug
; "file "data/named.run
;severity dynamic
; {
;{
الخطوة التالية هي البدء بإعداد برمجيات fail2ban وذلك من خلال تفعيل الجزء الخاص بمراقبة الهجومات من نوع DDoS على خدمه bind على كل من بروتوكولي TCP/UDP، حيث تتم العملية من خلال التعديل على الملف etc/fail2ban/jail.conf/ وتغير الجزء الخاص بخدمه DNS كالتالي:
[named-refused-udp]
enabled = false
إلى:
[named-refused-udp]
enabled = true
وكذلك:
[named-refused-tcp]
enabled = false
إلى:
[named-refused-tcp]
enabled = true
بعد ذلك نقوم باعاده تشغيل خدمه fail2ban كالتالي:
centos 6 /etc/init.d/fail2ban restart Or in centos 7 systemctl restart fail2ban
