يستخدم المزيد والمزيد من الأشخاص مضيفي VPS لإنشاء مواقع الويب، ولكن بالمقارنة مع المضيفين الظاهريين أو الخوادم المُدارة، فإن مضيفي VPS الشخصيين غير مُدارين بشكل أساسي، أي أن موفر المضيف مسؤول فقط عن الشبكة السلسة لمضيف VPS عليك أن تكتشف ذلك بنفسك. في الماضي، غالبًا ما تعرض مضيفو VPS الذين تستخدمهم Alibaba Cloud للهجوم من قبل CC وDDOS. في الأساس، في كل مرة يتعرضون فيها للهجوم، كانوا يدخلون "الثقب الأسود" لـ Alibaba Cloud.
لا يمكن لمضيفي VPS الخاصين بـ Alibaba Cloud لـ CC وDDOS بشكل عام الدفاع ضد الكثير من حركة المرور بمجرد زيادة حركة الهجوم، سيتم مسح المسارات بشكل أساسي إذا كان هناك عدد كبير جدًا من الهجمات، فسيكون هناك "ثقب أسود" لمدة يوم أو عدة أيام . لقد قمت الآن بنقل موقع الويب الخاص بي إلى بورتر CN2 VPS الكلاسيكي، وقد تلقيت تذكيرات من الأصدقاء المتحمسين من قبل بأن بورتر يتعامل مع CC وDDOS ثلاث مرات فقط، وإذا تجاوز ذلك ثلاث مرات، فسيتم حظر VPS مباشرة.
علمني هذا الهجوم أيضًا أنني مازلت بحاجة إلى توخي الحذر عند وضع موقع الويب الخاص بي على مضيف VPS كلاسيكي. لم أتمكن من فتح الموقع في البداية، ثم تم تذكيري برسائل من العديد من الأصدقاء، وقمت على الفور بتسجيل الدخول إلى الواجهة الخلفية لموفر الاستضافة للتحقق من مخطط المراقبة، يمكنني أن أرى أن استخدام وحدة المعالجة المركزية لـ VPS قد تم تجاوزه 100%، وتجاوزت سرعة النطاق الترددي مئات ميغابايت، ويبدو أن مزود الاستضافة قد قطع اتصال VPS.
ستشارك هذه المقالة مع الأصدقاء الذين يستخدمون مضيفي VPS لإنشاء مواقع الويب، الخطوات الأساسية للتعامل مع هجمات CC وDDOS الصغيرة، والتي تدور أساسًا حول حظر عناوين IP الضارة من خلال جدران الحماية.
لمزيد من أمان موقع الويب والخبرة في إنشاء موقع الويب، هناك:
- خمس نصائح أمنية لاستخدام لوحة تحكم VPS مجانية - لا تدع المتسللين يستغلون ذلك
- تجربة تحسين Linux php-fpm-تستهلك عملية php-fpm ذاكرة كبيرة ولا تسبب مشاكل في الذاكرة
- يمكّن تحليل اسم مجال DNS DNSSEC من منع اختطاف DNS - إعدادات Google Cloud DNS DNSSEC
ملاحظة: تم التحديث في 6 مارس 2018، إذا كنت تريد منع عناوين IP محددة من الوصول إلى موقع الويب، فيمكنك استخدام هذه الطريقة: حظر مواقع الويب وإعدادات الوصول إلى IP لمناطق وبلدان محددة - PHP code/Nginx / إعدادات ووردبريس.
ملاحظة: تم التحديث في 19 مارس 2020 ، إذا تم اختراق موقع الويب الخاص بك، فيمكنك الرجوع إلى الطرق التالية لحل المشكلة: تحليل استكشاف أخطاء اختراق حصان طروادة وخادم موقع الويب وإصلاحها - أساليب الأمان المحسنة لمضيف VPS والخادم.
1. قم بأداء واجباتك مقدمًا عند التعامل مع CC وDDOS
يمكنك الحكم بسرعة على الهجوم الحالي باستخدام الأمرين التاليين: أدخل الأمر التالي لعرض عدد الاتصالات لعنوان IP واحد.
netstat -nat|grep -i '80'|wc -l
قم بفرز عناوين IP المتصلة حسب عدد الاتصالات وعرض حالة اتصال TCP.
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
1.1 الجمع بين النسخ الاحتياطي المتكرر للنسخ الاحتياطي المحلي وخارج الموقع
يعد النسخ الاحتياطي لموقع الويب طريقة مؤكدة للتعامل مع هجمات CC وDDOS، بغض النظر عن الهجوم، طالما لم يتم تدمير البيانات، يمكننا تقليل الخسارة. بالنسبة للبيانات التي يتم تحديثها بشكل متكرر، يوصى بإجراء نسخ احتياطي مرة واحدة يوميًا. سيوفر بعض موفري الاستضافة أيضًا وظائف النسخ الاحتياطي للقطات، مثل Alibaba Cloud وTencent Cloud وLinode snapshot التي تم تقديمها مسبقًا.
بالإضافة إلى النسخ الاحتياطي المحلي، من الطبيعي إجراء نسخ احتياطي خارج الموقع. يمكن دمج النسخ الاحتياطي خارج الموقع مع التخزين السحابي أو القرص السحابي لحفظ البيانات. يمكن لـ Linux VPS الذي تمت مشاركته مسبقًا تحميل البيانات الموجودة على VPS إلى قرص الشبكة تلقائيًا عن طريق تثبيت Google Drive وDropbox، أو استخدام التخزين السحابي DigitalOcean Spaces أو التصوير السحابي. و Qiniu Cloud Storage و Baidu BOS وغيرها من وحدات التخزين السحابية الاحترافية.
1.2 تعرف على كيفية التحقق من تحميل نظام Linux VPS
بمجرد تعرضنا لهجمات CC وDDOS، يمكننا عادةً التحقق من ذلك من خلال لوحة التحكم الخاصة بموفر استضافة VPS، حيث يمكننا رؤية "شذوذات" واضحة في بيانات المراقبة الخاصة بنا. تُظهر الصورة أدناه نسبة 100% من عمليات الإدخال والإخراج ووحدة المعالجة المركزية والذاكرة وما إلى ذلك التي يتم عرضها من خلال مراقبة مضيف VPS عندما تعرضت للهجوم. (اضغط للتكبير)
2.2 استخدم Fail2ban لمنع مهاجمة عناوين IP
Fail2ban هو برنامج مراقبة تم تطويره بلغة Python، وهو يستدعي iptables لحظر عنوان IP الخاص بتسجيل الدخول عن طريق مراقبة معلومات تسجيل الدخول لسجل النظام لمنع الوصول الضار بواسطة عنوان IP معين. يقرأ Fail2ban ملف السجل المقابل، Debian/Ubuntu:/var/log/auth.log، CentOS/Redhat:/var/log/secure. تثبيت Fail2ban:
apt-get install fail2ban
#CentOS内置源并未包含fail2ban,需要先安装epel源
yum -y install epel-release
#安装fial2ban
yum -y install fail2ban
بعد اكتمال التثبيت، توجد ملفات التكوين الرئيسية في الدليل /etc/fail2ban، الذي يحتوي على ملفين ودليلين:
Fail2ban.conf: يحدد ملف التكوين مستوى السجل وموقع ملف السجل والمأخذ المسجل بواسطة Fail2ban.
يحدد jail.conf تلك الخدمات التي يجب مراقبتها واستخدام بعض الاستراتيجيات.
بداية jail.conf هي كتلة التكوين العامة الافتراضية [DEFAULT]. يتم وصف التكوين الافتراضي على النحو التالي:
[DEFAULT]
#忽略哪些IP,可以是具体IP、CIDR类型的地址,多个IP用空格分开
ignoreip = 127.0.0.1
#设置IP被锁住的时间,单位为秒
bantime = 600
#检测时间,在此时间内超过规定的次数会激活fail2ban
findtime = 600
#尝试的次数
maxretry = 3
#日志检测机器,有"gamin", "polling" and "auto"三种模式。
backend = polling
#发送报警邮件的地址
destemail = root@localhost #默认的动作执行行为,在action.d目录下有各种行为策略,默认是iptables-#multiport
banaction = iptables-multiport
#0.8.1版本后fail2ban默认用sendmail MTA
mta = sendmail
#默认使用tcp协议
protocol = tcp
#定义了各种行动的参数
#banaction参数在action.d目录下具体定义,name port protocol 也可以自己定义
#只禁止IP
action_ = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
#即禁止IP又发送email
action_mw = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
%(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s]
#禁止IP、发送email、报告有关日志
action_mwl = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s]
%(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s]
#如果没有定义行为,则默认的行为为action,可选择action_,action_mw, action_mwl 等
action = %(action_)s
默认配置文件含有此模块
#定义子模块名
[ssh]
#是否激活
enabled = true
#定义port,可以是数字端口号表示,也可以是字符串表示
port= ssh
#过滤规则,在filter.d目录下定义
filter = sshd
#检测日志的路径
logpath = /var/log/auth.log
#尝试的次数,覆盖了全局配置的
maxretry = 6
#banaction 在action.d目录下定义,此参数值会替换action中选用的默认行为中定义的banaction参数
banaction = iptables-allports
#注意 port protocol banaction 可以不用分开定义,直接使用action定义也可以,例如:
#action = iptables[name=SSH, port=ssh, protocol=tcp]
#在子模块中定义的port protocol banaction 都会在action_ action_mw, action_mwl中替换成具体的设置值。
يتم وصف وظائف الدليل الأخرى لـ Fail2ban على النحو التالي:
يحدد دليل filter.d قواعد التصفية بناءً على ملفات السجل، وذلك باستخدام التعبيرات العادية بشكل أساسي لمطابقة الكلمات الرئيسية التي تسبب الأخطاء.
يحتوي دليل action.d على نوع الإجراءات التي يجب اتخاذها ضد عنوان IP المقابل وفقًا لقواعد التصفية.
مثال على هجوم Fail2ban المضاد لـ CC:
#需要先新建一个nginx日志匹配规则
vi /etc/fail2ban/filter.d/nginx-cc.conf
#填写如下内容
[Definition]
failregex = <HOST> -.*- .*HTTP/1.* .* .*$
ignoreregex =
تابع تعديل jail.local
وأضف المحتوى التالي:
[nginx-cc]
enabled = true
port = http,https
filter = nginx-cc
action = %(action_mwl)s
maxretry = 60
findtime = 60
bantime = 3600
logpath = /data/wwwlogs/wzfou.com_nginx.log
التكوين أعلاه يعني أنه إذا وصل عنوان IP نفسه إلى 60 طلبًا خلال 60 ثانية، فسيتم حظر عنوان IP الخاص به لمدة ساعة واحدة. تذكر تعديل مسار سجل موقع الويب الخاص بك. استخدم الأمر التالي لعرض حالة Fail2ban وعرض قائمة عناوين IP المحظورة.
/usr/local/python/bin/fail2ban-client status ssh-iptables
بعد حفظ الكود أعلاه، قم بمنح إذن x (التنفيذ). لإدراك أن برنامج Shell النصي يشبه البرنامج الخفي في الخلفية، عليك استخدام nohup:
nohup 该shell script的位置 >/dev/null 2>&1 &
>/dev/null 2>&1
يعني إعادة توجيه مخرجات المعلومات عن طريق تنفيذ البرنامج النصي للصدفة (عدة أصداء في البرنامج النصي للصدفة، المستخدمة لتصحيح الأخطاء) إلى /dev/null. يمثل & في النهاية التنفيذ في الخلفية. في هذه الحالة، حتى إذا قمت بتسجيل الخروج، فسيظل برنامج Shell النصي يتم تنفيذه في الخلفية.
3. ملخص
لقد استخدمت البرنامجين النصيين أعلاه لاكتشاف سجلات مواقع الويب في الوقت الفعلي وإضافة عناوين IP غير طبيعية تلقائيًا إلى iptables للحظر، وكانت النتائج جيدة جدًا وكافية للتعامل مع هجمات CC الصغيرة. حاليًا، يتم استخدام Fail2ban للكشف عن سجلات مواقع الويب وحظر عناوين IP الضارة. يتمتع كل من النصوص الثلاثة بمزاياه الخاصة، ويمكنك الاختيار وفقًا لاحتياجاتك الخاصة.
ومع ذلك، إذا واجهت هجوم DDOS أكبر، فلا يزال يتعين عليك استخدام خدمة متخصصة لمكافحة الهجمات، على سبيل المثال، تعتبر خدمة Cloudflare المضادة للهجوم فعالة للغاية، حيث يستخدمها الجميع في صناعة VPS. إذا تعرض موقع الويب الخاص بك للهجوم وأصبح من غير الممكن الوصول إليه، فيمكنك ترقية Cloudflare إلى الإصدار المدفوع، والذي سيوفر حماية أفضل.