بعض جوانب إدارة خادم VDS في نظام Linux

VDS (Virtual Dedicated Server) هي خدمة يتلقى المستخدم من خلالها خادمًا افتراضيًا مخصصًا بأقصى امتيازات. هذا هو محاكاة لخادم مادي حقيقي ، ولديه وصول إلى الجذر ، والقدرة على تثبيت أنظمة تشغيل عشوائية وأي برنامج. علاوة على ذلك ، فهو أرخص بكثير من استئجار خادم فعلي مماثل في السعة.



يمكنك وضع نظام التشغيل على الخادم من صورتك أو استخدام الصورة الجاهزة في لوحة التحكم.







لنفترض أننا قمنا بتثبيت Debian 10 وخادم الويب Nginx ، والذي يأتي في المستودع القياسي ( apt install nginx). دعونا نرى ما هي الأدوات والأوامر المفيدة التي ستساعدك على إدارة خادم Linux الخاص بك. لنفكر في Nginx بشكل منفصل وخادم VDS نفسه ككل.



المحتوى





أولاً ، من المستحسن فهم خادم الويب نفسه. يبدأ Nginx عند اكتمال التثبيت. نتحقق من هذه الحقيقة:



systemctl status nginx


الإصدار:



● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-08-17 08:52:54 UTC; 4min 23s ago
Docs: man:nginx(8)
Main PID: 3942 (nginx)
Tasks: 3 (limit: 4719)
Memory: 6.1M
CGroup: /system.slice/nginx.service
├─3942 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─3943 nginx: worker process
└─3944 nginx: worker process


أو فقط أدخل عنوان IP الخاص بالخادم في المتصفح:



http://your_server_ip


إذا لم نقم بنسخ ملفات موقعنا إلى الخادم حتى الآن ، فسيتم عرض صفحة رأس Nginx القياسية.







أوامر أساسية لإدارة Nginx



ملحوظة. إذا لم يكن لدى المستخدم امتيازات الجذر ، فلكي يتم تنفيذ كل أمر ، يجب أن يحصل على امتيازات الجذر باستخدام الأمر sudo.



إيقاف خادم الويب:



sudo systemctl stop nginx


في حالة التشغيل كجذر ، يكون الأمر:



systemctl stop nginx


ابدأ بعد التوقف:



systemctl start nginx


الإيقاف وإعادة التشغيل (إعادة التشغيل):



systemctl restart nginx


إذا أجريت للتو بعض التغييرات في التكوين ، فيمكن لـ Nginx إعادة التشغيل دون أن تفقد اتصالاتك الحالية. يتم ذلك بالأمر التالي:



systemctl reload nginx


بشكل افتراضي ، يتم تكوين Nginx ليبدأ تلقائيًا عند بدء تشغيل الخادم. يمكن تغيير هذا السلوك بالأمر التالي:



systemctl disable nginx


أعد تمكين Nginx Autostart عند تمهيد الخادم:



systemctl enable nginx


بشكل افتراضي ، يحتوي Nginx على مجموعة واحدة من قواعد كتل الخادم المكونة لمجال واحد. من المفترض أنك تستضيف موقعًا واحدًا فقط على الخادم الخاص بك. بشكل افتراضي ، يجب أن يكون موجودًا في الدليل /var/www/html.



افترض أنك تريد إنشاء مجموعات متعددة من كتل الخادم لمواقع متعددة في Nginx ، أو نقل ملفات الموقع الحالي إلى دليل مختلف /var/www/your_domain.



يتم ذلك باستخدام الأوامر التالية.



أولاً ، نقوم بإنشاء الدليل المطلوب على الخادم.



mkdir -p /var/www/your_domain/html


ثم نقوم بتعيين مالك هذا الدليل باستخدام متغير $USERيجب أن يتوافق مع المستخدم الحالي:



chown -R $USER:$USER /var/www/your_domain/html


نضع الصفحة الرئيسية في الدليل المحدد index.html.



ثم تحتاج إلى إنشاء مجموعة قواعد مناسبة لـ Nginx. في أي محرر نصوص ، أنشئ ملفًا /etc/nginx/sites-available/your_domainوانسخ التكوين من الملف الافتراضي هناك ، فقط باستخدام العنوان والمجال اللذين تم تغييرهما:



server {
listen 80;
listen [::]:80;

root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;

server_name your_domain www.your_domain;

location / {
try_files $uri $uri/ =404;
}
}


أخيرًا ، نقوم بتنشيط هذا التكوين عن طريق كتابة ارتباط رمزي لملف التكوين الجديد في الدليل sites-enabledالذي يقرأه Nginx عند التمهيد:



ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/


