معهد ماساتشوستس للتكنولوجيا. دورة محاضرة # 6.858. "أمن أنظمة الكمبيوتر." نيكولاي زيلدوفيتش ، جيمس ميكينز. 2014 سنة
أمان أنظمة الكمبيوتر هو دورة حول تطوير وتنفيذ أنظمة الكمبيوتر الآمنة. تغطي المحاضرات نماذج التهديد والهجمات التي تهدد الأمن وتقنيات الأمان القائمة على العمل العلمي الحديث. تشمل الموضوعات أمان نظام التشغيل (OS) ، والميزات ، وإدارة تدفق المعلومات ، وأمن اللغات ، وبروتوكولات الشبكة ، وأمن الأجهزة ، وأمن تطبيق الويب.
المحاضرة 1: "مقدمة: نماذج التهديد"
الجزء 1 /
الجزء 2 /
الجزء 3محاضرة 2: "السيطرة على هجمات القراصنة"
الجزء 1 /
الجزء 2 /
الجزء 3المحاضرة 3: "تجاوزات المخزن المؤقت: المآثر والحماية"
الجزء 1 /
الجزء 2 /
الجزء 3المحاضرة 4: "الفصل بين الامتيازات"
الجزء 1 /
الجزء 2 /
الجزء 3المحاضرة 5: "من أين تأتي أنظمة الأمن؟"
الجزء 1 /
الجزء 2المحاضرة 6: "الفرص"
الجزء 1 /
الجزء 2 /
الجزء 3المحاضرة 7: "صندوق حماية العميل الأصلي"
الجزء 1 /
الجزء 2 /
الجزء 3المحاضرة 8: "نموذج أمان الشبكة"
الجزء 1 /
الجزء 2 /
الجزء 3المحاضرة 9: "أمان تطبيق الويب"
الجزء 1 /
الجزء 2 /
الجزء 3المحاضرة 10: "الإعدام الرمزي"
الجزء 1 /
الجزء 2 /
الجزء 3المحاضرة 11: "أور / لغة برمجة الويب"
الجزء 1 /
الجزء 2 /
الجزء 3المحاضرة 12:
الجزء 1 من أمان الشبكة /
الجزء 2 /
الجزء 3المحاضرة 13: "بروتوكولات الشبكة"
الجزء 1 /
الجزء 2 /
الجزء 3محاضرة 14: "SSL و HTTPS"
الجزء 1 /
الجزء 2 /
الجزء 3المحاضرة 15: "البرامج الطبية"
الجزء 1 /
الجزء 2 /
الجزء 3المحاضرة 16: "هجمات القناة الجانبية"
الجزء 1 /
الجزء 2 /
الجزء 3المحاضرة 17: "مصادقة المستخدم"
الجزء 1 /
الجزء 2 /
الجزء 3المحاضرة 18: "تصفح الإنترنت الخاص"
الجزء 1 /
الجزء 2 /
الجزء 3محاضرة 19: "شبكات مجهولة"
الجزء 1 /
الجزء 2 /
الجزء 3المحاضرة 20: "أمن الهاتف المحمول"
الجزء 1 /
الجزء 2 /
الجزء 3 قبل البدء في مراجعة تفصيلية للنظام ، دعونا نحاول معرفة شيء واحد مثير للاهتمام: لماذا قام هؤلاء الرجال بتطوير تصميم وحدات جديد تمامًا لتطبيقات Android؟ هناك تطبيقات سطح مكتب ، وهناك تطبيقات ويب ، لماذا احتاجوا إلى ابتكار طريقة جديدة تمامًا لكتابة البرامج؟ في الواقع ، إلى حد ما ، هذا مربكا للمطور. لأنه ، دعنا نقول ، أنا معتاد على كتابة برنامجي الصغير في C مع الوظيفة الرئيسية ، والآن أنا أنظر إليه وأقول: "ماذا بحق الجحيم؟ ماذا أفعل مع كل هذا؟ لا بد لي من تحديد أربعة أنواع من المكونات وإرسال النوايا ، بدلاً من استخدام C- الهياكل وكتابة التعليمات البرمجية في خطوط منتظمة؟ "

