Home Previous Up Next5.2 العمل في الشبكات
حول
المحتويات
مشاريع
ثواب
مقالات
تنزيل
English

5.2 العمل في الشبكات

اقتباسات هذا الفصل:

  • "هناك نوعان من الأغبياء، الذين لم يتسلقوا جبل فوجي، والذين أعادو الكرة وتسلقوه مرة أخرى."
        -- مثل ياباني قديم

محتويات هذا الفصل:

5.2.1 أدوات التشخيص

يمكنك التأكد من أن عقدة(جهاز بالعامية) ما مرتبطة بالشبكة وتعمل وأنها مرئية لك بأن تطلب منها رد الصدى وذلك بالأمر ping الذي يمكنك أن تمرر له اسم أو عنوان العقدة التي تريد:

bash$ ping linux4arab.com
bash$ ping -c 4 127.0.0.1
هذا البرنامج دون خيارات يظل يعمل يرسل طلب وينتظر تلقي إجابة لفترة ثم طلب آخر وهكذا إلى أن تضغط على CTRL+C أو ينتهي من العدد الذي حددته بالخيار -c عندها يعرض تقرير كم طلب أرسل وكم عاد ونسبة الفقد والزمن الأعلى والأدنى والمتوسط للرحلة. يستعمل هذا الأمر البروتوكول ICMP. ويمكن الاستفادة منه في دراسة سرعة الشبكة (عرض الحزمة) bandwidth. يمكن للجذر أن يستعمل الخيار -f الذي يقوم بفيض من الطلبات flood دون فاصل كما في هجوم حجب الخدمة DoS، ويتوقع هنا بشكل طبيعي أن تحصل على بعض الفقد (يمكن أن لا يحدث فقد في الشبكات السريعة) ولأن عرض سطر عن كل طلب من آلاف الطلبات ليس منطقياً يقوم الأمر بكتابة نقطة (.) في كل طلب وحذف نقطة عند استلام الرد.
 تلميح

جاء اسم أمر طلب رد الصدى ping من لعبة تنس الطاولة ping-pong حيث يسمى صوت الإرسال ping وصوت الاستقبال pong. لهذا نقول أن أمر ping يرسل إشارة ping ويستقبل اشارة pong.

لمعرفة العنوان الذي حصلت عليه سواء من مزود خدمة الإنترنت أو بواسطة برنامج مخدوم client من أحد خادمات DHCP أو BOOTP أو RARP (الخادمات الثلاثة مرتبة من الأحدث إلى الأقدم) أو حتى قمت بتحديد قيمة ثابتة له أثناء تركيب لينكس أو إعداد الشبكة أو بأي طريقة أخرى؛ نفذ الأمر ifconfig اختصاراً ل interface config ستجد حقلاً لكل واجهة شبكة (بطاقة) مثلاً lo و eth0... إلخ لكل منها هناك iaddr مثلاً مقابل lo ستجد 127.0.0.1 ويمكن أن تجد حقلاً في بطاقات الإيثرنت لعنوان البطاقة hardware address أي MAC وهو عنوان تضعه الشركة الصانعة ولا يتكرر أبداً. يمكن إيقاف (تثبيط) واجهة بالخيار down كما ifconfig eth0 down ويمكن تفعيل واجهة بتحديد العنوان ثم up

bash# ifconfig
bash# ifconfig lo 127.0.0.1 up
bash# ifconfig eth0 192.168.32.117 up
من يقوم بهذا يكون أحد ملفات /etc/init.d ويعتمد كيفية إعداده على التوزيعة.
 تلميح

لإعداد الواجهة الاسلكية (بطاقة الشبكة Wi-Fi) بطريقة مشابهة لأداة ifconfig نستعمل iwconfig التي تأتي مع حزمة wireless-tools.

يمكن استعمال الأداة host للتحويل من اسم إلى عنوان رقم host jolug.org ويمكن للأداة ipcalc بالخيار h أن تقوم بالعملية العكسية. ويمكنك تعرف وتحويل الأرقام في ملف log أو خرج تنفيذ أمر إلى الأسماء تلقائياً باستعمال adnsresfilter مثلاً

bash# cat /var/log/logfile | adnsresfilter
bash# netstat -n | adnsresfilter
bash# tcpdump -ln | adnsresfilter
ولاختبار خدمة DNS من جهة المخدوم نستعمل dig مثلاً dig foo.mybob.net التي تعيد أي خادم DNS استجاب وحوّلها من اسم إلى عنوان وكيف حصل على ذلك، في المقابل تعمل الأداة dnstop (قد لا تكون متوفرة مسبقاً في توزيعتك) بطريقة عرض مشابهة لبرامج top لمراقبة عمل خادم DNS من الخادم نفسه. ويمكن تتبع كيفية توجيه الرزم pockets routing وذلك بعرض كل العقد التي تمر بها منذ خروجها من عندك وحتى تصل هدفها، بواسطة الأداة traceroute مثلاً traceroute somewhere.com التي تعرض كل العقد التي تمر بها من عندك إلى somewhere.com مروراً ببوابة الشبكة المحلية أو جدار النار إلى الموجه router الخاص بمزود خدمة الإنترنت ISP ...إلخ، برامج xt (قد لا يكون متوفراً مسبقاً في توزيعتك) يقوم بعمل traceroute رسومياً على خارطة للعالم!

ويمكن استعمال whois متبوعة باسم الجهاز الذي تريد معرفة عنوانه متبوع ب @ متبوع باسم أو رقم أحد هذه الخادمات مسبقوقة ب whois. (بالنسبة للإنترنت لدينا ripe.net و radb.net cw.net وكلها تعطي نفس النتيجة مثلاً whois google.com@whois.radb.net ) الذي يستعمل بروتوكول آخر غير DNS

يمكن عرض جدول التوجيه route من خلال أمر يحمل نفس الاسم route ويمكن الإضافة والتعديل بتمرير معاملات مناسبة. وكما ذكرنا إن مهمة هذا الجدول تحديد الواجهة(البطاقة) التي ستسلكها الرزم pockets الخارجة وذلك من عنوانها. كأن نقول أن العقدة ذات العنوان 172.17.0.5 تصلها بسلوك طريق الإيثرنت الأول eth0

bash# route add -host 172.17.0.5 eth0
كذلك الشبكة 192.168.10.0/24 ولكن باقي العناوين (الوجهة التلقائية default) فلتذهب عبر المودم ppp0
bash# route add -net 192.168.10.0/24 eth0
bash# route add default ppp0
ولأن ppp تحتوي على طرفين فقط لا نحدد عنوان أما إذا كانت العناوين الأخرى ستذهب عبر الإيثرنت الثاني eth1 إلى جهاز يمثل بوابة الوصول مع الإنترنت فإننا بحاجة لتحديد عنوانه بواسطة gw أي gateway
route add default gw 192.168.0.1 eth1. لتعديل أحد قواعد التوجيه عليك حذفها أولاً (بنفس الطريقة السابقة مع وضع del مكان add) ثم إضافة البديل ، تقوم أداة ifconfig الذكية بوضع قيم مناسبة في هذا الجدول فعند إعطاء lo العنوان 127.0.0.1 فإن هذا يضيف ضمنياً قاعدة التمرير التالية route add -host 127.0.0.1 lo، وعند إعطاء eth0 العنوان 192.168.1.15 فإن هذا تلقائياً يضيف route add -net 192.168.1.0/24 eth0. أما جداول التوجيه الديناميكية فأنت بحاجة لبرامج خادمات مثل routed و gated الأول يستعمل RIP والثاني يدعم بروتوكول أكثر تطوراً إضافة إلى RIP. جيل جديد من الأدوات في حزمة iproute يقدم أداة واحدة تعالج الواجهات (كما ifconfig) وجداول التمرير (كما route) بأمر واحد هو "ip" مثلاً لعرض الواجهات والعناوين (كما ifconfig دون معاملات) "ip link show" لعرض جدول التوجيه (كما route دون معاملات) "ip route show"، لإعطاء عنوان لواجهة "ip link set eth0 address 192.168.10.117". وتذكر دائماً أنه لا يمكنك أن تجمع بين الأسلوبين ifconfig+route و iproute.

