[{"data":1,"prerenderedAt":214},["ShallowReactive",2],{"seo-verification":3,"blog-عزل-وكلاء-البرمجة-بالذكاء-الاصطناعي-على-vps-agents-md-ar":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-عزل-وكلاء-البرمجة-بالذكاء-الاصطناعي-على-vps-agents-md-ar",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":30,"intro":33,"sections":34,"ctaTitle":151,"ctaBody":152,"ctaButton":153,"ctaUrl":154,"relatedPosts":155},522,"عزل-وكلاء-البرمجة-بالذكاء-الاصطناعي-على-vps-agents-md",{"fr":12,"en":13,"ar":10,"es":14},"agents-de-code-ia-vps-agents-md-injection-isoler","isolate-ai-coding-agents-on-a-vps-agents-md-injection","aislar-agentes-de-codigo-ia-en-un-vps-agents-md-inyeccion","عزل وكلاء البرمجة بالذكاء الاصطناعي على VPS: AGENTS.md ملغّم","قد يوجّه ملف AGENTS.md أو CLAUDE.md ملغّم وكيل البرمجة لديك. مستخدم بلا صلاحيات، وخروج شبكي مقيّد، ولا أسرار إنتاج: الأوامر.",12,0,false,"2026-10-28T00:00:00+00:00","2026-10-29T03:10:22+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},1,"الذكاء الاصطناعي","intelligence-artificielle","bg-purple-500\u002F10 text-purple-400","ia",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fagents-de-code-ia-vps-agents-md-injection-isoler-poster.svg","في 25 أكتوبر 2026 نقل موقع BleepingComputer أن ملف AGENTS.md ملغّمًا، يُحمَّل تلقائيًا عند تشغيل الوكيل في المجلد الخطأ، كان كافيًا لجعل Codex ينفّذ أوامر. وبالنسبة إلى الوكالة، يُقاس الخطر بما يستطيع الوكيل الوصول إليه: مفاتيح النشر والرموز ومستودعات عملاء آخرين. يبني هذا الدليل خادم VPS مخصصًا للتطوير بمستخدم بلا صلاحيات، ودليل مشروع ضيق، ولا أسرار إنتاج، وخروج شبكي مقيّد، ثم مراجعة لملفات التعليمات قبل كل جلسة.",[35,39,49,52,55,86,122,125,128,132,135,142,145,148],{"type":36,"title":37,"body":38},"h2","ما يكشفه بحث Forever Security","في 25 أكتوبر 2026 نقل موقع BleepingComputer أعمال Forever Security. وجد الباحثون في مجلد `~\u002FDownloads` لدى أحد العملاء ملف AGENTS.md ملغّمًا يطلب من وكيل برمجة تثبيت حزمة npm اسمها «function-color». وكان ذلك المجلد هو نفسه دليل عمل الوكيل، والوكلاء يحمّلون تلقائيًا ملفات التعليمات الموجودة في دليل عملهم. والسيناريو المعاد بناؤه كالتالي: صفحة ويب تضع الملف بصمت في مجلد التنزيلات، ثم يشغّل المستخدم وكيله في ذلك المجلد، فيتبع الوكيل التعليمات بالأدوات والصلاحيات التي يملكها أصلًا.\n\nمع Codex من OpenAI نجحت السلسلة الكاملة، بحمولة غير ضارة (فتح الحاسبة)، في 90 % من الاختبارات. ومع Claude Code كان ملف CLAUDE.md ملغّم يعيد توجيه حركة واجهة البرمجة إلى خادم يملكه الباحثون، فينكشف رمز OAuth ويمكن تنفيذ شيفرة في نحو 50 % من الاختبارات. ويرى الباحثون أنه لا شيء يستدعي الإصلاح لدى OpenAI أو Anthropic: فالوكيل يعمل كما صُمّم.",{"type":40,"title":41,"items":42},"ul","ما تثبته الدراسة وما لا تقوله",[43,44,45,46,47,48],"**المثبت** — يكفي ملف تعليمات في دليل العمل لتوجيه الوكيل، دون استغلال أي ثغرة برمجية.","**الشرط** — يتطلب الهجوم أن يشغّل المستخدم الوكيل في المجلد المعني. ووفق BleepingComputer توصي OpenAI وAnthropic أصلًا بتشغيل الوكيل في دليل المشروع.","**حمولات غير ضارة** — نسبتا 90 % ونحو 50 % مصدرهما اختبارات بحمولة غير خطرة؛ فهما لا تقيسان هجمات حقيقية ولا تنطبقان على كل الأدوات.","**طريقة التسليم مجهولة** — لم يتمكن الباحثون من تحديد كيف وصل ملف العميل إلى تنزيلاته: وتبقى صفحة الويب مجرد فرضية.","**Cursor CLI** — ذُكرت أداة شُغّلت من ذلك المجلد، لكنها لم تُوصف بأنها اختُبرت.","**قراءتنا** — قد يحتوي مستودع مستنسخ على ملف تعليماته الخاص. هذا استنتاج منا وليس نتيجة من الدراسة.",{"type":36,"title":50,"body":51},"تشغيل الوكيل في المجلد الصحيح والموافقة على الأوامر: فلماذا خادم منفصل؟","الموافقة البشرية وصندوق الحماية في الأداة ضمانتان حقيقيتان ويجب إبقاؤهما مفعّلتين، وهذا ما يوصي به المقال المصدر أيضًا. لكنهما تقومان على انتباه دائم وأداة مضبوطة جيدًا وتشغيل في المجلد الصحيح. وحين يختل أحد الثلاثة يصبح السؤال: ما الذي يستطيع الوكيل المخترَق الوصول إليه؟\n\nعلى جهاز العمل الجواب طويل: مفاتيح SSH ورموز السحابة ومستودعات عملاء آخرين ومتصفح مسجَّل الدخول. وعلى VPS مخصص الجواب قصير وأنت من يحدده. لا يحوي الخادم إلا المشروع ورمزًا بأقل نطاق ممكن ومستخدمًا بلا صلاحيات. ويمكن حذفه وإعادة إنشائه دون المساس بجهازك. لا يجعل VPS الوكيل آمنًا: إنه يحدّ من نطاق ضرره، وهذا هو الوعد الوحيد لهذا الدليل.",{"type":36,"title":53,"body":54},"المتطلبات: ما تحتاجه لبناء الـ VPS","تستدعي وكلاء البرمجة واجهة برمجة لدى مزوّد: لا يجري حساب النموذج على خادمك، ولذلك يبقى الـ VPS متواضعًا. خصّص نواتين افتراضيتين و4 غيغابايت من الذاكرة و40 غيغابايت من القرص لمشروع Node أو PHP عادي، وأكثر إن كنت تبني أو تشغّل حاويات. تحتاج إلى وصول root وإلى Debian أو Ubuntu LTS وعنوان IPv4 مخصص ومفتاح SSH للاتصال.\n\nمن جهة الشبكة يُفتح منفذ واحد للدخول: المنفذ 22 لـ SSH. وفي الخروج لا يصل مستخدم الوكيل إلا إلى المنفذ 8888 على الواجهة المحلية، حيث يستمع وكيل وسيط يمرّر الطلبات إلى قائمة قصيرة من المضيفين. دوّن إذن قبل البدء المضيفين الذين تحتاجهم أداتك: سجل npm وواجهة المزوّد ومستودع Git للمشروع. الأوامر أدناه مكتوبة لـ Debian وUbuntu باستخدام `apt` و`ufw` و`nftables`، وتفترض حساب إدارة يملك `sudo`، منفصلًا عن مستخدم الوكيل.",{"type":56,"title":57,"steps":58},"steps","بناء الـ VPS في تسع خطوات",[59,62,65,68,71,74,77,80,83],{"title":60,"body":61},"إنشاء مستخدم بلا صلاحيات","`sudo adduser --disabled-password --gecos \"\" agent`\n`id agent`\n`sudo -l -U agent`\nيجب ألا يعرض الأمر الثاني المجموعة `sudo`، ويجب أن يجيب الثالث بأن المستخدم غير مخوَّل بتنفيذ sudo. الحساب بلا كلمة مرور: تدخل إليه بالأمر `sudo -iu agent` من حساب الإدارة. خصّص VPS لكل عميل حتى لا يرى المستخدم `agent` في خادم إلا مشاريع ذلك العميل.",{"title":63,"body":64},"تخصيص دليل لكل مشروع","`sudo install -d -o agent -g agent -m 700 \u002Fsrv\u002Fagents\u002Fprojet-a`\nشغّل الوكيل دائمًا من هذا الجذر، وليس من `\u002F` أو `~` أو مجلد تنزيلات: فالدليل الأب الواسع يحمّل ملفات تعليمات لم تراجعها. ولجلب الشيفرة ادخل جلسة الوكيل ثم استنسخ:\n`sudo -iu agent`\n`git clone \u003Curl-du-dépôt> \u002Fsrv\u002Fagents\u002Fprojet-a`\nاستخدم مفتاح نشر للقراءة فقط، يُولَّد على هذه الآلة ويخص مستودع المشروع.",{"title":66,"body":67},"قطع الوصول إلى مفاتيحك","`sudo -iu agent printenv SSH_AUTH_SOCK`\n`echo 'AllowAgentForwarding no' | sudo tee \u002Fetc\u002Fssh\u002Fsshd_config.d\u002F10-agents.conf`\n`sudo sshd -t && sudo systemctl reload ssh`\nيجب ألا يعرض الأمر الأول شيئًا: لا يُمرَّر أي وكيل SSH إلى جلسة وكيل البرمجة. اتصل بالآلة عبر `ssh -o ForwardAgent=no`. لا تضع أي مفتاح نشر للإنتاج على هذا الخادم، ولا أي ملف إعدادات يخص عميلًا آخر.",{"title":69,"body":70},"حصر متغيرات البيئة في المشروع","`sudo -iu agent`\n`install -m 600 \u002Fdev\u002Fnull ~\u002F.agent-env`\nثم حرّر `~\u002F.agent-env` ليحوي رمز المزوّد فقط، بأقل نطاق ممكن، مخصصًا لهذه الآلة وقابلًا للإلغاء. شغّل الوكيل ببيئة مفرَّغة حتى لا يرث أي متغير من جلستك:\n`env -i HOME=\"$HOME\" PATH=\"$PATH\" TERM=\"$TERM\" HTTPS_PROXY=http:\u002F\u002F127.0.0.1:8888 bash -c 'set -a; . ~\u002F.agent-env; cd \u002Fsrv\u002Fagents\u002Fprojet-a && exec claude'`\nاستبدل `claude` بأمر أداتك. وإن كانت الأداة تتصل بحساب (OAuth) بدل مفتاح واجهة برمجة، فإن الرمز يوجد في الدليل الشخصي للمستخدم: وهو الرمز الذي رأت الدراسة أنه انكشف مع Claude Code. فضّل مفتاح واجهة برمجة مخصصًا تلغيه عند حذف الخادم.",{"title":72,"body":73},"إغلاق الدخول بـ ufw","`sudo ufw default deny incoming`\n`sudo ufw limit 22\u002Ftcp`\n`sudo ufw enable`\nأبقِ جلسة SSH ثانية مفتوحة أثناء التفعيل. يرشّح `ufw` بالعنوان والمنفذ، لا باسم المضيف ولا بالمستخدم: ولهذا يُضبط الخروج في الخطوتين التاليتين بوكيل وسيط و`nftables`.",{"title":75,"body":76},"تثبيت وكيل خروج بقائمة سماح","`sudo apt install tinyproxy`\nفي `\u002Fetc\u002Ftinyproxy\u002Ftinyproxy.conf` اضبط `Listen 127.0.0.1`, `Port 8888`, `FilterDefaultDeny Yes`, `Filter \"\u002Fetc\u002Ftinyproxy\u002Fallowlist\"` ثم اكتب القائمة:\n`printf '%s\\n' '^registry\\.npmjs\\.org$' '^api\\.anthropic\\.com$' | sudo tee \u002Fetc\u002Ftinyproxy\u002Fallowlist`\n`sudo systemctl restart tinyproxy`\nكل سطر تعبير نمطي على اسم المضيف. استبدل واجهة المثال بواجهة مزوّدك المأخوذة من وثائقه، ولا تضف `^github\\.com$` إلا إذا طلبها المشروع. تصف وثائق tinyproxy ترشيحًا بحسب النطاق، لكنها لا تذكر أنه يُطبَّق على مضيف أنفاق HTTPS (CONNECT): فهذا غير موثَّق ويجب اختباره. لا تعتبر هذا الترشيح مسلَّمًا به قبل اختبار الخطوة 8.",{"title":78,"body":79},"منع الوكيل من أي خروج آخر بـ nftables","أضف في نهاية `\u002Fetc\u002Fnftables.conf`، بعد السطر `flush ruleset`:\n`table inet agent_egress {`\n`chain output {`\n`type filter hook output priority 0; policy accept;`\n`meta skuid \"agent\" oifname \"lo\" tcp dport 8888 accept`\n`meta skuid \"agent\" limit rate 5\u002Fminute log prefix \"agent-egress-drop: \"`\n`meta skuid \"agent\" counter drop`\n`}`\n`}`\nلم يعد المستخدم `agent` يصل إلا إلى الوكيل المحلي؛ وما عداه يُسجَّل ثم يُسقَط. افحص الصياغة قبل التفعيل:\n`sudo nft -c -f \u002Fetc\u002Fnftables.conf`\n`sudo systemctl enable --now nftables`",{"title":81,"body":82},"اختبار صمود الترشيح","`sudo -u agent curl -sS --max-time 5 https:\u002F\u002Fexample.com`\n`sudo -u agent curl -sS -x http:\u002F\u002F127.0.0.1:8888 https:\u002F\u002Fexample.com`\n`sudo -u agent curl -sS -x http:\u002F\u002F127.0.0.1:8888 -o \u002Fdev\u002Fnull -w '%{http_code}\\n' https:\u002F\u002Fregistry.npmjs.org\u002F-\u002Fping`\nيجب أن ينتهي الأمر الأول بانتهاء المهلة لأن جدار الحماية يُسقط الاتصال المباشر. ويجب أن يفشل الثاني برفض من الوكيل الوسيط (مع curl، رسالة من نوع `CONNECT tunnel failed`؛ والرمز الدقيق في سجل tinyproxy). ويجب أن يجيب الثالث بالرمز 200. هذه النتائج هي المتوقعة: عاينها بنفسك على آلتك. وإن نجح الأمر الثاني فالترشيح لا يغطي أنفاق HTTPS: فانتقل إلى وكيل وسيط تغطي وثائقه CONNECT، وصحّح ذلك قبل تشغيل الوكيل.",{"title":84,"body":85},"التخطيط لحذف الخادم","احفظ هذه الأوامر في سكربت خاضع للإصدارات. يُحذف الـ VPS المشبوه ويُعاد إنشاؤه من الصورة الأصلية، وتلغي رمز المزوّد. أما وصولك أنت إلى الخادم فمرّره عبر مضيف بوابة (bastion) بدل التعريض المباشر: ويغطي دليل bastion host المرتبط أسفل الصفحة هذه النقطة.",{"type":87,"title":88,"headers":89,"rows":93},"comparison","كل ضمانة تحدّ من شيء محدد",[90,91,92],"الضمانة","ما تحدّ منه","ما تتركه يمر",[94,98,102,106,110,114,118],[95,96,97],"الموافقة البشرية على الأوامر","كل أمر يُنفَّذ","أمر يبدو عاديًا تُوافَق عليه بحكم العادة",[99,100,101],"صندوق حماية الأداة","إجراءات الوكيل بحسب إعداده","ما يتوقف على إعداد منسيّ أو يخص الأداة",[103,104,105],"مستخدم بلا صلاحيات","صلاحيات root وملفات النظام والحسابات الأخرى","ملفات المستخدم نفسه، ومنها رمزه",[107,108,109],"دليل مشروع ضيق","ملفات التعليمات المحمّلة بالخطأ","محتوى المشروع نفسه",[111,112,113],"خروج شبكي مرشَّح","تثبيت من مضيف غير متوقَّع، أو إرسال إلى مضيف مجهول (بعد التحقق من الترشيح)","كل ما يمر عبر مضيف مسموح، سجلًا كان أو واجهة برمجة",[115,116,117],"لا مفتاح إنتاج على الآلة","الوصول إلى خوادم الإنتاج وإلى عملاء آخرين","ما يكشفه رمز المزوّد ومستودع المشروع",[119,120,121],"VPS مخصص وقابل لإعادة الإنشاء","بقاء الاختراق واستمراره، وجهاز العمل","بيانات العميل الموجودة على الآلة",{"type":36,"title":123,"body":124},"مراجعة ملفات التعليمات قبل أن يتبعها الوكيل","يعمل ملف التعليمات مثل الشيفرة، عبر الوكيل: فراجعه على هذا الأساس. لإعداد الجرد نفّذ `find \u002Fsrv\u002Fagents -type f \\( -name AGENTS.md -o -name CLAUDE.md \\) -not -path '*\u002Fnode_modules\u002F*'` . وللكشف عن أي تغيير احتفظ ببصمة:\n`find \u002Fsrv\u002Fagents -type f \\( -name AGENTS.md -o -name CLAUDE.md \\) -not -path '*\u002Fnode_modules\u002F*' -exec sha256sum {} + | sort -k2 > ~\u002Finstructions.sha256`\nثم قارن قبل كل جلسة بالأمر `find \u002Fsrv\u002Fagents -type f \\( -name AGENTS.md -o -name CLAUDE.md \\) -not -path '*\u002Fnode_modules\u002F*' -exec sha256sum {} + | sort -k2 | diff ~\u002Finstructions.sha256 -` . وفي مستودع Git يعرض `git log -p -- AGENTS.md CLAUDE.md` ما تغيّر منذ مراجعتك الأخيرة.\n\nلا تبحث الأدوات كلها عن ملفاتها في المكان نفسه (الدليل الحالي، المجلدات الأم، المجلد الشخصي): اقرأ وثائق أداتك وأبقِ هذه المواضع فارغة أو معروفة. لا تشغّل وكيلًا أبدًا في `~\u002FDownloads` ولا في مجلد أب واسع: فهذا أول تخفيف توصي به الدراسة.",{"type":36,"title":126,"body":127},"حالة الحزمة function-color: ما يغيّره الترشيح وما لا يغيّره","في الحالة الموثقة كان الملف الملغّم يطلب تثبيت حزمة npm باسم «function-color». ولا يذكر التقرير من أي سجل. قراءتنا، وهي تخفيف وليست نتيجة من البحث: خروج مقيّد بقائمة مضيفين ينبغي أن يمنع أو ينبّه (متى تحقّقتَ من الترشيح في الخطوة 8) إلى تثبيت من سجل أو خادم غير متوقَّع، ويُظهر ذلك سجلّ الوكيل الوسيط.\n\nلكنه لا يمنع حزمة منشورة على السجل المسموح به، لأن `registry.npmjs.org` ضمن القائمة. وفي هذه الحالة اعتمد على مراجعة ملف التعليمات وعلى قائمة حزم معتمدة، وقبل ذلك كله على ألا يوجد ما يُسرَق من أسرار. ويفصّل دليل سلسلة التوريد في npm، المرتبط أدناه، هذا الجزء.",{"type":129,"title":130,"body":131},"tip","عدّ الرفض وقطع سكربتات التثبيت","اقرأ حالات الرفض كل يوم: `sudo journalctl -k --since today | grep agent-egress-drop`\n`sudo grep -i filtered \u002Fvar\u002Flog\u002Ftinyproxy\u002Ftinyproxy.log`\nالرفض المتكرر تجاه مضيف مجهول إشارة يجب فهمها قبل إضافة المضيف إلى القائمة: دوّن الاسم، وابحث عن سبب استدعاء الأداة له، ثم قرّر. وفي npm يمنع الأمر `npm config set ignore-scripts true` (يُنفَّذ بصفة `agent`) التشغيل التلقائي لسكربتات تثبيت الاعتماديات.",{"type":36,"title":133,"body":134},"استكشاف الأخطاء: ما ستصادفه من أخطاء","الرسائل أدناه هي التي تنتجها مكونات هذا التركيب. ولكل منها علاج لا يمر أبدًا بإضعاف الترشيح.",{"type":40,"items":136},[137,138,139,140,141],"**رفض sudo للمستخدم `agent`** — سلوك متوقَّع: المستخدم بلا أي صلاحية، ويتوقف نص الرفض الدقيق على إصدار sudo. نفّذ العملية بحساب الإدارة، ولا تضف `agent` إلى المجموعة `sudo` أبدًا.","**فشل نفق `CONNECT` (مع curl، رسالة من نوع `CONNECT tunnel failed`)** — الأرجح أن الوكيل الوسيط رفض المضيف؛ والرمز الدقيق يتوقف على tinyproxy ويظهر في سجله. اقرأ اسمه في `\u002Fvar\u002Flog\u002Ftinyproxy\u002Ftinyproxy.log` ثم أضفه إلى القائمة فقط إذا احتاجته الأداة.","**بحسب الأداة، انتهاء مهلة أو فشل في الشبكة (مثل `ETIMEDOUT` أو `fetch failed`)** — تحاول الأداة اتصالًا مباشرًا يُسقطه `nftables`. تحقق من أن `HTTPS_PROXY` مُصدَّر في جلسة الوكيل. بعض العملاء يتجاهلون هذا المتغير: فيفشلون فشلًا مغلقًا، وتبيّن وثائقهم إن كانوا يقبلون وكيلًا وسيطًا.","**`Permission denied` عند قراءة مجلد مستخدم آخر** — هذا هو العزل يؤدي عمله. وإن احتاج الوكيل إلى ملف فانسخه إلى دليل المشروع.","**انقطاع اتصال SSH بعد `ufw enable`** — كانت قاعدة المنفذ 22 ناقصة، أو يستمع SSH على منفذ آخر. من وحدة تحكم الـ VPS نفّذ `sudo ufw status` ثم `sudo ufw allow \u003Cالمنفذ>\u002Ftcp`.",{"type":36,"title":143,"body":144},"ما لا يحلّه هذا الخادم","يحدّ الـ VPS من نطاق الضرر ولا يزيل الخطر. رمز المزوّد موجود على الآلة: ويستطيع الوكيل المخترَق استخدامه ما لم تلغه. وشيفرة العميل موجودة أيضًا، وتبقى التسريبات ممكنة عبر مضيف مسموح، لأن السجل أو مستودع Git يقبل بيانات واردة كذلك. ويوصي الباحثون بإبقاء طلبات الموافقة وصندوق حماية الأداة: وهذا التركيب يضاف إليهما ولا يحل محلهما. وأخيرًا، يحتاج خادم التطوير الذي يقدّم حركة عامة إلى تقسية خاصة به، تعالجها قائمة التحقق المرتبطة أدناه.",{"type":36,"title":146,"body":147},"للوكالة: خادم VPS لكل عميل","أسهل عزل يمكن شرحه لعميل هو العزل المادي: خادم VPS لكل عميل، بمستخدمه ورمزه وجدار حمايته. لا يوجد فيه مفتاح إنتاج ولا عميل آخر، فلا يتجاوز الوكيل المخترَق ذلك النطاق. احتفظ بسكربت إعداد واحد لكل الخوادم: فأي قاعدة خروج تتغير تُعاد في كل مكان. وفي نهاية المهمة تحذف الـ VPS وتلغي الرمز وتنتقل إلى ما بعده دون أي أثر على جهازك. يوفر VPS من ServOrbit.com وصول root وعنوان IPv4 مخصصًا واختيار نظام التشغيل: وهذا أساس هذا التصميم.",{"type":36,"title":149,"body":150},"الوثائق الرسمية","تقرير BleepingComputer عن بحث Forever Security: https:\u002F\u002Fwww.bleepingcomputer.com\u002Fnews\u002Fsecurity\u002Fai-coding-agents-hijacked-using-agentsmd-file-in-downloads-folder\u002F\n\nوثائق nftables: https:\u002F\u002Fwiki.nftables.org\u002Fwiki-nftables\u002Findex.php\u002FQuick_reference-nftables_in_10_minutes\n\nوثائق tinyproxy: https:\u002F\u002Ftinyproxy.github.io\u002F\n\nصفحة دليل adduser (Debian): https:\u002F\u002Fmanpages.debian.org\u002Fstable\u002Fadduser\u002Fadduser.8.en.html\n\nإعدادات npm: https:\u002F\u002Fdocs.npmjs.com\u002Fcli\u002Fusing-npm\u002Fconfig","خادم VPS لكل عميل، معزول وقابل لإعادة الإنشاء","الوكالة التي تعزل وكلاء البرمجة تمنح كل عميل خادم VPS خاصًا به: وصول root وعنوان IPv4 مخصص واختيار نظام التشغيل. وهكذا يبقى الوكيل المخترَق داخل نطاق عميل واحد. يتوفر خيار إدارة VPS لمن لا يريد تشغيل الخادم بنفسه، أما هذا الدليل فيُقدَّم دون دعم من ServOrbit.com لعملية الإعداد.","اكتشف عرض الوكالات","\u002Fsolutions\u002Fagences",[156,177,196],{"id":157,"slug":158,"slugs":159,"title":163,"excerpt":164,"readTime":165,"views":23,"isPinned":19,"publishedAt":166,"updatedAt":167,"category":168,"categories":174,"featuredImage":30,"bgImage":31,"posterImage":176,"relatedSolution":30},317,"قائمة-تصليب-خادم-لينكس-للوكالات-بعد-التسليم",{"fr":160,"en":161,"ar":158,"es":162},"linux-hardening-vps-checklist","linux-vps-hardening-checklist-for-agencies","hardening-linux-vps-checklist-para-agencias-tras-la-entrega","قائمة تصليب خادم لينكس للوكالات بعد التسليم","قائمة تدقيق لتصليب لينكس قابلة للتكرار للوكالات: auditd وsudo ومفتاح SSH وUFW وfail2ban وإلغاء تفعيل root — مع إمكانية التتبع لكل عميل.",11,"2026-08-30T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":169,"name":170,"slug":171,"color":172,"icon":173},8,"الأمان والمراقبة","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[175],{"id":169,"name":170,"slug":171,"color":172,"icon":173},"\u002Fblog\u002Fcovers\u002Flinux-hardening-vps-checklist-poster.svg",{"id":178,"slug":179,"slugs":180,"title":184,"excerpt":185,"readTime":186,"views":18,"isPinned":19,"publishedAt":187,"updatedAt":167,"category":188,"categories":193,"featuredImage":30,"bgImage":31,"posterImage":195,"relatedSolution":30},202,"تأمين-سلسلة-توريد-npm-في-ci-بعد-حادثة-asyncapi",{"fr":181,"en":182,"ar":179,"es":183},"securiser-chaine-approvisionnement-npm-ci","securing-your-npm-ci-supply-chain-after-asyncapi","proteger-la-cadena-de-suministro-npm-tras-asyncapi","تأمين سلسلة توريد npm في CI بعد حادثة AsyncAPI","سياسة lockfile والتحقق من الهاشات وإثبات SLSA وفحص SCA التلقائي: كيف تقوّي خط CI بعد حادثة AsyncAPI في يوليو 2026.",4,"2026-08-01T00:00:00+00:00",{"id":186,"name":189,"slug":190,"color":191,"icon":192},"التطوير","developpement","bg-warning\u002F10 text-warning","dev",[194],{"id":186,"name":189,"slug":190,"color":191,"icon":192},"\u002Fblog\u002Fcovers\u002Fsecuriser-chaine-approvisionnement-npm-ci-poster.svg",{"id":197,"slug":198,"slugs":199,"title":203,"excerpt":204,"readTime":205,"views":206,"isPinned":19,"publishedAt":207,"updatedAt":167,"category":208,"categories":209,"featuredImage":30,"bgImage":31,"posterImage":211,"relatedSolution":212},158,"مضيف-bastion-على-خادم-vps-تأمين-وصولك-عبر-ssh",{"fr":200,"en":201,"ar":198,"es":202},"heberger-bastion-host-vps","bastion-host-on-vps-securing-your-ssh-access","bastion-host-en-vps-accesos-ssh","مضيف Bastion على خادم VPS: تأمين وصولك عبر SSH","انشر مضيف Bastion على خادم ServOrbit VPS: نقطة دخول SSH مُحصَّنة، ووصول مركزي، وسجلات وقواعد أمان.",3,2,"2026-07-05T00:00:00+00:00",{"id":169,"name":170,"slug":171,"color":172,"icon":173},[210],{"id":169,"name":170,"slug":171,"color":172,"icon":173},"\u002Fblog\u002Fcovers\u002Fheberger-bastion-host-vps-poster.svg",{"categorySlug":173,"appSlug":213},"bastion-host",1793251160545]