فما هي إيجابيات وسلبيات نماذج التطبيقات الحالية؟ لدينا تطبيقات سطح المكتب والإنترنت ، لماذا نحتاج إلى نوع ثالث من التطبيق؟
الطالب: لكن النموذج قد تغير تماما ، أليس كذلك؟ أعتقد أنه يجب ألا تثق في مطوري تطبيقات سطح المكتب بقدر ما يجب أن يثقوا في مطوري التطبيقات للأجهزة المحمولة. بالإضافة إلى ذلك ، لديك مستخدمون أكثر خبرة مقارنة بعدد المستخدمين ذوي الخبرة لتطبيقات الكمبيوتر ، وهم يريدون استخدام مجموعة كاملة من التطبيقات المعزولة من بعضهم البعض.
أستاذ: من المحتمل جدا. لذلك ، هل تعتقد أنه في حالة تطبيقات سطح المكتب ، يجب ألا نثق في مطوريها أكثر من اللازم؟
الطالب: بالطبع ، لأنه يوجد دائمًا ابن أو ابن عم أكثر خبرة سيساعدك على حل مشكلات برامج الكمبيوتر ، لكن الأمور مختلفة مع الهاتف.
البروفيسور: إنه أمر رائع ، بالطبع ، أن الهواتف لا تحتاج إلى ابن عم لرعايتها. ولكن من وجهة نظر الأمان ، تحتوي برامج الكمبيوتر على خاصية مميزة واحدة - يمكن أن يكون تثبيت تطبيق جديد على جهاز كمبيوتر عملية تستغرق وقتًا طويلاً. ربما هذا ليس صحيحًا تمامًا ، لأنه يمكنك دائمًا النقر فوق الملف القابل للتنفيذ وبدء التثبيت ، لكن لا أعتقد أن الناس يقومون بتثبيت تطبيقات سطح المكتب بانتظام. بعد كل شيء ، كقاعدة عامة ، لديك مجموعة ثابتة من البرامج التي تقوم بتشغيلها.
وبهذا المعنى ، فإن السمة المميزة لتطبيقات الويب هي سهولة تشغيلها. أنت فقط تذهب إلى الموقع ، ولا تحتاج إلى القيام بأي شيء سوى النقر على الرابط ، والآن أنت بالفعل في موقع جديد تحت سيطرة بعض التطبيقات الجديدة. لذلك هذه ملكية جيدة لتطبيق الويب.

السمة السيئة لتطبيقات الكمبيوتر هي قلة عزل التطبيق. ربما يرجع هذا بطريقة أو بأخرى إلى حقيقة أنه عند تثبيت مثل هذا التطبيق ، فأنت تثق تمامًا في كل ما هو موجود على جهاز الكمبيوتر الخاص بك. في الواقع ، لا توجد عزلة بين التطبيق الذي تقوم بتثبيته على الكمبيوتر المحمول وأي برنامج أو بيانات أخرى موجودة بالفعل ، بينما في حالة تطبيق الويب ، هناك بعض العزلة المعقولة. طالما كنت تثق في "سياسة الأصل نفسه" ، فأنت آمن. لذلك ، فمن الآمن بما فيه الكفاية للذهاب إلى بعض المواقع التعسفية والبدء في استخدام التطبيق الخاص به. إذا لم يستغل هذا التطبيق الثغرات الأمنية في متصفحك ، فلن يتداخل مع تشغيل المواقع المفتوحة في علامات تبويب المتصفح الأخرى.