بعد إعادة التشغيل، سوف إنجن إكس عرض الصفحة المناسبة للطلبات your_domainو www.your_domain.



إدارة الخادم



ما الأسئلة التي يطرحها المستخدمون غالبًا عند إدارة خادم Linux؟ ما هي الأدوات التي يمكنك التوصية بها حتى للمسؤولين عديمي الخبرة؟



تركيب مشرف



المشرف هو نظام عميل / خادم يتحكم المسؤول من خلاله في العمليات على الخادم. تقوم الأداة بإنشاء عمليات كعمليات فرعية نيابة عنها.



تثبيت المشرف على Debian أو Ubuntu بسيط للغاية:



apt-get install supervisor


بعد ذلك ، يتم تشغيل البرنامج الخفي للمشرف بالفعل وسيبدأ عند كل تمهيد للنظام.



يتم تمرير البرامج الجديدة إلى المشرف من خلال ملفات التكوين في الدليل /etc/supervisor/conf.d. على سبيل المثال ، بالنسبة لبرنامج نصي ، long.shقد يبدو ملف التكوين كما يلي:



[program:long_script]
command=/usr/local/bin/long.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/long.err.log
stdout_logfile=/var/log/long.out.log


وفقًا لذلك ، سيتم تشغيل البرنامج النصي تلقائيًا عند كل تمهيد للنظام وإعادة التشغيل تلقائيًا إذا تم الخروج منه. يمكن أن تكون هذه القيمة "خطأ" (لا تقم بإعادة التشغيل) أو "غير متوقع" (إعادة التشغيل فقط في حالة الخروج برمز خطأ غير متوقع ، افتراضيًا ، أي رمز بخلاف 0 أو 2).



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



بعد إنشاء ملف تكوين لبرنامج معين ، نقوم بتشغيل أمرين حتى يقوم المشرف بإعادة قراءة التكوينات الجديدة وتطبيقها:



supervisorctl reread


supervisorctl update


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



تحتوي الأداة المساعدة supervisorctlعلى وضع تفاعلي تعمل فيه بدون وسيطات:



$ supervisorctl
long_script RUNNING pid 12614, uptime 1:49:37
supervisor>


في هذا الوضع ، يعرض Supervisorctl في البداية حالة ووقت تشغيل جميع البرامج تحت إشراف المشرف ، ثم سطر الأوامر. هناك يمكنك إدخال help- ومشاهدة قائمة بالأوامر المتاحة:



supervisor> help

default commands (type help ):
=====================================
add clear fg open quit remove restart start stop update
avail exit maintail pid reload reread shutdown status tail version


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



للخروج من المشرف ، استخدم Ctrl-C أو الأمر quit:



supervisor> quit


تحليل المساحة الخالية على القرص



الأداة القياسية لعرض المعلومات حول الأقسام المركبة هي df. يعرض قائمة بالأجهزة المتصلة ومعلومات حول المساحة المشغولة.



df  


يتيح الخيار -h إمكانية إخراج الإنسان القابل للقراءة (أي بالميغابايت أو الجيجابايت):



$ df -h
     % C 
devtmpfs 925M 0 925M 0% /dev
tmpfs 936M 56K 936M 1% /dev/shm
tmpfs 936M 1,9M 934M 1% /run
tmpfs 936M 0 936M 0% /sys/fs/cgroup
/dev/sda3 15G 11G 4,2G 71% /
tmpfs 936M 192K 936M 1% /tmp
/dev/sdb4 133G 126G 974M 100% /home
tmpfs 188M 20K 188M 1% /run/user/42
tmpfs 188M 7,1M 181M 4% /run/user/1000


معلومات حول دليل معين (على سبيل المثال / home):



df -h /home


معلومات حول الأقسام بنظام ملفات محدد:



df -h -t ext4


ابحث عن الملفات باستخدام الأمر find



البحث باسم الملف:



find -name "query"


البحث بالاسم غير حساس لحالة الأحرف:



find -iname "query"


البحث "العكسي" عن الملفات التي لا تطابق النمط المحدد:



find -not -name "query_to_avoid"


أو



find \! -name "query_to_avoid"


البحث حسب نوع الملف



find -type _ 


بعض الواصفات الشائعة هي:



  • و - ملف عادي

  • د - الدليل

  • ل - ارتباط رمزي

  • ج - حرف ملفات جهاز الإدخال / الإخراج

  • ب - حظر ملفات جهاز الإدخال / الإخراج


على سبيل المثال ، سيسرد الأمر التالي جميع أجهزة الإدخال / الإخراج ذات الأحرف المثبتة على النظام:



find / -type c
/dev/parport0
/dev/snd/seq
/dev/snd/timer
/dev/autofs
/dev/cpu/microcode
/dev/vcsa7
/dev/vcs7
/dev/vcsa6
/dev/vcs6
/dev/vcsa5
/dev/vcs5
/dev/vcsa4
. . .


يوجد مرشح حسب الحجم ووقت الوصول / التغيير. على سبيل المثال ، إليك أمر للعثور على جميع الملفات التي يقل حجمها عن 50 بايت:



find / -size -50c


ابحث عن جميع الملفات التي يزيد حجمها عن 700 ميغا بايت:



find / -size +700M


للبحث عن طريق وقت الوصول أو التعديل أو تغيير المعلومات الوصفية للملف ، يتم استخدام المعلمات "-atime" و "-mtime" و "-ctime" مع رموز زائد وناقص للإشارة إلى نطاق أكبر وأقل من النطاق المحدد ، على التوالي.



ابحث عن الملفات التي تم تعديلها قبل أقل من يوم:



find / -mtime -1


الملفات التي لها وقت وصول مضى أكثر من ثلاثة أيام:



find / -atime +3


الملفات التي تغيرت في اللحظة الأخيرة:



find / -mmin -1


الملفات الأحدث من الملف المحدد:



find / -newer myfile


البحث حسب المالك ('-user'، '-group') والملفات ذات الأذونات المحددة ('-perm') متاحة. في جميع الملفات التي تم العثور عليها ، يمكنك تنفيذ بعض الإجراءات فورًا ("-exec").



اختبار اتصالات TCP و UDP



يأتي Linux بعدد كبير من الأدوات المساعدة المفيدة. يستطيع بعض مسؤولي النظام أداء معظم المهام باستخدام الأدوات المدمجة فقط ، دون تثبيت برامج إضافية. السكين السويسري الحقيقي لأدوات Linux المضمنة هو أداة الشبكة netcat. بناء الجملة العام:



netcat [options] host port


يبدأ هذا الأمر اتصال TCP بالمضيف المحدد على المنفذ المحدد. إذا كنت تريد اختبار اتصال UDP بدلاً من TCP ، فحدد الخيار -u:



netcat -u host port


نطاق المنفذ:



netcat host startport-endport


في معظم الأنظمة ، يمكنك كتابة كلاهما netcatو nc.



فحص المنفذ



يعد فحص المنافذ أحد الاستخدامات النموذجية لبرنامج netcat ، -zويعني الخيار المسح الضوئي بدلاً من إنشاء اتصال. نستخدمه مع خيار -vعرض معلومات أكثر تفصيلاً عند فحص المنافذ من 1 إلى 1000:



netcat -z -v domain.com 1-1000


سيبدو الإخراج كما يلي:



nc: فشل الاتصال بمنفذ domain.com 1 (tcp): تم رفض الاتصال
nc: فشل الاتصال بمنفذ domain.com 2 (tcp): تم رفض الاتصال
nc: فشل الاتصال بمنفذ domain.com 3 (tcp): تم رفض الاتصال
nc: فشل الاتصال بمنفذ domain.com 4 (tcp): تم رفض الاتصال
nc: فشل الاتصال بمنفذ domain.com 5 (tcp): تم رفض الاتصال
nc: فشل الاتصال بمنفذ domain.com 6 (tcp): تم رفض الاتصال
nc: فشل الاتصال بمنفذ domain.com 7 (tcp): تم رفض الاتصال
... ... ...
نجح الاتصال بمنفذ domain.com 22 [tcp / ssh]!
... ... ...


ومع ذلك ، هناك برنامج أكثر تقدمًا وتخصصًا لهذه المهمة nmap. قم بتثبيته:



apt-get update
apt-get install nmap


توفر هذه الأداة معلومات أكثر تفصيلاً حول المنافذ. يحتوي سجل المنافذ المعروفة /usr/share/nmap/nmap-servicesعلى أكثر من 20 ألف سطر بما في ذلك حقول إضافية مثل متوسط ​​تكرار فتح منفذ معين على الخوادم على الإنترنت (العمود الثالث):



... ... ...
tcpmux 1 / tcp 0.001995 # TCP Port Service Multiplexer [rfc-1078]
tcpmux 1 / udp 0.001236 # TCP Port Service Multiplexer
Compressnet 2 / tcp 0.000013 # أداة إدارة
Compressnet 2 / udp 0.001845 # أداة إدارة
Compressnet 3 / tcp 0.001242 # عملية الضغط
Compressionnet 3 / udp 0.001532 # عملية الضغط
غير معروف 4 / tcp 0.000477
rje 5 / udp 0.000593 # إدخال وظيفة عن بُعد
غير معروف 6 / برنامج التعاون الفني 0.000502
صدى 7 / برنامج التعاون الفني 0.004855
صدى 7 / udp 0.024679
صدى 7 / sctp 0.000000
... ... ...


