
#~ مقدمة
عندما نتكلم عن خدمة رفع الملفات إلى الخوادم ,, فإن أول ما يخطر ببالنا هو واحد من أخدم بروتوكولات نقل الملفات في تاريخ الشبكات الـ FTP protocol و أكثر قد جرب أن يقوم بتنزيل أو رفع ملف من خلاله و هو موجود بشكل أساسي في أجميع سيرفرات الاستضافة لسهولة إعداده و التعامل معه, لكن ثمة أشياء تسهلنا بها كمدراء أنظمة ألا و هي حماية المستخدم و التي تصب مباشرة في حماية خوادمنا فتركنا الاتصال بخوادمنا بشكل غير آمن إما أننا نسمح بالمستخدم anonymous و رفع الملفات أو بترك كلمات المرور غير مشفرة غير آمنة أو بترك المجال للمستخدمين بالتجول في الخادم دون عمل أي مقيدات عليه. بالدخول
في موضوعنا اليوم سنتطرق إلى عدة نقاط لا أريد تحديدها لأني نويت إن شاء الله أن أجدد هذا الموضوع و أجعله مرجعا لكل ما يخص هذا البروتوكول.
لنبدأ,,,
#~ التثبيت
في موضوعي الأن لن أقوم بتثبيت الـ FTP server فقط بل سأثبت معه الـ OpenSSL حيث نريكم الفرق عند استخدامه مع بروتوكولنا الـ FTP
#~ الإعدادات
ملف إعدادات الـ FTP توجد في “/etc/vsftpd”
ويتكون المجلد من الشكل التالي
/etc/vsftpd/
|– ftpusers
|– user_list
|– vsftpd.conf
`– vsftpd_conf_migrate.sh
حيث أن ..
- ftpusers: ملف نضع فيها أسماء المستخدمين الغير مسموح لهم بالدخلول عبر هذا البروتوكول,, بالطبع تستطيع أن تضيف إليه من تشاء من مستخدمين النظام
- user_list: هذا الملف في حالته الافتراضيع يعمل نفس عمل الملف السابق, أما إن أضفت إلى ملف إعدادات الـ FTP هذا السطر”userlist_deny=NO” فسيقوم بالسماح فقط للمستخدمين الموجودين فيه بالدخول. نستخدمه إذا كان عدد المستخدمين المحظورين كبير و المسموح لهم أقل
- vsftpd_confg_migrate.sh: هو سكريبت يقوم بأخذ نسخة احتياطية من ملف إعدادات الـ FTP
- vsftpd.conf: هو ملف إعدادات الـ FTP و هو الذي يحتوي على كل ما نحتاجة لتشغيل الخدمة و كيفية تعاملها مع المستخدمين و مجلداتهم و تصاريحهم.
لندخل ملف الإعدادات الأن ,,,
- نمنع المستخدم anonymous حيث أنه موجود بشكل افتراضي
ابحث عن
anonymous_enable=YES
و اجعلها
anonymous_enable=No
- إن أردت أن تسمح برفع المفات للـ anonymous user (يجب ألا تقوم بالخطوة السابقة)
افتراضيا فإن هذه المستخدم تحديدا مقيد في المجلد “/var/pub“
ابحث عن
#anon_upload_enable=yes
واجعلها
anon_upload_enable=no
- إن أردت منع رفع الملفات لكافة المستخدمين(لا يخص الـ anonymous)
ابحث عن
write_enable=yes
واجعلها
write_enable=no
هناك الكثير من الإعدادات الأخرى سأضيفها حين توفر الوقت إن شاء الله
الأن احفظ التغيرات و أعد تشغيل الخدمة
#~ إعادة تشغيل الخدمة
#~ إعداد الـ SELinux
#~إضافة مستخدم جديد للنظام
بشكل افتراضي, كل مستخدم على النظام له حساب على FTP server و بالطبع هذا أمر خطر و يهدد حماية خادمك
يكون مجلد المستخدم “/home/userName”هو المجلد الإفتراضي له ما لم تقم بتغيّره
- تستطيع أن تمنع هذا المستخدم من الدخول على النظام عن طريق الـ SSH وتسمح فقط بالـ FTP
الأن سنقوم بتسجيل الدخول بحساب FTP للمستخدم “nosec” و قبلها سنشغل برنامج الـ Wireshark لنرى ماذا سيحدث!!
أرئيت؟!! اسم المستخدم و كلمة المرور تم التقاطهما بشكل سهل جدا فلو كنت في شبكتك و عملت عملية Sniffing بسيطة جدا على جهازك لعرفت حسابك و كلمة مرورك لأن الملفات تذهب بدون أي تشفير. إذن ما الحل؟
الحل هو أن نعمل شهادات لتشفير الاتصال بين الخادم و العميل و نجبر جميع المستخدمين أن يستخدموا طريقة الاتصال الأمن في برامجهم
#~ إعداد الـ SSL
- إنشاء شهادة للـ FTP بنوع تشفير قوي و مفتاح طويل
في الأمر السابق أنشأنا مفتاح مدته 365 يوم و نوع تشفير RSA و طول المفتاح 1024-bit و خزناه في نفس مجلد إعدادات الـ FTP server.
طبعا عند إنشاء شهادة يجب أن تعطي بعض المعلومات ليتم كتابتها في هذه الشهادة فعند تنفيذ الأمر سيبدأ التالي و هو عبارة عن أسئلة خفيفة يتم الإجابة عليها ولن أقوم بشرحها لأنها واضحة جدا
Generating a 1024 bit RSA private key
………….++++++
…………………………..++++++
writing new private key to ‘/etc/vsftpd/vsftpd.pem’
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [GB]:KS
State or Province Name (full name) [Berkshire]:Kingdom
Locality Name (eg, city) [Newbury]:Riyadh
Organization Name (eg, company) [My Company Ltd]:Forbidden Zone
Organizational Unit Name (eg, section) []:Control Room
Common Name (eg, your name or your server’s hostname) []:forbidden-zone
Email Address []:king-sabrii@hotmail.com
- الأن نفتح ملف إعدادات الـ FTP من جديد
ونضع في آخره ما يلي
#–> Allow SSL FTP
ssl_enable=YES
allow_anon_ssl=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
rsa_cert_file=/etc/vsftpd/vsftpd.pem#–> END
ملاحظة: لقد أجبرت المستخدم على استخدام الطريقة الأمنه و إن كنت تريد الأمر اختياريا للمستخدم فغير قيمة السطر force_local_logins_ssl=YES إلى NO
- الأن أعد تشغيل خدمة الـ FTP و إن أحببت اجعله يعمل عند بدئ التشغيل
وعندما تدخل ببرنامج العميل سيكون الاختيار كالتالي
رائع!! قبل تسجيل الدخول بشكل آمن نشغل برنامج الـ Wireshark ثم نراقب المخرجات بعد تجيل الدخول,, و ستكون النتيجة كالتالي..
أعتقد الفرق واضح!!
#~ تحديد مساحة محددة للمستخدم
من الخطأ أن تسمح للمستخدمين برفع ملفاتهم دون تحجيم المساحة المسموح بها لكل مستخدم بناء على ما يلزمه بشكل حقيقي فقد يتسبب هذا بامتلاء المساحة التخزينية دون فائدة
- نضيف اختيار للبارتيشن بأن يسمح بتحديد المساحات (لن تقوم بعمل هذه الخطوة إلا أول مرة فقط)
سأفترض هنا أنك جعلت كل المستخدمين يرفعون ملفاتهم في مجلدهم الرئيسي و ليس على قرص خارجي أو على خادم أخر
نفتح الملف “/etc/fstab”
فسنجده بشكله الافتراضي هكذا
LABEL=/ / ext3 defaults 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-hda2 swap swap defaults 0 0
و نصيف إلى المجلد الجذر بعض الخيارات ليصبح شكل الملف كالتالي(انتبه للون الأحمر)
LABEL=/ / ext3 defaults,usrquota 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
LABEL=SWAP-hda2 swap swap defaults 0 0
- نعيد تطبيق ما حدث من سطر الأوامر لكي لا نضطر لإعادة التشغيل حاليا (لن تقوم بعمل هذه الخطوة إلا أول مرة فقط)
- إنشاء قاعدة البيانات و التي سيتم تخزين بيانات المستخدمين فيها لاحقا و اسم الملف “quota.user” (لن تقوم بعمل هذه الخطوة إلا أول مرة فقط)
- تحديد مساحة للمستخدم
يجب أن نشير أن هناك ثلاثة قيم يجب إعطاءها: 1- أقل مساحة. 2- أقصى مساحة. 3- رقم الـ inode. ولن أتعمق في كلها بل يكفي أن تعرف أقصى مساحة تريد أن تسمح بها للمستخدم لكن بالكيلوبايت
كما جعلنا أقصى مساحة يستخدمها المستخدم nosec للمجلد /home هي 500 ميجابايت.
- نشغل خاصية تحديد المساحات
- لعرض جميع المستخدمين مع المساحات المحددة لهم على مجلد معين وهنا هو المجلد الرئيسي لهم
حتى هنا أكون أنهيت بعض ما أريد أن أضعه في الـ FTP server وللحديث بقية إن شاء الله و أي تحديث سيكون في نفس الموضوع
تحياتي و احترامي
Popularity: 35% [?]
Related posts:



تدوية جد جميله يا رائع
شكرا ليك يا ورد وتمت الاضافة بالمفضله
[Translate]
good or bad:
0
0
مرحبا بك يا بطل و إن شاء الله يفيدك الموضوع
شاكر لك كلامك الجميل
تحياتي و احترامي
[Translate]
good or bad:
1
0
merci beaucoup
[Translate]
good or bad:
0
0
اليوم رجعت للموضوع وطبقته على جهازي المنزلي وكان الشرح تمام التمام 100% يا ورد
لكن حاولت ان اطبق الااومر وابحث قليللا لتطبيقها على سيرفر يحتوي سيبنل
و pure-ftp
يبدوا ان هناك اختلاف قليلا في بعض المتغيرات والاوامر رح احاول اجد حل بأذن لله
تسلم يا غالي
[Translate]
good or bad:
0
0
مرحبا ,,,
الحمدلله إنه ظبط معاك ,,
بالنسبه للسي بانيل ,, بصراحة بعد تجربة سيئة مع عالم الهوستينج ,, لكنها تمشي النظام على مزاجها و أنا أكره هذا ,,
مع الوقت تصبح CPanel Administrator و ليس Linux Admin و الدليل هناك كثير خبرتهم واسعة في الاستضافة و لكن في اللينوكس كنظام على قدمهم جدا
الفروقات في ملفات الإعدادات بسيطة و لن تخرج عن معرفتك ,, إنت قدها و قدود
[Translate]
good or bad:
0
0