لا تزال تطبيقات الويب في وضع أفضل ، لأنها سهلة الاستخدام ومعزولة. لماذا لا يستخدم هؤلاء الأشخاص تطبيقات الويب التي تعمل بنظام Android؟
الطالب: يبدو أن تطبيقات الويب تحتوي على نظام تشغيل ، على سبيل المثال ، يوجد نظام تشغيل Firefox ، وهو نظام تشغيل أساسي على الإنترنت.
أستاذ: بالتأكيد. أنت تدعي أن هؤلاء الرجال مخطئون بالفعل. لم يكن من المفترض أن يقوموا بإنشاء نظام تشغيل أندرويد جديد ، ولكن ببساطة أنشئ متصفح ويب عملاقًا لهاتفك.
الطالب: على الأقل أظهرت موزيلا أن هذا ممكن.
البروفيسور: حسنا ، هذا عادل جدا. على الأقل ، من الحكمة السير في طريق إنشاء تطبيقات الويب من أنظمة سطح المكتب ، على الأقل للهاتف.
الطالب: نظرًا لأنك تجري مكالمة هاتفية من تطبيق ويب ، فأنت بحاجة إلى إنشاء واجهة برمجة تطبيقات جديدة تمامًا لتوصيل واجهة تطبيق الويب بالهاتف.
أستاذ: بالتأكيد. وبالتالي ، تحتوي تطبيقات الويب على قيد واحد يمكن إصلاحه: عدم وجود واجهة برمجة تطبيقات لبعض الأجهزة المحمولة. ولكن هناك عدد أقل من هذه التطبيقات. على سبيل المثال ، بالنسبة للكاميرا أو لمتصفح GPS ، فإنها تعمل ببطء ولكن لا تزال تضيف الواجهة المناسبة إلى تطبيقات الويب. ولكن هناك ، في تطبيقات الويب ، ربما لا توجد واجهة برمجة تطبيقات لإجراء المكالمات وإرسال الرسائل القصيرة وما شابه ذلك.
عيب آخر لتطبيقات الويب هو عدم القدرة على إنشاء وصول محدود إلى التطبيقات الأخرى. تحدثنا عن النوايا الضمنية في Android ، حيث يمكنك فقط أن تقول: "أريد أن أرى هذه الصورة بتنسيق JPEG ، لكن من يعرف التطبيق الذي سيفتحه؟ إما أن أرغب في عرض ملف PDF هذا ، أو مشاركة هذه الصورة مع صديقي الذي التقطته للتو مع الكاميرا ، لكنني لا أعرف تطبيق البريد الإلكتروني الذي سيتم استخدامه. " لذلك دعونا نطلب فقط من شاشة الرابط أن تجد لي بعض برامج البريد الإلكتروني التي سترسل هذه الصورة. من السهل القيام بذلك على جهاز Android ، ولكن في حالة تطبيقات الويب ، سيتسبب ذلك في صعوبات كبيرة ، لأن كل تفاعل يجب أن يرتبط بعنوان URL محدد.

لذلك إذا كنت لا تعرف أي عارض PDF يستخدمه شخص ما ، فلن تعرف عنوان URL الذي يمكنك استخدامه لعرض ملفك.
الطالب: ربما يكون عيب تطبيقات الويب هو صعوبة قراءة جافا سكريبت؟
البروفيسور: نعم ، إنه من المضايقات الأخرى أنها كلها مكتوبة بلغة JavaScript. لذلك قد لا يكون هذا جيدًا من حيث الأداء ، فقد يكون من الصعب فهم ما يقوم به البرنامج ، وقد يكون من الصعب تجميعه بكفاءة ، وما إلى ذلك.
دعنا نعود إلى برامج الكمبيوتر. ميزة مفيدة لتطبيقات سطح المكتب هي القدرة على مشاركة الملفات. جميع ملفاتك متوفرة في كل تطبيق لأنك تشاركها فقط. وبالتالي ، لديك سهولة الوصول إلى أي بيانات متاحة على الكمبيوتر.

