رمضان مبارك أولاً وكل عام وأنتم بخير إن شاء الله ...
وصلتني إستفسارات عدة بخصوص طريقة تركيب وتشغيل طارق Tariq ويبدو إنه هناك لبس بسيط في طريقة عمل البرنامج ولهذا لم يعرف الجميع كيفية تشغيله … سأشرح في هذا الموضوع طريقة تركيب Tariq وكيفية الإستفادة منه … الشرح الذي في هذا الموضوع تم تطبيقه على توزيعة Debian الأخيرة (Debian 6 – Squeeze) … سأقوم بشرح الأمور البسيطة التي في طارق وبعدها نتوسع في مواضيع أخرى لأني أنوي ترقيته والتعديل على بعض الأمور فيه …
قبل أن أشرح طريقة إستخدام طارق (Tariq) … أود أن أشرح بشكل مبسط جداً طريقة عمله الهيكلية أو التقنية … أولاً طارق (Tariq) عبارة عن نظام لعمل الـ Port Knocking وأمور أخرى أكثر تقدماً من مجرد كونه طارق على المنافذ والتي نعرفها في التقنيات الموجودة حالياً، وسأوضح ذلك في مواضيع أخرى إن شاء الله … طريقة عمل طارق (Tariq) هي من خلال إعطائك أمر له ليقوم بتنفيذه … يأخذ هذا الأمر ويقوم بتشفيره بواسطة مفتاح العميل ومن ثم يقوم بإخفاءه بداخل صورة معينة … بعد ذلك يتم إرسال هذه الصورة مُجزئة على أجزاء بسيطة بداخل عدد الدقات التي ستقوم بها … طبعاً يفضل أن لا تكون الصورة كبيرة الحجم، وذلك لأنك وقتها ستحتاج الى وقت أكثر لترسل التعليمة المراد تنفيذها، وكذلك ستحتاج الى إما زيادة عدد الدقات، أو الى إرسال حٌزم كبيرة الحجم وذلك بحكم تقسيم الصورة على الحزم المرسلة … هذه العملية الى الآن تمت على العميل … حين يستلم طارق (Tariq) الدقات يراعي إنها أولاً تحمل بيانات ومن ثم يراعي إنها جائت وفق دقات معينة تم الإتفاق عليها وكذلك بالترتيب الذي تم الإتفاق عليه … الى هنا طارق لم يحلل ما في داخل الحزم المرسلة … بعد ذلك يعيد إرسال لنسميه تأكيد الى العميل، والتأكيد عبارة عن رقم عشوائي … هذا الرقم العشوائي يكون مُشفر بواسطة مفتاح عميل طارق العام ويُرسل بواسطة حٌزمة Packet الى العميل مرة أخرى لكي يقوم العميل بإثبات إن هذا الأمر فعلاً هو من قام بإرسالها له … العميل يستلم الحزمة، وكونها مٌشفرة بمفتاحه العام يقوم بفكها ثم يقوم بإرسال هذا الرقم مرة أخرى الى الخادم ليؤكد إنه نعم أنا صاحب الطلب والرجاء تنفيذ طلبي … هكذا تمت عملية الـ Mutual Authentication أو البعض يسميها 2Way Authentication … إذا تحقق كل هذا، يقوم طارق بتجميع الحزم وإستخراج الصورة منها … ثم يستخرج النص أو الأوامر المطلوبة منه تنفيذها من خلال فك تشفير النص المخفي بداخل الصورة بإستعمال المفتاح العام للعميل … هذا بإختصار شديد آلية عمل طارق … والكود المصدري للنظام موجود بإمكانكم تحميله والإطلاع عليه وتعديله أو العمل معي على تحسينه حسب ما ترونه … بالنهاية هو مفتوح المصدر ويخضع لرخصة GPL … وكذلك هو منشور في موقع Port Knocking الرسمي ضمن قائمة التطبيقات التي تمت في هذا المجال … هذا النظام سيفيدك في فتح المنافذ وغلقها وتنفيذ الأوامر والعمليات التي تحتاجها بدون أن تقوم بفتح الخدمة للجميع ... يرجى مراجعة أنظمة Port Knocking وما هي فائدتها بهذا الخصوص أو للإستفادة أكثر ...
الآن ندخل في عملية إستعمال طارق (Tariq) وقبل كل شيء ستحتاج عزيزي القاريء الى تركيب الحزم التي بالأسفل سواء للخادم أو للعميل … وعملية تركيبهم على دبيان وباقي التوزيعات اليوم أصبحت جداً بسيطة:
* Python >= 2.6 * python-imaging - Python Imaging Library (PIL) * GnuGP * Scapy * نواة حديثة تستخدم iptables مثال على ذلك هو نواة (2.6)
أولاً: تركيب وإعداد العميل
قم بفك ضغط ملف طارق ونسخه الى /etc/ مثلاً كالتالي:
tar xvfj tariq.tar.bz2 cp -r tariq /etc/
chmod 600 /etc/tariq/.client-gpg
gpg --homedir /etc/tariq/.client-gpg --gen-key
(2) DSA and Elgamal
DSA keys may be between 1024 and 3072 bits long. What keysize do you want? (2048)
Key is valid for? (0)
Key does not expire at all Is this correct? (y/N)
Real name:
Real name: Tariq
Email address: tariq@arabnix.com
Comment: Tariq Client
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?
gpg --homedir /etc/tariq/.client-gpg -a --export tariq@arabnix.com > client.pubkey.txt
client_gpg_dir=/etc/tariq/.client-gpg user=tariq@arabnix.com img_dir=img secret_ports=10000,7456,22022,12121,10001
أيضاً قم بتعديلها حسب ما تناسب احتياجاتك … والسطر الأخير هو المنافذ الذي سيقوم طارق بالطرق عليها … يمكنك تغييرهم كلهم حسب ما تريد وحسب ما يناسبك … هكذا أنتهينا من إعداد العميل الذي سيتعامل مع الخادم الذي عليه طارق … الرجاء لا تنسى نسخ المفتاح الخاص بالعميل الى الخادم … أحببت تذكرتكم في ذلك …
ثانياً: تركيب وإعداد الخادم
قم بفك ضغط ملف طارق ونسخه الى /etc/ مثلاً كالتالي:
tar xvfj tariq.tar.bz2 cp -r tariq /etc/
chmod 600 /etc/tariq/.server-gpg
gpg --homedir /etc/tariq/.server-gpg --import < client.pubkey.txt
gpg --homedir /etc/tariq/.server-gpg --edit-key tariq@arabnix.com
Please decide how far you trust this user to correctly verify other users' keys (by looking at passports, checking fingerprints from different sources, etc.) 1 = I don't know or won't say 2 = I do NOT trust 3 = I trust marginally 4 = I trust fully 5 = I trust ultimately m = back to the main menu Your decision?
وسيعود ويسألك: Do you really want to set this key to ultimate trust? (y/N)
trust: ultimate validity: ultimate
secret_ports=10000,7456,22022,12121,10001 server_gpg_dir=/etc/tariq/.server-gpg iptables_chain=tariq open_tcp_port=-A tariq -s {ip} -p tcp -m state --state NEW -m tcp --dport {dport} -j ACCEPT open_udp_port=-A tariq -s {ip} -p udp -m state --state NEW -m udp --dport {dport} -j ACCEPT
الآن كما ذكرت بإن هذا الموضوع لشرح إعداد طارق () للعمل بشكل بسيط، ولهذا سنستعمل هنا فقط أوامر الـ iptables الأساسية ... أرجوا أن تحرص على إضافة أمر يساعدك في العودة الى الخادم في حالة حصلت مشكلة معك في التطبيق أو في حالة طبقت الأوامر التي بالأسفل والتي ستمنع أي وصول بشكل أولي ... الأوامر الأساسية لعمل طارق هي:
iptables -P INPUT DROP iptables -N tariq iptables -A INPUT -j tariq iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A tariq -s your_uip_address -j ACCEPT
إن كنت واثق من عملك، لا تقلق فإن طارق سيتولى مهمة فتح المنفذ لك
ولكن إن لم تكن خبير في إستعمال iptables يرجى وضع هذا الباب للدخول الى الخادم من باب إحترازي ليس إلا ...ولا تنسى أن تقوم بحفظ أوامر الجدار الناري بواسطة الأمر iptables-save وذلك لكي تستفيد منهم لاحقاً ... هكذا الى هنا أنتهينا من إعداد عمل خادم طارق Tariq Server ... الآن لتشغيله كل الذي عليك فعله هو التالي: ./TariqServer
1- طلب فتح منفذ من طارق
2- طلب غلق منفذ من طارق
3- طلب تنفيذ أمر معيين عن بعد
4- خبايا أخرى أتركها لكم، أو لحادثة أخرى غير هذه

فتح منفذ بواسطة طارق:
كل الذي عليك فعله هنا هو التالي:
./TariqCleint -u tariq@arabnix.com example.com C 22
root@tariq-client:~/tariq# ./TariqCleint -u tariq@arabnix.com 192.168.1.1 O 22 WARNING: No route found for IPv6 destination :: (no default route?) 4374 . Sent 1 packets. . Sent 1 packets. . Sent 1 packets. . Sent 1 packets. Begin emission: Finished to send 1 packets. ...........................* Received 28 packets, got 1 answers, remaining 0 packets Got answer: skipped Got answer: OK ** SENDING REST:. Sent 1 packets.
dp= 10000 ** right order= True dp= 7456 ** right order= True dp= 22022 ** right order= True dp= 12121 ** right order= True dp= 10001 ** right order= True ** last valid knock received, cmd=[O] arg=[22] ** sending challenge ... ** expecting answer=['8zXZKp+ivs5fewfewfewfewfwe6fwefewfew4pwl8CTcg1fw==\n'] Ether / IP / TCP 192.168.1.112:7304 > 192.168.1.1:10001 S / Raw ==> IP / TCP 192.168.1.1:10001 > 192.168.1.112:7304 SA / Raw ** Got challenge answer=['8zXZKp+ivs5fewfewfewfewfwe6fwefewfew4pwl8CTcg1fw==\n'] ** accepted, executing cmd=[O] arg=[22]
تنفيذ أمر عن بعد:
كل الذي عليك فعله هنا هو التالي:
./TariqCleint -u tariq@arabnix.com example.com E service httpd restart

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


Menu
Cat Widget