لا يوصى بإجراء عمليات فحص المنفذ على خادم خارجي ، حيث قد يربك مسؤول النظام هذه الإجراءات على أنها معادية. تم تصميم Nmap لاستكشاف الخادم الخاص به ، ويمكنك التجربة على خادم مخصص لأغراض الاختبار scanme.nmap.org.



يستغرق تنفيذ بعض الأوامر وقتًا طويلاً.



فحص نظام التشغيل على المضيف:



nmap -O 


مسح نطاق المضيف من xxx.xxx.xxx.xxx إلى yyy.yyy.yyy.yyy:



nmap -PN xxx.xxx.xxx.xxx-yyy.yyy.yyy.yyy


مسح نطاق الشبكة بحثًا عن الخدمات المتاحة:



nmap -sP _


فحص منفذ معين:



nmap -p _ 


فحص جميع منافذ TCP و UDP المفتوحة:



nmap -n -PN -sT -sU -p- 


دراسة إصدارات البرامج التي تعمل على المضيف:



nmap -PN -p _ 


هناك العديد من الأوامر والمعلمات وحالات الاستخدام الأخرى لـ nmap. يتيح لك فحص منافذ خادم VDS تحديد نواقل الهجوم المحتملة ونقاط الضعف ، حيث سيبدأ المهاجم إجراءاته بالمسح.



إعادة توجيه الرسائل والملفات



باستخدام المفتاح ، -lيمكنك الاستماع على منفذ معين على الخادم:



netcat -l 5438


على جهاز آخر ، نحدد الاتصال بالجهاز على هذا المنفذ:



netcat domain.com 5438


تم الآن إنشاء قناة اتصال بين النظامين. يمكن استخدامه لإرسال رسائل نصية.



يمكنك حتى نقل ملف بهذه الطريقة. للقيام بذلك ، أرسل أمر الاستماع مباشرة إلى الملف:



netcat -l 5438 > _


على جهاز كمبيوتر آخر ، بدلاً من إرسال رسالة نصية ، نقوم بإرسال الملف الأصلي إلى الإدخال:



netcat domain.com 5438 < _


وبالمثل ، يمكنك نقل جميع أنواع الأشياء ، على سبيل المثال ، محتويات الدلائل ، مضغوطة أثناء التنقل إلى tarball:



tar -czf - * | netcat domain.com 4444


بنفس الطريقة ، يمكنك إنشاء صورة قرص على جانب واحد ( dd) ، وإرسالها إلى المنفذ المحدد عبر اتصال TCP الذي تم إنشاؤه - واستلامها على النظام الآخر.



إضافة وإزالة المستخدمين



لإضافة مستخدمين وإزالتهم ومنحهم امتيازات ، sudoيجب عليك أولاً الاتصال بالخادم كجذر:



ssh root@ip__


بعد ذلك قم بإضافة المستخدم:



adduser newuser


في البداية ، ليس لديه أي امتيازات. ولكن إذا كان هذا هو المستخدم الرئيسي للنظام ، فيمكننا تعيين امتيازات إدارية له حتى يتمكن من أداء المهام الروتينية لصيانة الخادم وصيانته.



لتعيين الامتيازات الإدارية ، تحتاج إلى إضافة المستخدم إلى مجموعة sudo. يُسمح للمستخدمين في هذه المجموعة بتشغيل الأمر sudoمع رفع امتيازاتهم إلى المستوى الإداري.



usermod -aG sudo user1


بدلاً من ذلك ، نشير user1إلى اسم المستخدم الذي تمت إضافته مسبقًا. الآن سيكون قادرًا على تنفيذ أي أوامر من خلال sudo:



sudo 


بهذه الحقوق ، يمكن لهذا المستخدم حذف مستخدمين آخرين:



sudo deluser --remove-home username


--remove-homeيزيل هذا الخيار أيضًا الدليل الرئيسي للمستخدم.



الجذر نفسه لديه الحق في تنفيذ الأمر deluserبدون sudo.



بالطبع ، هذه ليست قائمة كاملة من الأدوات المفيدة لإدارة خادم VDS. ولكن غالبًا ما تُطرح هذه الأسئلة لمديري النظام المبتدئين الذين قاموا بإعداد خادمهم الأول ، وتثبيت نظام تشغيل ، والبدء في فهم عالم إدارة Linux.









All Articles