ما يصعب تنفيذه قليلاً في Android سهل في تطبيقات الكمبيوتر. في حالة أنظمة تشغيل سطح المكتب ، إذا كنت أرغب في تجميع برنامج ، فسأقوم بتشغيل MAKE ، وتشغيل GCC ، وربما بعض البرامج الأخرى ، وسوف تعمل جميعها على نفس شفرة المصدر C في نفس الدليل. يعد هذا الأمر أكثر صعوبة في Android ، حيث ترتبط البيانات بالتطبيق الرئيسي ، الذي يتم تخزينه بواسطة موفر المحتوى. لذلك يجب عليك العبث به ، أولاً باستخدام مستودع شفرة المصدر ، ثم تثبيت برنامج التحويل البرمجي C وبرنامج MAKE والتجميع والمزيد. من الصعب للغاية جعلهم يعملون معًا.
يمكن القيام بذلك لتجاوز بعض القيود المفروضة على Android ، ولكن في أي حال أكثر تعقيدًا من أنظمة سطح المكتب.
الطالب: أعتقد أن تحسين تطبيقات الويب أمر صعب للغاية ، فهي محدودة باستخدام ذاكرة الوصول العشوائي وقوة المعالجة.
أستاذ: نعم ، مبادئ تحسين تطبيقات الويب وتطبيقات سطح المكتب مختلفة. أعتقد أن عيب تطبيقات الويب ، على الأقل في الوقت الذي كانوا يصممون فيه أندرويد ، كان أن إطلاق تطبيق الويب في وضع عدم الاتصال كان صعبًا للغاية. إذا حصل هاتفك على إشارة شبكة ضعيفة ، فسيكون من الصعب تشغيل بعض التطبيقات ، خاصة إذا سقطت بعض أجزائها من ذاكرة التخزين المؤقت. ومع ذلك ، أعتقد ، كما لاحظت ، أن تطبيقات الويب ، على الرغم من ببطء ، "تلاحق" نظام Android عن طريق إزالة القيود الحالية. لذلك من الممكن تمامًا أن تكون تطبيقات الويب بمثابة نموذج معقول لإطلاق نظام تشغيل جديد للهاتف. ولكن قبل خمس سنوات لم تكن جيدة بما فيه الكفاية لهذا الغرض.
ولكن على الرغم من أوجه القصور الحالية ، سيكون الآن من الأسهل بكثير "دفع" تطبيقات الويب إلى مكانها الذي يشغله Android ، بدلاً من البدء في تطوير نظام تشغيل جديد للهاتف المحمول من نقطة الصفر. لذلك ، أعتقد أنه لا يزال بإمكاننا التحدث عن النجاحات التي حققها Android ، على الرغم من أنك ربما تفضل اليوم عدم القيام بذلك بهذه الطريقة.
أعتقد أنه من حيث العزلة ، فإن أمن نظام أندرويد أعلى بكثير. كما ذكرت ، يعتمد Android على Linux kernel لعزل التطبيقات عن بعضها البعض. تقوم منصة Android في الواقع بتعيين معرّفات المستخدم ، لذلك سيكون لهذا التطبيق 1 UID 1001 ، وسيكون للتطبيق 2 UID 1002 ، وستكون شاشة الرابط ، التي عادةً ما تتمتع بامتيازات الجذر ، UID 0. وبالتالي فإن Linux kernel مسؤول إلى حد كبير عن فصل التطبيقات عن بعضها البعض.

