نشر وإدارة حاويات LXC بأمان على Ubuntu 14.04

حاويات LXC (حاويات Linux) هي إحدى ميزات نظام التشغيل في Linux والتي يمكن استخدامها لتشغيل العديد من أنظمة Linux المعزولة على مضيف واحد.

ستوجهك هذه التعليمات خلال الخطوات الأساسية لتهيئة الخادم لاستضافة حاويات Linux المعزولة. سنقوم بتكوين الميزات التالية:

  • حاويات LXC مع Ubuntu 14.
  • إعدادات شبكة Linux وإعادة توجيه المنفذ للحاويات.
  • إعادة توجيه SSH لإدارة الحاويات ببساطة ssh box1@example.comوssh box2@example.com
  • تكوين وكيل Nginx للوصول إلى مواقع الويب داخل الحاويات (حسب اسم المضيف).
  • تحسينات أمنية إضافية لإدارة الخادم بشكل صحيح.

يفترض هذا الدليل ما يلي:

  • لديك حساب على Vultr.com .
  • أنت تعرف كيفية تكوين جهاز افتراضي باستخدام ISO مخصص.
  • أنت تعرف كيفية استخدام مفاتيح SSH وقد قمت بالفعل بإنشاء مفاتيح عامة وخاصة.

في نهاية البرنامج التعليمي ، سوف نحصل على حاويتين افتراضيتين يمكنهما الوصول إلى الإنترنت ، ولكن لا يمكنهما تنفيذ الأمر. سنقوم أيضًا بتكوين إعادة توجيه المنفذ من example.comإلى الحاويات. سننشر لوحة تكوين وإدارة آمنة بمساعدة أدوات من حزمة Proxmox.

الاستعدادات

سنستخدم Proxmox فقط لإدارة حاويات LXC. بشكل عام ، يدعم أيضًا KVM ، ولكن المحاكاة الافتراضية المتداخلة ممنوعة على Vultr. قبل البدء ، يجب تنزيل Proxmox ISO من الموقع الرسمي. سوف نستخدم Proxmox VE 5.0 ISO Installer. قم بتثبيت نظام التشغيل من الصورة بالإعدادات الافتراضية وأعد تشغيل الجهاز الظاهري. يمكنك أيضًا تثبيت البروكسموكس يدويًا من المصادر ، ولكن هذا ليس ضروريًا في معظم الحالات (اتبع الإرشادات هنا ).

إعداد نظام التشغيل

اتصل بمضيفك عن طريق SSH ، وقم بتحديث قائمة قوالب البروكسموكس وقم بتنزيل قالب مناسب للحاويات.

apt-get update
pveam update
pveam available
pveam download local ubuntu-14.04-standard_14.04-1_amd64.tar.gz

الآن ، نحن بحاجة إلى إنشاء حاوية لينكس مع واجهة شبكة متصلة بجسر لينكس. افتح /etc/network/interfacesالخطوط التالية وأضفها:

auto vmbr1
iface vmbr1 inet static
    address  10.100.0.1
    netmask  255.255.255.0
    bridge_ports none
    bridge_stp off
    bridge_fd 0

بعد إعادة تشغيل النظام ، يمكنك إنشاء حاوية جديدة من Ubuntu 14.04القالب.

pct create 200 /var/lib/vz/template/cache/ubuntu-14.04-standard_14.04-1_amd64.tar.gz -storage local-lvm -net0 name=eth0,bridge=vmbr1,ip=10.100.0.200/24,gw=10.100.0.1

يمكنك التحقق من الحاوية الخاصة بك باستخدام pct list، وبدء الحاوية # 200 pct start 200بإدخال الصدفة مع pct enter 200. يمكنك أيضًا التحقق من إعدادات الشبكة والعناوين باستخدام ip addr.

شبكة الاتصال

لتوفير اتصال بالإنترنت داخل الحاوية الخاصة بك ، نحتاج إلى تمكينها NAT. سيسمح ما يلي بإعادة توجيه حركة المرور من الحاوية إلى الإنترنت بمساعدة تقنية NAT. و vmbr0يرتبط الجسر إلى الواجهة الخارجية و vmbr1يرتبط الجسر إلى الحاويات.

sysctl -w net.ipv4.ip_forward=1
iptables --table nat --append POSTROUTING --out-interface vmbr0 -j MASQUERADE
iptables --append FORWARD --in-interface vmbr1 -j ACCEPT

أدخل الحاوية مع pct enter 200خادم الويب وقم بتكوينه بالداخل.

apt-get update
apt-get install nginx
service nginx start
exit

الآن ، نحن بحاجة إلى تكوين Nginx على الخادم الخاص بك إلى مواقع الويب الوكيل في حاويات.

apt-get update
apt-get install nginx

قم بإنشاء ملف تكوين جديد /etc/nginx/sites-available/box200بالمحتوى التالي:

server {
    listen 80;
    server_name server200.example.com;

    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;

    location / {
        proxy_pass http://10.100.0.200/;
    }
}

ستقوم Nginx الآن بإنشاء وكيل لكل طلب HTTP server200.example.comمن الخادم الخاص بك إلى الحاوية باستخدام IP 10.100.0.200. تنشيط هذا التكوين.

ln -s /etc/nginx/sites-available/box200 /etc/nginx/sites-enabled/
service nginx restart

وصول SSH

إذا كنت ترغب في توفير وصول سهل إلى وضع الحماية ، فأنت بحاجة إلى إعادة توجيه جلسات SSH إلى الحاويات. للقيام بذلك ، قم بإنشاء مستخدم جديد على خادم الجذر الخاص بك. لا تنس إدخال كلمة مرور ، فالمعلمات الأخرى ليست ضرورية.

adduser box200
su - box200
ssh-keygen
cat .ssh/id_rsa.pub
exit

انسخ مفتاح SSH هذا وأدخل الحاوية لإلحاق المفتاح.

pct enter 200
mkdir .ssh
nano .ssh/authorized_keys
exit

على الخادم الخاص بك ، أضف السطر التالي إلى .ssh/authorized_keysالملف.

command="ssh root@10.100.0.200",no-X11-forwarding,no-agent-forwarding,no-port-forwarding <YOUR SSH KEY>

لا تنس تغيير <YOUR SSH KEY>مفتاح منزلك العام. بدلاً من ذلك ، يمكنك تشغيل ما يلي من سطر الأوامر.

echo 'command="ssh root@10.100.0.200",no-X11-forwarding,no-agent-forwarding,no-port-forwarding <YOUR SSH KEY>' >> .ssh/authorized_keys

بعد ذلك ، يمكنك الاتصال بصندوق الرمل باستخدام ssh.

`ssh box200@<your_server_IP>`

إعدادات إضافية

حان الوقت لتنفيذ العديد من التحسينات الأمنية. أولاً ، نريد تغيير منفذ SSH الافتراضي. ثم نريد حماية صفحة إدارة Proxmox الخاصة بنا بمصادقة HTTP الأساسية.

nano /etc/ssh/sshd_config

uncomment وتغيير الخط

#Port 22 

إلى

Port 24000 

أعد تشغيل ssh.

service ssh restart

أعد الاتصال بـ ssh بالمنفذ الجديد.

ssh root@<your_IP> -p 24000

قم بتعيين كلمة مرور Proxmox.

إنشاء ملف /etc/default/pveproxy.

ALLOW_FROM="127.0.0.1"
DENY_FROM="all"
POLICY="allow"

أعد تشغيل pveproxyالتغييرات لتصبح سارية المفعول.

/etc/init.d/pveproxy restart

تكوين nginx (إذا لم تكن قد فعلت ذلك من قبل).

apt-get install nginx
service nginx restart

إنشاء تكوين افتراضي في /etc/nginx/site-available/default.

server {
        listen          80;
        server_name     example.com;
        rewrite         ^ https://$hostname.example.com$request_uri? permanent;
}
server {
        listen                   443 ssl;
        server_name              example.com;
        #auth_basic              "Restricted";
        #auth_basic_user_file    htpasswd;
        #location / { proxy_pass https://127.0.0.1:8006; }
}

احصل على شهادة SSL صالحة وقم بتحديث تكوين nginx. على سبيل المثال ، يمكن القيام بذلك بمساعدة certbox و letencrypt. لمزيد من المعلومات ، انقر هنا .

wget https://dl.eff.org/certbot-auto
chmod +x certbot-auto
./certbot-auto --nginx

الآن ، يجب أن تبدو تهيئة nginx على النحو التالي (أو يمكنك تغييرها يدويًا بعد ذلك). لا تنسَ unsment unsment و auth وخطوط الموقع.

server {
    listen          80;
    server_name     example.com;
    rewrite         ^ https://$hostname.example.com$request_uri? permanent;
}