الأداة fuser التي تحدثنا عنها في فصل 4.2 عودة إلى سطر الأوامر التي يمكنها أن تعرض لك أي البرامج تستعمل ملفات معينة يمكنها أيضاً أن تخبرك عن البرامج التي تستعمل منافذ معينة أو عناوين معينة وذلك بواسطة الخيار n متبوعاً بأحد tcp أو udp بحسب نوع المنفذ ثم رقم المنفذ على جهازك مثلاً fuser -v -n tcp 80 ستعرض لك خادمات الإنترنت ويب إن وجدت (غالباً tux أو apache) يمكن استعمال صيغة أخرى هي المنفذ على البروتوكول فالمثال السابق يمكن كتابته أيضاً fuser -v 80/tcp. أيضاً بالخيار 4 أو 6 بحسب نوع العناوين IPv4 أو IPv6 يمكنك أن تعرض أي البرامج يتصل من منفذ في جهازك إلى منفذ في عقدة بعيدة على عنوان محدد وذلك بتمرير المنفذ عندك ‘,‘ ثم العنوان ثم ‘,‘ ثم المنفذ البعيد (كلها اختيارية إلا الفواصل) مثلاً لمعرفة من يتصفح الشبكة fuser -v -4 ,,80

الأمر netstat يعرض معلومات مختلفة عن الشبكة منها تقارير إحصائية statistics عن حالة الشبكة (دخل/خرج/فشل من كل بروتوكول) عند استعمال الخيار s أي الأمر netstat -s. netstat يمكنه معرفة أي البرامج فتحت أي المنافذ في جهازك على شكل رقم المنفذ وما يقابلها من برنامج(خدمة) ومعرفه PID بواسطة الخيار p ويمكن تحديد إظهار العناوين والمنافذ على شكل أرقام بواسطة n وليس أسماء، يعرض البرامج التي تتصل وليس الخادمات لعرض الخادمات استعمل الخيار l أي listening لعرض الإثنين فإن الخيار a ، الخيار t يعرض tcp و u يعرض udp من الصيغ المفيدة للأمر netstat -tnlp | less و netstat -unlp | less فهو يعرض الخادمات التي تستعمل المنافذ الخاصة ببروتوكولات tcp و udp على التوالي. الخيار x يعرض المحلية (أي local unix socket) الخيار c يحدث المعلومات تلقائياً ويظل يعمل حتى تضغط CTRL+C. من الأدوات الأخرى التي تعمل بنفس الطريقة lsof -i | less يمكن استعمال grep للبحث. وهناك الكثير من الأدوات الأخرى لمراقبة أداء الشبكة مثل "mtr" و "bing" (الذي يقيس عرض الحزمة بين نقطتين عبر قياس الزمن إرجاع الصدى في بروتوكول ICMP) و "iptraf" (الذي يقيس عرض الحزمة وأداء الشبكة لبروتوكولي TCP و UDP) و "ipfm" (الذي يقدر عرض الحزمة بحساب حجم البيانات المرسلة عبر وصلة الإنترنت) وأما "bwm" و "pktstat" (الذي يقرأ جزء من كل إتصالات HTTP و FTP لعرض الملف الذي تتعامل معه) و "iftop" وهم لعرض حزمة الشبكة كما top لشغل الذاكرة والمعالج، وحتى للشبكات اللاسلكية مثل "wavemon" وهناك برامج رسومية لإعطاء معلومات عن الشبكة مثل gnome-netinfo وهي جزء من حزمة gnome-network (انظر www.gnome.org/projects/gnome-network).

في المقابل البرنامج nmap وهو سابر منافذ port scanner يعطي المنافذ المفتوحة لأي عقدة في الشبكة كما هو مرئي للعقدة التي نُفذ منها بالطريقة الأصعب وهي محاولة الإتصال عليها (برنامج nmapfe الموجود على حزمة منفصلة يقدم واجهة رسومية GTK+ له) مثلاً nmap -v 192.168.20.1 يمكن للعنوان أن يكون عنوان في شبكة محلية أو في الإنترنت أو حتى عنوان شبكة كاملة مثلاً لعرض أي العقد في الشبكة تعمل الآن nmap -v -sL -O 192.168.25.0/24 يسبر المنافذ المفتوحة في شبكة "192.168.25.X" - الخيار sL يعني List Scan فقط لإيجاد العقد والخيار O ليخبرك ما هو اسم نظام التشغيل الذي تعمل عليه (نعم يمكنه أن يعرف ذلك عن بعد)، في المثال التالي سبرنا العقدة "172.20.0.5" التي تعمل بنظام ويندوز 2000 و العقدة "172.20.0.2" التي تعمل بنظام لينكس 2.4 (دون جدار نار) :

bash# nmap -O 172.20.0.5
Starting nmap V. 3.10 ( www.insecure.org/nmap/ )
Interesting ports on 172.20.0.5:
(The 1601 ports scanned but not shown below are in state: closed)
Port       State       Service
135/tcp    open        loc-srv                 
139/tcp    open        netbios-ssn             
445/tcp    open        microsoft-ds            
1025/tcp   open        NFS-or-IIS              
Remote operating system guess: Windows Millennium Edition (Me), Win 2000, or WinXP

Nmap run completed -- 1 IP address (1 host up) scanned in 1.291 seconds
bash# nmap -O 172.20.0.2
Starting nmap V. 3.10 ( www.insecure.org/nmap/ )
Interesting ports on 172.20.0.2:
(The 1604 ports scanned but not shown below are in state: closed)
Port       State       Service
68/tcp     open        dhcpclient              
Remote operating system guess: Linux Kernel 2.4.0 - 2.5.20
Uptime 0.005 days (since Thu Mar 10 09:11:58 2005)

Nmap run completed -- 1 IP address (1 host up) scanned in 6.144 seconds
bash# 
وإذا كان جدار النار يمنع ICMP-ping يمكنك استعمال الخيار P0 أو PT80 (حيث 80 هو منفذ تظنه مفتوحاً) ويمكنه أن يستقبل العناوين بمرونة شديدة مثلاً nmap -v --randomize_hosts -O -p 80 '127-222.*.2.3-5' تبحث وبترتيب عشوائي عن عقد متصلة بالإنترنت تتراوح عناوينها بالهيئة 127-222.*.2.3-5 وعرض نظام التشغيل والخيار p لسبر منفذ 80 (يمكن تحديد أكثر من منفذ أو مدى منافذ بواسطة - ونفصلها بفواصل) ومعرفة حالته (يمكن أيضاً استعمال sL ولكن للتغيير فقط) هذا ما يفعله المخترقون بحثاً عن ضحية وبمعرفة نظامه والخادمات عنده يحدد طريقة الهجوم المُثلى. يمكن لهذا البرنامج القيام بسبر المنافذ بعدة طرق منها sU لسبر منافذ udp و sS طريقة Syn وهي للجذر فقط و sT بواسطة اتصال tcp عادي و sF و sX و sN (الثلاث الأخيرة لا تنجح مع ويندوز) مثلاً يمكنك سبر غوغل بواسطة nmap -v -sS -O google.com ومايكروسوفت nmap -v -P0 -sS -O microsoft.com وعلى عكس الأداتين السابقتين netstat و lsof يعمل nmap عن بعد كما أنه يعطي نتائج صحيحة حتى لو كان الجهاز البعيد مصاب لنقُل بهجوم rootkit. ولكن يمكن لجدار النار أن يخدع nmap ليس فقط بحجب بعض المنافذ بل وبإيهامه بأن منفذاً ما مغلق مع أنه مفتوح للجميع. ولأن nmap ينفذ عن بعد فإنه لا يعطي PID. يمكن للسبر بطريقة sT أن يخبرك بالمستخدم الذي يعمل به الخادم على كل منفذ إذا كان الخادم يشغل خدمة identd المستخدمة في irc فإن إضافة الخيار I إلى sT يسمح لك بذلك.