في الأساس ، يحدث التفاعل بين معرفات المستخدم من خلال نوايا النوايا. هناك العديد من الفروق الدقيقة حول كيفية التحكم في نواة Linux للتطبيقات التي تستخدم UID ، وسوف نتحدث عن ذلك لاحقًا.
سؤال واحد مثير للاهتمام: لماذا اختار هؤلاء الرجال جافا؟ ما هو دور جافا في أندرويد؟ لماذا هو مطلوب على الإطلاق؟ إذا كتبنا جميع التطبيقات في C بدلاً من Java ، أو على سبيل المثال ، Assembler ، فهل يمكن أن يحدث شيء ما؟
الطالب: إذا كانت لديك نقاط ضعف ، فإن استخدام هذه اللغات يمكن أن يؤدي إلى تشويه المؤشرات المهمة للنظام.
الأستاذ: نعم ، يمكن أن يحدث هذا ، على سبيل المثال ، قد يحدث تجاوز سعة المخزن المؤقت في التطبيق. ماذا بعد؟
الطالب: قد يحدث الارتباك مع الأذونات.
أستاذ: مع ما أذونات؟
الطالب: مع مثل الكمون ، الكمون.
أستاذ: دعنا نلقي نظرة فاحصة على هذا. لذلك ، كما قلنا ، تقوم أداة مراقبة الارتباط بفحص العلامات لنا وتخزن بالفعل في نظام Android قائمة بجميع التطبيقات المثبتة إلى جانب العلامات التي تتوافق مع جميع هذه التطبيقات. لذلك ربما لن ترغب في أن يرصد جهاز العرض أخطاء بغض النظر عن اللغة المكتوبة بها. لذا فإن وجود شاشة ارتباط مكتوبة بلغة آمنة من حيث النوع هو حل جيد. أنا أحب جافا لأنها لغة آمنة مع ميزات جيدة. ولكن حتى إذا تمت كتابة التطبيق في C وحدثت تجاوزات في المخزن المؤقت ، فإنه لا يزال لا يمكن أن تلحق الضرر بالتسميات في شاشة الارتباط. لذلك لن يكون مشكلة كبيرة.
الطالب: ربما هناك نوع من النظام يمكن أن يتلف الكود المكتوب بلغة C؟
الأستاذ: نعم ، من حيث المبدأ ، سيكون من الجيد تجنب التطبيقات التي تتحدث مباشرة إلى نواة Linux. في Android ، ليست هذه هي الحالة. يمكن لتطبيقات Android إجراء مكالمات النظام التعسفي إذا أرادوا. في الواقع ، لأسباب تتعلق بالأداء ، لا يمكن للتطبيقات أن تؤثر على المكونات التعسفية المكتوبة في C أو Assembler ، ولهذا السبب "تتحدث" بعض الألعاب في Java.
الطالب: أعتقد أن هذه هي بطريقة ما فرصة لاستخدام جميع المواد المكتوبة لجافا ، أي أن مصممي Android أرادوا تبسيط إنشاء تطبيقات للمطورين. واحدة من أسهل الطرق للقيام بذلك هي إنشاء القدرة على الاستفادة من مكتبات Java السخية.
أستاذ: من المحتمل جدا. أعتقد أن أحد الأسباب الرئيسية لاستخدام Java هو قابليتها للاستخدام. ربما كانوا أكثر اهتمامًا بالبرمجة وسهولة التطوير ، نظرًا لأن جافا ليس له علاقة بالأمان.
شيء آخر له مكان هنا ، على عكس iPnone. يتمتع نظام التشغيل iPhone أيضًا بسهولة التطوير ، ولكنه يستخدم C ، وإذا حاولت ، فيمكنك أن تتسبب في تجاوز سعة المخزن المؤقت فيه. بالإضافة إلى ذلك ، هناك خصوصية لمعدات معينة ، لذلك قد لا تملك جميعها نفس المكتبات. أعتقد أن السبب الرئيسي في اختيار مطوري Android لنظام Java هو أنهم لم يعرفوا في البداية خصائص الأجهزة التي سيعمل عليها نظام التشغيل هذا. على سبيل المثال ، عرف منشئو iPhone بالتأكيد أنهم سيحصلون على معالج ARM في هواتفهم ، لذلك قاموا مسبقًا بترجمة البرنامج باستخدام هذا الطراز المحدد. وهذا النهج أكثر فعالية ، لأن استهلاك البطارية له أهمية كبيرة بالنسبة للهاتف.

