هناك الكثير من طرق الحماية من هجمات حجب الخدمة
كاستخدام جدار ناري و غيرها من الطرق المختلفة ولكن اليوم سأتكلم عن تجربتي
للبرنامج الرائع HAProxy الذي استعمله لموازنة الحمل Load balancing و Reverse
proxy.
بالامكان استخدام اداة haproxy للقيام بالكثير من
الامور و لكن اليوم سنشرح كيفية استخدام الاداة للحماية من هجمات حجب الخدمة او
Denial of Service Attacks.
فكرة عمل الاداة هي تحديد عدد الاتصالات الى السيرفر في الثانية و مدة كل اتصال.
فكرة عمل الاداة هي تحديد عدد الاتصالات الى السيرفر في الثانية و مدة كل اتصال.
تنصيب البرنامج:
في البداية قم بتحميل اخر نسخة من الأداة من الموقع
الرسمي للأداة.
بعد التحميل نقوم بعمل ملف خاص بالبرنامج ثم فك ضغط الأداة فيه و تنصيبها.
mkdir /usr/local/haproxy cd /usr/local/haproxy tar -xzvf
haproxy-*.tar.gz make TARGET=OS
بعد التحميل نقوم بعمل ملف خاص بالبرنامج ثم فك ضغط الأداة فيه و تنصيبها.
مع تغيير OS الى نظام التشغيل الذي نستخدمه, مثلا
للتريكب على نظام لينكس 32bit ننفذ:
make TARGET=linux26 ARCH=i386 make install mv haproxy-*.tar.gz
haproxy
اعدادات البرنامج:
اعدادات البرنامج بسيطة فبامكاننا تعديل اي خيار في
ملف haproxy.cfg حسب حاجتنا ولكن هذه الاعدادات هي الأنسب لمحاربة برامج حجب الخدمة
و ستوفر لنا الحماية من أشهر البرامج مثل SlowLoris و nkiller2.
في البداية نقوم بادخول الى مجلد البرنامج و فتح ملف الاعدادات.
cd haproxyفي البداية نقوم بادخول الى مجلد البرنامج و فتح ملف الاعدادات.
vi haproxy.cfg
الان نضع فيه الاعدادات التالية.
globaldaemon
maxconn 20000 # count about 1 GB per 20000 connections
pidfile /var/run/haproxy.pid
stats socket /var/run/haproxy.stat mode 600
defaults
mode http
maxconn 19500 # Should be slightly smaller than global.maxconn.
timeout client 60s # Client and server timeout must match the longest
timeout server 60s # time we may wait for a response from the server.
timeout queue 60s # Don't queue requests too long if saturated.
timeout connect 4s # There's no reason to change this one.
timeout http-request 5s # A complete request may never take that long.
# Uncomment the following one to protect against nkiller2. But warning!
# some slow clients might sometimes receive truncated data if last
# segment is lost and never retransmitted :
# option nolinger
option httpclose
option abortonclose
balance roundrobin
option forwardfor # set the client's IP in X-Forwarded-For.
retries 2
frontend public
bind :80 # or any other IP:port combination we listen to.
default_backend apache
backend apache
# set the maxconn parameter below to match Apache's MaxClients minus
# one or two connections so that you can still directly connect to it.
server srv 127.0.0.1:8080 maxconn 254
# Enable the stats page on a dedicated port (8888). Monitoring request errors
# on the frontend will tell us how many potential attacks were blocked.
listen stats
# Uncomment "disabeled" below to disable the stats page :
# disabled
bind :8888
stats uri /
تأكد من تغيير 127.0.0.1 الى IP الخاص بك و 8080
الى المنفذ الخاص بخادم الويب الخاص بك.
للتأكد من صحة الاعدادات ننفذ الامر:
./haproxy -f haproxy.cfg -c
للتأكد من صحة الاعدادات ننفذ الامر:
الناتج يجب ان يكون كالتالي:
Configuration file is valid
تشغيل haproxy:
./haproxy -f haproxy.cfg
الخيار f- لاختيار ملف الاعدادات الذي قمنا باعداده
في الخطوة السابقة.
للدخول على الواجهة الرسومية للاداة نذهب الى:
http://haprxyip:8888
للدخول على الواجهة الرسومية للاداة نذهب الى:
قم بتغيير haproxyip الى عنوان السيرفر المنصبة
عليه الاداة.
http://www.isecur1ty.org/articles/programs-tools/645-haproxy-ddos-denial-of-service-attacks.html
Comments
Post a Comment