يمكنك تسريع عملية السبر بتحديد منافذ معينة فقط مثلاً -p 20-250,500-600,5990-7000 ، الخيار F يستعمل قائمة تأتي مع البرنامج بأهم المنافذ لحصر السبر بها. يمكنك إرسال ناتج السبر إلى ملف تقرير بالخيار oN متبوع باسم الملف. إذا مللت الإنتظار اضغط CTRL+C ثم تابع في ما بعد بالخيار --resume logfile حيث logfile هو التقرير المخزن بالخيار oN.

هناك سابرات أقل شهرة من nmap مثل pnscan الذي يدعم multi threads ليكون أسرع (لكنه يوفر مزايا أقل)، و knocker (انظر http://knocker.sf.net) سابر منافذ TCP بسيط وسهل الاستعمال يدعم threads، و nwatch سابر منافذ منفعل "passive port scanner" يعرض المنافذ بمجرد استعمالها حيث صمم كما sniffers بحيث يتمكن من عرض المنافذ المفتوحة لوقت قصير.

كما ذكرنا يمكن معرفة نظام التشغيل على جهاز بعيد بواسطة nmap ولكنه ليس الوحيد في هذا المجال فهناك بعض البرامج المتخصصة مثل queso و xprobe و p0f (اختصاراً لPassive OS fingerprinting) وهذا الأخير يمكنه ذلك دون إرسال بيانات كما يمكنه أن يجد بعد ذلك الجهاز أو تركيب الشبكة المحلية خصوصاً إذا شغلناه على بوابة الشبكة gateway.

يمكن استعمال telnet للدخول (دون تشفير) على خادم telnet عن بعد وتنفيذ أوامر عليه ولكن يمكن له أيضاً الدخول على منفذ (أي منفذ) والسماح لك بالتحدث مباشرة مع الخادم العامل على ذلك المنفذ مثلاً اكتب telnet foo.net 80 للدخول إلى خادم ويب على foo.net ستحصل على اسم الخادم ومحث ثم اكتب QUIT للخروج. ولكن مشلكة telnet لهذا الغرض أنه يعمل على تحويل بعض الرموز التي يرسلها ويستقبلها لنفسه على أنها أوامر له وليس للخادم فهو على سبيل المثال يتوقف عند استقبل رمز EOF أي end of file. لهذا تعتبر أداة netcat أو nc بالنسبة للشبكات كما السكين السويسرية متعددة الأغراض للجيش (هكذا يقول كاتب هذا البرنامج) تكمن قوتها في بساطتها فهي تعمل كما برنامج cat على أخذ الدخل القياسي وإرساله إلى ... حسناً، إلى منفذ معين (وبروتوكول معين) وانتظار الرد وطباعته على الخرج القياسي. كما يمكن أن تعمل هذه "القطة" كخادم بالخيار l لينتظر اتصال معين ويطبع ما يستقبله على الخرج القياسي. تفيد هذه الأداة في دراسة وتعلم كيف يعمل خادم معين وفي بناء برامج شبكات بواسطة نصوص برمجية انظر /usr/share/doc/netcat/examples حيث ستجد متصفح ومحرك بحث وحتى سابر منافذ! صيغة هذه الأداة بسيطة اكتب العنوان ثم المنفذ ويجب أن يكون هناك برنامج على الطرف الآخر يستمع إلى هذا المنفذ مثلاً nc -w 2 172.17.0.1 80 (استعملنا الخيار w لتحديد الزمن الأقصى للانتظار بثانيتين) تحاول الإتصال مع خادم ويب على الطرف الآخر فإذا كان قد تحصل على رسالة ترحيبية يظهر فيها اسمه و محث لتتحدث مع ذلك الخادم "وجهاً لوجه" في مثالنا عبر بروتوكول HTTP مثلاً اكتب GET /index.html ثم إدخال ENTER وهي تعني وفق بروتوكول "HTTP/0.9" أنك تطلب من ذلك الخادم إرسال ملف index.html لتراه أمامك، يمكنك تخزين الملف وفتحه في متصفح لتتأكد مثلاَ echo -n -e "GET /\r\n" | nc www.yahoo.com 80 > yahoo.html، مثال آخر لتنزيل ملف من الموقع URL التالي http://www.cltb.net/downloads/copyleft.tar.gz وحفظه في ملف، اكتب
echo -n -e "GET /downloads/copyleft.tar.gz\r\n" | nc -w 30 www.cltb.net 80 > copyleft.tgz
،هذا فعلياً ما يفعله متصفح الإنترنت انظر مثال خادم ويب بواسطة nc في هذا البند. يعمل هذا البرنامج عبر بروتوكول tcp فإذا أردت udp يمكنك استعمال الخيار u. يمكنك عمل برنامج chat سخيف وبسيط بتشغيل nc -l -p 1234 لنعمل خادمنا البسيط (الخيار p لتحديد المنفذ) ، وعلى الجهاز الآخر nc -w 2 192.168.20.1 1234 حيث العنوان هو عنوان الجهاز الأول(الخادم) الآن كتب أي كلام ثم CTRL+C لتراه على الخادم، لنعمل خادم ويب لعبة ونفتح متصفح لنرى ماذا سيحدث أولاً أغلق خادم apache أو أي خادم ويب آخر إن وجد ثم اكتب 'nc -l -p 80' خادمنا يعمل، الآن افتح أي متصفح وضع عنوان الخادم إذا كان نفس الجهاز اكتب في العنوان 'http://127.0.0.1' الآن عندما يبدأ المتصفح بالتحدث مع الخادم انظر إلى خادمنا تجده استقبل طلباً كما سنرى اكتب ردك بلغة HTML ثم اضغط CTRL+C كما يلي:

bash# nc -l -p 80
... open a browser then you see:
GET / HTTP/1.1
Host: 127.0.0.1
... the rest of the output is omitted ...
... Type the following ...
HTTP/1.1 200 OK
Connection: close

<html><body>
<h1>NetCat Toy Web Server</h1>
</body></html>
اضغط "CTRL+C" ثم عد للمتصفح وانظر النتيجة. يمكنك استعماله كبرنامج أرشفة عن بعد مثلاً شغله على جهاز كخادم لينتظر ملف tar ويفك ضغطه nc -l -p 4321 | tar -xvpz وعلى الآخر أرسل له الملف tar -cvpzf - /home/ali/foo | nc -w 3 -p 4321 foo.net حيث foo.net هو الخادم الأول.

5.2.2 خدمة ويب وبرتوكول http

خدمة ويب web الأكثر شيوعاً في الإنترنت وهي طريقة لتصدير الملفات عبر الشبكة بل وحتى يمكن توليد هذه الملفات عبر لغة برمجة أو من قاعدة بيانات. الوصول لهذه الخدمة يتم عن طريق متصفح رسومي مثل mozilla و epiphany و konqueror أو متصفح نصي مثل links و lynx. إذا كان الربط يتم عن طريق خادم وكيل proxy (يسمى أحياناً web cache) فعليك إعلام المتصفح إذا كنت تستعمل mozilla يكون ذلك edit -> preferences -> advanced -> proxy وفي konqueror يمكن عمل ذلك بواسطة setting -> configure konqueror -> proxy أو من مركز تحكم KDE. أما epiphany في غنوم 2.6 فيعد من خلال مركز تحكم غنوم Gnome menu -> preferences -> proxy لا تنس في جميع الحالات أن تذكر تخطي الخادم الوكيل للعناوين المحلية مثلاً 127.0.0.1, 172.17.0.0/16 . ويوجد خيار بمعرفة ذلك من خلال متغيرات البيئة مثل http_proxy (بالنسبة لبروتوكول ftp نستعمل ftp_proxy) ويمكن أن تضع ذلك في ملفات /etc/profile

bash# echo "export http_proxy='http://proxy.mysite.com:8080/'" \
	>> /etc/profile
أو لك وحدك في ملف ~/.bashrc
bash$ echo "export http_proxy='http://ali:foobar@192.168.0.1:3128/'" \
	>> ~/.bashrc
حتى لو لم تكن تريد طريقة متغيرات البيئة يفضل أن تحدد قيمة هذا المتغير لأن برامج سطر الأوامر مثل wget و apt-get تستعمله.

أفضل أداة لتنزيل ملفات download من خادمات http أو ftp هي wget دون أدنى شك ببساطة wget http://foo.site.net/getme تعمل على تنزيل الملف getme من الموقع المحدد فإذا توقف التزيل لأي سبب يمكنك المتابعة في وقت لاحق ب wget -c http://foo.site.net/getme لا يتوقف الأمر عند هذا الحد بل يمكنك وضع كل الوصلات URL's التي تريد في ملف نصي wget -i FILE أو حتى تنزيل كل الوصلات من ملف HTML بإضافة الخيار -F يمكنك تحديد عدد المحاولات ب -t N وصفر تعني عدد لا نهائي. يمكنك تحديد أين تذهب الملفات بدلاً من الدليل الحالي ب -P PREFIX يمكنك تحديد نموذج الملفات التي يقبلها أو يرفضها من خلال -A PATLIST -R PATLIST يمكنك تنزيل ملف والملفات التي لها وصلات على نفس الخادم ب -r و تضيف خادمات أخرى ب -H -D HOSTLIST وتحديد العمق (ملف أ به وصله إلى ب، ملف ب به وصلة إلى جـ) ب -l N.

5.2.3 ملفات عن بعد

هناك أكثر من طريقة للوصول إلى الملفات عن بعد منها: NFS و FTP و FISH و SMB المسمى samba. NFS خاص بعالم يونكس و FTP خاص بعالم ويب و SMB عالم ويندوز (على الرغم من هذا فهو جيد، يجدر بي أن أشير إلى أن مايكروسوفت لا علاقة لها samba لا كخادم ولا كمخدوم) أما FISH وعلى الرغم من اسمه المضحك القادم من File transmission over Shell إلا أنهما أكثر أمناً لأنه يستغل أمن ssh الذي سنتحدث عنه لاحقاً.

البرتوكول الأول الذي سنتحدث عنه هو nsf أي network file system أي نظام الملفات الشبكي ببساطة شغل nfsd على الخادم هذا يسمح للمخدوم بضم mount الملفات البعيدة إلى مجلد فارغ لديه بكتابة mount -t nfs 192.168.17.1:/my/dir /mnt/far أو mount -t nfs foobar.com:/my/dir /mnt/far يمكن إضافة الخيارات -o ro,hard حيث أن hard تجعل الأمر يتوقف(يعلق) حتى يحدث الاتصال أو soft التي يمكن أن تخرج دون نجاح لأن الخادم مغلق مثلاً.

طريقة أخرى للحصول على نفس النتيجة ولكن عبر بروتوكول آخر هو ftp أي File transefere protocol والتي تعني بروتوكول نقل الملفات وهناك أكثر من مراقب يوفر هذه الخدمة مثل gftpd و wu-ftpd (اسمه in.ftpd وهو عبر xinetd) و proftpd (المفضل في ديبيان) و vsftpd (اختصار ل very secure ftp daemon) و حتى خادمات ويب مثل apache httpd و tux. هذا البروتوكول يسمح بالوصول للملفات عن بعد كما في nfs حيث يمكنك ضمه بعدة أوامر مثل ftpmount USER:PASSWORD@ftp.kernel.org /mnt/ftp أو mount -n -t ftpfs none /mnt/ftp -o ip=100.12.14.1,user=myself,pass=doNOTlook أو باستعمال برنامج خاص اسمه ftp أو باستعمال خيار ftp link من قائمة right في برنامج mc والأفضل من كل ذلك مجرد كتابة العنوان في مدير الملفات ftp://ftp.kernel.org ولكن هذا البروتوكول يسبب الكثير من الصداع والمشاكل على الخادم للكثير من الأسباب منها أنه يرسل كل شيء حتى كلمات السر دون أي تشفير.

بروتوكول SMB يوفر الدخول إلى شبكات مايكروسوفت للحصول على الملفات والطابعات المحددة للمشاركة. بكل بساطة بعد تثبيت الحزم المناسبة في أي مدير ملفات مثل nautilus أو konqueror وكتابة العنوان smb:// ثم تتنقل بينها كأنها مجلدات، ويمكن أن تتبعه بعنوان العقدة أو أن تسبق العنوان باسم المستخدم ثم ‘:‘ ثم كلمة سره ثم ‘@‘ ثم يأتي العنوان "smb://[USER[:PASSWORD]@]HOST/". وإلا قد يسألك عن اسم المستخدم وكلمة السر ويسمح لك بالدخول على أي حال إذا يجوز للجميع أن يراه. قبل كل شيء عليك عمل مستخدم samba استعمل smbpasswd -a USER حيث USER هو معرف/اسم الدخول. إذا كانت عملية الدخول تفشل تابع إلى الفصل التالي. ولقد تحدثنا في فصل العتاد عن كيفية تعريف الطابعة المشاركة بواسطة samba بالأمر lpadmin. يوجد أمر آخر هو smbmount لضم الملفات من بعد

bash$ smbmount -o username=myname \
	 //HisHost/HisShare /mnt/smb
أو حتى مجرد استعمال -t smbfs مع أمر mount
bash$ mount -t smbfs -o username=myname \
	 //HisHost/HisShare /mnt/smb
حيث HisHost هو اسم أو عنوان العقدة التي تحتوي المواد المشاركة في المثال هي HisShare، لعرض كل عقد Samba المجاورة لك (على فرض أن عنوانك هو MyHost) بالأمرين (استعمل less إذا كانت على أكثر من صفحة):
bash$ smbclient -N -L MyHost
bash$ nmblookup -T "*"
لعرض المواد المشاركة على العقدة HisHost استعمل:
bash$ smbclient -L HisHost

أما شبكات appletalk فيتم التعامل معها عبر حزمة تسمى netatalk التي توفر الأدوات اللازمة لذلك.

أما بالنسبة لطريقة FISH التي تمكنك من عرض ثم نسخ الملفات عن بعد عبر rcp كما تفعل مع cp تماماً ولكنها غير مشفرة أيضاً لهذا كان البديل الآمن scp (جزء من طاقم OpenSSH) يستعمل ببساطة بكتابة الملف المصدر(لذي تريد نقله) ثم المكان الهدف الذي تريد النقل إليه مثلاً scp ~/from.txt ali@mynet.org:/home/ali حيث ali الأولى هي اسم المستخدم الذي سيحاول الدخول باسمه و mynet.org هي العقدة البعيدة و /home/ali/ هو الدليل الذي سيوضع فيه و ~/from.txt هو الملف المحلي الذي نريد نسخه. قبل القيام سيطلب منك كلمة سر ali على ذلك الجهاز البعيد. كما يمكن تنفيذ العملية بالعكس scp ali@mynet.org:~/from.txt ~/ بل وحتى النقل من جهازين مختلفين scp ali@mynet.org:~/from.txt ahmad@HisNet.edu:~/to.txt التي تنقل from.txt من العقدة mynet.org إلى HisNet.org وتغير اسم الملف إلى to.txt هنا عليك إدخال كلمة سر علي وأحمد. الخيارات تشبه كثيراً تلك لأداة cp مثلاً لنقل مجلد مشروع

bash$ scp -Ra project/ 192.168.20.1:~/
كل ما يتطلبه الأمر هو خادم sshd يعمل على الجهاز البعيد. ويمكن تنفيذ الكثير من الحيل بواسطة tar و ssh من أجل التخزين المساند backup عبر الشبكة. تابع البند التالي.

ويمكن أن يستغل ssh لعمل نظام ملفات بعيد مشابه من حيث الاستعمال لنظام nfs والذي تضمه بشكل طبيعي إلى نظام الملفات بواسطة mount تسمى هذه الطريقة SHell File System وتحصل عليها بعد تركيب حزمة shfs-utils.

كبديل عن rcp أيضاً لدينا rsync التي تعمل فقط على إرسال الفروقات مما يعني توفير في وقت الإتصال خصوصاً في الشبكات البطيئة. ومعنى اسمها هو التزامن أي الحفاظ على نسختك uptodate ذلك أنه لو كان عندك نسخة قديمة واستعملت rsync لنسخ الحديثة مكانها فإن ذلك لن يستغرق وقتاً طويلاً. هذا الكلام لا يعني أن هذا استخدامها الوحيد إذ يمكنها أن تنسخ نسخاً عادياً من جهاز إلى آخر ليس عنده نسخة قديمة. وكونها تبدأ ب r يعني أنها غير مشفرة! ولكن الخبر الجيد أنها يمكن أن تستعمل ssh كما scp للعمل المشفر. يعمل هذا الخادم بطريقتين أولها أن يعمل خادم rsync على الطرف الآخر وهنا نقدم العنوان على شكل [USER@]HOST::DIR أو URL كما rsync://[USER@]HOST[:PORT]/DIR حيث USER المستخدم (اختياري) و HOST العقدة و PORT المنفذ(اختياري) و أخيراً الدليل DIR. مثلاً ali@foo.net::~/ تشير للدليل البيت لعلي على العقدة foo.net الطريقة الأخرى هي أن يكون الخادم ssh أو rsh يعمل على الطرف الآخر ويوجد عليه برنامج rsync قابل للتفيذ (ليس بالضرورة أن يكون عاملاً كخادم) ، وهنا يكون العنوان على شكل [USER@]HOST:DIR

استدعاء rsync بمعامل وحيد يعمل على عرض الملفات البعيدة هناك مثلاً rsync 172.20.0.15:/usr/share/doc أما النسخ فيتم بإعطاء عدة معاملات آخرها هو الهدف (إليه ستنسخ) ، يمكن النسخ من جهازك إلى عقدة بعيدة rsync -avz /usr/local 10.20.10.17:/usr/local الخيار a يعني نقل أرشيفي (كما هو) مع المحافظة على الأذونات الوصلات والأجهزة و نسخ الأدلة الفرعية، الخيار z لضغط الإتصال للسرعة. العملية العكسية أيضاً ممكنة أي يحضرها من عقدة بعيدة إليك rsync -avz 10.20.10.17:/usr/local /usr/local. في هذه الحالات الثلاثة استعملنا عناوين من النوع الثاني أي باستعمال ssh أو rsh نحدد أي منها بواسطة ‘-e ssh‘ إذا لم نحدد سيحاول ssh. يمكنك استعمال خادم rsync أي العناوين الأولى ولكن الإتصال لن يشفر استعمل الخيار ‘-e ssh‘ لعمل قناة تشفير آمنة.

 تلميح

يمكن تحديث دليلين محليين(على نفس الجهاز) في قت أقصر بواسطة rsync. مثلاً rsync -avz /usr/local/src /usr/src.

بروتوكول rsync يجعل أحد الطرفين يساوي الآخر أي أنه بإتجاه واحد، يوجد عدة بروتوكولات تعمل بإتجاهين تستند على فكرة rsync (عدم إرسال كل شيء بل الأجزاء التي قد تكون تعدلت) مثل drsync و unison (وواجهته الرسومية unison-gtk).

5.2.4 تنفيذ برامج عن بعد

هناك عدة برامج للدخول عن بعد مثل telnet و rsh و rlogin و ssh. البرنامج الشهير telnet على الرغم من سمعته إلا أنه ثغرة! قد تحتوي توزيعتك عليه ولكن فقط client. أما سلسلة برامج rsh أي remote shell فهي موجودة في توزيعتك من أجل تلك الدول التي تمنع التشفير وهي غير مركبة تلقائياً إضافة لأنها ثغرة. من بقي؟ ssh وهو اختصار ل Secure SHell ويوجد عدة تطبيقات له منها برنامج java يمكن تنفيذه!من أي نظام أو حتى جهاز خلوي! ما نستعمله في لينكس هو OpenSSH هو مجموعة من الأدوات مثل ssh و sftp و scp إضافة للخادم sshd. على عكس telnet فإن rsh و ssh مقتصرة على خادمات يونكس (وإن وجد مخدومات تتصل معها من أنظمة أخرى). يعمل ssh على التشفير بطريقة تشبه OpenSSL أي Secure Socket Layer من خلال مفتاحين عام وخاص. كما ويوجد برامج رسومية تسهل التعامل معها مثل gnome-remote-shell (وهو يتصل مع telnet و ssh) و secpanel الذي يوفر واجهة ل ssh و scp.

للدخول عن بعد إلى العقدة somewhere.com باسم ahmad (أو أي اسم وإذا لم تحدد سيدخل بالاسم الذي نفذته به) ssh ahmad@somewhere.com سيخبرك بأن x تتصل مع somewhere.com لأول مرة عبر ssh هل تريد حفظ بصمة هذه العقدة (حتى إذء قام شخص بالعبث في خادم الأسماء وإدعى بأنه somewhere.com سيكشف لك ذلك) سيتم الحفظ في ملف ~/.ssh/known_hosts أو /etc/ssh/known_hosts ثم أدخل كلمة السر الخاصة به على تلك العقدة عندها ستحصل على محث بمفسر أوامر "أحمد" المفضل مثل bash ويمكنك تنفيذ أي برنامج موجود هناك يسمح له بتنفيذه. يمكنك تحديد أي برنامج ينفذ وذلك بكتابة اسمه ومعاملاته في نهاية السطر مثلاً يمكنك أن تمزح مع أحمد على جهازه في somewhere.com بأن تخرج له القرص المدمج ssh ahmad@somewhere.com eject ثم تدخله بأمر mount بنفس الطريقة أو تعيد تشغيل الجهاز (طبعاً عليك ذكر كلمة السر). هذا مثال آخر:

[ali@localhost:~]$ ssh ahmad@somewhere.com
ahmad@somewhere.com password: *******
[ahmad@somewere.com:~]$ ls
farfile.txt	myfolder
[ahmad@somewere.com:~]$ exit
[ali@localhost:~]$
يمكن تسريع الإتصال بواسطة الخيار C أي أن يقوم بالضغط إضافة للتشفير. ويمكن أن يقوم ssh بتمرير متغيّر شاشتك لبرنامج رسومي يعمل على العقدة البعيدة عندها تستطيع تشغيل البرامج الرسومية على الجهاز البعيد ولكنها ستظهر عندك وللتأكيد استعمل الخيار X. ولكن قبل ذلك عليك إخبار إكس عندك أن يقبل طلبات عن بعد بواسطة xhost +[HOST] حيث HOST عنوان العقدة البعيدة الذي تريد السماح لها إذا لم تحدد سيسمح للجميع (كل ذلك على فرض أن جدار النار وغيره لا يمنع ذلك)
[ali@localhost:~]$ xhost +
[ali@localhost:~]$ ssh -X ahmad@somewhere.com xmms &
ahmad@somewhere.com password: *******
[ali@localhost:~]$

من الحيل الجميلة التي لن تصدق أن ssh يمكنه أن يقوم بها

[ali@localhost:~]$ tar -cplf - ./ | ssh ahmad@somewhere.com \
	tar -xpf -
ahmad@somewhere.com password: *******
[ali@localhost:~]$
هنا قام برنامج tar بأرشفة الدليل الحالي وإرساله عبر الأنبوب إلى ssh الذي يشفر ثم يرسل عبر الشبكة وعلى الطرف الآخر يفك التشفير ثم يشغل tar لفك الأرشيف إلى ملفات يمكن أن تستخدم هذه الطريقة في نسخ نظام كامل عبر الشبكة!

5.2.5 وصول كامل عن بعد - خدمة VNC

يمكنك أن تتحكم في جهاز بعيد من خلال واجهته الرسومية وتراها ولكن هذا في الغالب أمر غير مرغوب فيه لأسباب أمنية وهو أمر تفاخري (وأحياناً يعاقب عليه قانون حماية الخصوصية في بعض البلدان) أكثر منه مفيد تخيل أن تكون تعمل على جهاز فيمزح معك أحد أصدقائك بتشغيل 100 عين تلاحق حركة الفأرة على شاشتك (برنامج xeyes) وذلك بتغيير قيمية متغيّر البيئة DISPLAY مثلاً قد يكتب أحدهم (على فرض أن إعدادات الحماية مثل جدار النار و hosts.allow تسمح بذلك)

bash$ DISPLAY=192.168.0.20:0 xeyes
في هذا الأمر شغلنا برامج xeyes وهو برنامج رسومي يعمل في ظل خادم إكس أي أنه مخدوم إكس X-client وقمنا بتعديل قيمة متغير البيئة DISPLAY الذي يحدد خادم إكس الذي يتصل معه (الذي سيعرض واجهة xeyes الرسومية)، نحدد صيغة DISPLAY على صورة HOST:M[.N] حيث HOST هو اسم أو عنوان العقدة و M هو رقم العرض/المرقاب/الجلسة DISPLAY (عادةً صفر عندما يكون لديك شاشة واحدة وجلسة sessionواحدة)، ولكنه فعلياً مجرد رقم لتحديد المنفذ البعيد الذي يستمع إليه إكس فرقم المنفذ هو 6000 + ذلك الرقم (في المثال السابق xeyes يتصل مع خادم إكس على منفذ 6000 في 192.168.0.20) أما N فهو رقم اختياري نحدد فيه المرقاب (الشاشة) إن كان هناك أكثر من واحدة فيزيائياً. في الحالات الطبيعية (برامج رسومية تعرض على نفس الجهاز الذي يعمل عليه إكس) يتم الإتصال (بين خادم إكس ومخدوم إكس) عبر مقبس ملفات file socket وليس عبر عبر عنوان IP المحلي localhost في هذه الحالة تكون صيغة المتغيّر DISPLAY كما يلي :M[.N] أي إذا لم نحدد العقدة فإن الإتصال يتم عبر مقابل الملفات file sockets (جرب "echo $DISPLAY" في أحد الطرفيات الرسومية).

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

للسماح لبرامج على عقدة بعيدة بالظهور على خادم إكس الخاص بك استعمل xhost +[HOST] حيث HOST هو العنوان الذي تريد السماح له إذا لم يحدد سمح للجميع. مثلاً لتنفيذ mozilla موجود على العقدة hishost ليظهر على جهازك المسمى myhost اكتب "xhost +hishost" ثم على تلك العقدة البعيدة اكتب "DISPLAY='myhost:0' mozilla".

الطريقة الأخرى هي عبر سر محفوظ في ملف صلاحيات خاص بخادم إكس (تشبه فكرة كلمة السر) يسمى X Authority file حيث يحتوي على كلمة صلاحيات إكس السرية لكل خادم إكس تتصل معه، هذا الملف غالباً هو "~/.Xauthority" لتتأكد اكتب "xauth -v" الذي يظهر الملف الذي تستعمله توزيعتك، يقرأ إكس هذا الملف مرة واحدة عند تشغيله فلا يرى التعديلات التي تجري عليه لهذا نستعمال xauth -q بدلاً من تعديل الملف مباشرة، مثلاً

bash$ echo "add :0 . ThisIsMySecritDoNotLook" | xauth -q
تحدد ThisIsMySecritDoNotLook لتكون كلمة سر خادم إكس ":0" (أي العرض المحلي)، لنفرض أن هناك خادم إكس بعيد سر صلاحياته هو ThisIsHisSecritDoNotLook إذا كنت تريده أن يسمح لك بالتعامل معه يجب أن تقدم له هذا السر اكتب على جهازك
bash$ echo "add hishost:0 . ThisIsHisSecritDoNotLook" | xauth -q
bash$ DISPLAY="hishost:0" mozilla &
الذي يحدد سر صلاحيات التواصل مع خادم إكس يستمع إلى منفذ 6000 من العقدة hishost، ثم نفذنا برنامج mozilla ليتعامل مع ذلك الخادم البعيد، ثم سيطابق الخادم البعيد سر الصلاحيات لديه مع تلك التي استعملها المخدوم قبل السماح له.
 تحذير

على الرغم من أن طريقة xauth أكثر أمناً من xhost لأن الأخيرة تعاني من خطر تزوير العناوين spoofing إلا أن الثانية ترسل سر الصلاحيات دون تشفير (مع ذلك تظل آمن) أي أنها تعاني من خطر sniffers.

انظر الكتيب الخاص ب xhost و xauth.

 تلميح

لا يكفي أن تستعمل xhost أو xauth حتى تنجح في ذلك عليك التأكد من أن جدار النار(المحيط بخادم إكس) لا يمنع منافذ TCP من 6000 إلى 6010 وأن hosts.allow يسمح به أو أن hosts.deny لا يمنعه انظر فصل 5.3.9

 تحذير

إذا سمحت للآخرين بالوصول لخادم إكس عندك فإنهم قد يرون على ماذا تنقر وماذا تكتب وقد يحصلوا على كلمات سرك.

للدخول في جلسة session كاملة عن بعد يمكن إعداد برنامج الدخول gdm (بوساطة gdm-setup) ليعرض خيار XDMCP ضمن قائمة action يسمح لك هذا الخيار عند الدخول بتحديد عنوان IP العقدة التي تريد الدخول إليها (قد يعرض لك قائمة بالأجهزة التي يمكنك الدخول أو تدخلها يدوي) بعد إدخاله يعرض لك برنامج الدخول عليها لتدخل الاسم وكلمة السر على تلك العقدة البعيدة ثم تدخل (عند إعداد gdm هناك تبويب كامل XDMCP إذا اخترت Enable XDMCP فإنك تسمح لغيرك بالدخول على جهازك بنفس الطريقة ). ولكن ما تحصل عليه يختلف تماماً عمّا يجري لو أنك أمام ذلك الجهاز لأنك حصلت على جلسة أخرى مثلاً ستكون قيمة DISPLAY تحتوي بعد ‘:‘ رقم 1 وليس صفر.

أن تحصل على نفس الجلسة الظاهرة على شاشة الجهاز البعيد (وليس الدخول في واحدة جديدة) يمكن استعمال بروتوكول إكس عبر عدد قليل من برامج remote-desktop مثل xtv و لكن البروتوكول المفضل المصمم خصيصاً لهذا الغرض هو VNC، بعض مخدومات VNC تدعم بروتوكول إكس مثل gnome-remote-desktop (وهي جزء من حزمة gnome-network).

بروتوكول VNC - Virtual Network Computing الذي يجعلك وكأنك تجلس أمام الجهاز ترى تلك الشاشة البعيدة وتتحكم بالجهاز قد يكون مفيداً في مراقبة المستخدمين الذين لا تثق بهم (ما مدى قانونية هذا الفعل ؟ أظن أن عليك أن تعلمهم أنهم مراقبون) ويعتبر VNC برتوكولاً قياسياً صممته AT&T يعمل على جميع أنواع يونكس ويندوز وماك وحتى أنظمة geOS مثل خلوي nokai 9000 وهناك بعض تطبيفات Java تعمل على الأخرى، وحتى هناك لينكس على قرص واحد به هذا البرنامج(www.khk.net) بل وحتى دووس! باستعمال allegro.

على كل جهاز تريد الوصول له شغل مراقب vncserver الذي سيسأل عن كلمة سر عند أول تشغيل له (لغرض الحماية يجب أن لا تكون كلمة سر الجذر لأن البرتوكول غير مشفر) ، ويمكن تغييرها فيما بعد بواسطة vncpasswd. هناك الكثير من البرامج التي تعرض(تدخل) إلى تلك الأجهزة منها بواسطة متصفح به جافا أو باستعمال برنامج متخصص مثل حزمة TightVNC (هذا اسم الحزمة ولكن في بعض التوزيعات يسمى vnc فقط) للدخول على الجهاز البعد الأمر على الصيغة
vncviewer [-share] [-viewonly] HOST[:N] حيث HOST هي العقدة و N رقم اختياري الخيار viewonly فقط يعرض(ترى ماذا يفعل) دون أن تتحكم فيه دونه تستطيع التفاعل مع الصورة التي تراها، أما الخيار share فهو يسمح لأكثر من شخص الدخول على جهاز واحد معاً. تستطيع بالضغط على F8 إظهار نافذة تعطيك خيارات مثل عرض بكامل الشاشة. هناك برامج أخرى مثل kvncviewer و keystone من طاقم KDE لعرض بطريقة أكثر أناقة.

يتوفر لنا برنامج آخر هو rfb - Remote FrameBuffer أي شاشة عن بعد، وهو يعتمد نفس برتوكول VNC السابق مع مزايا مثل تشفير ssh. نفذ برنامج x0rfbserver على الأجهزة التي تريد أن تراقبها وتدخل عليها عن بعد وعلى الطرف الآخر شغّل xrfbviewer [-viewonly] HOST حيث HOST هي العقدة التي تريد الوصول إليه، الخيار viewonly فقط للمراقبة دون التفاعل دونه يمكنك التفاعل مع هذه الصورة البعيدة

5.2.6 ويندوز عن بعد

يقدم برنامج rdesktop في لينكس إمكانية الدخول إلى ويندوز يشغلWindows Terminal Services الذي يتبع بروتوكول RDP عن بعد (شبيه ببروتوكول VNC) ورؤية ماذا يظهر على الشاشة وتشغيل برامج عليه والتفاعل معها بلوحة المفاتيح والفأرة الخاصة بجهازك يتم تشغيله بالأمر

bash$ rdesktop -k ar HOST
حيث HOST هي اسم أو عنوان IP العقدة التي تريد الدخول عليها وبإمكانك تحديد المنفذ port بكتابة : ورقمه بعد العقدة. لاحظ الخيار k لتحديد لغة لوحة الفاتيح. من الخيارات الأخرى لديك f للعمل بكامل الشاشة و يمكنك تحديد المستخدم ومعلومات أخرى بالخيارات -u USER -p PASSWD -d DOMIAN فإذا لم تحدد سوف يسألك عنها.

remote windows access

5.2.7 البريد الإلكتروني email

تحدثنا في فصل الإنترنت عن برامج البريد مثل kmail التي تدخل ضمن ما يسمى Mail User Agent فهي تعمل على استقبال البريد بواسطة بروتوكولي POP3 منفذ 110 أو IMAP منفذ 143 وتعمل على ارساله بواسطة بروتوكول SMTP منفذ 25 بطريقة رسومية وفي حالات نادرة قد يدعم مزود خدمة البريد على خادمه SSL للتشفير والحماية بينك وبينه (ولكن هذا لا يغيّر ما يجري بينه وبين الطرف الآخر) بواسطة POP3 الآمن على منفذ 995 و IMAP الآمن 993 و SMTP الآمن 465 ولكن مرة أخرى هذه بينك وبين الخادم فقط! من المهم إعداد مثل هذه البرامج حتى لو لم تكن مرتبطاً مع الإنترنت أو أي شبكة لأن برامج جدولة المهام وإدارة النظام قد ترسل لك تقارير على شكل بريد email محلي إضافة لإمكانية استعماله كرسائل بين مستخدمي نفس الجهاز. تخزن الرسائل المحلية والمستجلبة في دليل فرعي من /var/spool/mail أو في دليل مخفي في البيت.

يمكن استعمال أداة mail التي يمكنها قراءة البريد الإلكتروني أو أن ترسل رسالة إلكترونية إلى البريد إلكتروني التقليدي
cat FILE | mail -s "My Subject" "someone@somewhere.com" أو إلى شخص على الجهاز المحلي
cat FILE | mail -s "My Subject" "ahmad" أو شخص في الشبكة المحلية
cat FILE | mail -s "My Subject" "ali@192.168.10.5"

الفرق السطحي (من وجهة نظر المستخدم) بين IMAP و POP أن الأخير يشطب الرسالة بعد أن تصلك download بنجاح أو على الأقل هذا السلوك التلقائي له. وهذه الثلاثة برتوكولات تعود لبداية ARPANet ما قبل الإنترنت وهي ضعيفة من ناحية إرسال كلمات السر دون تشفير (يفضل إن أمكن استعمال النسخ الحديثة التي تدعم تشفير SSL ) ومن ناحية أخرى يمكن لأي شخص أن يرسل بريد باسم أي شخص آخر حيث أن خانة From يمكن أن تعطى لبروتوكول SMTP!!

 تحذير

إذا جاءك بريد من شركة مشهورة في صناعة مضاد الفيروس أو حتى من شركة اشتريت منتجاتها أو من أي تعاملات مادية ... إلخ يطلب منك الدخول إلى موقع وتعبئة نموذج(به معلومات حساسة) أو تنزيل برنامج ... إلخ فلا تظن أن ما هو مكتوب أنه المرسل From هو فعلاً المرسل!! يمكن لأي شخص أن يرسل بريد بأي اسم يشاء. انظر التوقيع الإلكتروني

تمكنك برامج البريد الإلكتروني Mail Agents من فحص التوقيع الإلكتروني ومدى صلاحيته فالشركات الكبرى توقع بريدها بتوقيع إلكتروني بشهادة certificate موقعة بالتوقيع الإلكتوني لهيئة(شركة) متخصصة في منح التواقيع الإلكتونية وتحتوي أغلب البرامج على بصمة أشهر تلك الشركات (المانحة) لكي تفحص بريدك الوارد وتخبرك إذا كانت صالحة. أما في المراسلات بين الإفراد(لا يقدرون على شراء شهادة) فيمكن أن يعملوا شهادات بأنفسهم يضمنون هم صلاحيتها self signed ثم يضعوا البصمة (المفتاح العام) في أحد المواقع على الإنترنت التي تنشرها أو يتبادلونه عبر أي وسيلة ليضيفها كل منهم في قائمة البصمات الموثوقة. البرنامج المستعمل في جنو/لينكس هو حارس الخصوصية غنو - GPG أي GNU Privacy Guard وهو برنامج يعمل بطرق التشفير عالية الموثوقية وتوقيع وبصمة مزدوجة المفاتيح عام/خاص.
 تحذير

هذا ليس الخطر الوحيد فهناك خطر من إعطائك انطباع بأن ما تشاهده جزء من الموقع مثل "timeout, re-enter your password" أو "This file has been scanned and no virus found" ولكنه يكون جزء من الرسالة!

5.2.8 إنشاء اتصال ppp

إتصال Point-to-Point Protocol دون وجود علاقة خادم ومخدم server/client بل يعمل مراقب daemon عند الطرفين. ولكن مجازاً يمسى من يبدأ بطلب الخدمة مخدوماً ومن يقدمها خادماً. تحدثنا قبلاً في فصل 4.1 تعريف العتاد عن كيفية استخدام برنامجي kppp و gnome-ppp الرسومي من أجل إنشاء الاتصال وسنتحدث الآن عن كيفية إعداد مراقب pppd شخصياً من سطر الأوامر.

يعمل المودم على ربط طرفين فقط حيث يتلقى إشارات من الحاسوب نفسه إما نصية (غير حساسة لحالة الحروف الإنجليزية) بنظام AT&T أو سيال من البيانات المطلوب إرسالها ويرسلها إلى الطرف الآخر من الوصلة (أو يمتص هو تلك الإشارة لنفسه) ويرد عليها (إن هو أو الطرف الآخر) ولأن هناك طرفين فقط لا يوجد أي عناوين عبر بروتوكول ppp. مثلاً قبل استعمال جهاز المودم يجب إستهلاله بإرسال إشارة "ATZW2" متبوعة بسطر جديد (LF) وعودة (CR) أو أي إشارة إستهلال أخرى، ثم ينتظر أن يعيد له المودم رداً "OK" متبوعة بسطر جديد (LF) وعودة (CR) في حال نجاح ذلك (من الآن هناك LF-CR ضمنية بعد كل إشارة). تلك الإشارات لم يتم بثها في السلك بل بين المودم والجهاز. فإذا أرسلت الإشارة "ATDT" أو "ATD" ثم رقم هاتف ثم انتظرت استلام الرد فقد تحصل على "OK" أو "NO DIALTONE" الأخيرة تعني "لا يوجد حرارة في خط الهاتف". تسمى هذه العملية بالطلب dial-up. بعد هذه المرحلة ما يرسل يصل إلى الطرف الآخر كما هو على شكل سيال stream.

يعمل مراقب pppd على تحويل إتصالات TCP وغيرها المعنونة وفق IP إلى سيال stream وإرسالها عبر المودم حيث يعمل مراقب pppd هناك. كما يعمل بطريقة معاكسة مع ما يستلم من سيال عبر المودم فيفككه إلى طرود tcp وغيرها. يعمل المراقب في كل من الطرفين على إعطاء عنوان IP لكل طرف ليتم وضعه على أنه مصدر/هدف طرود tcp وغيرها، كما قد يعمل على تعديل جداول التوجيه (إذا حددنا الخيار defaultroute) لتجعل وصلة ppp0 مثلاً هي الوجهة التلقائية للعناوين الخارجية الأخرى. في المقابل يقوم برنامج chat بالتحدث مع المودم بطريقة تلقائية حيث يقرأ نص الحديث chatscript المعد مسبقاً فيرسل ويستقبل إشارات AT&T بناءً على النماذج المحددة في ذلك الملف بهدف أتمتتة عملية الطلب. يتكون ذلك الملف من عمودين الأول نموذج ما يستقبل والآخر ماذا يرد عليها.

في توزيعة ديبيان يكفي تنفيذ pppconfig مرة على الأقل من أجل لإعداد رقم الهاتف وكلمة السر والمستخدم...إلخ وبعدها بكل بساطة يمكنك أن تنفذ pon و poff لطلب الاتصال وقطعه على الترتيب و plog لقراءة آخر ملف التقرير.

لعمل ذلك يدوياً تأكد من أن ملف /etc/ppp/options يحتوي يحتوي سطري auth و lock (غالباً ذلك موجود مسبقاً). اعمل ملف /etc/ppp/peers/MyISP حيث MyISP هو اسم مزود الخدمة (لكي تستفيد بحفظ إعدادات كل واحد بشكل منفصل) تلقائياً سيبحث برنامج pppd عن واحد باسم provider. واكتب فيه

#/etc/ppp/peers/provider
# from Debian docs
ttyS0		# modem is connected to /dev/ttyS0
38400		# run the serial port at 38400 baud
crtscts		# use hardware flow control
noauth		# don't require the ISP to authenticate itself (comment it if PAP CHAP)
defaultroute	# use the ISP as our default route
connect '/usr/sbin/chat -v -f /etc/ppp/chatscripts/provider'
# if PAP uncomment the following or else it will be assumed to be your 'whoami'
#user mypapname
حيث نحدد الجهاز ليكون ttyS0 أي أول خط متسلسل serial (في ويندوز يسمى COM1). ونحدد ماذا ينفذ لكي يطلب الإتصال بواسطة سطر connect حيث نحدد الأمر chat ويقرأ chatscript من الملف /etc/ppp/chatscripts/provider الذي بدوره سيحتوي رقم الهاتف ...إلخ. هذا مثال عليه (غيّر رقم الهاتف والاسم وكلمة السر تجدها بالخط المائل)
#/etc/ppp/chatscripts/provider
# from Debian docs
ABORT		BUSY
ABORT		"NO CARRIER"
ABORT		"NO DIALTONE"
ABORT		"ERROR"
ABORT		VOICE
ABORT		"NO ANSWER"
ABORT		"Access denied"
ABORT		"Username/Password Incorrect"
SAY	"init device ..."
TIMEOUT		30
# there are many init like just 'AT' or 'ATE1'
""		ATZW2
# OK		"ATS0=1S11=60X4&K4S42.1=1"
# OK		"AT&D2&C1"
# ATDT or ATD
SAY	"dialing ISP ..."
OK	"ATDT81010101"
SAY	"sending name/password..."
#comment all below in case of PAP or CHAP
ogin	"MYNAME"
word    "\qMYPASSWORD"
#\q mean quiet does not appear in log files (password -> ?????????)
في بداية هذا الملف نخبر chat أن يفصل الإتصال abort إذا استقبل كذا. ثم عندما يسكت المودم يرسل إليه سلسلة نصية لإستهلاله مثل atzw2 فإذا كان جاهزاً "OK" أرسل له طلب رقم الهاتف ثم الاسم وكلمة السر (لاحظ "\q" التي تعني لا تظهرها في التقرير)

بعد ذلك لطلب الاتصال يكفي أن تكتب pppd call MyISP ويمكن لمستخدمي ديبيان استعمال pon MyISP في مثالنا MyISP هي provider. لإغلاق الخط يمكن استعمال kill لإنهاء مراقب pppd أو poff في ديبيان، حيث لا داع لكتابة اسم المزود إن كان وحيداً. pon و poff أدوات متفوقة تقوم بفحوصات إضافية مثل التأكد من أن الوصلة لا تعمل قبل تشغيلها ...إلخ.

إذا كان الإتصال يتطلب عمليات توثيق متقدمة على الطريقة السابقة مثل PAP (أرجو أن لا يفهم من كلامي أنها أكثر أمناً فهي تنقل كلمة السر دون تشفير) و CHAP عليك إزالة إشارة التعلقات "#" من بداية بعض الأسطر وعمل ملف /etc/ppp/pap-secrets أو /etc/ppp/chap-secrets مناسب كما سنشرح في الفصل التالي.

المحتويات
حقوق النسخ والملكية الفكرة
ما هو لينكس؟
كيف تركب نظام لينكس؟
حقوق النسخ المرفوعة
وثائق التخويف

عرب-آيز
مجتمع لينكس العربي
موسوعة ثواب
موسوعة ويكيبيديا
تعريف البرمجيات الحرة
تعريف مفتوحة المصدر
LinuxToday
Linux.org
Linux.com
SlashDot
FreshMeat
LWN.net
توزيعات لينكس
النسخة الإسلامية لأوبنتو
عَرَبيان
جواثا (أول مسجد في أوروبا)
المزيد من التوزيعات هنا

إسلاميات
    برامج:
بريمج أوقات الصلاة
بريمج التقويم الهجري
    صوتيات:
محاضرات: قصص الأنبياء (نبيل العوضي)
أناشيد
اطلب نسختك مجاناً
لكي تصلك أقراص لينكس أوبونتو Ubuntu أصلية مجاناً والتوصيل مجاناً لن تدفع فلساً واحداً ولن تجبر على رؤية دعايات. كل ما عليك هو أن تنقر هنا.
مقالات
    تقنية:
تسجيل وتحويل الصوتيات
تعريف الماسح الضوئي في لينكس
    ساخرة:
من أجل ذلك لا تقرأ
الفيلة والصراع العربي الإسرائيلي
بلاغات
التبليغ عن إعلانات غير مرغوبة
عثرات وأخطاء إملائية
وصلات لا تعمل:

 

ننصح باستخدام متصفحات الوب الحرة، جرب ثعلب النار الآن

يمكنك الحصول على الكثير من البرامج الحرة عالية الجودة من هنا مجاناً
proud to be 100% Microsoft FREE GNU FDL
التدخين حرام

كن كحامل المسك ولا تكن كنافخ الكير

Generously Hosted by www.JadMadi.net

Previous Up 5.2 العمل في الشبكات Next
Copyright © 2007, Muayyad Saleh AlSadi