ربما تكون حقيقة أن اللاعبين من Android يستخدمون Java أقل كفاءة من حيث توفير الطاقة أو أداء المعالج ، لأنه يرتبط بـ JRE وما إلى ذلك. ولكن هناك ميزة نقل نظام التشغيل إلى أجهزة ذات أبنية مختلفة. لذلك ، إذا كان لديك هواتف بها معالجات MIPS أو ARM أو x86 ، فيمكن تشغيل تطبيق Java على جميع الأجهزة الثلاثة. أراد مطورو Android استخدام نظامهم الأساسي على أي نوع من المعدات أو الهاتف. لذلك ربما يكون هذا هو السبب الرئيسي وراء التضحية بالأمن من أجل استخدام جافا.
اتضح أن بيئة تشغيل Java لا توفر أي مزايا أمان خاصة للتطبيقات ، إنها مجرد شيء مناسب للمطورين والمستخدمين. ولكن من وجهة نظر العزلة ، كل شيء يعتمد بشكل أساسي على النواة وشاشة الرابط التي تتحكم في تشغيل التطبيقات.
الطالب: ألا تؤدي سهولة التطوير إلى بعض أمان التطبيق؟ في الواقع ، عند كتابة جهاز مراقبة المراجع C ، هناك العديد من الطرق لارتكاب الأخطاء.
أستاذ: نعم ، أنت على حق تماما! في الواقع ، لا ينبغي لي أن أقول إن سهولة التنمية لا علاقة لها بالأمن. هذا غبي تمامًا لأنك ترغب في القيام بذلك بنفس سهولة كتابة الكود الصحيح. لذا ، فإن النظام الذي يمكنك من أجله بسهولة كتابة الكود الصحيح وحده يوفر مزيدًا من الأمان. بمعنى ما ، أنت محق في افتراض أن مطوري Android يريدون تجنب الأخطاء عند كتابة التعليمات البرمجية ، لذلك لم تكن ترغب في كتابتها بلغة C المعقدة ، ولا أعرف لماذا اختارت Apple لغة C كلغة برمجة عند تطوير نظام التشغيل الخاص بها.
لأن مثل هذا الاختيار يخلق مشكلة تجاوز سعة المخزن المؤقت في التطبيق ، وإذا كان هذا التطبيق ذا أهمية كبيرة ، فمن المحتمل أن يكون عرضة للخطر. لا يتعلق بخرق التطبيقات الأخرى ، لكنك لا تزال لا ترغب في كتابة طلبك المصرفي في C.
الطالب: رابط مراقب مكتوب بلغة Java أو C؟
البروفيسور: في نظام أندرويد ، تتم كتابة شاشة الرابط بلغة جافا. ومع ذلك ، هناك بعض "السنانير" في ذلك من أجل التواصل مع واجهات والتطبيقات الخارجية باستخدام رمز الأصلي. لكن معظم المنطق مكتوب بلغة جافا. لذلك هذا هو في الواقع خطة آمنة إلى حد ما.
الآن ، دعونا نحاول معرفة ما يتم استخدام معرفات UID الخاصة بالتطبيق ، باستثناء فصل التطبيقات عن بعضها البعض من حيث العمليات التي تبدأها. السبب الرئيسي لاستخدام معرف المستخدم هو إنشاء القدرة على مشاركة الوصول إلى الموارد المشتركة وتبادل البيانات في النظام.
لقد رأينا بالفعل آلية واحدة لهذا - إرسال النوايا إلى مراقب الارتباط. ولكن على Android ، هناك الكثير من الأشياء التي لا يتم تنفيذها من خلال هدف شاشة الارتباط. ربما لا يتم إرسال كل شيء عبر Intent لأسباب تتعلق بالأداء. لا ترغب في استدعاء شاشة الرابط لكل عملية تقوم بها على النظام ، أولاً وقبل كل شيء يتعلق بالوصول إلى الإنترنت. إذا كنت ترغب في الوصول إلى الإنترنت في جهاز يعمل بنظام أندرويد ، فقم فقط بفتح المقبس ، تمامًا مثل أي تطبيق Linux قياسي. يمكن لأحد التطبيقات ببساطة أن يسأل النواة: "أحتاج إلى مأخذ توصيل لأنني أريد الاتصال بهذا الجهاز" ، هكذا يتم الوصول إلى الإنترنت.
بعد ذلك ، يجب الإشارة إلى الوصول إلى الوسائط القابلة للإزالة. SD-, . , , , , , . , . , , Android . , , GPS-, .

«» Android, Linux, /dev/camera. Linux, , , . , - , , Java. C Assembler, Linux, . Java , Java-.
: , , - , ?
: , ! , . ? , №2, ID . Android UID GID , . , . , , , - «android.permission.internet», , .

, . , , , . — Linux Android. , - , - , , Linux. Android GID 3003, . , , . , - . Android - , . , GID UID .
SD-. GID, SD-, , . , . , SD- GID SD-.
, , Android.

, , , . , SQL -, , . — UID , , .
, , , GPS, . GID, . , , dev/camera - GID, , , GID .
, , №2, , UID GID , - .
, SD-? , SD-? , SD- , , . ?
: , , , , .
: . , Android , . , SD- . , , SD- . , Android , , , FAT, - . , , - .
: , ?
: , . , , . , , , , . , .

— , , ? , , DIALPERM, INTERNET, FRIENDVIEW?
: , , ?
: , , , . , , . , . Android , iOS, , iPhone , , , SMS-, JPEG . .
– , , . . , Android , , . , - «», , , , , OK. , , .
, , , Android , — , . , , , . Android, 4.3, , , . , . , , , , . , , API, , .
55:10
MIT « ». 20: « », 3.
, . ? ? ,
30% entry-level , : VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps $20 ? ( RAID1 RAID10, 24 40GB DDR4).
VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps ,
.
Dell R730xd 2 ? 2 x Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD بسرعة 1 جيجابت في الثانية 100 TV من 249 دولارًا في هولندا والولايات المتحدة الأمريكية! اقرأ عن كيفية بناء البنية التحتية فئة باستخدام خوادم V4 R730xd E5-2650d تكلف 9000 يورو عن بنس واحد؟