server {
        listen                  443 ssl;
        server_name             example.com;
        ssl on;
        auth_basic              "Restricted";
        auth_basic_user_file    htpasswd;
        location / { proxy_pass https://127.0.0.1:8006; }        

        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
}

قم بإنشاء /etc/htpasswdملف باستخدام مولد Htpasswd .

nano /etc/nginx/htpasswd

أعد تشغيل Nginx

service nginx restart

يمكنك الآن عرض وحدة تحكم الإدارة https://example.comبعد المصادقة الأساسية.

ميناء الشحن

الحاويات متاحة الآن عن طريق طلبات HTTP و SSH. الآن ، يمكننا تكوين إعادة توجيه المنفذ من الخادم الخارجي إلى الحاويات. على سبيل المثال، لرسم الخرائط example.com:8080ل 10.100.0.200:3000إدخال التالية.

iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 8080 -j DNAT --to 10.100.0.200:3000

يمكنك عرض القواعد الحالية.

`iptables -t nat -v -L PREROUTING -n --line-number`

يمكنك أيضًا حذف قاعدة برقم بما يلي.

`iptables -t nat -D PREROUTING <#>`.

حاويات منفصلة

يمكننا الآن الوصول إلى حاوية واحدة من أخرى.

pct create 250 /var/lib/vz/template/cache/ubuntu-14.04-standard_14.04-1_amd64.tar.gz -storage local-lvm -net0 name=eth0,bridge=vmbr1,ip=10.100.0.250/24,gw=10.100.0.1
pct start 250
pct enter 250
ping 10.100.0.200

إذا كنت تريد تقييد الوصول من الحاوية 250 إلى 200 ، فأنت بحاجة إلى توصيل كل حاوية بجسر شخصي وتعطيل إعادة التوجيه بين الجسور.

  1. حذف الحاويات الموجودة.

    pct stop 200
    pct stop 250
    pct destroy 200
    pct destroy 250
    
  2. تغيير محتوى /etc/network/interfaces.

    auto vmbr1
    iface vmbr1 inet static
        address  10.100.1.1
        netmask  255.255.255.0
        bridge_ports none
        bridge_stp off
        bridge_fd 0
    
    auto vmbr2
    iface vmbr2 inet static
        address  10.100.2.1
        netmask  255.255.255.0
        bridge_ports none
        bridge_stp off
        bridge_fd 0
    
  3. reboot النظام

  4. تمكين إعادة التوجيه

    `sysctl -w net.ipv4.ip_forward=1`
    

    لجعل هذه التغييرات دائمة ، يمكنك تحرير /etc/sysctl.confالملف والعثور على النص التالي.

    #net.ipv4.ip_forward=1
    

    أزعجها.

    net.ipv4.ip_forward=1
    

    يمكنك أيضًا تشغيل sysctl -pالتغييرات لتصبح سارية المفعول على الفور.

  5. إنشاء حاويات.

    pct create 200 /var/lib/vz/template/cache/ubuntu-14.04-standard_14.04-1_amd64.tar.gz -storage local-lvm -net0 name=eth0,bridge=vmbr1,ip=10.100.1.200/24,gw=10.100.1.1
    pct create 250 /var/lib/vz/template/cache/ubuntu-14.04-standard_14.04-1_amd64.tar.gz -storage local-lvm -net0 name=eth0,bridge=vmbr2,ip=10.100.2.250/24,gw=10.100.2.1
    
  6. بدء الحاويات مع pct start 200و pct start 250.

  7. مسح iptablesالقواعد.

    iptables -F
    
  8. تمكين NAT.

    iptables --table nat --append POSTROUTING --out-interface vmbr0 -j MASQUERADE
    

    vmbr0 هو الجسر الذي يتضمن الواجهة الخارجية.

  9. السماح بإعادة التوجيه من الواجهة الخارجية.

    iptables --append FORWARD --in-interface vmbr0 -j ACCEPT
    
  10. السماح بإعادة التوجيه من الحاويات إلى الإنترنت.

    iptables -A FORWARD -i vmbr1 -o vmbr0 -s 10.100.1.0/24 -j ACCEPT
    iptables -A FORWARD -i vmbr2 -o vmbr0 -s 10.100.2.0/24 -j ACCEPT
    
  11. إسقاط إعادة التوجيه الأخرى.

    iptables -A FORWARD -i vmbr1 -j DROP
    iptables -A FORWARD -i vmbr2 -j DROP
    

الآن ، تحقق من أنه 10.100.1.200يمكن تنفيذ الأمر ping 8.8.8.8ولكن لا يمكن تنفيذ الأمر ping 10.100.2.250والذي 10.100.2.250يمكنه تنفيذ الأمر ping 8.8.8.8ولكن لا يمكنه تنفيذ الأمر ping 10.100.1.200.

ترتيب الأوامر المتعلقة بجداول iptables مهم. أفضل طريقة لتشغيل قواعدك هي الاستخدام iptables-persistent. هذه الحزمة يساعدك على حفظ قواعد إيبتبلس إلى الملفات /etc/iptables/rules.v4و /etc/iptables/rules.v6ويمكن تحميلها تلقائيا بعد إعادة تشغيل النظام. فقط قم بتثبيته مع ما يلي.

apt-get install iptables-persistent

حدد YESعندما يُطلب منك ذلك.

اترك تعليقاً

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

وظائف طبقات معمارية مرجعية للبيانات الضخمة

وظائف طبقات معمارية مرجعية للبيانات الضخمة

اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.

6 أشياء شديدة الجنون حول نينتندو سويتش

6 أشياء شديدة الجنون حول نينتندو سويتش

يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

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

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد