<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Iran Developers Network &#187; اینترنت</title>
	<atom:link href="http://www.irandevelopers.com/category/internet/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.irandevelopers.com</link>
	<description>IDN بزرگترین مرجع توسعه دهندگان ایران - آموزش زبانهای برنامه نويسی</description>
	<lastBuildDate>Mon, 23 Aug 2010 08:51:43 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>مهمترین نقاط آسیب پذیر یونیکس و لینوکس ( بخش پنجم   )</title>
		<link>http://www.irandevelopers.com/networks/linux-unix-vu-p5-2050/</link>
		<comments>http://www.irandevelopers.com/networks/linux-unix-vu-p5-2050/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 03:40:24 +0000</pubDate>
		<dc:creator>سخاروش</dc:creator>
				<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[شبکه]]></category>
		<category><![CDATA[عمومی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=2050</guid>
		<description><![CDATA[نهمین نقطه آسیب پذیر : عدم پیکربندی مناسب سرویس های NIS/NFS Network File System)NFS) و  Network Information Service )NIS) ، دو سرویس  مهم استفاده شده در شبکه های یونیکس می باشند. NFS ، سرویسی است که توسط شرکت Sun Microsystems بمنظور اشتراک فایل ها بین سیستم های موجود در یک شبکه یونیکس ، طراحی و [...]]]></description>
			<content:encoded><![CDATA[<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="color: #000080;"><strong>نهمین </strong></span><span style="color: #000080;"> <strong>نقطه آسیب پذیر :<span style="font-size: x-small;"> عدم پیکربندی مناسب سرویس های NIS/NFS<br />
</span></strong> </span> <span style="font-size: x-small;">Network File  System)NFS)  و  Network Information Service )NIS) ، دو سرویس   مهم استفاده شده در شبکه های یونیکس می باشند. NFS   ،  سرویسی است که  توسط شرکت Sun Microsystems بمنظور اشتراک  فایل ها بین سیستم های موجود در یک شبکه یونیکس ، طراحی و پیاده سازی  گردیده  است . با استفاده از سرویس فوق امکان اشتراک و دستیابی به فایل های موجود  بر روی  کامپیوترهای شخصی و کامپیوترهای بزرگ فراهم می گردد . NFS   ، روش استاندارد اشتراک فایل بین سیستم های کامپیوتری متفاوت است . NIS ، یک سرویس بانک اطلاعاتی توزیع شده را برای  مدیریت  اکثر فایل های مدیریتی مهم نظیر فایل های passwd  و hosts فراهم می نماید .مدیریت متمرکز NIS ، امکان اعمال تغییرات  مورد نظر را از یک نقطه ( بانک اطلاعاتی )  فراهم می نماید.(عدم ضرورت اعمال تغییرات بر روی هر سیستم موجود در شبکه ) .  مهمترین هدف   NIS  ، ارائه اطلاعات مربوط به مکان یابی ( Maps   نامیده می شود ) به سایر سرویس های شبکه نظیر NFS  است  .فایل های passwd  و group ، نمونه  هائی  در این زمینه ( Maps ها مورد نظر ) بوده که از آنان بمنظور  تمرکز در تائید کاربران   استفاده می گردد. سرویس های NIS و NFS ، دارای  ضعف های امنیتی متعددی  ( مثلا&#8221; ضعف در سیستم تائید کاربران ) بوده و در سالیان اخیر مهاجمان با  استفاده  از آنان ، حملات متعددی را سازماندهی و به سرانجام رسانده اند .اکثر حملات  انجام شده از نوع buffer overflows  ، DoS  می باشد . با توجه به آسیب  پذیری سرویس های فوق ، مهاجمان  همواره از آنان بعنوان هدفی مناسب  در جهت حملات خود استفاده نموده اند .<br />
درصورت عدم پیکربندی مناسب سرویس های NFS و NIS و Patching مناسب  ، سیستم  های کامپیوتری در معرض تهدید جدی بوده و مهاجمان با سوءاستفاده از حفره های  امنیـتی  موجود قادر به دستیابی  سیستم از راه دور و یا بصورت محلی خواهند بود.  مکانیزم  استفاده شده توسط NIS برای تائید کاربران دارای  ضعف های  خاص خود بوده و مهاجمان با استفاده از نرم افزارهائی نظیر  ypcat  قادر به نمایش مقادیر و داده  موجود در  بانک اطلاعاتی NIS بمنظور  بازیابی فایل رمزعبور می باشند.</span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="color: #000080; font-size: x-small;"> <strong>سیستم های عامل در معرض تهدید<br />
</strong></span> <span style="font-size: x-small;"> تقریبا&#8221; تمامی سیستم های یونیکس و لینوکس بهمراه یک نسخه از NFS  و NIS ارائه می  گردند. سرویس های فوق،  بصورت پیش فرض  فعال می باشند . </span> </span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="color: #000080; font-size: x-small;"> <strong>نحوه تشخیص آسیب پذیری سیستم<br />
</strong></span> <span style="font-size: x-small;"> بمنظور تشخیص آسیب پدیری سیستم در رابطه با سرویس های NIS   و NFS موارد زیر پیشنهاد می گردد : </span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl"><span style="font-size: x-small;"> بررسی و اطمینان از نصب آخرین Patch  ارائه شده توسط تولید کننده . تمامی نسخه هائی که بهنگام نشده و یا آخرین  Patch موجود بر روی آنان نصب نشده باشد در معرض تهدید و آسیب قرار  خواهند داشت . در اکثر نسخه ها   با استفاده از دستور rpc.mountd -version  می  توان از شماره  نسخه NFS  نصب شده آگاهی  یافت . بمنظور آگاهی از شماره نسخه NIS  می توان  از  دستور  ypserv -version    استفاده نمود ( دستور فوق شماره نسخه NFS را نیز  نمایش  خواهد داد ) . </span></li>
<li dir="rtl"><span style="font-size: x-small;"> بمنظور تشخیص آسیب پذیری نرم افزار، می توان  از یک پویشگر  نقاط آسیب پذیر بهنگام شده بصورت  مستمر استفاده تا بررسی  لازم در خصوص ضعف های جدید صورت پذیرد.</span></li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"> بمنظور برخورد با عدم پیکربندی مناسب NIS موارد  زیر  پیشنهاد می گردد : </span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl"> <span style="font-size: x-small;"> اطمینان از عدم نگهداری Root Password در یک NIS map </span></li>
<li dir="rtl"> <span style="font-size: x-small;"> سازگاری رمزهای عبور تعریف شده با  سیاست های امنیتی  موجود. در این راستا می توان از یک برنامه Cracker    بمنظور بررسی استحکام رمزهای  عبور تعریف شده،استفاده نمود.</span></li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"> بمنظور برخورد با عدم پیکربندی مناسب NFS موارد زیر  پیشنهاد می گردد : </span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl"> <span style="font-size: x-small;"> بررس لازم در خصوص بهنگام بودن میزبانان ،  netgroups و مجوزها در فایل etc \ exports \ . </span></li>
<li dir="rtl"> <span style="font-size: x-small;"> اجرای دستور Showmount e بمنظور مشاهده  عناصر export شده و بررسی سازگاری آنان با  سیاست های امنیتی .</span></li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="color: #000080; font-size: x-small;"><strong> نحوه حفاظت در مقابل نقطه آسیب پذیر<br />
</strong> </span> <span style="color: #336699; font-size: x-small;">موارد زیر در ارتباط با پیکربندی  NIS ، پیشنهاد می گردد: </span> </span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl"> <span style="font-size: x-small;">مشخص نمودن صریح سرویس  دهندگان NIS  بر روی سرویس گیرندگان ( پیشگیری لازم در  خصوص   تظاهر سایر سیستم ها بعنوان یک سرویس دهنده NIS ) .</span></li>
<li dir="rtl"><span style="font-size: x-small;">در زمان ایجاد فایل های DBM ،  ویژگی YP_SECURE  فعال گردد .  بدین ترتیب ،سرویس دهنده صرفا&#8221; به درخواست های ارسالی توسط یک سرویس گیرنده  و از  طریق پورت های مجاز ، پاسخ خواهد بود . در این رابطه می توان از سوئئچ S بهمراه دستور makedbm   استفاده نمود . </span></li>
<li dir="rtl"> <span style="font-size: x-small;">درج میزبانان مورداعتماد و شبکه ها در  var/yp/securenets  / که توسط پردازه های  ypserv و  ypxfrd   استفاده می گردد. </span></li>
<li dir="rtl"> <span style="font-size: x-small;">درج    ::: ۰:۰ : * :+    در password map بر روی سرویس گیرندگان NFS </span></li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="color: #336699; font-size: x-small;">موارد   زیر در ارتباط با پیکربندی NFS   پیشنهاد می گردد: </span> </span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"> استفاده از آدرس های عددی IP و  یا  FQDN) fully qualified domain names)  در مقابل اسامی مستعار  (زمانیکه  به سرویس گیرندگان در فایل etc / exports  اجازه داده می شود) .</span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"> بمنظوربررسی پیکربندی سیستم می توان از برنامه ای با نام NFSBug  ، استفاده نمود.برنامه فوق امکانات متنوعی را بمنظور تست پیکربندی سیستم  ارائه می  نماید . برای دریافت برنامه NFSBug  ، می توان از آدرس <a href="ftp://coast.cs.purdue.edu/pub/tools/unix/nfsbug/"> ftp://coast.cs.purdue.edu/pub/tools/unix/nfsbug</a> استفاده  نمود . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">اسفاده از فایل etc\exports  بمنظور اعمال محدودیت در  رابطه با دستیابی به سیستم فایل NFS با افزودن   پارامترهای زیر :<br />
- ممانعت کاربران معمولی از mounting یک سیستم  فایل NFS با افزودن یک پارامتر ایمن پس از آدرس IP و یا نام Domain  مربوط به  سرویس گیرنده NFS  .<br />
مثلا&#8221; : ( home 10.20.1.25(secure /<br />
- export نمودن سیستم فایل NFS   با مجوزهای مناسب  .عملیات فوق را می توان با افزودن مجوزهای لازم ( ro برای فقط خواندنی و یا rw   برای خواندن و نوشتن ) پس از آدرس IP مربوط به  نام domain  سرویس گیرنده NFS    در فایل etc\export  انجام  داد.<br />
مثلا&#8221; : ( home 10.20.1.25(ro  /  .<br />
- در صورت امکان ، از پارامتر root_squash  بعد  از  آدرس IP و نام Domain  مربوط  به سرویس گیرنده NFS استفاده گردد . در صورتیکه  پارامتر  فوق فعال شده باشد ،  superuser ID root  بر روی سرویس گیرنده NFS با کاربر ID nobody  در سرویس دهنده NFS جایگزین می گردد. بدین ترتیب root user  بر روی سرویس گیرنده ، قادر به  دستیابی  و یا تغییر فایل ها   بر روی root نخواهند بود.<br />
مثلا&#8221; : ( home 10.20.1.25(root_squash / .</span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">بر روی سیستم عامل سولاریس ،  مانیتورینگ پورت فعال گردد. عملیات فوق را می توان  با افزودن  Line set  nfssrv:nfs_portmon = 1  در فایل etc/system / ،  انجام داد . </span></p>
</li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="color: #336699; font-size: x-small;">موارد زیر در  ارتباط با NFS و NIS   پیشنهاد می گردد : </span> </span></p>
<ul><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"> بازنگری  و بررسی  سیاست های فایروال  بمنظور اطمینان از بلاک  شدن تمامی پورت های غیر ضروری(  مثلا&#8221; پورت ۱۱۱ ( portmap  ) و پورت ۲۰۴۹ ( Rpc.nfsd ) ) .امکان دستیابی به سرویس  دهندگان NFS و NIS  ، می بایست صرفا&#8221; از طریق سرویس گیرندگان مجاز انجام شود.</span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">بررسی لازم در خصوص استفاده  از NFS بر روی یک پروتکل ایمن نظیر SSH . در این رابطه می توان  از آدرس  <a href="http://www.math.ualberta.ca/imaging/snfs/"> http://www.math.ualberta.ca/imaging/snfs/</a> استفاده نمود . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">نصب تمامی patch  های ارائه شده توسط تولید کنندگان و  یا ارتقاء  سرویس دهندگان NIS و  NFS به آخرین نسخه موجود. برای آگاهی از اطلاعات   مربوط به  نصب و   پیکربندی  یونیکس با  لحاظ نمودن مسائل امنیتی مضاعف ، می توان از آدرس <a href="http://www.cert.org/tech_tips/usc20_full.html">UNIX Security  Checklist</a> استفاده نمود.</span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">غیر فعال نمودن NFS و NIS  مربوط به deamons بر روی سیستم هائی که مختص یک  سرویس  دهنده NFS و یا NIS  طراحی و  تائید نشده اند . بمنظور پیشگیری لازم در اینخصوص  می توان سرویس های  NIS و یا NFS   ( و یا هر دو آنان ) را  از روی سیستم حذف نمود.</span></p>
</li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="color: #000080;"><strong>دهمین نقطه آسیب پذیر :<span style="font-size: x-small;"> (</span></strong></span><span style="color: #000080; font-size: x-small;"><strong> Open Secure  Sockets Layer  (SSL<br />
</strong></span><span style="font-size: x-small;">کتابخانه <a href="http://www.openssl.org/">OpenSSL </a> ( بصورت Open  source است ) ، نرم افزاری  رایج  بمنظور افزدون امنیت رمزنگاری به برنامه  ها ئی است که از طریق شبکه با یکدیگر ارتباط برقرار می نمایند .سرویس  دهنده  آپاچی ، مهمترین وشناخته ترین  برنامه استفاده کننده از  پکیج فوق می باشد ( بمنظور حمایـت  از  hhtps ، ارتباط بر روی پورت ۴۴۳ )  . برنامه های متعدد دیگر با انجام برخی تغییرات ، استفاده از  OpenSSL  بمنظور افزایش امنیـت اطلاعات مبادله شده در یک شبکه را در دستور کار خود  قرار داده اند .<br />
برنامه های متعددی بمنظور ارائه امنیت رمزنگاری در ارتباط با یک Connection از OpenSSL   استفاده می نمایند . مهاجمان در اغلب موارد در مقابل هدف قرار دادن مستقیم OpenSSL ، برنامه هائی را برای حملات خود انتخاب  می  نمایند که از OpenSSL  استفاده می نمایند . یکی  از  اهداف مهاجمین در این رابطه ، سرویس دهنده آپاچی  است که از  OpenSSL استفاده می نماید .  برنامه هائی دیگر نظیر: mail ، openldap,CUPS      که   از OpenSSL استفاده می نمایند نیز در معرض  تهاجم قرار خواهند داشت .<br />
OpenSSL دارای نقاط آسیب پذیر متعددی بوده که می  توان به  چهار نمونه مهم آنان اشاره نمود :   <a href="http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0655">مورد   اول</a> ، <a href="http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0656">مورد   دوم</a> ،<a href="http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0656"> مورد سوم </a>، <a href="http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2002-0659">مورد   چهارم </a> . مهاجمان با  استفاده از نقاط آسیب پذیر فوق، قادر به اجرای  کد دلخواه بعنوان کاربر کتابخانه OpenSSL می  باشند.</span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><strong> <span style="color: #000080; font-size: x-small;"> سیستم های عامل در معرض تهدید<br />
</span> </strong><span style="font-size: x-small;">هر یک از سیستم های یونیکس و یا لینوکس که بر روی آنان  نخسه  OpenSSL 0.9.7 و یا  قبل از آن اجراء می گردد،  در معرض این آسیب قرار خواهند داشت  .</span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><strong> <span style="color: #000080; font-size: x-small;"> نحوه تشخیص آسیب پذیری سیستم<br />
</span> </strong> <span style="font-size: x-small;"> در صورتیکه نسخه</span><span style="color: #000080; font-size: x-small;"><strong> </strong> </span> <span style="font-size: x-small;"> version 0.9.7a و یا قبل از آن  نصب شده باشد ، سیستم در معرض تهدید و آسیب   قرار خواهد داشت . در این رابطه می توان از دستور OpenSSL  version ،  بمنظور آگاهی از شماره نسخه نرم افزار نصب شده ، استفاده نمود. </span> </span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="color: #000080; font-size: x-small;"><strong> نحوه حفاظت در مقابل نقطه آسیب پذیر<br />
</strong> </span> <span style="font-size: x-small;">بمنظور حفاظت در مقابل نقطه آسیب پذیر فوق ، موارد زیر  پیشنهاد می  گردد : </span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl"> <span style="font-size: x-small;">ارتقاء به آخرین و جدیدترین نسخه <a href="http://www.openssl.org/">OpenSSL </a> .   در صورتیکه OpenSSL بهمراه سیستم عامل نصب شده  است ، از  تولیدکننده سیستم عامل مربوطه می بایست آخرین نسخه مربوطه را  دریافت و آن  را   بر روی سیستم  نصب نمود. </span></li>
<li dir="rtl"> <span style="font-size: x-small;">در صورت امکان ، از ipfilter و  سایر ابزارهای  موجود در این زمینه  بمنظور  اعمال محدودیت در رابطه با   سیستم هائی که می بایست به سرویس دهنده  OpenSSL متصل گردند ،استفاده  شود .</span></li>
<p></span></ul>
<h2><a id="post-2046" title="پیوند پایدار به مهمترین نقاط آسیب پذیر یونیکس و  لینوکس ( بخش اول )" rel="bookmark" href="../networks/linux-unix-vu-p1-2046/">مهمترین نقاط آسیب پذیر یونیکس و لینوکس ( بخش اول )</a></h2>
<h2><a id="post-2047" title="پیوند پایدار به مهمترین نقاط آسیب پذیر یونیکس و  لینوکس ( بخش دوم  )" rel="bookmark" href="../networks/linux-unix-vu-p2-2047/">مهمترین نقاط آسیب پذیر یونیکس و لینوکس ( بخش دوم  )</a></h2>
<h2><a id="post-2048" title="پیوند پایدار به مهمترین نقاط آسیب پذیر یونیکس و  لینوکس ( بخش سوم  )" rel="bookmark" href="../networks/linux-unix-vu-p3-2048/">مهمترین نقاط آسیب پذیر یونیکس و لینوکس ( بخش سوم  )</a></h2>
<h2><a id="post-2049" title="پیوند پایدار به مهمترین نقاط آسیب پذیر یونیکس و  لینوکس ( بخش چهارم   )" rel="bookmark" href="../networks/linux-unix-vu-p4-2049/">مهمترین نقاط آسیب پذیر یونیکس و لینوکس ( بخش  چهارم   )</a></h2>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<p></span></ul>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/networks/linux-unix-vu-p5-2050/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>مهمترین نقاط آسیب پذیر یونیکس و لینوکس ( بخش چهارم   )</title>
		<link>http://www.irandevelopers.com/networks/linux-unix-vu-p4-2049/</link>
		<comments>http://www.irandevelopers.com/networks/linux-unix-vu-p4-2049/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 03:38:27 +0000</pubDate>
		<dc:creator>سخاروش</dc:creator>
				<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[شبکه]]></category>
		<category><![CDATA[عمومی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=2049</guid>
		<description><![CDATA[هفتمین نقطه آسیب پذیر : ( Simple Network Management Protocol (SNMP از پروتکل SNMP بمنظور کنترل ، مانیتورینگ از راه دور و پیکربندی  تمامی دستگاه های پیشرفته مبتنی بر TCP/IP  در ابعاد گسترده ای  استفاده می شود.با اینکه  استفاده از SNMP در بین پلات فرم های متفاوت شبکه استفاده می گردد، ولی در اغلب موارد [...]]]></description>
			<content:encoded><![CDATA[<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="color: #000080;"><strong>هفتمین </strong></span><strong><span style="color: #000080;"> نقطه آسیب پذیر :<span style="font-size: x-small;"> ( </span></span> <span style="color: #000080; font-size: x-small;">Simple Network Management  Protocol (SNMP </span></strong> <span style="font-size: x-small;"><br />
از پروتکل SNMP بمنظور کنترل ، مانیتورینگ از  راه دور و  پیکربندی  تمامی دستگاه های پیشرفته مبتنی بر TCP/IP    در ابعاد گسترده ای  استفاده می شود.با اینکه  استفاده از SNMP  در بین پلات فرم های متفاوت شبکه استفاده می گردد، ولی در اغلب موارد از  آن   بمنظور پیکربندی و مدیریت دستگاههائی نظیر چاپگر ، روترها ، سوئیچ ها ، Access point  ها  و دریافت داده های مورد نیاز دستگاههای مانیتورینگ شبکه ، استفاده می  شود  .<br />
SNMP ، از روش های متفاوتی بمنظور مبادله پیام  بین  ایستگاههای مدیریت SNMP و دستگاههای شبکه ای   استفاده می نماید . روش های استفاده شده بمنظور برخورد با پیام  های مبادله شده و مکانیزم تائید و معتبر سازی پیا م ها،  از جمله عوامل  اصلی  در رابطه با  نقاط آسیب پذیر SNMP می باشند .<br />
نقاط آسیب پذیر  مرتبط با روش های استفاده شده در SNMP ( نسخه یک  )   بهمراه جزئیات مربوطه را می توان  در آدرس  <a href="http://www.cert.org/advisories/CA-2002-03.html">CERT  &#8211; 2002 &#8211; 03</a> ، مشاهده نمود .  نقاط آسیب پذیر متعددی در SNMP متاثر از روش  برخورد با  پیام ها توسط ایستگاه های مدیریتی است . نقاط آسیب  پذیر فوق، به نسخه ای خاص  از SNMP محدود  نبوده و محصولات متعدد ارائه شده توسط تولید  کنندگان را نیز شامل می گردد . مهاجمان با استفاده از نقاط آسیب پذیر فوق ،   قادر به انجام حملات متفاوت از نوع DoS ( از کار  افتادن  یک سرویس ) تا پیکربندی و مدیریت ناخواسته ماشین آلات و تجهیزات مبتنی بر SNMP  ، می باشند .<br />
برخی از نقاط آسیب پذیر در ارتباط با SNMP متاثر  از روش  های استفاده شده بمنظور تائید و معتبر سازی پیام ها در نسخه های قدیمی SNMP  است ( توارث مشکلات ) . نسخه های یک و دو SNMP  ،  از یک &#8221; رشته  مشترک &#8221; غیررمز شده بعنوان  تنها   گزینه موجود  برای تائید پیام ها استفاده می  نمایند . عدم استفاده از روش های  مناسب رمزنگاری ، می تواند عاملی مهم در پیدایش نقاط آسیب پذیر باشد. نگرش  پیش فرض   نسبت به  &#8221; رشته مشترک  &#8221;  که  توسط تعداد زیادی از دستگاههای SNMP  استفاده می گردد ، از ذیگر عوامل مهم در ارتباط با عرضه نقاط آسیب پذیر  است( برخی از تولید  کنندگان بمنظور  افزایش سطح ایمنی مربوط به داده های حساس ، رشته را بصورت &#8220;اختصاصی &#8221; تغییر  و  استفاده می نمایند  ) .  شنود اطلاعاتی و ترافیک SNMP  ، می  تواند افشاء  اطلاعات و ساختار شبکه ( سیستم ها و دستگاههای متصل شده به  آن  )   را بدنبال داشته باشد . مهاجمین با استفاده از اطلاعات فوق ، قادر به  انتخاب  مناسب و دقیق هدف خود بمنظور برنامه ریزی حملات خود می باشند .<br />
اکثر تولید کنندگان بصورت پیش فرض نسخه یک SNMP  را  فعال و تعدادی  دیگر،  محصولاتی  را ارائه می نمایند که  قادر به استفاده ازمدل های  امنیتی نسخه شماره سه SNMP   نمی باشند. ( با استفاده از مدل های امنیـی ارائه شده در نسخه شماره سه SNMP ، می توان  پیکربندی لازم در خصوص روش های تائید را بهبود  بخشید ) .<br />
SNMP ، مختص یونیکس نمی باشد و  در ابعاد وسیعی  در  ویندوز ، در تجهیزات شبکه ای ، در چاپگرها ، access  point  ها و Bridges ، استفاده می  گردد. با توجه به  نتایج  حاصل از آنالیز  حملات مبتنی بر SNMP   ، مشخص شده است که اکثر حملات در این رابطه بدلیل ضعف در پیکربندی SNMP در سیستم های یونیکس است .</span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="color: #000080; font-size: x-small;"> <strong>سیستم های عامل در معرض تهدید<br />
</strong></span> <span style="font-size: x-small;"> تقریبا&#8221;  بر روی تمامی سیستم های یونیکس و لینوکس   یک نسخه SNMP  نصب و بهمراه آن عرضه می گردند. در اغلب موارد پروتکل فوق ، بصورت پیش فرض  فعال  می باشد.  اکثر دستگاه ها و سیستم های عامل شبکه ای مبتنی بر SNMP   دارای نقطه آسیب پذیر فوق بوده و در معرض تهدید قرار خواهند داشت . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="color: #000080; font-size: x-small;"> <strong>نحوه تشخیص آسیب پذیری سیستم<br />
</strong></span> <span style="font-size: x-small;"> بمنظور بررسی نصب SNMP  بر  روی دستگاههای موجود و متصل شده در  شبکه ، می توان از یک برنامه کمکی و یا روش دستی  استفاده نمود. برنامه پویشگر SNScan ، نمونه ای  در این  زمینه بوده که می توان آن را از طریق آدرس  <a href="http://www.foundstone.com/knowledge/free_tools.html">http://www.foundstone.com/knowledge/free_tools.html</a> دریافت نمود. در مواردیکه امکان استفاده از ابزارهای  پویشگر وجود ندارد ،  می  توان بررسی لازم در خصوص نصب و اجراء SNMP  را  بصورت دستی انجام داد. در این راستا می توان به مستندات سیستم عامل مربوطه  مراجعه  تا پس از آگاهی از نحوه پیاده سازی SNMP  ،  عملیات  لازم بمنظور تشخیص فعال بودن SNMP را انجام داد .  در این  رابطه می توان ، جستجوی لازم در لیست پردازه ها برای یافتن &#8220;snmp&#8221;  در حال اجراء بر روی پورت های ۱۶۱ و ۱۶۲ را انجام داد .  وجود صرفا &#8221; یک  نمونه SNMP  ، دلیلی بر آسیب پذیری سیستم است . بمنظور   آگاهی از جزیئات لازم در اینخصوص می توان از آدرس  <a href="http://www.cert.org/advisories/CA-2002-03.html">CERT  &#8211; 2002 &#8211; 03</a> استفاده نمود . در صورت تحقق یکی از شرایط زیر و  نصب  SNMP ،  سیستم در معرض آسیب  و تهدید قرار  خواهد داشت : </span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl"> <span style="font-size: x-small;">وجود اسامی SNMP  Community پیش فرض و یا خالی  ( اسامی استفاده شده بعنوان رمزهای عبور ) </span></li>
<li dir="rtl"> <span style="font-size: x-small;">وجود اسامی SNMP Community  قابل  حدس </span></li>
<li dir="rtl"> <span style="font-size: x-small;">وجود رشته های مخفی SNMP Community </span></li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><strong> <span style="color: #000080; font-size: x-small;">نحوه حفاظت در مقابل نقطه آسیب پذیر<br />
</span> </strong> <span style="font-size: x-small;">بمنظور حفاظت در مقابل نقطه آسیب پذیر فوق ،در دو زمینه می  توان  اقدامات حفاظتی را سازماندهی نمود .<br />
</span> <span style="color: #336699; font-size: x-small;"> حفاظت در  مقابل  درخواست های آسیب رسان   و تهدید کننده : </span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl"> <span style="font-size: x-small;">غیر فعال نمودن SNMP در صورت عدم  ضرورت  استفاده از آن </span></li>
<li dir="rtl"> <span style="font-size: x-small;">استفاده از یک مدل امنیتی مبتنی بر کاربر SNMPv3 ،   بمنظور تائید پیام ها و رمزنگاری داده  ها ( در صورت امکان ) </span></li>
<li dir="rtl"> <span style="font-size: x-small;">در صورت استفاده از SNMP نسخه یک  و یا دو ،  می بایست آخرین نسخه Patch ارائه شده  توسط تولید کننده ، نصب  گردد برای آگاهی از مشخصات  تولیدکننگان، می توان  به  بخش ضمیمه <a href="http://www.cert.org/advisories/CA-2002-03.html"> CERT   Advisory CA-2002-03 </a>، مراجعه نمود .</span></li>
<li dir="rtl"><span style="font-size: x-small;"> SNMP را در گلوگاه های ورودی  شبکه فیلتر نمائید ( پورت  ۱۶۱ مربوط به TCP/UDP و پورت ۱۶۲ مربوطه به TCP/UDP )  . عملیات فوق را در مواردیکه ضرورتی  به  مدیریت دستگاهها بصورت خارجی وجود ندارد ، می بایست انجام داد .</span></li>
<li dir="rtl"><span style="font-size: x-small;">از  کنترل دستیابی مبتنی بر میزبان بر روی سیستم های  SNMP agent استفاده گردد .  ویژگی فوق ممکن است توسط SNMP agent سیستم های  عامل  دارای محدودیت هائی باشد ، ولی می توان کنترل لازم در خصوص پذیرش درخواست  ها توسط agent مربوطه را انجام داد. در اکثر سیستم های  یونیکس ، می توان عملیات فوق را  توسط  یک TCP-Wrapper  و یا پیکربندی Xined انجام داد .  استفاده از یک فایروال فیلترینگ  بسته های اطلاعاتی مبتنی بر agent  بر روی یک  میزبان   نیز می تواند در بلاک نمودن درخواست های ناخواسته SNMP موثر واقع شود . </span></li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="color: #336699; font-size: x-small;"> حفاظت در مقابل  رشته های قابل حدس </span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">غیر فعال نمودن SNMP در صورت عدم  ضرورت    استفاده از آن </span></p>
</li>
<li dir="rtl"><span style="font-size: x-small;">استفاده از یک مدل امنیتی مبتنی بر کاربر SNMPv3 ،   بمنظور تائید پیام ها و رمزنگاری داده  ها ( در صورت امکان ) </span></li>
<li dir="rtl"><span style="font-size: x-small;">در صورت استفاده از SNMP نسخه یک  و یا دو  ، می بایست از یک سیاست خاص بمنظور اسامی community ( استفاده شده بعنوان رمزهای عبور )  استفاده  گردد. در این راستا لازم است اسامی بگونه ای انتخاب گردند که   غیر قابل حدس بوده و بصورت ادواری و در محدوده های خاص زمانی نیز تغییر  داده شوند .</span></li>
<li dir="rtl"><span style="font-size: x-small;">با استفاده از امکانات موجود می بایست بررسی  لازم در خصوص   استحکام اسامی در نظر گرفته شده برای رمزهای عبور  راانجام داد.در این  رابطه می توان از خودآموز و ابزار ارائه شده در آدرس  <a href="http://www.sans.org/resources/idfaq/snmp.php"> http://www.sans.org/resources/idfaq/snmp.php</a> ، استفاده  کرد.</span></li>
<li dir="rtl"><span style="font-size: x-small;"> SNMP را در گلوگاه های ورودی  شبکه فیلتر نمائید ( پورت  ۱۶۱ مربوط به TCP/UDP و پورت ۱۶۲ مربوطه به TCP/UDP )  . عملیات فوق را  در مواردیکه ضرورتی به مدیریت دستگاهها بصورت خارجی وجود ندارد ،  می بایست انجام داد . پیکربندی فیلترینگ را صرفا&#8221; بمنظور ترافیک مجاز SNMP  بین subnet های  ممیزی شده ، انجام دهید. </span></li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><br />
</span><span style="color: #000080;"><strong>هشتمین </strong></span><strong><span style="color: #000080;"> نقطه آسیب پذیر :</span></strong> <span style="color: #000080;"><strong> <img src='http://www.irandevelopers.com/wp-includes/images/smilies/icon_sad.gif' alt="icon sad مهمترين نقاط آسيب پذير يونيکس و لينوکس ( بخش چهارم   ) " class='wp-smiley' title="مهمترين نقاط آسيب پذير يونيکس و لينوکس ( بخش چهارم   ) " />  <span style="font-size: x-small;">Secure   Shell (SSH<br />
</span> </strong></span> <span style="font-size: x-small;">SSH ، یک سرویس  عمومی برای  ایمن سازی Login ، اجرای دستورات و ارسال فایل  در  یک  شبکه است .اکثر سیستم های مبتنی بر یونیکس از بسته نرم افزاری <a href="http://www.openssh.org/">OpenSSH </a> (  نسخه  فوق بصورت open-source  است ) و یا نسخه تجاری  <a href="http://www.ssh.com/">SSH Communication Security</a> ، استفاده می  نمایند  . با اینکه SSH دارای ایمنی مناسبتری نسبت به telnet,ftp و برنامه های R-Command    می باشد ، ولی همچنان   در هر دو نسخه اشاره شده ، ضعف های امنیتی  متعددی وجود دارد . اکثر  ضعف های موجود صرفا&#8221; اشکالات جزئی  بوده و تعداد اندکی از  آنان ، حائز اهمیت بوده و می بایست بلافاصله نسبت به برطرف نموودن آنان  اقدام  گردد . مهمترین  تهدید مرتبط با ضعف های امنیتی  SSH ، امکان دستیابی  (سطح ریشه)  به ماشین آسیب  پذیر توسط مهاجمان است .  با توجه به  رشد چشمگیر  استفاده از سرویس گیرندگان و سرویس دهندگان  SSH    در محیط های ویندوز،  اکثر اطلاعات ارائه شده در  رابطه با نقطه آسیب پذیر فوق ، به نسخه  های پیاده سازی شده  SSH در  ویندوز و nix *  ( یونیکس ، لینوکس  )  بر می گردد  .عدم مدیریت مناسب SSH  ، خصوصا&#8221; در ارتباط با پیکربندی و بکارگیری patch  ها  و بهنگام سازی لازم ، می تواند مسائل و مشکلات خاص خود را  بدنبال  داشته باشد .<br />
SSH2 ، ابزاری قدرتمند<br />
تعداد زیادی از نقاط  آسییب پذیر تشخیص داده شده   در پروتکل هائی نظیر  POP3 ( جایگزین با SSH2 SFTP ) ، برنامه Telnet ، سرویس HTTP ,  و   ابزارهای مبتنی بر rhost ( نظیر : روش های تائید ,rsh ,   rlogin ,rcp )   باعث ارسال اطلاعات بصورت clear text  و یا عدم  پردازش  مناسب session های سرویس گیرنده &#8211; سرویس دهنده  می گردد. پروتکل SSH1 ،  دارای  پتانسیل آسیب پذیری   بالائی خصوصا&#8221; در ارتباط با session  موقتی  رمزنشده  می باشد . بدین دلیل   مدیران سیستم و شبکه  ، استفاده از پروتکل SSH2   را  گزینه ای شایسته در اینخصوص می دانند(  در مواردیکه امکان آن وجود دارد) . لازم است به این نکته مهم   اشاره گردد که SSH1 و SSH2  با  یکدیگر سازگار نبوده   و لازم است  نسخه SSH  بر روی سرویس گیرنده و سرویس دهنده  یکسان باشند (در این رابطه موارد استثنا ء نیز وجود دارد ) .<br />
کاربران OpenSSH می بایست به این نکته توجه  نمایند که  کتابخانه های OpenSSH در مقابل  پتانسیل های ایجاد شده توسط OpenSSH ، دارای نرم افزارهای آسیب پذیر  مختص خود می باشند. بمنظور آگاهی از  جزئیات مربوطه ، می توان از آدرس  <a href="http://www.cert.org/advisories/CA-2002-23.html">CERT Advisory  2002-23</a> استفاده  نمود .در  سال ۲۰۰۲ یک نسخه آلوده از OpenSSH  ( نسخه فوق  دارای یک trojan-horse  بود ) در زمان کوتاهی گسترش  و باعث آسیب های فراوانی گردید. بمنظور کسب اطلاعات  بیشتر در این رابطه و اطمینان از عدم آسیب پذیری سیستم خود در مقابل  نسخه آلوده فوق ، می توان از آدرس  <a href="http://www.openssh.org/txt/trojan.adv"> http://www.openssh.org/txt/trojan.adv</a> استفاده نمود . </span> </span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="color: #000080; font-size: x-small;"> <strong>سیستم های عامل در معرض تهدید<br />
</strong></span> <span style="font-size: x-small;"> هر نسخه یونیکس و یا لینوکس که بر روی آن OpenSSH 3.3  و  یا بعد از آن ( نسخه  ارائه شده در سال ۲۰۰۳ ،version  3.6.1)  و یا SSH  Communication Security&#8217;s SSH 3.0.0  و یا بعد  از  آن ( نسخه ارائه شده در سال ۲۰۰۳ شماره  version 3.5.2 ) نصب  واجراء  می گردد ،  در معرض این آسیب قرار خواهد داشت .</span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="color: #000080; font-size: x-small;"> <strong>نحوه تشخیص آسیب پذیری سیستم<br />
</strong></span> <span style="font-size: x-small;"> با استفاده از یک پویشگر  مناسب ، می توان بررسی لازم در خصوص آسیب پذیری یک نسخه را  انجام داد . در این رابطه می توان با اجرای دستور &#8221;  ssh    -V &#8221; ، از شماره نسخه نصب شده بر روی سیستم آگاه گردید.  ScanSSH ،  ابزاری مفید  بمنظور تشخیص   از راه دور سرویس دهندگان  SSH  آسیب پذیر بدلیل عدم Patching  ، می باشد. دستور خطی ScanSSH ، لیستی از آدرس  های  شبکه را برای سرویس دهندگان  پویش و گزارشی در ارتباط با شماره نسخه های  آنان  را ارائه می نماید . آخرین نسخهScanSSH  که در  سال ۲۰۰۱ ارائه شده است را می توان از  آدرس <a href="http://www.monkey.org/%7Eprovos/scanssh/"> http://www.monkey.org/~provos/scanssh</a> دریافت نمود .</span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="color: #000080; font-size: x-small;"><strong>نحوه  حفاظت در مقابل نقطه آسیب پذیر<br />
</strong></span> <span style="font-size: x-small;">بمنظور حفاظت در مقابل نقطه آسیب پذیر فوق ، موارد زیر  پیشنهاد می  گردد :</span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"> نسخه  <a href="http://www.ssh.com/">SSH </a> و یا  <a href="http://www.openssh.org/">OpenSSH </a> را   به آخرین نسخه موجود ارتقاء دهید . درصورتیکه SSH  و یا OpenSSH بهمراه سیستم عامل ، نصب شده  باشد ، می بایست  آخرین Patchمربوطه را از سایت ارائه دهنده سیستم عامل  دریافت  و آن را برروی سیستم نصب نمود. در صورت  استفاده  از OpenSSL  ، از  نصب آخرین نسخه آن مطمئن شوید . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">حتی المقدور سعی گردد، نسخه SSH1  به SSH2 ارتقاء یابد .در  رابطه با توسعه SSH1  در آینده تصمیم خاصی وجود  نداشته و توسعه SSH2 مورد نظر می باشد . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"> دو نسخه پیاده سازی شده SSH ،  دارای مجموعه ای از گزینه  های انتخابی بوده  که  مدیران سیستم با استفاده از آنان و با توجه به سیاست های موجود می توانند  پیکربندی  مناسبی در اینخصوص را انجام دهند.  امکان محدودیت در دستیابی به ماشین مورد  نظر و اتصال به  آن ، روش های تائید کاربران و  ماهیت کاربران مجاز ، نمونه هائی از گزینه های  انتخابی بوده که می توان از آنان بمنظور پیکربندی مطلوب استفاده  گردد. </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">پیکربندی مناسب  سرویس گیرندگان SSH    در زمان اتصال به سرویس دهنده ای که SSH را  حمایت نمی  نماید . در چنین مواردی سرویس گیرنده ممکن است به عقب برگشته و استفاده از rsh را در این رابطه مفید تشخیص دهد . بمنظور  پیشگیری از  مواردی اینچنین می بایست  به کلید FallBackToRsh  در  فایل پیکربندی SSH  ، مقدار NO را نسبت داد .</span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"> از رمزنگاری blowfish در مقابل  ۳DES استفاده گردد (روش ۳DES ، ممکن است بصورت پیش فرض در نسخه مربوطه  در  نظر گرفته شده  باشد ). بدین ترتیب علاوه بر افزایش سرعت در عملیات ، رمزنگاری انجام شده  نیز از  استحکام مناسبی برخوردار خواهد بود.</span></p>
</li>
<p></span></ul>
<p><span style="font-family: Times New Roman; font-size: small;"> </span><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"> در بخش    پنجم  این مقاله به بررسی سایر نقاط    آسیب پذیر یونیکس و لینوکس خواهیم پرداخت</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/networks/linux-unix-vu-p4-2049/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>مهمترین نقاط آسیب پذیر یونیکس و لینوکس ( بخش سوم  )</title>
		<link>http://www.irandevelopers.com/networks/linux-unix-vu-p3-2048/</link>
		<comments>http://www.irandevelopers.com/networks/linux-unix-vu-p3-2048/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 03:37:23 +0000</pubDate>
		<dc:creator>سخاروش</dc:creator>
				<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[شبکه]]></category>
		<category><![CDATA[عمومی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=2048</guid>
		<description><![CDATA[پنجمین نقطه آسیب پذیر : :Clear Text Services تعداد زیادی از سرویس های شبکه استفاده شده توسط سیستم های مبتنی بر یونیکس ، بصورت  plain text بوده و  از رمزنگاری خاصی استفاده نمی نمایند. ضعف در رمزنگاری ، امکان شنود اطلاعاتی ( مشاهده ترافیک شبکه )  را فراهم و مهاجمان در ادامه امکان دستیابی به [...]]]></description>
			<content:encoded><![CDATA[<p dir="rtl"><strong>پنجمین </strong><strong>نقطه  آسیب پذیر : </strong> :<strong>Clear  Text Services</strong><br />
تعداد زیادی از سرویس های شبکه استفاده شده توسط سیستم های مبتنی بر یونیکس  ، بصورت  plain text  بوده و  از رمزنگاری خاصی استفاده نمی  نمایند. ضعف  در رمزنگاری ، امکان  شنود اطلاعاتی  ( مشاهده ترافیک شبکه )  را فراهم  و مهاجمان در ادامه امکان دستیابی به محتویات ارتباط  ایجاد شده و یا اطلاعات  حساس کاربران نظیر داده های مرتبط با رمز عبور را بدست خواهند آورد.  مثلا&#8221;  بمنظور  تشخیص  اطلاعات مرتبط با FTP و یا telnet ( اطلاعات login  ) ،  یک مهاجم ، می تواند  یک   sniffer  را در شبکه  و در محلی بین مسیر ارتباطی،  مستقر نماید (بعنوان سرویس دهنده FTP و یا یا Client LAN ) . تبادل اطلاعات بین دستورات  ورودی توسط سرویس گیرندگان و  پاسخ های ارائه شده توسط سرویس های موجود بر روی سرویس دهنده ، بصورت  plain-text خواهد بود. بدین ترتیب ،امکان ردیابی (  رهگیری ) داده و یا  کلیدهای فشرده شده توسط کاربر بسادگی فراهم می گردد.  اغلب مهاجمان در حملات اخیر خود از  برنامه های مختص شنود اطلاعاتی استفاده و عمدتا&#8221; اینگونه برنامه ها  را  بر روی  دستگاهها ی  آسییب پذیر  نصب می نمایند. در چنین  مواردی ، تشخیص نام و رمز عبور کاربر در داده های جمع آوری شده ( شنود  اطلاعاتی ) ،  بسادگی میسر خواهد شد.جدول زیر،  لیست  برخی از سرویس های شبکه یونیکس را که  اطلاعات را بصورت Clear Text  ، مبادله می نمایند ، نشان می دهد :</p>
<table style="height: 64px;" dir="ltr" border="1" cellspacing="0" cellpadding="3" width="366" bordercolor="#111111">
<tbody>
<tr>
<td dir="rtl" width="97" height="15" bgcolor="#e4e4e4">آیتم  ارسالی</td>
<td dir="rtl" width="87" height="15" bgcolor="#e4e4e4">Clear Auth</td>
<td dir="rtl" width="97" height="15" bgcolor="#e4e4e4">Clear Content</td>
<td dir="rtl" width="70" height="15" bgcolor="#e4e4e4">پورت</td>
<td dir="rtl" width="74" height="15" bgcolor="#e4e4e4">سرویس</td>
</tr>
<tr>
<td dir="ltr" width="97" height="29" align="right" bgcolor="#f4f4ff">
<p dir="rtl">متن ، باینری</p>
</td>
<td dir="ltr" width="87" height="29" align="center" bgcolor="#f4f4ff">Yes</td>
<td dir="ltr" width="97" height="29" align="center" bgcolor="#f4f4ff">Yes</td>
<td dir="ltr" width="70" height="29" align="center" bgcolor="#f4f4ff">21 ,                    20</td>
<td dir="ltr" width="74" height="29" align="center" bgcolor="#f4f4ff">FTP</td>
</tr>
<tr>
<td dir="ltr" width="97" height="15" align="right" bgcolor="#f4f4ff">متن ، باینری</td>
<td dir="ltr" width="87" height="15" align="center" bgcolor="#f4f4ff">N/A</td>
<td dir="ltr" width="97" height="15" align="center" bgcolor="#f4f4ff">Yes</td>
<td dir="ltr" width="70" height="15" align="center" bgcolor="#f4f4ff">69</td>
<td dir="ltr" width="74" height="15" align="center" bgcolor="#f4f4ff">TFTP</td>
</tr>
<tr>
<td dir="ltr" width="97" height="15" align="right" bgcolor="#f4f4ff">متن</td>
<td dir="ltr" width="87" height="15" align="center" bgcolor="#f4f4ff">Yes</td>
<td dir="ltr" width="97" height="15" align="center" bgcolor="#f4f4ff">Yes</td>
<td dir="ltr" width="70" height="15" align="center" bgcolor="#f4f4ff">23</td>
<td dir="ltr" width="74" height="15" align="center" bgcolor="#f4f4ff">telnet</td>
</tr>
<tr>
<td dir="ltr" width="97" height="15" align="right" bgcolor="#f4f4ff">متن ، باینری</td>
<td dir="ltr" width="87" height="15" align="center" bgcolor="#f4f4ff">N/A</td>
<td dir="ltr" width="97" height="15" align="center" bgcolor="#f4f4ff">Yes</td>
<td dir="ltr" width="70" height="15" align="center" bgcolor="#f4f4ff">25</td>
<td dir="ltr" width="74" height="15" align="center" bgcolor="#f4f4ff">SMTP</td>
</tr>
<tr>
<td dir="ltr" width="97" height="15" align="right" bgcolor="#f4f4ff">متن ، باینری</td>
<td dir="ltr" width="87" height="15" align="center" bgcolor="#f4f4ff">Yes</td>
<td dir="ltr" width="97" height="15" align="center" bgcolor="#f4f4ff">Yes</td>
<td dir="ltr" width="70" height="15" align="center" bgcolor="#f4f4ff">110</td>
<td dir="ltr" width="74" height="15" align="center" bgcolor="#f4f4ff">POP3</td>
</tr>
<tr>
<td dir="ltr" width="97" height="15" align="right" bgcolor="#f4f4ff">متن ، باینری</td>
<td dir="ltr" width="87" height="15" align="center" bgcolor="#f4f4ff">Yes</td>
<td dir="ltr" width="97" height="15" align="center" bgcolor="#f4f4ff">Yes</td>
<td dir="ltr" width="70" height="15" align="center" bgcolor="#f4f4ff">143</td>
<td dir="ltr" width="74" height="15" align="center" bgcolor="#f4f4ff">IMAP</td>
</tr>
<tr>
<td dir="ltr" width="97" height="15" align="right" bgcolor="#f4f4ff">متن</td>
<td dir="ltr" width="87" height="15" align="center" bgcolor="#f4f4ff">Yes</td>
<td dir="ltr" width="97" height="15" align="center" bgcolor="#f4f4ff">Yes</td>
<td dir="ltr" width="70" height="15" align="center" bgcolor="#f4f4ff">513</td>
<td dir="ltr" width="74" height="15" align="center" bgcolor="#f4f4ff">rlogin</td>
</tr>
<tr>
<td dir="ltr" width="97" height="15" align="right" bgcolor="#f4f4ff">متن</td>
<td dir="ltr" width="87" height="15" align="center" bgcolor="#f4f4ff">Yes</td>
<td dir="ltr" width="97" height="15" align="center" bgcolor="#f4f4ff">Yes</td>
<td dir="ltr" width="70" height="15" align="center" bgcolor="#f4f4ff">514</td>
<td dir="ltr" width="74" height="15" align="center" bgcolor="#f4f4ff">rsh</td>
</tr>
<tr>
<td dir="ltr" width="97" height="15" align="right" bgcolor="#f4f4ff">متن ، باینری</td>
<td dir="ltr" width="87" height="15" align="center" bgcolor="#f4f4ff">Yes</td>
<td dir="ltr" width="97" height="15" align="center" bgcolor="#f4f4ff">Yes</td>
<td dir="ltr" width="70" height="15" align="center" bgcolor="#f4f4ff">80</td>
<td dir="ltr" width="74" height="15" align="center" bgcolor="#f4f4ff">HTTP</td>
</tr>
</tbody>
</table>
<p dir="rtl">سرویس هائی نظیر Telnet و FTP که شامل اطلاعات  مربوط  به  تائید هویت کاربران  می باشند ، اطلاعات مورد نظر را بصورت متن  ارسال   که  بالاترین ریسک  را بدنبال خواهد داشت . در چنین مواردی مهاجمان می توانند با استفاده مجدد  از داده های حساس کاربران  نظیر نام و رمز عبور، با  خیال راحت ! به سیستم دستیابی نمایند .علاوه براین ، اجرای دستورات  بصورت  clear text می تواند توسط مهاجمان استفاده تا با استفاده از آنان دستورات  دلخواه  خود را بدون الزامی برای تائید ، اجراء نمایند. سرویس های Clear text  ، می توانند زمینه تهدیدات مختلفی  نظیر  :  تسهیل در  انجام  حملات  ، دستیابی از راه دور ، اجرای دستورات بر روی یک  سیستم مقصد ، شنود  و تشخیص اطلاعات را بدنبال داشته باشد .</p>
<p dir="rtl"><strong>سیستم های عامل در معرض تهدید<br />
</strong> تمامی  نمونه های یونیکس   ارائه شده ، از سرویس ها ی Clear text استفاده می نمایند. ( telnet و FTP دو  نمونه  متدواول در این زمینه می باشند ) . تمامی   نمونه نسخه های  ارائه شده یونیکس  و  لینوکس ( تنها  استنثاء در این  رابطه،  مربوط به آخرین ویرایش  Free/OpenBSD  می باشد )   ، بصورت پیش فرض ، برخی از سرویس های فوق را نصب می نمایند .</p>
<p dir="rtl"><strong>نحوه تشخیص آسیب پذیری سیستم<br />
</strong> موثرترین و مطمئن ترین روش بمنظور تشخیص  نقطه آسیب پذیر فوق (سرویس های clear text )  ، بکارگیری  نرم افزاری  مشابه با  ابزارهای استفاده شده (sniffer) توسط  مهاجمان است. متداولترین  برنامه موجود در این زمینه ،  tcpdump می باشد.  برای دریافت برنامه &#8220;tcpdump &#8221; می  توان از آدرس  <a href="http://www.tcpdump.org/">http://www.tcpdump.org</a> ،  استفاده نمود . نحوه فعال نمودن برنامه فوق،بمنظور تشخیص هر گونه ارتباط   clear text ،  بصورت زیر است :</p>
<p dir="ltr"># tcpdump -X -s 1600</p>
<p dir="rtl">دراین راستا می توان  از برنامه های دیگر نظیر : &#8220;ngrep&#8221;  نیز استفاده نمود. برنامه فوق،امکان  جستجوی الگوئی خاص نظیر &#8220;sername &#8221; و یا &#8221; assword &#8221;  را در شبکه فراهم می نماید.  ( اولین حروف،  بمنظور سازگاری با حروف بزرگ احتمالی ، در نظر گرفته نشده است ) . برای  دریافت  برنامه فوق ، می توان از آدرس    <a href="http://www.packetfactory.net/projects/ngrep/">http://www.packetfactory.net/projects/ngrep</a> استفاده نمود . نحوه فعال نمودن برنامه فوق ،  بصورت  زیر است :</p>
<p dir="ltr"># ngrep assword</p>
<p dir="rtl">در این رابطه می  توان از ابزارهای متنوع   دیگری بمنظور تشخیص  داده های حساس کاربران ( نام و رمز عبور )  استفاده نمود . Dsniff ، متداولترین  ابزار در این زمینه است . برنامه  فوق ، بررسی لازم در خصوص تمامی زوج نام و رمزعبور بر روی پروتکل های Plain text  حجیم، نظیر FTP ، Telnet  و POP3 را انجام و پس از تشخیص،  آنان را نمایش خواهد داد. برای بدست آوردن  برنامه فوق می توان از آدرس  <a href="http://www.monkey.org/%7Edugsong/dsniff/"> http://www.monkey.org/~dugsong/dsniff</a> استفاده نمود .  نحوه فعال نمودن برنامه فوق ،  بصورت زیر است :</p>
<p dir="ltr">#  /usr/sbin/dsniff</p>
<p dir="rtl"><strong>نحوه  حفاظت در مقابل نقطه آسیب پذیر<br />
</strong>استفاده از رمزنگاری End-To-End   و یا حداقل رمزنگاری Link-level می تواند  در این زمینه مفید واقع گردد.  برخی پروتکل ها از لحاظ رمزنگاری معادل یکدیگر می باشند( نظیر :  POP3S و HTTPS ) . برای پروتکل هائی که  دارای  قابلیت ها  و امکانات  , ذاتی رمزنگاری نمی باشند ، می توان  آنان را از طریق  SSH : Secure Shell ، و یا  SSL connection  انجام داد(  tunneling ) .<br />
OpenSSH یک نمونه پیاده سازی شده متداول و  انعطاف پذیر ازSSH   است.( قابل دسترس در آدرس  <a href="http://www.openssh.org/">http://www.openssh.org</a> ) . برنامه فوق،  در اکثر نسخه های یونیکس اجراء و  می توان از آن بمنظور ارتباطات از راه دور ( replaces telnet ,rlogin ,rsh ) و  tunneling ( پروتکل هائی  نظیر POP3,SMTP و X11  )    استفاده گردد .<br />
دستور زیر نحوه tunnel نمودن POP3  را بر روی SSH connection  نشان می دهد.  بر روی  سرویس دهنده  POP3 ، می بایست سرویس دهنده SSH نیز  اجراء گردد. در ابتدا آن را بر روی ماشین سرویس گیرنده اجراء می نمائیم :</p>
<p dir="ltr"># ssh -L  110:pop3.mail.server.com:110  username@pop3.mail.server.com</p>
<p dir="rtl">در ادامه ، برنامه  سرویس گیرنده پست الکترونیکی را به localhost اشاره می دهیم ، پورت TCP 110  ( برخلاف روال معمول که بصورت : pop3.mail.server.com ، پورت ۱۱۰  است )  . بدین ترتیب ، تمامی ارتباطات بین ماشین و سرویس دهنده پست  الکترونیکی  بصورت رمز شده انجام خواهد شد ( tunneled over SSH  ) .<br />
یکی دیگر از راه حل های متداول رمزنگاری مبتنی بر tunneling ، استفاده از stunnel است . روش فوق ، پروتکل SSL  را پیاده سازی(  با استفاده از OpenSSL Toolkit ) و می توان آن  را   بمنظور tunel نمودن پروتکل های متفاوت plain  text بخدمت  گرفت . برای دریافت برنامه فوق  ، می توان از آدرس  <a href="http://www.stunnel.org/">http://www.stunnel.org</a> استفاده  نمود.</p>
<p dir="rtl"><strong>ششمین </strong><strong> نقطه آسیب پذیر :</strong> : <strong>Sendmail<br />
</strong> Sendmail ، برنامه  ای است که  از آن بمنظور ارسال ، دریافت و فوروارد نمودن  نامه های الکترونیکی  در اغلب سیستم های یونیکس و لینوکس استفاده می گردد. Sendmail   ، یکی از متداولترین MTA : Mail   Transfer Agent  در اینترنت بوده که بطور گسترده ای از آن بعنوان  &#8220;آژانش توزیع نامه های الکترونیکی&#8221; بهمراه سرویس دهندگان پست الکترونیکی ،  استفاده  می گردد  . Sendmail ، یکی از اهداف اولیه  مهاجمان   در سالیان اخیر بوده و تاکنون حملات متعددی را در ارتباط با آن شاهد بوده  ایم. اکثر  حملات انجام شده بدلیل قدیمی بودن  و یا عدم patch   مناسب نسخه های نصب شده ، با موفقیت همراه بوده است .در این رابطه  می توان  به  چندین نمونه از حملات اخیر اشاره نمود :</p>
<p dir="ltr">-  <a href="http://www.cert.org/advisories/CA-2003-12.html">CERT Advisory  CA-2003-12 Buffer  Overflow in Sendmail </a><br />
- <a href="http://www.cert.org/advisories/CA-2003-07.html">CERT Advisory  CA-2003-07 Remote Buffer Overflow in Sendmail </a><br />
- <a href="http://www.cert.org/advisories/CA-2003-25.html">CERT Advisory  CA-2003-25 Buffer Overflow in Sendmail </a></p>
<p dir="rtl">خطرات و تهدیدات  مرتبط با Sendmail را می  توان به دو گروه  عمده  تقسیم نمود :  از دست رفتن امتیازات که  علت  آن buffer overflow  خواهد بود و پیکربندی نادرست  سیستم که می تواند تبعات منفی را بدنبال داشته باشد ( مثلا&#8221; تبدیل یک سیستم  به  مرکزی آلوده برای توزیع نامه های الکترونیکی ) .عامل اصلی در بروز تهدیدات  نوع اول  ، عمدتا&#8221; به استفاده از نسخه های قدیمی و یا عدم  patching   مناسب سیستم برمی گردد.علت اصلی تهدیدات نوع دوم ، به استفاده از فایل های  پیکربندی  پیش فرض و نادرست برمی گردد .</p>
<p dir="rtl"><strong>سیستم های عامل در معرض تهدید<br />
</strong> تقریبا&#8221; تمامی نسخه های لینوکس و یونیکس بهمراه یک نسخه نصب شده از Sendmail عرضه می گردند. سرویس فوق،  بصورت پیش  فرض فعال می باشد  .</p>
<p dir="rtl"><strong>نحوه تشخیص آسیب پذیری سیستم<br />
</strong> Sendmail ، در گذشته دارای نقاط آسیب پذیر  فراوانی بوده  که بتدریج  وبا ارائه نسخه های جدیدتر و patch  های  مربوطه ، میزان  آسیب پذیری آن کاهش یافته است .هر نسخه  قدیمی و یا Patch نشده  نرم فزار فوق در معرض آسیب قرار خواهد داشت . بمنطور مشخص نمودن  شماره نسخه برنامه sendmail ، می توان از دستور زیر استفاده نمود :</p>
<p dir="ltr">echo \$Z |  /usr/lib/sendmail -bt -d0</p>
<p dir="rtl">مسیر مشخص شده  sendmail  در دستور فوق ، با توجه به پیکربندی سیستم ، می تواند  متفاوت  باشد. برای آگاهی از آخرین نسخه ارائه  شده Sendmail می توان از آدرس  <a href="http://www.sendmail.org/current-release.html"> http://www.sendmail.org/current-release.html</a> استفاده نمود .</p>
<p dir="rtl"><strong>نحوه حفاظت در مقابل نقطه آسیب پذیر<br />
</strong>مراحل زیر بمنظور ایمن سازی و حفاظت  Sendmail پیشنهاد می گردد :</p>
<ul dir="rtl">
<li dir="rtl">
<p dir="rtl">نسخه موجود را به آخرین نسخه   ارتقاء و از آخرین patch های موجود ، استفاده  گردد .  برای دریافت source code می توان از آدرس <a href="http://www.sendmail.org/">http://www.sendmail.org</a> استفاده  نمود. در صورتیکه نسخه sendmail بهمراه سیستم  عامل ارائه  شده است  ( یک Package ) ، می توان برای دریافت patch مربوطه به سایت عرضه کنندگان سیستم عامل  مراجعه  نمود.</p>
</li>
<li dir="rtl">
<p dir="rtl">برنامه sendmail   عموما&#8221; بصورت پیش فرض در اکثر سیستم های یونیکس و لینوکس ( حتی آنانی که  بعنوان  سرویس دهنده mail   مورد نظر نبوده و فعالیت آنان در ارتباط با  mail   نخواهد بود) نصب می گردد. برنامه Sendmail را در  حالت daemon بر روی ماشین های فوق ، اجراء ننمائید (  غیر فعال نمودن سوئیچ  bd  -  ) . امکان ارسال نامه الکترونیکی توسط سیستم های فوق ، همچنان وجود  خواهد  داشت . در این رابطه می بایست پیکربندی سیستم بگونه ای انجام شود که به یک mail relay در فایل پیکربندی  sendmail ، اشاره گردد.فایل پیکربندی،  sendmail.cf نام داشته و معمولا&#8221; در آدرس  etc/mail/sendmail.cf  قرار دارد .</p>
</li>
</ul>
<ul dir="rtl">
<li dir="rtl">
<p dir="rtl">در صورتیکه   لازم است sendmail در حالت daemon   اجراء گردد، می بایست از صحت پیکربندی انجام شده  اطمینان حاصل گردد. در این رابطه می توان از منابع اطلاعاتی زیر استفاده  نمود :<br />
<a href="http://www.sendmail.org/tips/relaying.html"> http://www.sendmail.org/tips/relaying.html</a><br />
<a href="http://www.sendmail.org/m4/anti_spam.html"> http://www.sendmail.org/m4/anti_spam.html</a><br />
در نسخه  Sendmail 8.9.0 ، امکان open relay  بصورت پیش فرض غیرفعال می  باشد.تعداد زیادی از عرضه کنندگان سیستم های عامل ، مجددا&#8221; آن رادر  پیکربندی پیش  فرض خود فعال می نمایند. در صورت استفاده از نسخه  Sendmail  ارائه شده  بهمراه سیستم عامل ، می بایست دقت لازم در اینخصوص را انجام داد ( عدم  استفاده  سرویس دهنده برای  realying  ).</p>
</li>
<li dir="rtl">
<p dir="rtl">در زمان استفاده از نسخه جدید sendmail ( سوئیچ نمودن به یک نسخه دیگر ) ،   لازم  است تدابیر لازم در خصوص تغییر فایل های  پیکربندی ارائه شده توسط نسخه  قدیمی ، اندیشیده گردد . برای آگاهی از جزئیات  بیشتر در  ارتباط با پیکربندی Sendmail ، می توان از آدرس <a href="http://www.sendmail.org/m4/readme.html"> http://www.sendmail.org/m4/readme.html</a> استفاده  نمود.</p>
</li>
<li dir="rtl">
<p dir="rtl">در مواردیکه برنامه  Sendmail  از  منابع موجود بر روی اینترنت Download  می  گردد ، می بایست  بمنظور  اطمینان از مجاز بودن نسخه تکثیری  از  PGP signature    استفاده نمود. در این رابطه لازم است به این نکته دقت شود که بدون بررسی integrity مربوطه به source  code  برنامه Sendmail ، نمی بایست از آن   استفاده شود. در گذشته ، نسخه هائی از Trojan  ها در Sendmail  مستقر تا  در زمان مناسب حرکت مخرب خود را آغاز نمایند .   بمنظور دریافت اطلاعات  تکمیلی در این رابطه می توان از آدرس   <a href="http://www.cert.org/advisories/CA-2002-28.html">CERT Advisory  CA-2002-28</a> استفاده نمود. کلیدهای استفاده شده بمنظور sign  نمودن برنامه Sendmail دریافتی را می توان از  آدرس <a href="http://www.sendmail.org/ftp/PGPKEYS"> http://www.sendmail.org/ftp/PGPKEYS</a> بدست آورد . در صورت فقدان  PGP ، می بایست از MD5  Checksum  بمنظور بررسی integrity  کد منبع Sendmail ، استفاده گردد.</p>
</li>
</ul>
<p dir="rtl">برای کسب اطلاعات بیشتر می توان از  منابع اطلاعاتی زیر استفاده نمود :</p>
<p dir="ltr"><a href="http://www.sendmail.org/secure-install.html"> http://www.sendmail.org/secure-install.html</a><br />
<a href="http://www.sendmail.org/m4/security_notes.html"> http://www.sendmail.org/m4/security_notes.html</a><br />
<a href="http://www.sendmail.org/%7Egshapiro/security.pdf"> http://www.sendmail.org/~gshapiro/security.pdf</a></p>
<p dir="rtl">در بخش    چهارم این مقاله به بررسی سایر نقاط    آسیب پذیر یونیکس و لینوکس خواهیم پرداخت .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/networks/linux-unix-vu-p3-2048/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>مهمترین نقاط آسیب پذیر یونیکس و لینوکس ( بخش دوم  )</title>
		<link>http://www.irandevelopers.com/networks/linux-unix-vu-p2-2047/</link>
		<comments>http://www.irandevelopers.com/networks/linux-unix-vu-p2-2047/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 03:35:55 +0000</pubDate>
		<dc:creator>سخاروش</dc:creator>
				<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[شبکه]]></category>
		<category><![CDATA[عمومی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=2047</guid>
		<description><![CDATA[سومین نقطه آسیب پذیر : Apache Web Server آپاچی ( Apache) یکی از متداولترین سرویس دهندگان وب بر روی اینترنت است . در مقایسه با سرویس دهنده وب مایکروسافت ( IIS ) ، آپاچی مسائل و مشکلات امنیتی کمتری را داشته  ولی همچنان دارای آسیب پذیری خاص خود است  . علاوه بر وجود نقاط آسیب [...]]]></description>
			<content:encoded><![CDATA[<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="color: #000080;"><strong>سومین </strong></span><strong><span style="color: #000080;">نقطه  آسیب پذیر : </span></strong><span style="font-size: x-small;"> </span> <span style="font-size: x-small;"><span style="color: #000080;"><strong>Apache Web Server<br />
</strong></span>آپاچی ( Apache) یکی از متداولترین  سرویس دهندگان وب بر روی اینترنت است . در  مقایسه با سرویس دهنده وب مایکروسافت ( IIS ) ،  آپاچی  مسائل و مشکلات امنیتی کمتری را داشته  ولی همچنان دارای آسیب پذیری خاص  خود است  .<br />
علاوه بر وجود نقاط آسیب پذیر در ماژول ها و کد آپاچی ( <a href="http://www.cert.org/advisories/CA-2002-27.html">CA-2002-27</a> و <a href="http://www.cert.org/advisories/CA-2002-17.html">CA-2002-17</a> )  ، تکنولوژی های CGI  و PHP نیز دارای نقاط آسیب پذیری خاص خود بوده  که   ضعف های امنیتی  آنان به سرویس دهنده وب نیز سرایت می گردد.  در صورت وجود  نقاط آسیب پذیر در سرویس دهنده آپاچی و یا عناصر مرتبط به آن  ،  زمینه تهدیدات زیر فراهم می گردد : </span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl"> <span style="font-size: x-small;">غیر فعال نمودن سرویس ( DoS ) </span></li>
<li dir="rtl"> <span style="font-size: x-small;">نمایش و بمخاطره انداختن  فایل ها  و داده های حساس </span></li>
<li dir="rtl"> <span style="font-size: x-small;">دستیابی به سرویس دهنده از راه دور </span></li>
<li dir="rtl"> <span style="font-size: x-small;">بمخاطره افتادن سرویس دهنده ( دستکاری و خرابی سایت )</span></li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"> <strong>سیستم های عامل در معرض تهدید<br />
</strong></span>تمامی سیستم های  یونیکس قادر به اجراء آپاچی می باشند .  آپاچی بصورت پیش فرض بر روی تعداد زیادی از نسخه های   یونیکس و لینوکس  ، نصب می گردد .علاوه بر امکان فوق ، آپاچی را می توان  بر روی  میزبانی دیگر که از سیستم عاملی مختلف نظیر ویندوز  استفاده می نماید نیز نصب نمود. این نوع از نسخه های آپاچی نیز می تواند  دارای نقاط  آسیب پذیر خاص خود  باشد . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"> <span style="color: #000080;"> <strong>نحوه تشخیص آسیب پذیری سیستم<br />
</strong></span>بمنظور آگاهی  و کسب اطلاعات  لازم در خصوص نحوه تشخیص آسیب  پذیری سرویس دهنده وب آپاچی ، می توان از  آدرس های زیر استفاده نمود :</span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl"> <span style="font-size: x-small;"> در رابطه با Apache  1.3.x را  می توان از آدرس   <a href="http://www.apacheweek.com/features/security-13"> http://www.apacheweek.com/features/security-13</a> </span></li>
<li dir="rtl"> <span style="font-size: x-small;"> برای Apache 2.0.x می توان از آدرس  <a href="http://www.apacheweek.com/features/security-20"> http://www.apacheweek.com/features/security-20</a> </span></li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"> آدرس های اشاره شده ، دارای اطلاعات فنی لازم بمنظور نحوه تشخیص آسیب پذیری  سیستم و  پیشنهادات لازم در خصوص ارتقاء وضعیت امنیتی می باشند . استفاده از آدرس:   <a href="http://httpd.apache.org/">http://httpd.apache.org</a> نیز  در این زمینه مفید است . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"><strong>نحوه حفاظت در مقابل نقطه آسیب پذیر<br />
</strong></span>بمنظور حفاظت یک سرویس دهنده وب آپاچی ، پیشنهادات زیر ارائه می  گردد : </span></span></p>
<ul><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">اطمینان از  نصب آخرین patch  ارائه شده<br />
- در این رابطه می توان از آدرس <a href="http://httpd.apache.org/">http://httpd.apache.org</a> بمنظور آگاهی  از آخرین   وضعیت نسخه ها و  Patch levels  استفاده نمود.<br />
- بمنظور دستیابی به Source code  اکثر نسخه های  آپاچی، می توان  از آدرس   <a href="http://httpd.apache.org/download.cgi"> http://httpd.apache.org/download.cgi</a> استفاده نمود.<br />
- بمنظور آگاهی و دریافت آخرین Patch های  ارائه شده می توان از آدرس  <a href="http://www.apache.org/dist/httpd/patches/"> http://www.apache.org/dist/httpd/patches/</a> استفاده نمود.</span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">اطمینان  از patching عناصر کلیدی سیستم عامل که آپاچی  بعنوان  مرجع از آنان استفاده می نماید .در  این رابطه لازم است که صرفا&#8221; ماژول های ضروری  بمنظور صحت عملکرد سرویس دهنده ، در آپاچی کمپایل گردند .لازم  است به این نکته اشاره گردد که  کرم(  mod_ssl ( <a href="http://www.cert.org/advisories/CA-2002-27.html">CA-2002-27</a> نمونه ای کامل در این زمینه بوده  که از نقاط آسیب پذیر در(  OpenSSL ( <a href="http://www.cert.org/advisories/CA-2002-23.html"> CA-2002-23</a> استفاده نموده است . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">از اجرای  آپاچی بعنوان ریشه ،   اجتناب و می بایست بدین منظور ، کاربر و یا گروهی  خاص با حداقل مجوز ایجاد   گردد.  سایر پردازه های سیستم ضرورتی به اجراء تحت کاربر و یا گروه فوق را  نخواهند داشت . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">Chroot  ،  پتانسیلی است  که باعث تعریف مجدد محدوده یک برنامه می گردد . در حقیقت chroot ، باعث تعریف مجدد دایرکتوری  ROOT&#8221;  و یا &#8220;/&#8221;  برای   یک برنامه و یا یک Login session می گردد .chroot  می تواند بعنوان یک لایه تدافعی استفاده گردد . مثلا&#8221; در صورتیکه فردی به  کامپیوتر  شما دستیابی پیدا نماید ، قادر به مشاهده تمامی فایل های موجود بر روی  سیستم نخواهد  بود . علاوه بر محدودیت فوق ، محدودیت هائی در خصوص اجرای برخی از دستورات  نیز  بوجود می آید.در این رابطه یک دایرکتوری با نام chroot/   ، ایجاد و تمامی سرویس های مورد نطر با یک انظباط خاص در آن مستقر می گردند  . مثلا&#8221;  سرویس دهنده آپاچی در chroot/httpd / قرار می  گیرد. با  توجه به موارد فوق ، می بایست آپاچی را در یک  محیط chroot   اجراء نمود . درصورتیکه آپاچی بصورت chrooted  اجراء و  فعالیت خود را  آغاز نماید ، امکان دستیابی آن به سایر بخش های موجود در   ساختار دایرکتوری سیستم عامل و  خارج از chroot  وجود نخواهد داشت . بدین ترتیب یک لایه تدافعی مناسب در خصوص سوء استفاده  های  احتمالی ایجاد می گردد. بعنوان نمونه ، ممکن است یک shell   فراخوانده شده  و با توجه به اینکه  bin/sky /  در chroot قرار ندارد ، می تواند زمینه سوء  استفاده  احتمالی را فراهم نماید. لازم است به این نکته مهم نیز اشاره گردد که Chrooting آپاچی می تواند اثرات جا نبی نامطلوبی  را در  ارتباط با CGI,PHP ، بانک های اطلاعاتی و سایر  ماژول ها  و یا ارتباطاتی که محیط سرویس دهنده وب بمنظور سرویس دهی به آنان نیازمند  دستیابی  به توابع کتابخانه ای خارجی است را بدنبال داشته باشد .روش های متعددی  بمنظور chrooting  وجود داشته و می بایست از مستندات  نرم  افزار مورد نظر ، بعنوان یک منبع اطلاعاتی مناسب در خصوص ارائه راهکارهای  مربوطه ،  استفاده گردد </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">بمنظور مدیریت یک سرویس دهنده  وب ،  لازم است فیدبک های لازم در خصوص فعالیت و کارآئی سرویس دهنده و سایر  مسائلی که  ممکن است یک سرویس دهنده با آنان برخورد نماید را اخذ و در ادامه با آنالیز  آنان  تمهِیدات لازم در خصوص مسائل موجود را بکار گرفت . سرویس دهنده آپاچی ،  قابلیت ها و  پتانسیل های انعطاف پذیری را در خصوص logging  ارائه می  نماید . بنابراین لازم است عملیات logging با  دقت نظر  بالا بصورت موثر و موشکافانه انجام تا امکان ردیابی هر نوع فعالیت امنیتی  غیر مجاز  و یا رفتار غیر  منطقی سرویس دهنده ، فراهم گردد .پیشنهاد می گردد که با یک نظم خاص  از اطلاعات موجود در فایل های لاگ ، آرشیو  تهیه شود . بدین ترتیب ،  امکان مدیریت فایل های لاگ و بررسی آنان فراهم  خواهد شد. بمنظور آشنائی با فرمت های متفاوت لاگ می تواند از منابع زیر  استفاده نمود :<br />
- برای Apache 1.3.x از آدرس <a href="http://httpd.apache.org/docs/logs.html"> http://httpd.apache.org/docs/logs.html</a> استفاده شود .<br />
- برای Apache 2.0.x  از آدرس <a href="http://httpd.apache.org/docs-2.0/logs.html"> http://httpd.apache.org/docs-2.0/logs.html</a> استفاده شود .<br />
در موارد متفاوتی و با توجه به شرایط پیش آمده ممکن است محتوی فایل های لاگ  بتنهائی  کافی نباشد . وضعیت فوق در مواردیکه از  PHP ، CGI و یا سایر تکنولوژی های مبتنی بر اسکریپت  استفاده می  گردد ، تشدید و می توان بمنظور افزایش توان آنالیز یک تهاجم و سوءاستفاده  از یک ضعف  امنیتی ، اقدام به ثبت لاگ های مربوط به  GET و POST  نمود.لاگ نمودن عملیات مرتبط به GET و POST می تواند  از طریق mod_Security صورت پذیرد.  ModSecurity یک سیستم تشخیص مزاحمین ( Intruder  detection ) یوده و پیشگیری های لازم در خصوص یک برنامه وب را ارائه  می  نماید . سیستم فوق بهمراه سرویس دهنده وب مستقر و یک پوشش امنیتی مناسب را  در جهت  پیشگیری از یک تهاجم در ارتباط با برنامه های وب فراهم می نماید . ModSecurity   ، از سرویس دهنده آپاچی حمایت  می نماید .<br />
- <a href="http://www.modsecurity.org/">http://www.modsecurity.org</a><br />
-  <a href="http://www.securityfocus.com/infocus/17064.152.44.126%20152.44.126"> http://www.securityfocus.com/infocus/17064.152.44.126 152.44.126</a> </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">PHP، CGI،SSI و سایر  اسکریپت ها .  در این رابطه موارد زیر پیشنهاد می گردد :<br />
- PHP,CGI,SSI و سایر زبان های اسکریپت را غیر  فعال  نمائید ( مگر اینکه ضرورتی جدی در رابطه با آنان وجود داشته باشد ).<br />
- <span style="color: #336699;"> SSI</span> یا Server Side Includes  را  که می تواند زمینه مساعدی  بمنظور سوء استفاده از  سرویس دهنده  و الزام آن در  جهت اجرای کد ناخواسته  گردد را غیر فعال نمائید .<br />
- در صورتیکه ضروری است که  از PHP,CGI,SSI و یا   سایر زبان های اسکریپت استفاده گردد ، می بایست  از SuEXEC   استفاده شود. suEXEC ، امکان  اجرای اسکریپت ها  تحت  آپاچی  بهمراه یک User Id در مقابل یک Apache User Id را فراهم می نماید در حقیقت suEXEC این امکان را برای کاربران آپاچی فراهم  می نماید   که قادر به اجرای برنامه های SSI و  CGI تحت یک User Id متفاوت نسبت به User Id مربوط به فراخوانی سرویس دهنده وب  باشند.بدین  ترتیب تهدیدات امنیـتی کاهش و امکان نوشتن و اجرای برنامه های  SSI و CGI اختصاصی  نوشته شده توسط مهاجمان ، حذف خواهد شد . استفاده از  suEXEC ،می بایست توام با آگاهی و دانش لازم  باشد چراکه  در صورت استفاده نادرست و یا عدم پیکربندی مناسب و شناخت نسبت به مدیریت setupid Root ،  خود باعث بروز حفره های امنیتی  دیگر خواهد شد.. در این رابطه و بمنظور آشنائی با نحوه عملکرد و استفاده از suEXEC می توان از آدرس های زیر استفاده نمود:<br />
&#8211; برای Apache 1.3.x از آدرس <a href="http://httpd.apache.org/docs/suexec.html"> http://httpd.apache.org/docs/suexec.html</a> استفاده شود .<br />
&#8211; برای Apache 2.0.x  از آدرس   <a href="http://httpd.apache.org/docs-2.0/suexec.html"> http://httpd.apache.org/docs-2.0/suexec.html</a> استفاده شود.<br />
- بررسی لازم در خصوص محتوی دایرکتوری cgi-bin و  سایر  دایرکتوری های شامل اسکریپت ها انجام و لازم است تمامی اسکریپت های پیش فرض  نمونه ،  حذف گردند.<br />
- <span style="color: #336699;">ایمن سازی PHP</span> .  پرداختن به موضوع فوق با توجه به  گستردگی مطالب از حوصله این مقاله خارج بوده و صرفا&#8221; به دو نمونه مهم در  اینخصوص  اشاره می گردد :<br />
- غیر فعال نمودن پارامترهائی که باعث ارائه اطلاعات در HTTP   header می گردد .<br />
- حصول اطمینان از اجرای PHP در حالت safe<br />
برای دریافت اطلاعات تکمیلی دراین خصوص می توان از آدرس  <a href="http://www.securityfocus.com/printable/infocus/1706"> http://www.securityfocus.com/printable/infocus/1706</a> استفاده نمود .<br />
-  استفاده از ماژولهای اضافه بمنظوربهبود وضعیت امنیتی. مثلا&#8221;ماژول mod_Security می تواند باعث حفاظت در مقابل Cross Site Scripting:  XSS  ،  شود . برای آشنائی و مشاهده اطلاعات  تکمیلی در این خصوص می  توان  از آدرس  <a href="http://www.modsecurity.org/"> http://www.modsecurity.org</a> استفاده نمود.<br />
- ممیزی و بررسی اسکریپت ها برای نقاط آسیب پذیر شامل XSS  &amp; SQL  Injection نیز حائز اهمیت است . در این رابطه می توان از ابزارهای  متعددی  استفاده نمود. نرم افزار Nikto ( قابل دسترس در  آدرس   <a href="http://www.cirt.net/code/nikto.shtml"> http://www.cirt.net/code/nikto.shtml</a> )  یکی از مناسبترین  ابزارهای پویش و بررسی CGI  است . </span></p>
</li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="color: #000080;"><strong>چهارمین </strong></span><strong><span style="color: #000080;"> نقطه آسیب پذیر</span></strong><span style="color: #000080;"><strong><span style="font-size: x-small;"> :</span></strong></span><span style="font-size: x-small;"><span style="color: #000080;"><strong> account هائی با رمز عبور ضعیف و یا  فاقد رمز عبور<br />
</strong></span>استفاده از رمزعبور،  روش های تائید کاربر و کدهای امنیتی  در هر گونه تعامل ارتباطی بین کاربران وسیستم های اطلاعاتی ، امری متداول و  رایج  است . اکثر  روش ها ی  تائید کاربران ، نظیر حفاظت فایل و داده  ، مستقیما&#8221; به رمزهای عبور ارائه شده توسط کاربران ، بستگی خواهد داشت .  پس از تائید کاربران ، امکان دستیابی آنان به منابع مشخص شده فراهم و هر یک  از آنان   با توجه به امتیازات و مجوزهای نسبت داده شده ، قادر به استفاده از منابع  موجودخواهند بود. در اغلب موارد ، فعالیت کاربرانی که مجاز بودن آنان برای  دستیابی  به منابع ، تائید شده است ، لاگ نشده و یا در صورتیکه فعالیت آنان ثبت گردد  ، کمتر  سوء ظنی به آنان می تواند وجود داشته باشد . ( آنان پس از تائید وارد  میدانی شده  اند که بدون هیچگونه ردیابی ، قادر به انجام فعالیت های گسترده ای خواهند  بود) .  بنابراین ، رمز عبور دارای نقشی حیاتی و اساسی در ایجاد اولین سطح دفاع در  یک سیستم  اطلاعاتی بوده  و از دست رفتن رمز عبور و یا   ضعف آن می تواند سیستم را  در معرض تهدیدات جدی قرار دهد . مهاجمان پس از دستیابی به رمز عبور کاربران  تائید  شده ( استفاده از مکانیزم های متفاوت ) قادر به دستیابی منابع سیستم و حتی  تغییر در  تنظیمات سایر account های تعریف شده و موجود بر  روی  سیستم خواهند بود،عملیاتی که می تواند پیامدهای بسیار منفی را بدنبال داشته  باشد .  پس می بایست بپذیریم که وجود یک account ضعیف و  یا فاقد  رمز عبور می تواند تهدیدی جدی در یک سازمان باشد . در این راستا علاوه بر  اینکه می  بایست از پتانسیل های ارائه شده توسط سیستم عامل با دقت استفاده نمود ،  ضروری است ،  تابع یک  سیاست امنیتی تدوین شده در رابطه با رمز عبور در سازمان متبوع خود   باشیم . تعریف و نگهداری یک account بهمراه رمز  عبور  مربوطه در سازمان ما تابع چه سیاست امنیتی است ؟  مهمترین و متداولترین  نقاط آسیب  پذیر در ارتباط  با رمز عبور شامل موارد زیر است :</span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl"> <span style="font-size: x-small;"> Account   تعریف شده  دارای  رمز  عبور ضعیف و یا  فاقد رمز عبور است . </span></li>
<li dir="rtl"> <span style="font-size: x-small;"> عدم حفاظت مناسب کاربران از رمزهای عبور ،صرفنظر از  استحکام رمزهای  عبور تعریف شده . </span></li>
<li dir="rtl"> <span style="font-size: x-small;"> سیستم عامل و یا سایر نرم افزارهای  موجود ، امکان ایجاد account مدیریتی ضعیف   و فاقد رمز عبور را فراهم می نمایند . </span></li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">الگوریتم های Hashing رمز عبور(  رمزنگاری مبتنی بر کلید عمومی بر پایه یک مقدار hash ، استوار بوده و بر  اساس یک  مقدار ورودی که دراختیار الگوریتم hashing گذاشته می گردد ، ایجاد می گردد.  در  حقیقت مقدار hash ، فرم خلاصه شده  و رمز شده ای  از مقدار اولیه خود است  ) ،  شناخته شده بوده و در اغلب موارد مقدار Hashe بدست آمده ، بگونه ای ذخیره می گردد که  امکان مشاهده آن  توسط سایرین وجود خواهد داشت. مناسبترین  نوع حفاظت در این راستا ، تبعیت از یک سیاست رمز  عبور قدرتمند  بوده  که  در آن دستورالعمل ها  ی لازم برای تعریف یک رمز عبورمناسب  مشخص و در ادامه با استفاده از ابزارهای موجود، بررسی لازم در خصوص   استحکام و  بی نقص بودن رمز عبور صورت گیرد.</span></p>
</li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"><strong>سیستم ها ی  در معرض آسیب پذیر<br />
</strong></span>هر سیستم عامل و یا برنامه  ای که فرآیند تائید کاربران  آن براساس  یک User ID و رمز عبور  باشد ، در معرض این تهدید خواهد بود. </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"><strong>نحوه تشخیص آسیب پذیری سیستم<br />
</strong></span>در صورتیکه از account هائی  استفاده می شود که بین کاربران متعدد و یا کارکنان موقت   یک سازمان به اشتراک  گذاشته  شده و یا کاربران از رمزهای  عبور بدرستی حفاظت ننمایند، پتانسیل  نفوذ به شبکه توسط یک مهاجم فراهم می گردد.پیکربندی account های جدید کاربران  با یک رمز عبور مشابه و یا رمز عبوری که بسادگی قابل حدس باشد نیز  فرصتی  مناسب  را در اختیار مهاجمان بمنظور دستیابی به منابع اطلاعاتی  موجود در یک  سازمان  قرار خواهد داد .<br />
لازم است در خصوص ذخیره سازی رمز عبور hashes  تصمیم گیری و مشخص  شود که محل استقرار و ذخیره سازی آنان در etc/passwd /  و یا etc/shadow /   می باشد.قابلیت خواندن فایل etc/passwd  /، می بایست توسط تمامی کاربران شبکه  وجود داشته تا زمینه و امکان تائید  کاربران فراهم گردد. در صورتیکه فایل  فوق ، شامل رمزعبور hashed نیز باشد ،  در ادامه  و پس از دستیابی کاربران به سیستم ، امکان خواندن  مقادیر hash فراهم و  مهاجمان می توانند با استفاده از  یک برنامه cracker ، تلاش خود را جهت شکستن و  تشخیص رمز  عبور آغاز و به سرانجام برسانند . فایل  etc/shadow/  ، صرفا&#8221; برای root قابل  خواندن بوده و  مکانی مناسب بمنظور ذخیره نمودن مقادیر  hashes است . در صورتیکه  account های محلی ،  توسط /etc/shadow حفاظت نشود  ، ریسک رمزهای  عبور افزایش خواهد یافت . اکثر سیستم های عامل جدید بصورت پیش فرض از  etc/shadow / بمنظور ذخیره سازی رمز عبور hashes استفاده می نمایند  ( مگر اینکه  شرایط فوق توسط نصب کننده  تغییر یابد ). در این رابطه می توان از  الگوریتم MD5 بمنظور hash   نمودن رمزهای عبور  نیز استفاده  نمود. الگوریتم فوق،  بمراتب از الگوریتم قدیمی crypt ایمن تر است .<br />
NIS)Network Information  System) ، یک بانک اطلاعاتی توزیع شده بمنظور مدیریت یک شبکه  است . در حقیقت  NIS ، استانداردی  برای اشتراک فایل ها بین سیستم های کامپیوتری متعدد  را فراهم و شامل مجموعه ای از سرویس هائی  است که بمنزله یک بانک اطلاعاتی از سرویس ها عمل نموده و اطلاعات مربوط به  مکان سرویس ( Mapping ) را در اختیار سایر سرویس های شبکه   نظیر( Network File System (NFS)  ، قرار می دهد. با توجه به ماهیت  طراحی بعمل آمده  ، فایل  های پیکربندی NIS ، شامل رمزهای عبور hash  بوده و این امر می تواند امکان خواندن  آنان  را برای تمامی کاربران فراهم و عملا&#8221; رمزهای عبور در معرض تهدید قرار گیرند  .نسخه های  جدید پیاده سازی شده  از NIS ، نظیر +NIS و یا LDAP عموما&#8221; دارای استحکام لازم در  ارتباط با رمزهای عبور hashes می باشند( مگر  اینکه  شرایط فوق توسط نصب کننده  تغییر یابد). تنظیم و  پیکربندی نسخه های  فوق ( نسخه های جدید ) ،  مشکل تر بوده و همین امر می تواند استفاده از آنان را با تردید و مشکل  مواجه نماید .<br />
حتی اگر رمزهای عبور hashes توسط  /etc/shadow و یا امکانات پیاده سازی شده ، محافظت گردند ،  امکان حدس و تشخیص رمزهای عبور توسط سایر افراد وجود خواهد داشت . در این  رابطه می  توان به موارد متعدد دیگری نظیر : ضعف رمز عبور ، وجود account   های غیر استفاده مربوط به کارکنانی که سازمان خود را ترک نموده اند ، اشاره  نمود .سازمان ها معمولا&#8221; در رابطه با غیر فعال  نمودن account مربوط به کاربران قدیمی  کوتاهی نموده و لازم است در این رابطه از روش های خاصی  استفاده گرد.<br />
نصب های پیش فرض  سیستم های عامل و یا شبکه توسط سازندگان و یا مدیران  سیستم و یا شبکه  ، می تواند نصب مجموعه ای از سرویس های غیرضروری  را  نیز بدنبال داشته باشد.  رویکرد فوق،با  اینکه عملیات نصب سیستم عامل و سرویس ها ی مربوطه را تسهیل می نماید ولی   مجموعه ای از سرویس های غیر ضروری و account  هائی که بصورت پیش فرض ضعیف ویا فاقد رمز عبور می باشند را بهمراه بر روی  سیستم  مستقر و پیکربندی می نماید.</span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"><strong>نحوه حفاظت  در مقابل نقطه آسیب پذیر<br />
</strong></span>بهترین و مناسبترین دفاع در مقابل ضعف رمزهای عبور ، تبعیت از  یک سیاست  امنیتی مستحکم بوده که دستورالعمل های لازم  کهه موجب می شود رمزهای عبور  مناسب و مستحکمی توسط کاربران تعریف و توسط مدیران سیستم بصورت مستمر  پیوستگی و  استحکام آنان بررسی می گردد با حمایت کامل سازمان . مراحل زیر توصیه های  لازم برای  ارائه یک سیاست امنیتی مناسب می باشد : </span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">اطمینان ازاستحکام  و انسجام  رمز های عبور . با  استفاده از سخت افزار مناسب و  اختصاص زمان کافی ، می توان هر رمز  عبوری را  crack نمود. در این راستا می   توان با استفاده ازروش های ساده و در عین حال موفقیت آمیز،  عملیات تشخیص رمز عبور را انجام داد . اغلب برنامه های تشخیص دهنده  رمزعبوراز روشی  موسوم به &#8220;حملات مبتنی بر سبک دیکشنری &#8221; ، استفاده می نمایند. با توجه به  اینکه روش  های رمز نگاری تا حدود زیادی شناخته شده می باشند  ، برنامه های   فوق ، قادر به مقایسه   شکل  رمز شده  یک رمز عبور در مقابل  شکل  های رمز شده کلمات دیکشنری می باشند( در  زبان های متعدد و استفاده از اسامی مناسب بهمراه جایگشت های مختلف آنان  ) .  بنابراین  ، رمز عبوری  که ریشه آن در  نهایت یک کلمه شناخته شده باشد ، دارای  استعداد ذاتی در رابطه با این نوع از حملات خواهد بود . تعداد زیادی از  سازمان ها  ، آموزش های لازم در خصوص نحوه تعریف رمزهای عبور را به کارکنان خود داده و  به آنان  گفته شده است  که رمزهای  عبور مشتمل بر ترکیبی از حروف الفبائی و کاراکترهای ویژه  را برای خود تعریف نمایند.متاسفانه اکثر کاربران این موضوع را رعایت ننموده  و  بمنظور  تعریف یک رمز عبور با نام &#8220;password&#8221; ، صرفا&#8221;  اقدام  به تبدیل حروف به اعداد و یا حروف ویژه  می نمایند ( pa$$w0rd)  . چنین جایگشت هائی نیز  قادر به  مقاومت در مقابل یک تهاجم مبتنی بر دیکشنری  نبوده و  &#8220;pa$$w0rd&#8221; به روش مشابهی که &#8220;password&#8221; تشخیص داده می شود ، crack خواهد شد .<br />
یک رمز عبور خوب ،  نمی بایست از ریشه یک  کلمه و  یا نام شناخته شده  ای  اقتباس شده باشد .در این راستا لازم است به کاربران آموزش لازم در  خصوص انتخاب و ایجاد  رمزهای عبور از موارد تصادفی نظیر  یک عبارت  ، عنوان یک کتاب  ،نام یک آواز و یا نام یک  فیلم  داده شود. با انتخاب  یک رشته طولانی  که بر اساس رویکردهای خاصی می تواند انتخاب گردد( گرفتن اولین حرف هر  کلمه ، جایگزینی یک کاراکتر خاص برای یک کلمه ، حذف تمامی حروف صدادارو   سایر موارد ) ، کاربران قادر به ایجاد رمزهای  عبور مشتمل بر ترکیبی از حروف الفبائی و حروف ویژه بوده که در صورت مواجه  شدن  با حملات مبتنی بر دیکشنری ،  تشخیص آنان بسختی انجام  می شود. لازم است به این نکته نیز اشاره گردد که رمزعبور می بایست براحتی  بخاطر سپرده شده و  بازیابی ( یادآوری)آن مشکل نباشد ( هدف  از ذخیره سازی ، بازیابی است اگر چیزی را ذخیره  نمائیم ولی در زمان مورد  نظر  قادر به بازیابی آن نباشیم ، سیستم ذخیره و بازیابی ما با اشکال مواجه شده  است ! ). پس از تدوین دستورالعمل  لازم بمنظور تولید رمزهای عبور مناسب و  آموزش کاربران بمنظور پایبندی به   اصول امنیتی تعریف شده ، می بایست از روتین ها ی جانبی متعددی بمنظور  اطمینان از پیروی کاربران از دستوراالعمل های اعلام شده ،  استفاده گردد. بهترین گزینه در این  راستا ، بررسی صحت رمزهای عبور پس از  اعمال تغییرات توسط کاربران است .<br />
پس از ارائه دستورالعمل ها ی لازم و مناسب برای ایجاد رمزهای عبور ،  روتین های  تکمیلی خاصی  می بایست ایجاد تا این اطمینان حاصل گردد که  کاربران پایبند به دستورالعمل های ارائه شده  بوده اند. بهترین روش در این زمینه ، بررسی صحت اعتبار  رمزهای عبور پس  از اعمال تغییرات توسط کاربران است . اکثر نمونه های  یونیکس و  لینوکس می توانند از Npasswd بمنظور بررسی رمز  عبور در  مقابل سیاست امنیتی موجود استفاده  نمایند. سیستم های  PAM-Enabled  نیز می توانند از Cracklib (  کتابخانه لازم  بمنظور هماهنگی با  Crack ) بمنظور بررسی رمزهای   عبور ایجاد شده ، استفاده  نمایند.اکثر سیستم های  PAM-enabled را می توان بگونه ای پیکربندی نمود که رمزهای عبوری  را  که با  سیاست های مشخص شده مطابقت ندارد ، رد نمایند .<br />
درمواردیکه امکان استفاده از ابزارهائی نظیر Npasswd و یا کتابخانه های  PAM-Enabled ، وجود ندارد، مدیران سیستم و شبکه می توانند از برنامه  های کاربردی Cracking  در حالت stand-alone  و  بعنوان یک روتین کنشگرایانه مستمر،  استفاده نمایند. <a href="http://www.atstake.com/research/lc/index.html">LC4 )l0phtcrack  version  4)</a> و <a href="http://www.openwall.com/john">John the Ripper</a> ،   نمونه هائی از برنامه های فوق ، می باشند.   لازم است مجددا&#8221; به این  موضوع اشاره گردد که  بدون کسب مجوز لازم از مدیران ارشد سیستم در سازمان ، نمی بایست از برنامه  های  cracking استفاده گردد.پس از کسب مجوزهای  لازم  ، می  توان عملیات فبررسی رمزهای عبور  را بر روی یک ماشین حفاظت شده انجام داد.  به کاربرانی که  رمزهای عبور آنان  crack می گردد،   بصورت محرمانه  وضعیت فوق گزارش و دستورالعمل های لازم در خصوص نحوه انتخاب یک رمز عبور  مناسب  نیز به آنان ارائه گردد .اخیرا&#8221; و در پاسخ به رمزهای عبور ضعیف ، استفاده  از  روش هائی دیگر بمنظور تائید کاربران،  نظیر بیومتریک (زیست سنجی )   ، نیز مورد توجه  واقع شده است .</span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">حفاظت رمزهای عبور مستحکم<strong> </strong>.  در  صورتیکه رمزهای عبور hashes در etc/passwd  /  ذخیره می گردند ، سیستم را بهنگام نموده تا از  /etc/shadow   استفاده گردد . در صورتیکه  بر روی  سیتستم  NIS و یا LDAP اجراء که امکان حفاظت hashes وجود نداشته  باشد ، هر کاربری قادر به خواندن رمزهای عبور hashes   و تلاش بمنظور cracking  آنان ، خواهد بود.در  این  رابطه  می بایست بررسی  لازم در خصوص استفاده از گزینه های ایمن تری از نسخه های NIS  و LDAP را انجام  داد. تا زمانیکه این نوع برنامه های  غیر ایمن وجود داشته و با نمونه های ایمن  جایگزین نشده اند، می بایست  مجوزهای مربوطه را ایمن و  از ابزارهای کنشکرایانه بصورت مستمر استفاده گردد.در  این رابطه پیشنهاد می گردد که در مقابل استفاده از  الگوریتم قدیمی Crypt  بمنظورhash  نمودن رمزهای عبور از  الگوریتم  MD5 استفاده گردد.<br />
حتی اگر رمزهای عبور ، مستحکم  و  قدرتمند باشند ، در صورت عدم حفاظت آنان توسط کاربران ، سیستم های موجود در  یک  سازمان در معرض تهدید قرار خواهند گرفت .  یک سیاست امنیتی مناسب ، می  بایست  شامل دستورالعمل های لازم بمنظور آموزش کاربران در رابطه با حفاظت رمزهای  عبور می  باشد.عدم ارائه رمز عبور به افراد  دیگر، عدم نوشتن رمز عبور در محلی که امکان خواندن  آن برای دیگران وجود داشته باشد و حفاظت اتوماتیک فایل  هائی که رمزهای  عبور  در آن ذخیره شده اند ، از جمله مواردی می باشند که می بایست به کاربران  آموزش داده  شود. اغلب کاربران در مواجهه با پیامی مشابه &#8220;Your password has expired&#8221;   که  نشاندهنده اتمام عمر مفید یک رمز عبور است ، یک رمز عبور ضعیف را برای خود  انتخاب  می نمایند ، بنابراین لازم است در فرصت مناسب و قبل از برخورد با اینچنین  پیام هائی  ، به کاربران آموزش های لازم ارائه گردد. </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">کنترل دائم و پیوسته accounts<strong> </strong>. هر account   مدیریتی و یا مبتنی بر سرویس که از آن استفاده نمی گردد، می بایست غیر فعال  و یا در  صورت امکان از روی سیستم حذف گردد. هر account  مدیریتی و  یا مبتنی بر سرویس که  از آن استفاده می گردد ، می بایست دارای  رمزعبورجدید و مستحکمی  باشد. پیکربندی account های جدید  کاربران  با رمزهای عبور اولیه  (تولیده شده بصورت تصادفی)  و  ضرورت تغییر رمزهای عبور توسط کاربران و در اولین log in  نیز می تواند در این زمینه مفید واقع  شود. ممیزی account  ها بر روی سیستم را انجام  و لازم است در این رابطه  یک لیستی اصلی  ایجاد گردد .در این رابطه می بایست رمزهای عبور در ارتباط با سیستم هائی  نظیر  روترها ، چاپگرهای دیجیتالی متصل شده به اینترنت و سایر موارد دیگر نیز  مورد بررسی  قرار گرفته و روتین هائی خاص بمنظور افزودن account  های تائید شده  به لیست  و یا حذف  account  هائی که ضرورتی به استفاده از آنان نمی باشد ، پیاده سازی و همواره خود را  پایبند  به آن بدانیم .اعتبار لیست را در فواصل زمانی خاصی بررسی تا از بهنگام بودن  آن  اطمینان حاصل گردد.از روتین های   خاصی بمنظورحذف account متعلق به  کارکنان و یا پیمانکارانی که سازمان را ترک نموده اند ، استفاده گردد . </span></p>
</li>
<p></span></ul>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"> در بخش سوم این مقاله به  بررسی سایر نقاط    آسیب پذیر یونیکس و لینوکس خواهیم پرداخت . </span> </span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/networks/linux-unix-vu-p2-2047/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>مهمترین نقاط آسیب پذیر یونیکس و لینوکس ( بخش اول )</title>
		<link>http://www.irandevelopers.com/networks/linux-unix-vu-p1-2046/</link>
		<comments>http://www.irandevelopers.com/networks/linux-unix-vu-p1-2046/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 03:34:19 +0000</pubDate>
		<dc:creator>سخاروش</dc:creator>
				<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[شبکه]]></category>
		<category><![CDATA[عمومی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=2046</guid>
		<description><![CDATA[سیستم عامل، یکی از عناصر چهار گانه در یک سیستم کامپیوتری است که دارای نقشی بسیار مهم و حیاتی در نحوه مدیریت منابع سخت افزاری و نرم افزاری است . پرداختن به مقوله  امنیت سیستم های عامل ، همواره از بحث های مهم در رابطه با ایمن سازی اطلاعات در یک سیستم کامپیوتری بوده که [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">سیستم عامل، یکی از عناصر چهار گانه در یک سیستم کامپیوتری است  که دارای نقشی بسیار مهم و حیاتی در نحوه مدیریت منابع سخت افزاری و نرم  افزاری است  . پرداختن به مقوله  امنیت سیستم های عامل ، همواره از بحث های مهم در  رابطه  با ایمن سازی اطلاعات در یک سیستم کامپیوتری بوده که امروزه با گسترش  اینترنت ،  اهمیت آن مضاعف شده است . بررسی و آنالیز امنیت در سیستم های عامل می بایست  با  ظرافت و در چارچوبی کاملا&#8221; علمی و با در نظر گرفتن تمامی واقعیت های موجود ،   انجام تا از یک طرف تصمیم گیرندگان مسائل استراتژیک در یک سازمان قادر به  انتخاب  مستند و منطقی یک سیستم عامل باشند و از طرف دیگر امکان نگهداری و پشتیبانی  آن با  در نظر گرفتن مجموعه تهدیدات موجود و آتی  ، بسرعت و بسادگی میسر گردد .<br />
اکثر کرم ها و سایر حملات موفقیت آمیز در اینترنت ، بدلیل وجود نقاط آسیب  پذیر در  تعدادی  اندک  از سرویس های سیستم  های عامل متداول است . مهاجمان ،  با فرصت طلبی خاص خود از روش  های متعددی بمنظور سوء استفاده از نقاط ضعف  امنیتی شناخته شده ، استفاده نموده  و در این راستا ابزارهای  متنوع ،  موثر و گسترده ای را بمنظور نیل به اهداف خود ، بخدمت می گیرند . مهاجمان ،  در این  رهگذر متمرکز بر سازمان ها و موسساتی می گردند که هنوز مسائل موجود امنیتی (  حفره  ها و نقاط آسیب پذیر ) خود را برطرف نکرده و بدون هیچگونه تبعیضی آنان را  بعنوان  هدف ، انتخاب می نمایند . مهاجمان بسادگی و بصورت مخرب ،  کرم هائی نظیر :  بلستر ، اسلامر و Code Red را در شبکه  منتشر می   نمایند. آگاهی از مهمترین نقاط آسیب پذیر در سیستم های  عامل ، امری ضروری  است  . با شناسائی و آنالیز اینگونه نقاط آسیب پذیر توسط کارشناسان امنیت  اطلاعات ،  سازمان ها و موسسات قادر به استفاده از مستندات علمی تدوین شده بمنظور  برخورد منطقی  با مشکلات موجود و ایجاد یک لایه حفاظتی مناسب می باشند.<br />
در مجموعه مقالاتی که ارائه خواهد شد ، به بررسی مهمترین نقاط آسیب پذیر  یونیکس و  لینوکس خواهیم پرداخت . در این راستا ، پس از معرفی هر یک از نقاط آسیب  پذیر ، علت  وجود ضعف امنیتی ، سیستم های عامل در معرض تهدید ، روش های  تشخیص آسیب  پذیری  سیستم و نحوه مقابله و یا پیشگیری در مقابل هر یک از نقاط آسیب پذیر ،  بررسی می  گردد .همزمان با  ارائه مجموعه مقالات مرتبط با  یونیکس ( پنج مقاله ) ،  به بررسی مهمترین نقاط آسیب پذیر در ویندوز  ، طی مقالات جداگانه ای خواهیم   پرداخت .<br />
همانگونه که اشاره گردید ، اغلب تهدیدات و حملات ، متاثر از وجود نقاط آسیب  پذیر در  سیستم های عامل بوده که زمینه تهاجم را برای مهاجمان فراهم می آورد .   شناسائی  و آنالیز نقاط آسیب پذیر در هر یک از سیستم های عامل ، ماحصل  تلاش و  پردازش  دهها کارشناس امنیتی ورزیده در سطح جهان است و می بایست مدیران سیستم و  شبکه در یک  سازمان بسرعت با آنان آشنا و اقدامات لازم را انجام دهند.<br />
نقاط آسیب پذیر موجود در هر سیستم عامل  که در ادامه به آنان اشاره می گردد  ،  سندی پویا و شامل دستورالعمل های لازم بمنظور برخورد مناسب با هر یک از  نقاط آسیب  پذیر و لینک هائی به سایر اطلاعات مفید و تکمیلی مرتبط با ضعف امنیتی است . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"><strong>مهمترین  نقاط آسیب پذیر یونیکس:<br />
</strong></span>یونیکس ، یکی از سیستم های عامل رایج در جهان بوده که امروزه در  سطح  بسیار وسیعی استفاده می گردد . تا کنون حملات متعددی توسط مهاجمین متوجه  سیستم هائی  بوده است که از یونیکس ( نسخه های متفاوت )  بعنوان سیستم عامل استفاده می  نمایند . با توجه به حملات متنوع و گسترده انجام شده ، می توان مهمترین  نقاط آسیب  پذیر یونیکس را به ده گروه عمده تقسیم نمود : </span></span></p>
<ul dir="ltr"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="ltr">
<p dir="ltr"><span style="font-size: x-small;">BIND Domain Name System</span></p>
</li>
<li dir="ltr">
<p dir="ltr"><span style="font-size: x-small;">Remote Procedure Calls (RPC)</span></p>
</li>
<li dir="ltr">
<p dir="ltr"><span style="font-size: x-small;">Apache Web Server</span></p>
</li>
<li dir="ltr">
<p dir="ltr"><span style="font-size: x-small;">General UNIX Authentication  Accounts    with No Passwords or Weak Passwords</span></p>
</li>
<li dir="ltr">
<p dir="ltr"><span style="font-size: x-small;">Clear Text Services</span></p>
</li>
<li dir="ltr">
<p dir="ltr"><span style="font-size: x-small;">Sendmail</span></p>
</li>
<li dir="ltr">
<p dir="ltr"><span style="font-size: x-small;">Simple Network Management  Protocol    (SNMP)</span></p>
</li>
<li dir="ltr">
<p dir="ltr"><span style="font-size: x-small;">Secure Shell (SSH)</span></p>
</li>
<li dir="ltr">
<p dir="ltr"><span style="font-size: x-small;">Misconfiguration of  Enterprise    Services NIS/NFS</span></p>
</li>
<li dir="ltr">
<p dir="ltr"><span style="font-size: x-small;">Open Secure Sockets Layer  (SSL)</span></p>
</li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">در بخش اول این مقاله ، به بررسی BIND  Domain Name System  وRemote Procedure Calls   (موارد یک و دو)   ، خواهیم پرداخت .</span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><strong><span style="color: #000080;">اولین نقطه آسیب پذیر </span><span style="color: #000080; font-size: x-small;">: BIND Domain Name System<br />
</span></strong><span style="font-size: x-small;"> نرم افزار BIND ) Berkeley Internet Name Domain) ، در مقیاس  گسترده ای  و  بمنظور پیاده سازی DNS)Domain  Name Service) ، استفاده  می گردد. BIND ، سیستمی حیاتی است که از آن  بمنظور تبدیل  اسامی میزبان ( نظیر : <a href="http://www.srco.ir/"> www.srco.ir</a> ) به آدرس IP ریجستر  شده ،استفاده می گردد .با توجه به استفاده  وسیع از BIND   و جایگاه حیاتی آن در یک شبکه کامپیوتری ،  مهاجمان آن را بعنوان یک هدف مناسب بمنظور انجام حملات ، خصوصا&#8221;  از نوع DoS)Denila Of   Service)  انتخاب و حملات متنوعی را در ارتباط با آن انجام داده اند. حملات فوق،از  کارافتادن سرویس  DNS و عدم دستیابی به اینترنت برای سرویس های مربوطه و میزبانان  را می تواند بدنبال داشته باشد.  با اینکه پیاده کنندگان BIND ، تلاشی مستمر را  از گذشته  تا کنون بمنظور برطرف نمودن نقاط آسیب پذیر انجام داده اند ، ولی هنوز  تعداد زیادی  از نقاط آسیب پذیر قدیمی ، بدرستی پیکربندی نشده و سرویس دهندگان آسیب پذیر   در آن  باقی مانده است .<br />
عوامل متعددی در  بروز اینگونه حملات  نقش دارد: عدم آگاهی  لازم مدیران سیستم در خصوص ارتقاء امنیتی سیستم هائی که بر روی آنان Bind deamon  بصورت غیر ضروری  اجراء می گردد  و پیکربندی نامناسب فایل ها ، نمونه هائی از  عوامل فوق بوده و  می تواند زمینه  یک تهاجم از نوع DoS  ، یک Buffer Overflow   و یا  بروز اشکال در DNS Cache  را  بدنبال داشته باشد.از جمله مواردیکه اخیرا&#8221; در رابطه با ضعف امنیتی  BIND کشف شده است مربوط به یک تهاجم از نوع DoS است . مقاله <a href="http://www.cert.org/advisories/CA-2002-15.html">CERT Advisory  CA-2002-15</a> جزئیات بیشتری  را در این رابطه ارائه می نماید. از دیگر حملات اخیر ، تهاجمی  از نوع Buffer Overflow است . مقاله <a href="http://www.cert.org/advisories/CA-2002-19.html">CERT Advisory  CA-2002-19</a> جزئیات بیشتری  را در این رابطه در اختیار قرار می دهد. درتهاجم  فوق ، یک مهاجم از نسخه آسیب پذیر پیاده سازی   توابع Resolver مربوط به DNS    استفاده و با ارسال پاسخ های مخرب به DNS و  اجرای کد  دلخواه ، امکان  سوء استفاده از نقطه آسیب پذیر فوق  را فراهم و حتی دربرخی موارد  می تواند زمینه بروز یک تهاجم از نوع  DoS را  باعث  گردد .<br />
تهدیدی دیگر که می  تواند در این رابطه وجود داشته باشد ، حضور یک سرویس دهنده BIND آسیب پذیر در شبکه است  . در چنین مواردی ،  مهاجمان از وضعیت فوق استفاده و از آن بمنزله  مکانی جهت استقرار داده های  غیر معتبر خود و بدون آگاهی مدیرسیستم استفاده  می نمایند. بدین ترتیب ، مهاجمان از سرویس  دهنده بعنوان پلات فرمی بمنظور فعالیت های آتی مخرب خود  بهره برداری خواهند کرد . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><strong> <span style="color: #000080; font-size: x-small;"> سیستم های عامل در معرض تهدید :<br />
</span> </strong> <span style="font-size: x-small;"> تقریبا&#8221; تمامی سیستم های  عامل  یونیکس و لینوکس بهمراه یک نسخه از  BIND  ارائه شده اند .در صورت  پیکربندی میزبان بعنوان سرویس دهنده ، نسخه ای  از BIND  بر روی آن  نصب خواهد شد. </span> </span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><strong> <span style="color: #000080; font-size: x-small;"> نحوه تشخیص آسیب پذیری سیستم<br />
</span> </strong> <span style="font-size: x-small;"> در صورت دارا بودن  نسخه خاصی از BIND  که  بهمراه  سیستم عامل ارائه و بر روی سیستم نصب شده است ، می بایست عملیات بهنگام  سازی آن را  با استفاده از آخرین Patch های ارائه شده توسط  تولید  کننده ( عرضه کننده ) انجام داد. در صورت استفاده از نسخه BIND  مربوط به  ISC:  Internet Software Consortium ، می بایست از نصب آخرین نسخه BIND  ،  اطمینان حاصل نمود . در صورتیکه BIND  نصب  شده بر روی سیستم ، نسخه ای قدیمی بوده و یا بطور کامل   Patch نشده باشد ، احتمال آسیب پذیری سیستم وجود خواهد داشت . در  اکثر سیستم  ها ، دستور : &#8220;named &#8211; v &#8221; ، اطلاعات لازم در  خصوص نسخه BIND نصب شده بر روی سیستم را بصورت  X.Y.Z نمایش خواهد داد . X ، نشاندهنده  نسخه اصلی  ، Y ،نشاندهنده جزئیات نسخه و Z  نشاندهنده یک Patch Level است . پیشنهاد می گردد  ، آخرین  نسخه BIND  ارائه شده  توسط  ISC  را دریافت و  آن را  بر روی سیستم نصب نمود. آخرین نسخه  موجود Version 9.2.2 بوده و می توان آن را از  سایت  <a href="http://www.isc.org/">ISC </a>دریافت  نمود.   یکی دیگر از رویکردهای کنشگرایانه مرتبط با نگهداری امنیت   BIND ،  عضویت در گروه های خبری نظیر  <a href="http://www.symantec.com/">Symantec</a> برای آگاهی از  آخرین  هشدارهای امنیتی است . در این راستا می توان از یک برنامه پویشگر بهنگام  شده   که قادر به بررسی دقیق سیستم های DNS  بمنظور تشخیص نقاط  آسیب پذیراست ، نیز استفاده گردد .</p>
<p></span><span style="color: #000080; font-size: x-small;"><strong>نحوه حفاظت در مقابل نقطه آسیب  پذیر<br />
</strong></span><span style="font-size: x-small;">بمنظور حفاظت در مقابل نقاط آسیب پذیر مرتبط با BIND موارد زیر پیشنهاد می گردد : </span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl"><span style="font-size: x-small;">غیر فعال نمودن  BIND deamon ( به آن  named  نیز اطلاق  می گردد ) بر روی سیستم هائی که بعنوان یک سرویس دهنده DNS  در نظر گرفته نشده اند .  بمنظور پیشگیری ازاعمال  برخی تغییرات خاص (  نظیر فعال نمودن مجدد آن ) ،  می توان  نرم افزار BIND    را از روی اینگونه سیستم ها حذف نمود.</span></li>
<li dir="rtl"><span style="font-size: x-small;">بمنظور بهنگام سازی سرویس دهنده DNS ، از تمامی Patch  های  ارائه شده توسط تولید کنندگان استفاده و در صورت امکان آن را به آخرین نسخه  موجود  ارتقاء دهید . برای دریافت اطلاعات تکمیلی در رابطه با نصب مطمئن تر BIND ، از مقالات ارائه شده درسایت  CERT و بخش <a href="http://www.cert.org/tech_tips/usc20_full.html">UNIX  Security Checklist</a> ، استفاده نمائید . </span></li>
<li dir="rtl"><span style="font-size: x-small;">بمنظور پیچیده تر نمودن حملات  اتوماتیک و یا پویش سیستم مورد نظر ، Banner  مربوط به &#8221; Version String &#8221; را از BIND   حذف و نسخه واقعی BIND  را با یک شماره نسخه  غیرواقعی  در فایل named.conf ، جایگزین نمائید . </span></li>
<li dir="rtl"><span style="font-size: x-small;">امکان ارسال انتقالات Zone را صرفا&#8221; برای سرویس دهندگان ثانویه DNS در Domain فراهم  نمائید (   secondary DNS servers) . امکان انتقالات Zone  در ارتباط  با  Domain های Parent  و Child را غیر فعال و در مقابل از امکان Delegation ( واگذاری مسئولیت ) و فورواردینگ ( Forwarding ) استفاده نمائید . </span></li>
<li dir="rtl"><span style="font-size: x-small;">امکان Recursion  و glue fetching را بمنظور حفاظت در مقابل  عماکرد ناصحیح  DNS Cache ، غیر فعال نمائید . </span></li>
<li dir="rtl"><span style="font-size: x-small;">بمنظور حفاظت  در رابطه با استفاده از &#8220;named&#8221; و  تحت تاثیر قرار دادن تمامی سیستم ، BIND را محدود نمائید . بنابراین  BIND بعنوان یک کاربر non-privilage در  دایرکتوری Chroot اجراء می گردد. برای نسخه شمازه نه BIND از آدرس  <a href="http://www.losurs.org/docs/howto/Chroot-BIND.html"> http://www.losurs.org/docs/howto/Chroot-BIND.html</a> استفاده نمائید .</span></li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">بمنظور حفاظت در  مقابل حملات اخیر  و مرتبط با  نقاط آسیب پذیر کشف شده BIND  می  توان از  منابع زیر استفاده نمود:</span> </span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl"><span style="font-size: x-small;">برای نقطه آسیب پذیر  DoS در رابطه با ISC BIND 9 از آدرس  <a href="http://www.srco.ir/Articles/http/www.cert.org/advisories/CA-2002-15.html"> http//www.cert.org/advisories/CA-2002-15.html</a> استفاده  گردد.</span></li>
<li dir="rtl"><span style="font-size: x-small;">چندین نقطه آسیب پذیر DoS در رابطه با ISC BIND 8    از آدرس  <a href="http://www.isc.org/products/BIND/bind-security.html"> http://www.isc.org/products/BIND/bind-security.html</a> استفاده گردد .</span></li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">برای آگاهی و  استفاده از پیشنهادات  لازم بمنظور نصب ایمن تر BIND  بر روی سیستم های سولاریس ، می توان از آدرس :<a href="http://www.boran.com/security/sp/bind9_20010430.htm"> Running the BIND9 DNS Server Securely</a> و آرشیو مقالات ارائه شده  در آدرس <a href="http://www.afentis.com/res/dns">Afentis</a> استفاده نمود.</span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="color: #000080;"><strong><span style="font-size: x-small;">دومین </span></strong></span><strong><span style="color: #000080; font-size: x-small;"> نقطه آسیب پذیر</span></strong><span style="font-size: x-small;"><span style="color: #000080;"><strong> :   ( Remote Procedure Calls  (RPC<br />
</strong></span>با استفاده از RPC برنامه های موجود  بر روی  یک کامپیوتر قادر به  اجرای روتین هائی در کامپیوتر دوم از طریق  ارسال  داده و بازیابی نتایج می باشند . با توجه به جایگاه عملیاتی RPC ، استفاده از آن  بسیار متداول بوده و درموارد  متعددی از آن بمنظور  ارائه سرویس های توزیع شده شبکه نظیر مدیریت از راه دور ، اشتراک  فایل NFS  و NIS  استفاده می گردد.وجود  ضعف های امنیتی متعدد در RPC باعث   بهره برداری مهاجمان بمنظور انجام حملات مختلفی  شده است .دراکثر موارد ، سرویس  های RPC با مجوزهای  بیش از حد معمول  ، اجراء می گردند .  بدین ترتیب یک مهاجم غیر مجاز قادر به استفاده از سیستم های آسیب پذیر در  جهت اهداف  خود خواهد بود.اکثر حملات از نوع  DoS در  سال ۱۹۹۹ و اوایل سال ۲۰۰۰  در ارتباط با سیستم هائی بود که دارای ضعف امنیـتی و نقظه آسیب پذیر RPC بودند. مثلا&#8221; حملات گشترده  و موفقیت آمیز در رابطه با سیستم  های نظامی امریکا  ، بدلیل نقطه آسیب پذیر RPC کشف شده در صدها  دستگاه  کامپیوتر مربوط به وزارت دفاع امریکا بوده است .  اخیرا&#8221; نیز  وجود یک ضعف امنیتی DCOM RPC  در  ویندوز ،  باعث انتشار گسترده یک کرم  در سطح اینترنت گردید .</span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"> <strong>سیستم های عامل در معرض تهدید :<br />
</strong></span>تمامی نسخه های یونیکس و لینوکس که بر روی آنان سرویس های  RPC نصب شده است در معرض این آسیب می باشند . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"> <span style="color: #000080;"> <strong>نحوه تشخیص آسیب پذیری سیستم<br />
</strong></span>با استفاده از یک پویشگر نقاط آسیب پذیر و یا دستور &#8221;  rpcinfo&#8221; ، می توان از  اجراء یکی از سرویس های متداول RPC  بر روی  سیستم  آگاه گرید :</span></span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<div><span style="font-family: Times New Roman; font-size: small;"> </span> <span style="font-family: Times New Roman; font-size: small;"></p>
<table style="height: 64px;" dir="ltr" border="1" cellspacing="0" cellpadding="3" width="299" bordercolor="#111111">
<tbody>
<tr>
<td dir="rtl" width="161" height="15" bgcolor="#e4e4e4">
<p dir="rtl"><span style="font-size: x-small;">RPC Service</span></p>
</td>
<td dir="rtl" width="197" height="15" bgcolor="#e4e4e4">
<p dir="rtl"><span style="font-size: x-small;">RPC Program  Number</span></p>
</td>
</tr>
<tr>
<td dir="ltr" width="161" height="29" bgcolor="#f4f4ff"><span style="font-size: x-small;">rpc.ttdbserverd</span></td>
<td dir="ltr" width="197" height="29" bgcolor="#f4f4ff"><span style="font-size: x-small;">100083</span></td>
</tr>
<tr>
<td dir="ltr" width="161" height="15" bgcolor="#f4f4ff"><span style="font-size: x-small;">rpc.cmsd</span></td>
<td dir="ltr" width="197" height="15" bgcolor="#f4f4ff"><span style="font-size: x-small;">100068</span></td>
</tr>
<tr>
<td dir="ltr" width="161" height="15" bgcolor="#f4f4ff"><span style="font-size: x-small;">rpc.statd</span></td>
<td dir="ltr" width="197" height="15" bgcolor="#f4f4ff"><span style="font-size: x-small;">100024</span></td>
</tr>
<tr>
<td dir="ltr" width="161" height="15" bgcolor="#f4f4ff"><span style="font-size: x-small;">rpc.mountd</span></td>
<td dir="ltr" width="197" height="15" bgcolor="#f4f4ff"><span style="font-size: x-small;">100005</span></td>
</tr>
<tr>
<td dir="ltr" width="161" height="15" bgcolor="#f4f4ff"><span style="font-size: x-small;">sadmind</span></td>
<td dir="ltr" width="197" height="15" bgcolor="#f4f4ff"><span style="font-size: x-small;">100232</span></td>
</tr>
<tr>
<td dir="ltr" width="161" height="15" bgcolor="#f4f4ff"><span style="font-size: x-small;">cachefsd</span></td>
<td dir="ltr" width="197" height="15" bgcolor="#f4f4ff"><span style="font-size: x-small;">100235</span></td>
</tr>
<tr>
<td dir="ltr" width="161" height="15" bgcolor="#f4f4ff"><span style="font-size: x-small;">snmpXdmid</span></td>
<td dir="ltr" width="197" height="15" bgcolor="#f4f4ff"><span style="font-size: x-small;">100249</span></td>
</tr>
</tbody>
</table>
<p></span> <span style="font-family: Times New Roman; font-size: small;"> </span></div>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">سرویس های RPC  ، عموما&#8221; از طریق حملات buffer Overflow  ، مورد سوء استفاده قرار می گیرند .علت این امر ، عدم انجام بررسی لازم و  کافی در خصوص خطاها و یا اعتبار داده های ورودی توسط برنامه های  RPC است . نقاط  آسیب پذیر Buffer overflow ، این امکان را برای  یک مهاجم  فراهم می نماید که داده غیر قابل پیش بینی را  ( اغلب بصورت کد مخرب ) به  درون  حافظه برنامه ،  ارسال نماید . با توجه به ضعف  موجود در رابطه با بررسی خطاء و  صحت داده ، داده  ارسالی مکان هائی حساس و کلیدی که مورد استفاده پردازنده می باشند را  بازنویسی می  نماید.در یک تهاجم  موفقیت آمیز Overflow ،  کد مخرب  ارسالی ،در ادامه توسط سیستم  عامل اجراء می گردد . با توجه به اینکه تعداد زیادی از سرویس های RPC ، با مجوزهای  بیش از حد معمول ،  اجراء می گردند ،  استفاده موفقیت آمیز از نقاط آسیب پذیر فوق می تواند امکان دسـیابی غیر  مجاز و از  راه  دور را به سیستم فراهم می نماید.</span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"><strong>نحوه حفاظت در مقابل نقطه آسیب پذیر<br />
</strong></span>بمنظور حفاظت سیستم در مقابل  حملات مبتنی بر RPC ، موارد زیر پیشنهاد می گردد  : </span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl"> <span style="font-size: x-small;">غیر فعال نمودن و یا حذف  هر یک از سرویس های  RPC که ضرورتی به استفاده از آن  بر روی شبکه   نمی باشد .</span></li>
<li dir="rtl"> <span style="font-size: x-small;">نصب آخرین Patch  ارائه شده در رابطه با  سرویس هائی که امکان حذف آنان وجود ندارد:<br />
- برای نرم افزار سولاریس  از آدرس  (<a href="http://sunsolve.sun.com/"> http://sunsolve.sun.com </a> )   استفاده گردد.<br />
- برای IBM AIX  از آدرس : <a href="http://www.ibm.com/support/us">http://www.ibm.com/support/us</a> و  <a href="http://techsupport.services.ibm.com/server/fixes"> http://techsupport.services.ibm.com/server/fixes</a> استفاده گردد.<br />
- برای نرم افزار SGI  از آدرس :  <a href="http://support.sgi.com/">http://support.sgi.com</a> استفاده  گردد  .<br />
- برای کامپک ( Digital Unix ) از آدرس    <a href="http://www.compaq.com/support">http://www.compaq.com/support </a><br />
- برای لینوکس  از آدرس :  <a href="http://www.redhat.com/apps/support/errata"> http://www.redhat.com/apps/support/errata</a> و <a href="http://www.debian.org./security">http://www.debian.org./security</a> استفاده گردد . </span></li>
<li dir="rtl"> <span style="font-size: x-small;"> <strong> </strong>عملیات جستجو بمنظور  آگاهی و نصب آخرین Patch  مربوطه می بایست بصورت   مستمر انجام شود.</span></li>
<li dir="rtl"> <span style="font-size: x-small;">پورت ۱۱۱ ( TCP و UDP ) مربوط به   RPC portmapper  و پورت ۱۳۵ ( TCP و UDP ) مربوط به  Windows RPC را در سطح روتر    و یا فایروال بلاک نمائید . </span></li>
<li dir="rtl"> <span style="font-size: x-small;"> پورت های Loopback  ۳۲۷۷۰  ، ۳۲۷۸۹  مربوط بهTCP و UDP   را بلاک نمائید . </span></li>
<li dir="rtl"> <span style="font-size: x-small;">فعال نمودن یک پشته غیراجرائی  بر روی سیستم های  عاملی که از ویژگی فوق ، حمایت می نمایند.  استفاده از یک پشته غیراجرائی  ، لایه ای حفاظتی در مقابل تمامی حملات Buffer  overflows نبوده ولی می تواند عاملی موثر در جهت مقابله با برخی از  حملات استاندارد گردد.</span></li>
<li dir="rtl"> <span style="font-size: x-small;">در ارتباط با سیستم  های فایل NFS صادراتی  ، مراحل زیر می بایست  دنبال گردد :<br />
- استفاده از میزبان / IP    مبتنی بر لیست های صادراتی<br />
- پیکربندی سیستم  های  فایل صادراتی بصورت فقط  خواندنی<br />
- استفاده از &#8220;nfsbug&#8221; برای پویش نقاط آسیب  پذیر </span></li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">برای اخذ اطلاعات تکمیلی در رابطه با  نقاط آسیب پذیر RPC ،  می توان از آدرس  های زیر استفاده نمود :</span></span></p>
<ul dir="ltr"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="ltr"> <a href="http://www.cert.org/advisories/CA-2000-17.html"><span style="font-size: x-small;"> http://www.cert.org/advisories/CA-2000-17.html</span></a></li>
<li dir="ltr"> <a href="http://www.cert.org/advisories/CA-1999-05.html"><span style="font-size: x-small;"> http://www.cert.org/advisories/CA-1999-05.html</span></a></li>
<li dir="ltr"> <a href="http://www.cert.org/advisories/CA-1997-26.html"><span style="font-size: x-small;"> http://www.cert.org/advisories/CA-1997-26.html</span></a><span style="font-size: x-small;"> </span></li>
<li dir="ltr"> <a href="http://www.cert.org/advisories/CA-2002-26.html"><span style="font-size: x-small;"> http://www.cert.org/advisories/CA-2002-26.html</span></a></li>
<li dir="ltr"> <a href="http://www.cert.org/advisories/CA-2002-20.html"><span style="font-size: x-small;"> http://www.cert.org/advisories/CA-2002-20.html</span></a></li>
<li dir="ltr"> <a href="http://www.cert.org/advisories/CA-2001-27.html"><span style="font-size: x-small;"> http://www.cert.org/advisories/CA-2001-27.html</span></a><span style="font-size: x-small;"> </span></li>
<li dir="ltr"> <a href="http://www.cert.org/advisories/CA-2002-25.html"><span style="font-size: x-small;"> http://www.cert.org/advisories/CA-2002-25.html</span></a></li>
<li dir="ltr"> <a href="http://www.cert.org/advisories/CA-1999-08.html"><span style="font-size: x-small;"> http://www.cert.org/advisories/CA-1999-08.html</span></a><span style="font-size: x-small;"> </span></li>
<li dir="ltr"> <a href="http://www.cert.org/advisories/CA-2002-11.html"><span style="font-size: x-small;"> http://www.cert.org/advisories/CA-2002-11.html</span></a></li>
<li dir="ltr"> <a href="http://www.cert.org/advisories/CA-1999-16.html"><span style="font-size: x-small;"> http://www.cert.org/advisories/CA-1999-16.html</span></a></li>
<li dir="ltr"> <a href="http://www.cert.org/advisories/CA-2001-11.html"><span style="font-size: x-small;"> http://www.cert.org/advisories/CA-2001-11.html</span></a><span style="font-size: x-small;"> </span></li>
<li dir="ltr"> <a href="http://www.cert.org/advisories/CA-1998-12.html"><span style="font-size: x-small;"> http://www.cert.org/advisories/CA-1998-12.html</span></a></li>
<li dir="ltr"> <a href="http://www.cert.org/advisories/CA-2001-05.html"><span style="font-size: x-small;"> http://www.cert.org/advisories/CA-2001-05.html</span></a><span style="font-size: x-small;"> </span></li>
<li dir="ltr"> <a href="http://www.cert.org/advisories/CA-2002-10.html"><span style="font-size: x-small;"> http://www.cert.org/advisories/CA-2002-10.html</span></a></li>
<li dir="ltr"> <a href="http://www.cert.org/advisories/CA-2003-10.html"><span style="font-size: x-small;"> http://www.cert.org/advisories/CA-2003-10.html</span></a></li>
<li dir="ltr"> <a href="http://www.cert.org/advisories/CA-2003-16.html"><span style="font-size: x-small;"> http://www.cert.org/advisories/CA-2003-16.html</span></a></li>
<li dir="ltr"> <a href="http://www.cert.org/advisories/CA-2003-19.html"><span style="font-size: x-small;"> http://www.cert.org/advisories/CA-2003-19.html</span></a></li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">در بخش دو م این مقاله به بررسی سایر نقاط آسیب پذیر یونیکیس  و لینوکس خواهیم پرداخت . </span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/networks/linux-unix-vu-p1-2046/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>انواع حملات در شبکه های کامپیوتری ( بخش دوم )</title>
		<link>http://www.irandevelopers.com/networks/netwokr-attack-p2-2045/</link>
		<comments>http://www.irandevelopers.com/networks/netwokr-attack-p2-2045/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 03:32:05 +0000</pubDate>
		<dc:creator>سخاروش</dc:creator>
				<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[شبکه]]></category>
		<category><![CDATA[عمومی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=2045</guid>
		<description><![CDATA[نصب و پیکربندی سرویس ها و پروتکل های مورد نیاز با لحاظ نمودن مسائل امنیتی در یک شبکه ، اشاره گردید . همانگونه که در بخش اول این مقاله اشاره شد ، حملات در یک شبکه کامپیوتری ، حاصل پیوند سه عنصر مهم  سرویس ها ی فعال  ، پروتکل های استفاده شده  و پورت های [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"> نصب و پیکربندی سرویس  ها و پروتکل های مورد نیاز با لحاظ نمودن مسائل امنیتی در یک شبکه ، اشاره  گردید .  همانگونه که در بخش اول این مقاله اشاره شد ، حملات در یک شبکه کامپیوتری ،  حاصل  پیوند سه عنصر مهم  سرویس ها ی فعال  ، پروتکل های استفاده شده  و  پورت های باز می باشد. کارشناسان امنیت اطلاعات می بایست با تمرکز بر سه  محور فوق ،  شبکه ای ایمن و مقاوم در مقابل انواع حملات را ایجاد و نگهداری نمایند. </span></span> <span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"> </span></span></p>
<div><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"> </span></span></p>
<table dir="ltr" border="0" cellspacing="0" cellpadding="2" width="358" bordercolor="#111111">
<colgroup>
<col width="59"></col>
<col width="356"></col>
</colgroup>
<tbody>
<tr valign="top">
<td dir="rtl" colspan="2" width="336" valign="top" bgcolor="#336699"><strong><span style="color: #ffffff; font-size: x-small;">انواع حملات </span> </strong></td>
</tr>
<tr valign="top">
<td dir="ltr" colspan="2" width="336" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Denial of Service (DoS) &amp; Distributed Denial of  Service        (DDoS) </span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Back Door</span></td>
<td width="175" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Spoofing</span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Man in the Middle</span></td>
<td width="175" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Replay </span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">TCP/IP Hijacking</span></td>
<td width="175" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Weak Keys </span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Mathematical </span></td>
<td width="175" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Password Guessing </span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Brute Force</span></td>
<td width="175" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Dictionary </span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Birthday</span></td>
<td width="175" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Software Exploitation</span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Malicious Code</span></td>
<td width="175" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Viruses</span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Virus Hoaxes</span></td>
<td width="175" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Trojan Horses</span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Logic Bombs</span></td>
<td width="175" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Worms</span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Social Engineering</span></td>
<td width="175" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Auditing</span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">System Scanning</span></td>
<td width="175" valign="top" bgcolor="#ffffff"></td>
</tr>
</tbody>
</table>
</div>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"><strong>حملات از نوع DoS<br />
</strong></span>هدف از حملات DoS ، ایجاد اختلال در  منابع و  یا سرویس هائی است که کاربران قصد دستیابی و استفاده از آنان را دارند ( از  کار  انداختن سرویس ها ) .  مهمترین هدف این نوع از حملات ، سلب دستیابی کاربران به  یک منبع خاص است . در این نوع حملات، مهاجمان با  بکارگیری روش های متعددی تلاش می نمایند که کاربران مجاز را به منظور  دستیابی و  استفاده از یک سرویس خاص ، دچار مشکل نموده و بنوعی در مجموعه سرویس هائی  که یک  شبکه ارائه می نماید ، اختلال ایجاد نمایند . تلاش در جهت ایجاد ترافیک  کاذب در  شبکه ، اختلال در ارتباط بین دو ماشین ، ممانعت کاربران مجاز به منظور  دستیابی به  یک سرویس ، ایجاد اختلال در سرویس ها ، نمونه هائی از سایر اهدافی است که  مهاجمان  دنبال می نمایند . در برخی موارد و به منظور انجام حملات گسترده از حملات DoS به عنوان نقطه شروع و یک عنصر جانبی استفاده  شده تا  بستر لازم برای تهاجم اصلی ، فراهم گردد . استفاده صحیح و قانونی از برخی  منابع نیز  ممکن است ، تهاجمی از نوع DoS را به دنبال داشته  باشد .  مثلا&#8221; یک مهاجم می تواند از یک سایت FTP که مجوز  دستیابی  به آن به صورت anonymous می باشد ، به منظور ذخیره نسخه هائی  از نرم  افزارهای غیرقانونی ، استفاده از فضای ذخیره سازی دیسک و یا ایجاد ترافیک  کاذب در  شبکه استفاده نماید . این نوع از حملات می تواند غیرفعال شدن کامپیوتر و یا  شبکه  مورد نظر را به دنبال داشته باشد . حملات فوق با محوریت و تاکید بر نقش و  عملیات  مربوط به هر یک از پروتکل های شبکه و بدون نیاز به اخذ تائیدیه و یا  مجوزهای لازم ،  صورت می پذیرد . برای انجام این نوع حملات از ابزارهای متعددی استفاده می  شود که با  کمی حوصله و جستجو در اینترنت می توان به آنان دستیابی پیدا کرد . مدیران  شبکه های  کامپیوتری می توانند از این نوع ابزارها ، به منظور تست ارتباط ایجاد شده و  اشکال  زدائی شبکه استفاده نمایند . حملات DoS تاکنون  با اشکال  متفاوتی ، محقق شده اند . در ادامه با برخی از آنان آشنا می شویم . </span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"><span style="color: #336699;">Smurf/smurfing</span> : این نوع حملات مبتنی  بر تابع Reply  پروتکل  Internet Control  Message Protocol) ICMP)  ،بوده و بیشتر با نام  ping   شناخته شده می باشند .( Ping ، ابزاری است که  پس از فعال شدن از طریق خط دستور ، تابع Reply   پروتکل ICMP را فرامی خواند) .  در این نوع حملات ،  مهاجم  اقدام به ارسال بسته های اطلاعاتی Ping به آدرس  های Broadcast  شبکه نموده که در آنان آدرس مبداء   هر یک از بسته های اطلاعاتی Ping شده با آدرس کامپیوتر قربانی ، جایگزین می  گردد .بدین  ترتیب یک ترافیک کاذب در شبکه ایجاد و امکان استفاده از منابع شبکه با  اختلال مواجه  می گردد. </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"><span style="color: #336699;">Fraggle</span> : این نوع از حملات شباهت  زیادی با حملات از نوع  Smurf داشته و تنها  تفاوت موجود  به استفاده از User Datagram Protocol ) UDP) در مقابل ICMP ، برمی گردد .  در حملات فوق ، مهاجمان  اقدام به ارسال بسته های  اطلاعاتی UDP به آدرس های Broadcast    ( مشابه تهاجم  Smurf  ) می نمایند . این نوع  از بسته های اطلاعاتی UDP به مقصد پورت ۷ ( echo  ) و یا پورت ۱۹ ( Chargen ) ، هدایت می گردند. </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"><span style="color: #336699;">Ping  flood</span> : در این نوع  تهاجم ، با ارسال مستقیم درخواست های Ping به  کامپیوتر  فربانی ، سعی می  گردد که  سرویس ها  بلاک   و یا فعالیت آنان  کاهش یابد. در یک نوع خاص از تهاجم فوق که به ping of death ، معروف است ،  اندازه بسته  های اطلاعاتی  به حدی زیاد می شود که سیستم ( کامپیوتر قربانی ) ، قادر به برخورد مناسب  با  اینچنین بسته های اطلاعاتی نخواهد بود .</span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"><span style="color: #336699;">SYN  flood</span> : در این نوع  تهاجم از  مزایای three-way handshake  مربوط به  TCP استفاده می گردد . سیستم مبداء اقدام به ارسال  مجموعه  ای  گسترده از  درخواست های synchronization ) SYN)  نموده بدون  این که  acknowledgment ) ACK) نهائی  آنان  را ارسال نماید. بدین ترتیب half-open TCP  sessions (ارتباطات نیمه  فعال ) ، ایجاد می گردد . با توجه به این که پشته TCP   ، قبل از reset نمودن پورت ،  در انتظار باقی خواهد ماند ،  تهاجم فوق ، سرریز بافر اتصال کامپیوتر مقصد را به دنبال داشته و عملا&#8221;  امکان ایجاد ارتباط وی با سرویس گیرندگان معتبر ، غیر ممکن می گردد .</span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"> <span style="color: #336699;">Land </span>: تهاجم فوق، تاکنون در نسخه های  متفاوتی از سیستم های عامل ویندوز ، یونیکس ، مکینتاش و IOS سیسکو،مشاهده شده است . در این نوع حملات ،  مهاجمان اقدام به ارسال یک بسته  اطلاعاتی TCP/IP synchronization ) SYN) که دارای آدرس های مبداء و مقصد  یکسان به  همراه  پورت های مبداء و مقصد مشابه  می باشد ، برای سیستم های  هدف  می نمایند . بدین ترتیب سیستم قربانی، قادر به پاسخگوئی  مناسب بسته   اطلاعاتی نخواهد بود . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"><span style="color: #336699;">Teardrop</span> :  در این نوع حملات از یکی از  خصلت های UDP در پشته TCP/IP برخی  سیستم های عامل  ( TCPپیاده سازی شده در یک سیستم عامل ) ،  استفاده می  گردد. در حملات  فوق ، مهاجمان اقدام  به ارسال بسته های اطلاعاتی fragmented برای  سیستم هدف با مقادیر افست فرد در دنباله ای از بسته های اطلاعاتی می نمایند  . زمانی که سیستم  عامل سعی در بازسازی بسته های اطلاعاتی اولیه  fragmented   می نماید،  قطعات ارسال شده  بر روی یکدیگر بازنویسی شده و اختلال سیستم را به دنبال  خواهد داشت . با توجه به عدم  برخورد مناسب با مشکل فوق در برخی از سیستم های عامل ، سیستم هدف ، Crash و یا راه اندازی مجدد می گردد . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"> <span style="color: #336699;">Bonk</span> : این نوع از حملات بیشتر    متوجه ماشین هائی    است که از سیستم عامل ویندوز    استفاده می نمایند . در حملات فوق ، مهاجمان اقدام به ارسال  بسته های  اطلاعاتی UDP     مخدوش    به مقصد  پورت ۵۳ DNS ،    می نمایند  بدین ترتیب    در عملکرد سیستم  اختلال ایجاد شده و سیستم  Crash  می نماید    . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"> <span style="color: #336699;"> Boink</span> : این نوع از حملات مشابه تهاجمات  Bonk می    باشند. با این    تفاوت که در مقابل استفاده از  پورت ۵۳ ، چندین پورت ، هدف قرارمی گیرد . </span></p>
</li>
<p></span></ul>
<table dir="ltr" border="0" cellspacing="0" cellpadding="2" width="148" bordercolor="#111111">
<colgroup>
<col width="59"></col>
<col width="356"></col>
</colgroup>
<tbody>
<tr valign="top">
<td width="51" valign="top" bgcolor="#336699"><span style="color: #ffffff;"><strong>Port</strong></span></td>
<td width="75" valign="top" bgcolor="#336699"><span style="color: #ffffff;"><strong>Service</strong></span></td>
</tr>
<tr valign="top">
<td width="51" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">7</span></td>
<td width="75" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Echo</span></td>
</tr>
<tr valign="top">
<td width="51" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">11</span></td>
<td width="75" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Systat</span></td>
</tr>
<tr valign="top">
<td width="51" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">15</span></td>
<td width="75" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Netstat</span></td>
</tr>
<tr valign="top">
<td width="51" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">19</span></td>
<td width="75" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Chargen</span></td>
</tr>
<tr valign="top">
<td width="51" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">20</span></td>
<td width="75" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">FTP-Data</span></td>
</tr>
<tr valign="top">
<td width="51" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">21</span></td>
<td width="75" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">FTP</span></td>
</tr>
<tr valign="top">
<td width="51" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">22</span></td>
<td width="75" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">SSH</span></td>
</tr>
<tr valign="top">
<td width="51" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">23</span></td>
<td width="75" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Telnet</span></td>
</tr>
<tr valign="top">
<td width="51" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">25</span></td>
<td width="75" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">SMTP</span></td>
</tr>
<tr valign="top">
<td width="51" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">49</span></td>
<td width="75" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">TACACS</span></td>
</tr>
<tr valign="top">
<td width="51" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">53</span></td>
<td width="75" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">DNS</span></td>
</tr>
<tr valign="top">
<td width="51" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">80</span></td>
<td width="75" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">HTTP</span></td>
</tr>
<tr valign="top">
<td width="51" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">110</span></td>
<td width="75" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">POP3</span></td>
</tr>
<tr valign="top">
<td width="51" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">111</span></td>
<td width="75" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Portmap</span></td>
</tr>
<tr valign="top">
<td width="51" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">161/162</span></td>
<td width="75" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">SNMP</span></td>
</tr>
<tr valign="top">
<td width="51" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">443</span></td>
<td width="75" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">HTTPS</span></td>
</tr>
<tr valign="top">
<td width="51" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">1812</span></td>
<td width="75" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">RADIUS</span></td>
</tr>
</tbody>
</table>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">متداولترین  پورت های استفاده شده  در حملات DoS </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">یکی دیگر از حملات DoS ، نوع خاص و در عین حال ساده ای از یک حمله DoS می باشد که با نام Distributed DoS ) DDoS) ،  شناخته   می شود .در این رابطه می توان از نرم افزارهای  متعددی   به منظور انجام این نوع حملات و از درون یک شبکه ، استفاده بعمل آورد.  کاربران ناراضی و یا افرادی که دارای سوء نیت می باشند، می  توانند بدون هیچگونه تاثیری از دنیای خارج از شیکه سازمان خود ، اقدام به  ازکارانداختن سرویس ها در شبکه نمایند. در چنین حملاتی ، مهاجمان نرم  افزاری خاص و  موسوم به  Zombie  را توزیع   می نمایند . این نوع نرم  افزارها به مهاجمان اجازه خواهد داد که تمام و یا بخشی از سیستم کامپیوتری  آلوده  را تحت کنترل خود درآورند.  مهاجمان پس از آسیب اولیه به سیستم هدف   با استفاده از نرم افزار نصب شده Zombie ، تهاجم  نهائی  خود را با بکارگیری مجموعه ای   وسیع از میزبانان  انجام خواهند داد.  ماهیت و  نحوه انجام این نوع از حملات ، مشابه یک تهاجم استاندارد DoS  بوده ولی  قدرت تخریب و آسیبی که مهاجمان متوجه سیستم های آلوده می نمایند ،   متاثر از مجموع ماشین هائی ( Zombie )   است که تحت کنترل مهاجمان  قرار گرفته شده است .<br />
به منظور حفاظت شبکه ، می توان فیلترهائی را بر روی روترهای خارجی شبکه به  منظور  دورانداختن بسته های اطلاعاتی مشمول حملات  DoS ، پیکربندی نمود .در چنین  مواردی می بایست از فیلتری دیگر که امکان مشاهده ترافیک  (مبداء از طریق  اینترنت)  و یک آدرس داخلی شبکه را فراهم می نماید ،  نیز استفاده گردد . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="color: #000080;"><strong><span style="font-size: x-small;">حملات از  نوع </span><span style="font-size: x-small;">Back door</span></strong></span><span style="font-size: x-small;"><span style="color: #000080;"><strong> </strong></span><br />
Back door ، برنامه ای است که امکان دستیابی به  یک سیستم  را بدون بررسی و کنترل امنیتی ، فراهم می نماید . برنامه نویسان  معمولا&#8221; چنین  پتانسیل هائی  را در برنامه ها  پیش بینی تا امکان اشکال زدائی و  ویرایش کدهای نوشته شده در زمان تست بکارگیری نرم افزار ، فراهم گردد. با  توجه به این که تعداد زیادی از امکانات  فوق ، مستند نمی گردند ، پس از اتمام مرحله تست به همان وضعیت باقی  مانده و تهدیدات امنیتی  متعددی را به دنبال خواهند داشت .<br />
برخی از متداولترین نرم  افزارها ئی که از آنان به عنوان  back door استفاده می گردد ، عبارتند از : </span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"><span style="color: #336699;">Back  Orifice</span> : برنامه فوق یک ابزار مدیریت از راه  دور می باشد که به مدیران سیستم امکان کنترل یک کامپیوتر را از راه دور (  مثلا&#8221; از   طریق اینترنت ) ، خواهد  داد. نرم افزار فوق  ، ابزاری  خطرناک  است که  توسط گروهی با  نام Cult of the Dead Cow Communications ، ایجاد شده است . این نرم افزار  دارای دو  بخش مجزا می باشد : یک بخش  سرویس گیرنده و یک بخش سرویس دهنده . بخش  سرویس گیرنده بر روی یک ماشین اجراء  و زمینه مانیتور  نمودن و کنترل یک ماشین دیگر که بر روی آن بخش سرویس دهنده اجراء شده است  را فراهم می نماید . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"><span style="color: #336699;">NetBus</span> : این برنامه نیز نظیر Back Orifice ، امکان دستیابی و کنترل از راه دور یک  ماشین  از طریق اینترنت را فراهم می نماید.. برنامه فوق تحت سیستم عامل ویندوز (  نسخه های  متفاوت از NT تا ۹۵ و ۹۸ ) ، اجراء و از دو بخش جداگانه  تشکیل شده  است :  بخش  سرویس دهنده ( بخشی که بر روی کامپیوتر قربانی مستقر خواهد  شد ) و  بخش سرویس گیرنده ( برنامه ای که مسولیت یافتن و کنترل سرویس دهنده  را  برعهده دارد ) . برنامه فوق ، به حریم خصوصی کاربران در زمان اتصال به  اینترنت ،  تجاوز و تهدیدات امنیتی متعددی را به دنبال خواهد داشت . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"><span style="color: #336699;">Sub7)  SubSeven)</span> ،  این برنامه برنامه نیز تحت ویندوز اجراء شده  و  دارای عملکردی مشابه Back Orifice و NetBus می باشد . پس از فعال شدن  برنامه فوق بر  روی سیستم هدف و اتصال به اینترنت ،هر شخصی که دارای نرم افزار سرویس  گیرنده باشد ،  قادر به دستیابی نامحدود به سیستم خواهد بود </span>.</p>
</li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">نرم افزارهای Back Orifice ، NetBus,  Sub7 دارای دو بخش ضروری   سرویس دهنده و سرویس گیرنده،  می باشند . سرویس دهنده بر روی ماشین آلوده مستقر شده و  از بخش  سرویس گیرنده به منظور کنترل از راه دور سرویس دهنده  ، استفاده می گردد.به نرم افزارهای فوق ، &#8221; سرویس دهندگان غیرقانونی &#8220;   گفته می شود .<br />
برخی از نرم افزارها از اعتبار بالائی برخوردار بوده ولی ممکن است توسط  کاربرانی که  اهداف مخربی دارند ، مورد استفاده قرار گیرند :</span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"><span style="color: #336699;">Virtual  Network Computing)VNC) </span>: نرم افزار فوق توسط آزمایشگاه AT&amp;T   و با هدف کنترل از راه دور یک سیستم ،  ارائه شده است . با استفاده از برنامه فوق  ، امکان مشاهده محیط  Desktop از هر مکانی نظیر اینترنت  ، فراهم می گردد . یکی از ویژگی های جالب این نرم افزار ، حمایت گسترده از  معماری  های متفاوت است .</span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"><span style="color: #336699;">PCAnywhere</span> : نرم افزار فوق توسط شرکت  Symantec ، با هدف کنترل از راه دور یک سیستم با لحاظ نمودن فن آوری  رمزنگاری و  تائید اعتبار ، ارائه شده است . با توجه به سهولت استفاده از نرم افزار فوق  ، شرکت  ها و موسسات فراوانی در حال حاضر از آن و به منظور دستیابی به یک سیستم از  راه دور  استفاده می نمایند . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"><span style="color: #336699;">Terminal  Services</span> :  نرم افزار فوق توسط شرکت مایکروسافت و به همراه سیستم عامل  ویندوز و به منظور کنترل از راه دور  یک سیستم ، ارائه شده است . </span></p>
</li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">همانند سایر نرم افزارهای کاربردی ، نرم افزارهای  فوق را می توان  هم در جهت اهداف مثبت و هم در جهت اهداف مخرب بکارگرفت.<br />
بهترین روش به منظور  پیشگیری از حملات  Back doors ، آموزش کاربران و   مانیتورینگ عملکرد  هر یک از نرم افزارهای موجود می باشد. به کاربران می بایست آموزش داده شود  که  صرفا&#8221; از منابع و سایت های مطمئن اقدام به دریافت و نصب نرم افزار بر روی  سیستم خود  نمایند . نصب و استفاده از برنامه های آنتی  ویروس می تواند کمک قابل توجهی در بلاک نمودن عملکرد اینچنین نرم افزارهائی  ( نظیر  : Back Orifice, NetBus, and Sub7 ) را به دنبال داشته باشد . برنامه های  آنتی  ویروس می بایست به صورت مستمر بهنگام شده تا امکان شناسائی نرم افزارهای  جدید ،  فراهم گرد</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/networks/netwokr-attack-p2-2045/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>انواع حملات در شبکه های کامپیوتری ( بخش اول )</title>
		<link>http://www.irandevelopers.com/networks/network-attack-p1-2044/</link>
		<comments>http://www.irandevelopers.com/networks/network-attack-p1-2044/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 03:30:01 +0000</pubDate>
		<dc:creator>سخاروش</dc:creator>
				<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[شبکه]]></category>
		<category><![CDATA[عمومی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=2044</guid>
		<description><![CDATA[امنیت اطلاعات و ایمن سازی شبکه های کامپیوتری از جمله موضوعاتی است که این روزها در کانون توجه تمامی سازمان ها و موسسات قرار گرفته  شده است . در یک شبکه کامپیوتری به منظور ارائه خدمات به کاربران ، سرویس ها و پروتکل های متعددی نصب و پیکربندی می گردد. برخی از سرویس ها  دارای [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">امنیت اطلاعات و ایمن سازی شبکه های کامپیوتری از جمله موضوعاتی  است که این روزها  در کانون توجه تمامی سازمان ها و موسسات قرار گرفته  شده است . در یک شبکه  کامپیوتری به منظور ارائه خدمات به کاربران ، سرویس ها و پروتکل های متعددی  نصب و  پیکربندی می گردد. برخی از سرویس ها  دارای استعداد لازم برای انواع حملات  بوده و لازم است در مرحله اول و در زمان نصب و پیکربندی آنان ، دقت لازم در  خصوص  رعایت مسائل ایمنی انجام  و در مرحله دوم سعی گردد که از نصب سرویس ها و  پروتکل های  غیرضروری ، اجتناب گردد . در این مقاله قصد داریم از این زاویه  به  مقوله امنیت اطلاعات و ایمن سازی شبکه های کامپیوتری پرداخته و در ادامه با  انواع  حملاتی که امروزه متوجه شبکه های کامپیوتری است ، بیشتر آشنا شویم . قطعا&#8221;  شناسائی  سرویس های غیرضروری و انواع حملاتی که مهاجمان با استفاده از آنان شبکه های   کامپیوتری را هدف قرار می دهند ، زمینه برپاسازی و نگهداری  شبکه های  کامپیوتری ایمن و مطمئن را بهتر فراهم می نماید . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"><strong>مقدمه<br />
</strong></span>حملات در یک شبکه کامپیوتری حاصل پیوند سه عنصر مهم  سرویس ها ی   فعال  ، پروتکل های استفاده شده  و پورت های باز می باشد . یکی از  مهمترین وظایف کارشناسان فن آوری اطلاعات ، اطیمنان از ایمن بودن شبکه و  مقاوم بودن  آن در مقابل حملات است (مسئولیتی بسیار خطیر و سنگین ) . در زمان ارائه  سرویس  دهندگان ، مجموعه ای از سرویس ها و پروتکل ها به صورت پیش فرض فعال  و  تعدادی  دیگر نیز غیر فعال شده اند.این موضوع ارتباط مستقیمی با سیاست های یک سیستم  عامل و  نوع نگرش آنان به مقوله امنیت  دارد. در زمان نقد امنیتی سیستم های عامل ،  پرداختن به موضوع فوق  یکی از محورهائی است  که کارشناسان امنیت اطلاعات   با حساسیتی بالا آنان را دنبال می نمایند.<br />
اولین مرحله در خصوص ایمن سازی یک محیط شبکه ، تدوین ، پیاده سازی و رعایت  یک سیاست  امنیتی است  که محور اصلی برنامه ریزی در خصوص ایمن سازی شبکه را شامل می  شود  . هر نوع برنامه ریزی در این رابطه مستلزم توجه به موارد زیر است : </span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl"> <span style="font-size: x-small;">بررسی نقش هر سرویس دهنده به همراه  پیکربندی انجام شده در جهت انجام وظایف مربوطه در شبکه </span></li>
<li dir="rtl"> <span style="font-size: x-small;">انطباق سرویس ها ، پروتکل ها و برنامه  های  نصب شده  با خواسته ها ی یک سازمان </span></li>
<li dir="rtl"> <span style="font-size: x-small;">بررسی تغییرات لازم در خصوص هر یک    از سرویس دهندگان فعلی (افزودن و یا حذف  سرویس ها و پروتکل های غیرضروری  ،    تنظیم دقیق امنیتی سرویس ها و پروتکل های فعال ) .</span></li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">تعلل و یا نادیده گرفتن فاز برنامه  ریزی می تواند زمینه بروز یک فاجعه عظیم اطلاعاتی را در یک سازمان به دنبال  داشته  باشد . متاسفانه در اکثر موارد توجه جدی به مقوله برنامه ریزی و تدوین یک  سیاست  امنیتی نمی گردد . فراموش نکنیم که فن آوری ها به سرعت و به صورت مستمر در  حال  تغییر بوده و می بایست متناسب با فن آوری های جدید ، تغییرات لازم با هدف  افزایش  ضریب مقاومت سرویس دهندگان و کاهش نقاط آسیب پذیر آنان با جدیت دنبال شود .  نشستن  پشت یک سرویس دهنده و پیکربندی آن بدون وجود یک برنامه مدون و مشخص ، امری  بسیار  خطرناک بوده که بستر لازم برای  بسیاری از حملاتی که در آینده اتفاق خواهند   افتاد را فراهم می نماید . هر سیستم عامل دارای مجموعه ای از سرویس ها ،  پروتکل ها   و  ابزارهای خاص خود بوده  و نمی توان بدون وجود یک برنامه مشخص و پویا   به تمامی ابعاد آنان توجه و از  پتانسیل های آنان در جهت افزایش کارائی و  ایمن  سازی شبکه استفاده نمود. پس از تدوین  یک برنامه مشخص در ارتباط با سرویس دهندگان ، می  بایست در فواصل زمانی خاصی ، برنامه های تدوین یافته مورد بازنگری قرار  گرفته و  تغییرات لازم در آنان با توجه به شرایط موجود و فن آوری های جدید ارائه شده  ، اعمال  گردد . فراموش نکنیم که حتی راه حل های انتخاب شده فعلی که دارای عملکردی  موفقیت  آمیز می باشند ، ممکن است در آینده و با توجه به شرایط پیش آمده  قادر به  ارائه عملکردی صحیح ، نباشند .</span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><strong><span style="color: #000080; font-size: x-small;">وظیفه یک سرویس دهنده </span> </strong><span style="font-size: x-small;"><br />
پس از شناسائی جایگاه و نقش هر سرویس دهنده در شبکه می توان در ارتباط با  سرویس ها  و پروتکل های مورد نیاز آن به منظور انجام وظایف مربوطه ،  تصمیم گیری نمود . برخی  از سرویس دهندگان به همراه وظیفه آنان در یک شبکه کامپیوتری به شرح زیر می  باشد : </span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"> <span style="color: #336699;"> Logon  Server</span> : این نوع سرویس دهندگان  مسئولیت  شناسائی و تائید کاربران در زمان ورود به شبکه را برعهده دارند . سرویس  دهندگان فوق  می توانند عملیات خود را به عنوان بخشی در کنار سایر سرویس دهندگان نیز  انجام دهند  . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"><span style="color: #336699;">Network Services Server</span> : این  نوع از سرویس دهندگان مسئولیت میزبان نمودن سرویس های مورد نیاز شبکه  را   برعهده دارند . این سرویس ها عبارتند از :<br />
- Dynamic Host Configuration Protocol )  DHCP)<br />
- Domain Name System ) DNS)<br />
- Windows Internet Name Service)  WINS)<br />
- Simple Network Management Protocol )  SNMP) </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"> <span style="color: #336699;">Application Server</span> : این نوع از سرویس دهندگان  مسئولیت  میزبان نمودن برنامه ها ی کاربردی نظیر بسته نرم افزاری Accounting و سایر نرم افزارهای مورد نیاز در  سازمان را  برعهده دارند .</span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"> <span style="color: #336699;">File Server</span> : از این نوع سرویس دهندگان به  منظور  دستیابی به فایل ها و دایرکتوری ها  ی کاربران ، استفاده می گردد .</span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"><span style="color: #336699;">Print  Server</span> : از این نوع سرویس دهندگان به  منظور  دستیابی به چاپگرهای اشتراک گذاشته شده در شبکه ، استفاده می شود . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"><span style="color: #336699;">Web  Server</span> : این نوع سرویس دهندگان مسئولیت  میزبان  نمودن برنامه های وب و وب سایت های داخلی و یا خارجی را برعهده دارند . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"><span style="color: #336699;">FTP  Server</span> : این نوع سرویس دهندگان مسئولیت  ذخیره  سازی فایل ها برای انجام عملیات Downloading و Uploading  را برعهده دارند. سرویس دهندگان فوق می توانند به صورت داخلی و یا خارجی  استفاده  گردند . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"><span style="color: #336699;"> Email   Server</span> : این نوع سرویس دهندگان مسئولیت  ارائه  سرویس پست الکترونیکی را برعهده داشته و می توان از آنان به منظور میزبان  نمودن  فولدرهای عمومی و برنامه های Gropuware ، نیز  استفاده  نمود. </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"><span style="color: #336699;">News/Usenet  (NNTP)    Server</span> : این    نوع سرویس دهندگان به عنوان یک سرویس دهنده newsgroup  بوده     و کاربران می توانند اقدام به ارسال و دریافت پیام هائی    بر روی آنان  نمایند . </span></p>
</li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">به منظور شناسائی سرویس ها و پروتکل  های مورد نیاز بر روی هر یک از سرویس دهندگان ، می بایست در ابتدا به این  سوال پاسخ  داده شود که  نحوه دستیابی به هر یک از آنان  به چه صورت است ؟ : شبکه  داخلی ، شبکه جهانی  و یا هر دو مورد . پاسخ به سوال فوق زمینه نصب و  پیکربندی  سرویس ها و پروتکل های ضروری و حذف و غیر فعال نمودن سرویس ها و پروتکل های   غیرضروری در ارتباط با هر یک از سرویس دهندگان موجود در یک شبکه کامپیوتری  را فراهم  می نماید . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"><strong>سرویس های  حیاتی و موردنیاز<br />
</strong></span>هر سیستم عامل به منظور ارائه خدمات و انجام عملیات مربوطه ،  نیازمند  استفاده از سرویس های متفاوتی است . در حالت ایده آل ، عملیات نصب و  پیکربندی یک  سرویس دهنده می بایست صرفا&#8221; شامل سرویس ها و پروتکل های ضروری و مورد نیاز  به منظور  انجام وظایف  هر سرویس دهنده باشد. معمولا&#8221; تولید کنندگان سیستم های عامل  در  مستندات مربوطه  به این سرویس ها اشاره می نمایند. استفاده از مستندات و  پیروی  از روش های  استاندارد ارائه شده برای پیکربندی و آماده سازی سرویس دهندگان   ،زمینه نصب  و پیکربندی مطمئن با رعایت مسائل ایمنی را بهتر فراهم می نماید  .<br />
زمانی که کامپیوتری در اختیار شما گذاشته می شود ، معمولا&#8221; بر روی آن نرم  افزارهای  متعددی  نصب و پیکربندی های خاصی نیز در ارتباط با  آن اعمال شده است .  یکی از مطمئن ترین روش ها به منظور آگاهی از این موضوع که سیستم فوق  انتظارات شما  را متناسب با برنامه تدوین شده ، تامین می نماید ، انجام یک نصب Clean  با استفاده از سیاست ها و لیست ها ی از قبل مشخص شده است . بدین ترتیب در  صورت بروز  اشکال می توان به سرعت از این امر آگاهی و هر مشکل را در محدوده خاص خود  بررسی و  برای آن راه حلی انتخاب نمود. ( شعاع عملیات نصب  و پیکربندی را به تدریج افزایش دهیم ) .</span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"><strong>مشخص نمودن  پروتکل های مورد نیاز<br />
</strong></span>برخی از مدیران شبکه عادت دارند که پروتکل های غیرضروری را نیز  بر روی  سیستم نصب نمایند ، یکی از علل این موضوع ، عدم آشنائی دقیق آنان با نقش و  عملکرد  هریک از  پروتکل ها در شبکه بوده و در برخی موارد نیز بر این اعتقاد هستند  که  شاید این پروتکل ها در آینده مورد نیاز خواهد بود. پروتکل ها همانند سرویس  ها ، تا  زمانی که به وجود آنان نیاز نمی باشد ، نمی بایست نصب گردند . با بررسی یک  محیط  شبکه با سوالات متعددی در خصوص پروتکل های مورد نیاز برخورد نموده  که پاسخ  به  آنان امکان شناسائی و نصب پروتکل های مورد نیاز را فراهم نماید . </span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"> به چه نوع پروتکل و یا  پروتکل هائی  برای ارتباط سرویس گیرندگان ( Desktop ) با  سرویس  دهندگان ، نیاز می باشد ؟ </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">به چه نوع پروتکل  و یا  پروتکل  هائی برای ارتباط سرویس دهنده با  سرویس دهنده ، نیاز می باشد ؟ </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">به چه نوع پروتکل  و یا  پروتکل  هائی برای ارتباط سرویس گیرندگان ( Desktop ) از راه دور  با سرویس دهندگان ، نیاز  می  باشد ؟ </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">آیا پروتکل و یا پروتکل های  انتخاب  شده ما را ملزم به نصب سرویس های اضافه ای می نمایند ؟ </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">آیا پروتکل های انتخاب شده  دارای    مسائل امنیتی خاصی بوده که می بایست مورد توجه و بررسی قرار گیرد ؟ </span></p>
</li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">در تعداد زیادی از شبکه های کامپیوتری  ،از چندین سیستم عامل نظیر ویندوز ، یونیکس و یا لینوکس ، استفاده می گردد .  در  چنین مواردی می توان از پروتکل TCP/IP به عنوان  فصل  مشترک بین آنان استفاده نمود. در ادامه می بایست در خصوص فرآیند اختصاص  آدرس های IP  تصیم گیری نمود ( به صورت ایستا و یا پویا و به کمک DHCP   ) . در صورتی که تصمیم گرفته شود که فرآیند اختصاص آدرس های IP به صورت پویا و به کمک DHCP ، انجام شود، به یک سرویس اضافه و با نام DHCP نیاز خواهیم داشت . با این که استفاده از  DHCP  مدیریت شبکه را آسانتر می نماید ولی از  لحاظ  امنیتی دارای درجه پائین تری نسبت به اختصاص ایستای  آدرس های  IP ، می باشد چراکه کاربران ناشناس و گمنام می توانند پس از اتصال  به شبکه ،   بلافاصله از منبع صادرکننده آدرس های IP ، یک  آدرس IP را دریافت و به عنوان یک سرویس گیرنده در  شبکه ایفای  وظیفه نمایند. این وضعیت در ارتباط با شبکه های بدون کابل غیرایمن نیز صدق  می  نماید. مثلا&#8221; یک فرد می تواند با استقرار در پارکینگ یک ساختمان و به کمک  یک Laptop به شبکه شما با استفاده از یک اتصال بدون  کابل ،  متصل گردد.  پروتکل TCP/IP  ، برای &#8220;معادل  سازی نام به آدرس &#8221; از یک سرویس دهنده DNS نیز  استفاده  می نماید . در شبکه های ترکیبی شامل چندین سیستم عامل نظیر ویندوز و  یونیکس  و  با توجه به این که ویندوز NT 4.0 و یا ۲۰۰۰ شده  است ،  علاوه بر  DNS به سرویس  WINS    نیز نیاز می باشد . همزمان با انتخاب پروتکل ها و سرویس های مورد نیاز آنان  ، می  بایست بررسی لازم در خصوص چالش های امنیتی هر  یک از آنان نیز بررسی  و اطلاعات مربوطه مستند گردند(  مستندسازی ، ارج نهادن به زمان خود و دیگران است ) . راه حل انتخابی  ، می بایست کاهش تهدیدات مرتبط با هر یک از سرویس ها و  پروتکل ها را در یک  شبکه به دنبال داشته باشد . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"><strong>مزایای  غیرفعال نمودن  پروتکل ها و سرویس های غیرضروری<br />
</strong></span>استفاده عملیاتی از یک سرویس دهنده بدون بررسی دقیق سرویس ها ،  پروتکل  ها و پیکربندی متنتاظر با هر یک از آنان زمینه بروز تهدیدات و حملات را در  یک شبکه  به دنبال خواهد داشت . فراموش نکنیم که مهاجمان همواره قربانیان خود را از  بین  سرویس دهندگانی که به درستی پیکربندی نشده اند ، انتخاب می نمایند.  بنابراین می  بایست به سرعت در خصوص سرویس هائی که قصد غیرفعال نمودن آنان  را داریم ، تصمیم گیری شود . قطعا&#8221; نصب سرویس ها و یا پروتکل هائی که قصد  استفاده از  آنان وجود ندارد ، امری منطقی و قابل قبول نخواهد بود.  در صورتی که این  نوع  از سرویس ها نصب و به درستی پیکربندی نگردند ، مهاجمان می توانند با  استفاده از  آنان ، آسیب های جدی را متوجه شبکه نمایند . تهدید فوق می تواند از درون  شبکه و یا  خارج از شبکه متوجه یک شبکه کامپیوتری گردد . بر اساس برخی آمارهای منتشر  شده ، اغلب آسیب ها و تهدیدات  در شبکه یک سازمان توسط  کارکنان کنجکا و و یا ناراضی  صورت می پذیرد تا از طریق مهاجمان خارج از  شبکه .<br />
بخاطر داشته باشید که ایمن سازی شبکه های کامپیوتری مستلزم اختصاص زمان  لازم و کافی  برای برنامه ریزی است . سازمان ها و موسسات علاقه مندند به موازات عرضه فن  آوری های  جدید ، به سرعت  از آنان استفاده نموده تا بتوانند از مزایای آنان در جهت  اهداف  سازمانی خود استفاده نمایند. تعداد و تنوع  گزینه های انتخابی در خصوص   پیکربندی هر سیستم عامل ، به سرعت رشد می نماید . امروزه  وجود توانائی  لازم  در جهت شناسائی و پیاده سازی سرویس ها و پروتکل های مورد نیاز در یک شبکه  خود به یک  مهارت ارزشمند تبدیل شده است. بنابراین لازم است کارشناسان فن آوری اطلاعات  که  مسئولیت شغلی آنان در ارتباط با شبکه و ایمن سازی  اطلاعات است ، به صورت مستمر و با   اعتقاد به اصل بسیار مهم &#8221; اشتراک دانش و تجارب &#8221; ، خود را بهنگام نمایند.    اعتقاد عملی به اصل فوق ، زمینه کاهش حملات و تهدیدات را در هر شبکه  کامپیوتری به دنبال  خواهد داشت . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"><strong>حملات ( Attacks   )<br />
</strong></span>با توجه به ماهیت ناشناس بودن کاربران شبکه های  کامپیوتری ، خصوصا&#8221; اینترنت ،امروزه   شاهد افزایش حملات بر روی تمامی انواع سرویس دهندگان می باشیم . علت بروز  چنین  حملاتی می تواند از یک کنجکاوی ساده  شروع و تا اهداف مخرب و ویرانگر ادامه   یابد.<br />
برای پیشگیری ، شناسائی ، برخورد سریع  و توقف حملات ، می بایست در مرحله  اول  قادر به تشخیص و شناسائی زمان و موقعیت بروز یک تهاجم باشیم . به عبارت  دیگر چگونه  از بروز یک حمله و یا تهاجم در شبکه خود آگاه می شویم ؟ چگونه با آن برخورد  نموده و  در سریعترین زمان  ممکن آن را متوقف  نموده  تا میزان صدمات و آسیب به منابع  اطلاعاتی سازمان به حداقل مقدار خود برسد ؟ شناسائی نوع حملات و نحوه پیاده  سازی یک  سیستم حفاظتی مطمئن در مقابل آنان یکی از وظایف مهم  کارشناسان امنیت  اطلاعات  و شبکه های کامپیوتری است .شناخت دشمن و آگاهی از روش های تهاجم وی ،  احتمال موفقیت  ما را در رویاروئی با آنان افزایش خواهد داد. بنابراین لازم است با انواع  حملات و  تهاجماتی که تاکنون متوجه شبکه های کامپیوتری شده است ، بیشتر آشنا شده و  از این  رهگذر تجاربی ارزشمند را کسب تا در  آینده بتوانیم به نحو مطلوب از آنان استفاده نمائیم .  جدول زیر برخی از حملات متداول را نشان می دهد : </span></span></p>
<p><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"> </span></span></p>
<div><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"> </span></span></p>
<table dir="ltr" border="0" cellspacing="0" cellpadding="2" width="358" bordercolor="#111111">
<colgroup>
<col width="59"></col>
<col width="356"></col>
</colgroup>
<tbody>
<tr valign="top">
<td dir="rtl" colspan="2" width="336" valign="top" bgcolor="#336699"><strong><span style="color: #ffffff; font-size: x-small;">انواع حملات </span> </strong></td>
</tr>
<tr valign="top">
<td dir="ltr" colspan="2" width="336" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Denial of Service (DoS) &amp; Distributed Denial of  Service        (DDoS) </span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Back Door</span></td>
<td width="175" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Spoofing</span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Man in the Middle</span></td>
<td width="175" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Replay </span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">TCP/IP Hijacking</span></td>
<td width="175" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Weak Keys </span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Mathematical </span></td>
<td width="175" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Password Guessing </span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Brute Force</span></td>
<td width="175" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Dictionary </span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Birthday</span></td>
<td width="175" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Software Exploitation</span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Malicious Code</span></td>
<td width="175" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Viruses</span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Virus Hoaxes</span></td>
<td width="175" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Trojan Horses</span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Logic Bombs</span></td>
<td width="175" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Worms</span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Social Engineering</span></td>
<td width="175" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">Auditing</span></td>
</tr>
<tr valign="top">
<td width="161" valign="top" bgcolor="#ffffff"><span style="font-size: x-small;">System Scanning</span></td>
<td width="175" valign="top" bgcolor="#ffffff"></td>
</tr>
</tbody>
</table>
</div>
<p><span style="font-family: Times New Roman; font-size: small;"> </span> <span style="font-family: Times New Roman; font-size: small;"><span style="font-family: Helvetica,Geneva,Arial;"><small></p>
<p dir="rtl"><span style="font-size: x-small;">در بخش دوم این مقاله به  بررسی  هر یک از حملات فوق ، خواهیم پرداخت .</span></p>
<p></small></span> </span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/networks/network-attack-p1-2044/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>بررسی روند شکل گیری XSLT و جایگاه آن بعنوان یک زبان برنامه نویسی</title>
		<link>http://www.irandevelopers.com/programming/what-is-xslt-p3-2042/</link>
		<comments>http://www.irandevelopers.com/programming/what-is-xslt-p3-2042/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 04:28:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=2042</guid>
		<description><![CDATA[روند شکل گیری XSLT XSLT ، نظیر سایر اعضاء خانواده بزرگ استاندارهای XML، توسط کنسرسیوم وب پیاده سازی شده است. جزئیات مربوط به شکل گیری استاندارد فوق، در آدرس http://www.w3.org/style/History قابل استفاده است. پیشنهاد اولیه ، برای استاندارد فوق در تاریخ بیست ویکم اگوست سال ۱۹۹۷ ارائه گردید  ( http://www.w3.org/TR/NOTE-XSL.html ) . برای ارائه استاندارد [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"><strong>روند شکل گیری </strong></span> <span style="color: #000080;"><strong>XSLT<br />
</strong></span>XSLT <span style="font-family: Times New Roman;">، </span>نظیر  سایر  اعضاء خانواده بزرگ استاندارهای XML<span style="font-family: Times New Roman;">، </span> توسط کنسرسیوم وب پیاده سازی شده است. جزئیات مربوط به شکل گیری استاندارد  فوق<span style="font-family: Times New Roman;">،  در </span>آدرس  <a href="http://www.w3.org/style/History"> http://www.w3.org/style/History</a> قابل استفاده است.  پیشنهاد اولیه <span style="font-family: Times New Roman;">، </span>برای استاندارد فوق  در تاریخ بیست ویکم اگوست سال ۱۹۹۷ ارائه گردید  (  <a href="http://www.w3.org/TR/NOTE-XSL.html"> http://www.w3.org/TR/NOTE-XSL.html</a> ) . برای ارائه  استاندارد  فوق<span style="font-family: Times New Roman;">،</span> از وجود یازده متخصص  استفاده گردید .   ( پنج نفر از شرکت ماکروسافت <span style="font-family: Times New Roman;">،</span> سه نفر از  شرکت Inso <span style="font-family: Times New Roman;">، </span> یک  نفر از شرکت ArborText <span style="font-family: Times New Roman;">،</span> یک نفر از دانشگاه ادینبورگ و James Clark <span style="font-family: Times New Roman;">،</span> که برای خود کار می کرد) .<br />
XSL <span style="font-family: Times New Roman;">،</span> یک زبان Stylesheet  است که توسط کمیته وب طراحی شده است . قابلیت های استاندارد فوق <span style="font-family: Times New Roman;">،  بمراتب بیشتر از </span> CSS است (  مثلا&#8221; قابلیت ذخیره سازی المان ها ) . همانگونه که قبلا&#8221;  اشاره گردید<span style="font-family: Times New Roman;">، </span> CSS بمنظور نمایش سندهای XML  با ساختار ساده  مناسب می باشد. XSL  <span style="font-family: Times New Roman;">، </span>دارای  قابلیت های بمراتب  بیشتری در رابطه با فرمت مورد نیاز برای قالب دهی  اطلاعات ساختیافته <span style="font-family: Times New Roman;">،</span> (نظیر یک ساختمان داده XML  )  می باشد . پیاده کنندگان استاندارد XSL <span style="font-family: Times New Roman;">،</span> در زمان طراحی تکنولوژی فوق <span style="font-family: Times New Roman;">،</span> سه محور   اساسی را مورد توجه قراردادند :</span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">یک زبان  نشانه گذاری با    تاکید بر یک گرامر تعریفی </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">امکان  استفاده از    اسکریپت های خاص بمنظور انجام عملیات پیچیده </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">امکان  استفاده     بعنوان یک زبان برنامه نویسی کامل </span></p>
</li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">اهداف طراحی XSL بشرح زیر  است : </span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">XSL <span style="font-family: Times New Roman;">، </span>می بایست براحتی    از طریق اینترنت قابل استفاده باشد. </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">XSL <span style="font-family: Times New Roman;">، </span>می بایست همراه    با گرامر XML     ارائه  شود </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">XSL <span style="font-family: Times New Roman;">، </span>می بایست یک زبان    تعریفی بمنظور انجام عملیات    رایج در رابطه با  فرمت دهی باشد.</span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">XSL <span style="font-family: Times New Roman;">، </span>می بایست امکان    استفاده از یک زبان اسکریپت را بمنظور افزایش توان عملیاتی فراهم نماید . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">XSL <span style="font-family: Times New Roman;">، </span>می بایست امکان    تطبیق یک CSS  را به یک XSL stylesheet    فراهم نماید . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">قابلیت  استفاده    آسان از   XSL <span style="font-family: Times New Roman;">، </span>برای  کاربرانی که دارای تجربه لازم در رابطه با زبان   FOSI می باشند . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">تعداد ویژگی    انتخابی در XSL <span style="font-family: Times New Roman;">، </span>می  بایست حداقل مقدارممکن    را دارا باشد . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">Stylesheet  های نوشته    شده بکمک XSL <span style="font-family: Times New Roman;">، </span>می  بایست    خوانائی مطلوبی را داشته باشند . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">طراحی XSL <span style="font-family: Times New Roman;">، </span> می    بایست بسرعت </span><span style="font-size: x-small;">انجام شود . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">ایجاد    stylesheet بکمک XSL <span style="font-family: Times New Roman;">، </span>می بایست بسادگی    انجام شود .</span></p>
</li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">زبان  ارائه شده  در  اولین پیشنهاد <span style="font-family: Times New Roman;">، </span> دارای اغلب مفاهیم  کلیدی XSLT  است <span style="font-family: Times New Roman;">، </span>که در نهایت  ارائه گردید  . بمنظور  طراحی گرامر زبان فوق از رویکرد مبتنی بر تمپلیت استفاده گردید . بدین  ترتیب امکان  برخورد با  گره ها ی موجود در سند مبداء و تطبیق آنها با یک الگوی تعریف  شده <span style="font-family: Times New Roman;"> ، فراهم می گردد</span> . عدم وجود اثرات جانبی  و امکان تفسیر و برخورد با   سندهای با حجم بالا <span style="font-family: Times New Roman;">، از دیگر مواردی است که  در  زمان طراحی </span> <span style="font-family: Times New Roman;">XSL به  آنها توجه جدی گردید . </span>برآیند  تمام تلاش  های  فوق<span style="font-family: Times New Roman;">، </span>عرضه اولین نسخه پیشنهادی XSLT  در سال ۱۹۹۸ بود . زبان پیشنهادی در  سال   ۱۹۹۹ <span style="font-family: Times New Roman;">،</span>بصورت حرفه ای مطرح و  مورد  استفاده  قرار  گرفت .<br />
<span style="color: #000080;"><strong>XSLT بعنوان یک زبان<br />
</strong></span>XSLT <span style="font-family: Times New Roman;">، </span>دارای  چه ویژگی منحصربفردی است که آن را بعنوان یک  زبان برنامه نویسی از سایر زبان ها متمایز می  نماید ؟ در این بخش به سه مورد اساسی اشاره خواهد گردید : استفاده از گرامر  مبتنی بر XML  <span style="font-family: Times New Roman;">، </span>عدم وجود تاثیرات جانبی و  پردازش  مبتنی بر  مجموعه ای از قوانین<br />
<span style="color: #000080;"><strong>استفاده از گرامر  مبتنی بر </strong></span> <span style="color: #000080;"><strong>XML</strong></span><span style="color: #000080;"><strong><br />
</strong></span>همانگونه که قبلا&#8221; اشاره گردید <span style="font-family: Times New Roman;">،</span> استفاده از گرامر SGML برای Stylesheet از سال ۱۹۹۴ مطرح شده بود . ایده  استفاده از SGML در این زمینه <span style="font-family: Times New Roman;">، </span> دارای مشکلات  خاص خود است .  بمنظور عرضه stylesheet در XSLT <span style="font-family: Times New Roman;">، </span>از گرامر مبتنی بر  XML استفاده می شود . رویکرد فوق دارای مزایای زیر است :</span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">از مزیت وجود  یک پارسر XML در مرورگرها <span style="font-family: Times New Roman;">،</span> استفاده خواهد کرد . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">اغلب افراد از  عدم وجود  یک گرامر همگن و سازگار بین HTML  <span style="font-family: Times New Roman;">،</span> XML  و CSS گلایه داشته و تمایلی به تکرار آن با یک  گرامر جدید  ندارند . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">اکثر زبان های  مبتنی بر  تمپلیت در حا ل حاضر<span style="font-family: Times New Roman;">، </span> بعنوان یک outline از  سند خروجی   بوده که با  دستورالعمل هائی  نیز همراه می باشند  و از این نظر مفهوم  فوق <span style="font-family: Times New Roman;">، </span> کاملا&#8221; شناخته شده است . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">با استفاده از  ابزارهای  ویژوال موجود </span><span style="font-family: Times New Roman; font-size: x-small;">، </span><span style="font-size: x-small;"> امکان ایجاد این نوع سندها براحتی وجود داشته و نیازی به تایپ نخواهد بود . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">حمایت از   یونیکد </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">ضرورت استفاده  از یک Stylesheet بعنوان ورودی و یا خروجی  در زمان تبدیل <span style="font-family: Times New Roman;">، </span>بدفعات احساس خواهد  شد(  سیستم تبدیل ) . این  ویژگی  که یک stylesheet  قادر به خواندن و نوشتن سایر Stylesheet  ها  باشد <span style="font-family: Times New Roman;">، یک مزیت تلقی می گردد . </span> </span></p>
</li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"> <span style="color: #000080;"><strong>اثرات جانبی<br />
</strong></span>یکی از اهداف اولیه  در رابطه با طراحی XSLT <span style="font-family: Times New Roman;">، </span>عدم بروز اثرات جانبی  در زمان استفاده از آن است . یک تابع و یا برنامه جانبی  در صورتیکه باعث ایجاد تغییرات در محیط مربوط بخود شوند <span style="font-family: Times New Roman;">، دارای اثرات جانبی خواهند بود.</span> مثلا&#8221;  تابعی که باعث تغییر مقدار یک متغیر سراسری مورد استفاده سایر توابع می  گردد <span style="font-family: Times New Roman;">، دارای اثرات جانبی بوده و می تواند در  عملکرد سایر  توابعی که از مقدار متغیر فوق استفاده می نمایند ، تاثیری منفی را بدنبال  داشته  باشد. </span>بدیهی است توابعی که دارای اثرات جانبی می باشند<span style="font-family: Times New Roman;">، </span> می بایست بدفعات مشخص و با یک نظم و اولویت خاص بخدمت گرفته شوند (   فراخوانی ). مثلا&#8221; در صورتیکه تابعی برای محاسبه محیط یک مثلث نوشته شده  باشد که  دارای اثرات جانبی نیست <span style="font-family: Times New Roman;">، می توان با خیال  آسوده تابع  فوق را بدفعات استفاده و همواره انتظار عملکرد یکسانی را نیز از آن داشته  باشیم (  محاسبه محیط مثلث با توجه به پارامترهای مربوطه ) .</span> در صورتیکه تابع   فوق دارای اثرات جانبی باشد  <span style="font-family: Times New Roman;">، (</span>مثلا&#8221; تغییر اندازه   اضلاع مثلث)  استفاده از آن  بدفعات بسیار محدود  ( یک مرتبه)  منطقی بوده و در صورت تکرار در استفاده از چنین تابعی <span style="font-family: Times New Roman;">،  نباید انتظارعملکردی مثبت از آن را داشته  باشیم . </span>در صورتیکه زبانی دارای اثرات جانبی  باشد<span style="font-family: Times New Roman;">، </span> اولویت اجرای دستورالعمل ها در  آن می بایست<span style="font-family: Times New Roman;">، </span> بدرستی مشخص شود .در زبان هائی  که دارای اثرات جانبی نمی باشند  <span style="font-family: Times New Roman;">، امکان  اجرای </span>دستورالعمل ها  با هر اولویتی  وجود خواهد داشت . این بدان  معنی است که می توان بخش هائی از  یک Stylesheet  انتخابی  را بصورت مستقل اجراء نمود . XSLT زبانی مناسب در  این رابطه  بوده و با توجه به انتظارات موجود در رابطه با اسناد ورودی <span style="font-family: Times New Roman;">،  پتانسیل های لازم را بدون وجود اثرات  جانبی ،   در اختیار استفاده کنندگان قرار می دهد . </span><br />
زبان انتخابی <span style="font-family: Times New Roman;">،</span> می بایست برای  استفاده در موارد batch  و محاوره ای مناسب باشد . زمانیکه یک سند XML  با  ظرفیت بالا <span style="font-family: Times New Roman;">، </span> از   سرویس دهنده ای اخذ می گردد  <span style="font-family: Times New Roman;">، </span>مادامیکه آخرین بایت آن از سرویس  دهنده دریافت  نگردد<span style="font-family: Times New Roman;">، </span>امکان  مشاهده هیچ چیزی  وجود نخواهد داشت . در صورت  اعمال  تغییرات اندک در یک سند XML <span style="font-family: Times New Roman;">، انتظار داریم </span> که  اثر تغییرات انجام  شده  در رابطه با نمایش سند <span style="font-family: Times New Roman;">را سریعا&#8221; مشاهده نمائیم .</span> . در این  رابطه  لازم است به این نکته نیز اشاره گردد که   تعیین بخشی از سند خروجی که متاثر از تغییرات اندکی در یک بخش از سند ورودی  است <span style="font-family: Times New Roman;">، </span> عملی ساده نخواهد بود . تمام  پردازنده های XSLT <span style="font-family: Times New Roman;">، </span>نیازمند  استقرار کامل سند XML در حافظه  <span style="font-family: Times New Roman;">، </span>قبل از انجام هر گونه  عملیاتی می باشند .   مورد فوق یکی از چالش های اصلی XSLT در مواجهه با سندهای XML  با حجم بالا است .<br />
<span style="color: #000080;"><strong>XSLT</strong></span><span style="color: #000080;"><strong> مبتنی بر قوانین است<br />
</strong></span>یک XSLT Stylesheet <span style="font-family: Times New Roman;">، </span>شامل مجموعه ای از قوانین  مبتنی بر   تمپلیت است . هر یک از تمپلیت ها  <span style="font-family: Times New Roman;">، </span>نحوه پردازش یک المان خاص را مشخص  خواهند کرد .  قوانین با یک نظم و اولویت خاص سازماندهی نشده  و ضرورتی به رعایت اولویت  و نظم در ورودی و یا خروجی نخواهند بود . زمانیکه XSLT  <span style="font-family: Times New Roman;">، </span>بعنوان یک زبان تعریفی در نظر گرفته  می شود<span style="font-family: Times New Roman;">، </span> می توان گفت که :   &#8221; زمانیکه الگوهای خاصی در سند مبداء پیدا  گردید <span style="font-family: Times New Roman;">، چه نوع  اطلاعاتی و به چه صورت می  بایست  در خروجی ارائه شود.&#8221;</span><br />
ساختار مبتنی بر قوانین <span style="font-family: Times New Roman;">،</span> بسیار مشابه CSS  است . نحوه برخورد با الگوها  در CSS و XSLT  کاملا&#8221; متفاوت است  . مثلا&#8221; در CSS عنوان می شود  که  قانون تعریف شده در رابطه با کدام گره <span style="font-family: Times New Roman;"> می بایست اعمال گردد ،</span> در صورتیکه در  XSLT  مشخص می شود که در زمان یافتن یک الگوی  مشخص شده در سند مبداء <span style="font-family: Times New Roman;">، چه عملیاتی می بایست انجام شود.<br />
</span><br />
<span style="color: #000080;"><strong>چه زمانی می بایست از </strong></span> <span style="color: #000080;"><strong>XSLT</strong></span><span style="color: #000080;"><strong> استفاده کرد ؟<br />
</strong></span><br />
استفاده از XSLT در موارد زیر پیشنهاد می گردد : </span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"><strong>برنامه  های تبدیل  داده </strong>. زمانیکه قصد تبدیل یک مجموعه داده مبتنی بر XML  را به فرمت دیگر XML داشته باشیم <span style="font-family: Times New Roman;">، </span> XSLT   گزینه ای مناسب خواهد بود . با استفاده از XSLT <span style="font-family: Times New Roman;">، </span>می توان عملیات متفاوتی نظیر انتخاب  داده  هائی خاص  از یک سند XML  <span style="font-family: Times New Roman;">، </span>ذخیره سازی داده های مورد نظر و  موارد متنوع  دیگری  را انجام داد . از XSLT  می توان بمنظور  معتبر سازی داده ها نیز استفاده کرد . XSLT <span style="font-family: Times New Roman;">، </span>بعنوان یک زبان برنامه نویسی<span style="font-family: Times New Roman;">، </span> گزینه ای مناسب برای انجام پردازش های لازم در خصوص ساختار  اطلاعاتی  است که از محتویات مربوط جدا شده اند . از XSLT می  توان در  رابطه با تبدیل یک سند XML به فرمت های مبتنی بر  متن نیز  استفاده کرد . ( مثلا&#8221; اطلاعات متنی که توسط ویرگول از هم جدا شده اند ) .  یکی دیگر  از ویژگی های جالب XSLT <span style="font-family: Times New Roman;">، </span>امکان استفاده از آن در رابطه با تبدیل یک سند غیره XML  به یک سند XML و یا سایر فرمت های دلخواه دیگر است .  در این  مورد خاص<span style="font-family: Times New Roman;">، </span> لازم است که یک نوع   پارسر بمنظور تشخیص فرمت داده های ورودی نوشته گردد . پس از نوشتن پارسر<span style="font-family: Times New Roman;">، </span> عملیات تبدیل <span style="font-family: Times New Roman;">، </span>توسط یک  زبان سطح بالا<span style="font-family: Times New Roman;"> </span> میسر می گردد . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;"><strong>نشر  اطلاعات</strong> .  تفاوت بین تبدیل و نشر اطلاعات به مقصد داده ها بر می گردد . در مواردیکه  تبدیل  صورت می پذیرد<span style="font-family: Times New Roman;">، </span> مقصد داده های تبدیل  شده  یک نرم افزار دیگر بوده در صورتیکه در زمان  نشر <span style="font-family: Times New Roman;"> ، </span> کاربران (انسان)  مقصد نهائی اطلاعات می باشند. تبدیل با نمایش  و تبدیل بدون نمایش گزینه هائی  متفاوت بمنظور شناخت مفهوم نشر اطلاعات   است . در زمان  نشر اطلاعات<span style="font-family: Times New Roman;">، </span> نیاز  به ارائه  آنان بر روی کاغذ ( چاپ ) و یا وب خواهد بود . نشر اطلاعات بر  روی  کاغذ<span style="font-family: Times New Roman;">، مستلزم </span>عملیات بمراتب پیچیده  تری خواهد  بود . در این حالت خاص <span style="font-family: Times New Roman;">، </span> کاربران  دارای  انتظار بالائی در رابطه با کیفیت می باشند. XSL FO <span style="font-family: Times New Roman;">،</span> امکانی بمنظور تعریف یک مدل مبتنی  بر  XML از یک فایل چاپی بمنظور نمایش با کیفیت بالا بر روی  صفحات  نمایشگر و یا کاعذ است . نشر اطلاعات بر روی وب دارای چالش های بمراتب  کمتری نسبت  به کاغذ است . در این مدل خاص<span style="font-family: Times New Roman;">،</span> صرفا&#8221;  می بایست  داده ها به Html تبدیل و در ادامه مرورگرها   مسئولیت  ارائه اطلاعات را با فرمت تعریف شده بر عهده خواهند گرفت . تبدیل یک سند XML  به Html <span style="font-family: Times New Roman;">، </span>یکی  از  متداولترین کاربردهای XSLT در حال حاضر است . در  این رابطه  دو مرحله عملیات دنبال خواهد شد : در اولین مرحله<span style="font-family: Times New Roman;">،</span> داده ها به یک مدل مبتنی بر XML که از لحاظ ساختاری  شباهت  زیادی را با سند Html مقصد دارد <span style="font-family: Times New Roman;">، تبدیل و در دومین مرحله ، </span>ساختار  مشخص شده <span style="font-family: Times New Roman;">، </span> با تاکید بر امکانات Html </span><span style="font-size: x-small;"> نمایش داده خواهد شد . </span></p>
</li>
<p></span></ul>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/what-is-xslt-p3-2042/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>بررسی جایگاه تکنولوژی XSLT در بین خانواده بزرگ تکنولوژی های مرتبط با XML</title>
		<link>http://www.irandevelopers.com/programming/what-is-xslt-p2-2041/</link>
		<comments>http://www.irandevelopers.com/programming/what-is-xslt-p2-2041/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 04:27:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=2041</guid>
		<description><![CDATA[همانگونه که قبلا&#8221; اشاره گردید ،XSLT ،توسط کنسرسیوم وب عرضه و بسرعت با استانداردهای موجود در خانواده بزرگ XML  همدست  گردید.  در ادامه به بررسی ارتباط موجود بین XSLT و سایر استانداردهای موجود در زمینه XML ، خواهیم پرداخت . XSLT و XSL آغاز حیات XSLT ، از یک زبان بزرگتر با نام XSL همراه [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">همانگونه که قبلا&#8221; اشاره گردید <span style="font-family: Times New Roman;">،</span>XSLT <span style="font-family: Times New Roman;">،</span>توسط کنسرسیوم  وب عرضه و بسرعت با استانداردهای موجود در خانواده بزرگ XML   همدست  گردید.  در ادامه به بررسی ارتباط موجود بین XSLT  و سایر استانداردهای موجود در زمینه XML <span style="font-family: Times New Roman;">،</span> خواهیم پرداخت .<br />
<span style="color: #000080;"><strong>XSLT و XSL</strong></span><span style="color: #000080;"><strong><br />
</strong></span>آغاز حیات XSLT <span style="font-family: Times New Roman;">،</span> از یک زبان بزرگتر با نام XSL همراه بوده است .  همانگونه که  از نام زبان فوق مشخص است <span style="font-family: Times New Roman;">، </span>XSL <span style="font-family: Times New Roman;">، </span>با هدف تعریف نحوه فرمت  سندهای  XML  <span style="font-family: Times New Roman;">، </span>بمنظور نمایش  بر  روی صفحه نمایشگر<span style="font-family: Times New Roman;">،</span> کاغذ و سایر موارد <span style="font-family: Times New Roman;">،</span> طراحی و عرضه شده است .  ارائه یک سند XML  مستلزم تحقق دو فرآیند متمایز  است .  در اولین فرآیند<span style="font-family: Times New Roman;">، </span> می بایست  با  انجام عملیات متفاوت نظیر انتخاب <span style="font-family: Times New Roman;">،</span> گروه بندی  و ذخیره المان ها  <span style="font-family: Times New Roman;">، یک تبدیل ساختاری در سند   ایجاد گردد . در دومین فرآیند ، می بایست ماحصل عملیات انجام شده بر روی  المان ها  با  فرمت دلخواه در خروجی ( مثلا&#8221; نمایشگر ) نمایش  داده شود . فرآیندهای فوق  کاملا&#8221; از یکدیگر مستقل بوده و بر همین اساس </span> <span style="font-family: Times New Roman;">XSL به دو بخش مجزاء تفسیم  شده است: XSLT برای تعریف و انجام تبدیلات  و XSL  بمنظور تعریف نحوه فرمت و قالب نمایش ( ارائه ) اطلاعات . ( ویژگی فوق را  XSL-FO نیز می گویند ) .   (XSL Formatting Objects)  . برای آگاهی از مشخصات و مستندات مربوط به XSL-FO  می توان به آدرس </span><a href="http://www.w3.org/TR/xsl">http://www.w3.org/TR/xsl</a> مراجعه کرد. XSLT می بایست دارای قابلیت ها ی خاصی  بمنظور تولید خروجی مورد نظر  باشد . XSL-FO <span style="font-family: Times New Roman;">،</span> امکانات متعدد و مناسبی در رابطه با ایجاد  خروجی با کیفیت بالا را فراهم  می  نماید. اغلب پیاده کنندگان نرم افزار صرفا&#8221; تمایل به تبدیل یک سند XML  به Html را داشته  تا زمینه استفاده فراگیر نتایج  در  انواع مرورگرها فراهم گردد . در برخی حالات از امکانات CSS)Cascading  style sheets) نیز بهمراه XSLT  استفاده می  شود . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"><strong>XSLT و XPath</strong></span><span style="color: #000080;"><strong><br />
</strong></span>در زمان پیاده سازی XSLT <span style="font-family: Times New Roman;">، برخی تعارضات بین </span> گرامر عبارات  استفاده شده در XSLT (بمنظور انتخاب بخش های خاصی  از یک سند)   و زبان XPointer ( بمنظور ارتباط یک سند با سند  دیگر) <span style="font-family: Times New Roman;">بروزکرد </span> <span style="font-family: Times New Roman;"> . بمنظور  ممانعت از داشتن دو زبان متفاوت  عبارات که با یکدیگر overlap  دارند  ، کمیته های  XSLT و XPointer   کنسرسیوم وب ، تصمیم به  ترکیب  توان  آنها با یکدیگر و تعریف یک زبان جدید با نام XPath    نمودند .  نسخه شماره یک XPath ،  همزمان با ارائه XSLT   نیز عرضه گردید ( شانزدهم نوامبر سال ۱۹۹۹  ) .<br />
XPath ،  بعنوان یک زبان زیرمجموعه    در یک  XSLT stylesheet ایفای وظیفه می نماید . یک عبارت XPath  ،  ممکن است بمنظور انجام یک محاسبات عددی و یا عملیات بر روی رشته ها  و یا  بررسی شرایط منطقی استفاده گردد .  ،XPath در اغلب حالات  بمنظور مشخص نمودن بخش های متفاوت یک سند ورودی که قصد انجام پردازش بر روی  آن وجود  دارد استفاده می گردد . مثلا&#8221; دستورالعمل زیر  قیمت میانگین را برای تمام  کتاب  های موجود در یک سند ورودی محاسبه می نماید . </span></span></span></p>
<div><span style="font-family: Times New Roman; font-size: small;"></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td bgcolor="#cfcf9e">
<p dir="ltr"><span style="font-size: x-small;">&lt;xsl:value-of  select=&#8221;sum(//book/@price) div        count(//book)&#8221;/&gt;</span></p>
</td>
</tr>
</tbody>
</table>
<p></span></div>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-family: Times New Roman; font-size: x-small;"> در مثال فوق  ، المان &lt;xsl:value-of&gt; یک  دستورالعمل تعریف شده در XSLT  است . دستورالعمل فوق  ، باعث نوشتن  یک مقدار در سند خروجی می گردد . خصلت select  ، یک عبارت مبتنی بر XPath است . عبارت فوق، مسئول  محاسبه مقداری  است که می بایست در خروجی نمایش داده شود . در این مثال خاص  ، مجموع خصلت های  price مربوط به تمام المان های &lt;book&gt;  محاسبه و بر تعداد المان های موجود &lt;book&gt;   تقسیم تا  معدل مربوطه محاسبه گردد .<br />
تفکیک XPath و XSLT  از یکدیگر منطقی بنظر می آید ولی در مواردی خاص تقسیم بندی و تمایز انجام  شده باعث  بروز مسائلی می گردد .در برخی حالات  ، تشخیص اینکه کدام سند  می بایست  خوانده شده تا پاسخ  مناسب در رابطه با یک سوال خاص  داده شود، مشکل خواهد بود . مثلا&#8221; یک عبارت XPath  می تواند شامل یک مرجع  به  متغیری باشد  ، ولی ایجاد  و مقدار دهی اولیه  آن از وظایف XSLT است .  جایگاه تعریف یک تابع در Xpath و XSLT   یکی دیگر از مسائل مربوط به تفکیک دو تکنولوژی فوق است . عبارات XPath  قادر به فراخوانی توابع می باشند ( در این راستا مجموعه  گسترده ای از توابع استادندارد تعریف شده است ) . برخی از آنان نظیر  string-lenght  در عبارات XPath  تعریف شده در صورتیکه  توابعی  دیگر که  عملکرد  آنها  در ارتباط با تعاریف  XSLT است (نظیر  key ) ، در مشخصه XSLT  تعریف می گردند .  اغلب XSLT  و XPath  در کنار یکدیگر  استفاده می گردند . </span> <span style="font-family: Times New Roman; font-size: x-small;">فراموش نکنیم که  امکان  استفاده از XPath   بصورت مستقل و بمنظور انجام عملیات متفاوتی نظیر تعریف ابرلینک های موجود  در اسناد  و &#8230;. نیز وجود دارد .<br />
</span><span style="font-family: Times New Roman; font-size: x-small;"><br />
</span> <span style="font-family: Times New Roman; font-size: x-small;"> <span style="color: #000080;"><strong>XSLT و XML<br />
</strong></span>XSLT ،  ابزاری برای تبدیل اسناد XML  است . در  <a href="http://www.srco.ir/Articles/DocView.asp?ID=87">بخش اول</a> این مقاله  ، به ضرورت های  تبدیل اشاره گردید. در این بخش  لازم  است به بررسی ارتباط دو تکنولوژی فوق  با نگرشی عمیق تر ، پرداخته گردد .  مفاهیم   XML namespace و XML information set از جمله مواردی می باشند که  زمینه  تعامل ارتباطی بین XML و XSLT را فراهم می نمایند  . در ادامه هر یک از  موارد فوق  توضیح داده می شود :<br />
<span style="color: #000080;"><strong>XML namespace</strong></span><span style="color: #000080;"><strong><br />
</strong></span>در طراحی XSLT  بر  نقش مهم و کلیدی  XML  namespace در استاندارد XML   توجه جدی شده است . بنابراین زمانیکه استاندارد XSLT  به یک سند XML مراجعه می نماید ، عملا&#8221; مشخصات  XML namespace   نیز مورد توجه قرار گرفته شده است  . مشخصات  و استانداردهای مربوط به  namespace را می توان  در  آدرس   <a href="http://www.w3.org/TR/REC-xml-names">http://www.w3.org/TR/REC-xml-names</a> مشاهده نمود .<br />
Namespace  دارای نقشی حیاتی در XSLT  است . تکنولوژی فوق  ،امکان ترکیب تگ هائی از سند های XML  مشابه با معانی متفاوت  را فراهم می نماید . مثلا&#8221; ممکن است در یک سند XML ،   المان &lt;table&gt; نشاندهنده یک بردار دو بعدی  شامل  مقایر متفاوت  داده بوده در صورتیکه در سند دیگر، المان &lt;table&gt;   نشاندهنده بخشی از یک مبلمان باشد . Namespace توسط یک URI) Unique Resource  Identifier) مشخص می گردد.  بدین منظور از روش های متفاوتی استفاده می گردد. مثلا&#8221; در  یک مدل،  از آدرس  مشابه یک URL معمولی  استفاده می گردد:(http://www.yourcomany.com ) . در  روش دیگر در برخی از اصطلاحات XML  ( نظیر <a href="http://www.biztalk.org/">http://www.biztalk.org</a>)   استفاده می گردد ، URN است . ( مثلا&#8221;  urn:java:com:ic1.saxson ) . جزئیات مربوط به  URI  مهم  نبوده  ولی همواره می بایست به این مسئله توجه گردد که نام در نظر گرفته شده   منحصر بفرد  باشد . یکی از روش های مناسب  تحقق وضعیت فوق،  استفاده از URL  مربوط به سایت خود می باشد .  لازم به توضیح است  که موضوع فوق  بدین معنی نخواهد بود که  می  بایست بر روی وب سایت  ، آیتمی  بمنظور اشاره کردن به آن  ، وجود داشته باشد . URI  در حقیقت رشته ای است که بمنظور تمایز  با  تعاریف انجام شده  توسط سایر افراد انتخاب می گردد .<br />
با توجه به اینکه رشته های  URI اغلب طولانی و از  کاراکترهای خاصی نظیر &#8220;/&#8221; استفاده می نمایند،  از آنها  بصورت کامل همراه اسامی المان ها  و خصلت ها استفاده نمی گردد .  بدین منظور اغلب از یک نام مستعار کوچک استفاده می  شود . نام مستعار، بصورت   پیشوند در کنار اسامی المان ها و خصلت ها استفاده می شود . نام در نظرگرفته  شده   برای پیشوند مهم نبوده و هر نامی را می توان انتخاب کرد . بدین ترتیب نام  واقعی هر  المان و یا خصلت ، از طریق URI مربوط به namespace و نام محلی آن ( آن  بخش از نام که بعد از پیشوند قرار می گیرد )   مشخص خواهد شد . مثلا&#8221; می  توان با استفاده از پیشوند xsl به namespace  مربوط به <a href="http://www.w3.org/1999/XSLT/Transform"> http://www.w3.org/1999/XSLT/Transform</a> اشاره  کرد .  برای اسامی المان ها  ، می توان یک URI پیش فرض را تعریف   و آن را به اسامی المان غیرپیشوندی مرتبط نمود . namespace  پیش فرض URI  به اسامی خصلت های غیر پیشوندی نسبت  داده نخواهد شد .  تعریف یک پیشوند namespace   بصورت زیر است :</span></span></p>
<div><span style="font-family: Times New Roman; font-size: small;"></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td bgcolor="#cfcf9e">
<p dir="ltr"><span style="font-family: Times New Roman; font-size: x-small;"> xmlns:prefix = &#8220;namespace-URI&#8221;</span></p>
</td>
</tr>
</tbody>
</table>
<p></span></div>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">عبارت فوق<span style="font-family: Times New Roman;">،</span> یک پیشوند namespace را تعریف  <span style="font-family: Times New Roman;">،</span> که می توان آن را  بهمراه   نام  المان مربوطه  و یا نام خصلت موجود در المان  استفاده کرد . namespace پیش فرض که برای المان ها استفاده می  گردد نیازی  به داشتن پیشوند  نداشته  ( مورد فوق در رابطه با خصلت ها صدق نمی کند )   و بصورت زیر تعریف می گردد :</span></span></p>
<div><span style="font-family: Times New Roman; font-size: small;"></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td bgcolor="#cfcf9e">
<p dir="ltr"><span style="font-family: Times New Roman; font-size: x-small;">xmlns  =        &#8220;namespace-URI&#8221;</span></p>
</td>
</tr>
</tbody>
</table>
<p></span></div>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"> پردازش یک سند XML   توسط XSLT متاثر از واقعیت های موجود در  namespace  خواهد بود .</span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"><strong>XML information set<br />
</strong></span>XSLT بمنظور  انجام پردازش های ضروری بر روی اطلاعات  موجود در یک  سند  XML <span style="font-family: Times New Roman;">،</span> طراحی  و با  سند کاری نخواهد داشت . این بدان  معنی است که  <span style="font-family: Times New Roman;">،</span> یک برنامه نویس XSLT   قادر به دریافت یک  نمایش  شبه درختی از یک سند مبداء  بوده  که برخی از بخش های آن قابل مشاهد و برخی دیگر  غیرقابل مشاهده  خواهند بود. مثلا&#8221;می توان  اسامی و مقدار خصلت ها را مشاهده  نمود  ولی امکان مشاهده اینکه یک خصلت در یک کوتیشن و یا دو کوتیشن استفاده  شده <span style="font-family: Times New Roman;">،</span> وجود نخواهد داشت .  همچنین امکان  مشاهده  نظم و اولویت خصلت ها  و نحوه نگارش آنها وجود نخواهد داشت .تلاش های متعددی بمنظور  تعریف اطلاعات مورد نیاز برای مشخص نمودن &#8220;خوش شکل &#8221; بودن یک سند XML  انجام شده است . در بیست و چهارم اکتبر ۲۰۰۱ <span style="font-family: Times New Roman;">،کنسرسیوم وب </span> محموعه اطلاعات مورد  نیاز و تعریف شده در رابطه با  یک سند XML را استاندارد و  پیشنهاد داده است . مشخصات فوق را می توان از طریق آدرس  <a href="http://www.w3.org/TR/xml-infoset">http://www.w3.org/TR/xml-infoset</a> مشاهده کرد .  این مشخصات  <span style="font-family: Times New Roman;">،</span> شامل  مجموعه ای از تعاریف مورد  نیاز  سایر تکنولوژی هائی است که نیازمند دستیابی به اطلاعات موجود در یک سند XML  می باشند . یک سند XML دارای  مجموعه  ای از اطلاعات ضروری بوده که &#8220;خوش شکل &#8221; بودن آن را تضمین و سایر تکنولوژی  های  مربوطه با مراجعه به اطلاعات فوق قادر به برداشت مناسب از یک سند XML  و انجام عملیات مربوط به خود خواهند بود . مجموعه اطلاعات یک سند XML  شامل تعدادی از آیتم های اطلاعاتی است .  مجموعه اطلاعات مربوط به یک سند XML  &#8221; خوش شکل &#8220;  <span style="font-family: Times New Roman;"> ،</span> حداقل دارای یک آیتم اطلاعاتی است . یک آیتم اطلاعاتی بخش خاصی از  یک سند XML را تشریح و شامل مجموعه ای از خصلت های مربوط  به خود  است .</p>
<p><span style="color: #000080;"><strong>XSL و CSS</strong></span><span style="color: #000080;"><strong><br />
</strong></span>چرا دو زبان ( XSL  و CSS )  مختص stylesheet  وجود دارد؟ منظور از XSL  <span style="font-family: Times New Roman;">،</span> تکنولوژی XSLT بهمراه XSL Formating objects   است . مهمترین هدف  CSS <span style="font-family: Times New Roman;">،</span> تبین قوانین لازم بمنظور نمایش عناصر موجود در یک سند  Html  می باشد . در این راستا امکان استفاده از CSS  بهمراه سندهای  XML نیز وجود دارد . با توجه به  ویژگی های خاص  نمایش   در رابطه با یک سند  XML <span style="font-family: Times New Roman;"> ، بکارگیری </span> تکنولوژی CSS  محدودیت های  خاصی را بدنبال خواهد داشت  . در این زمینه می توان به موارد زیر اشاره کرد  : </span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">CSS</span> <span style="font-family: Times New Roman;">،</span><span style="font-size: x-small;"> قادر  به ثبت ( ذخیره ) المان های موجود در یک سند XML   نمی  باشد . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">CSS</span> <span style="font-family: Times New Roman;">، </span><span style="font-size: x-small;">قادر  به افزودن متن و یا تصاویر نمی باشد .</span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">CSS</span> <span style="font-family: Times New Roman;">، </span><span style="font-size: x-small;">قادر  به تصمیم گیری در رابطه با اینکه چه المانی می بایست نمایش داده شده و یا  اینکه چه  المانی می بایست حذف گردد<span style="font-family: Times New Roman;">،</span>نخواهد بود .</span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">CSS</span> <span style="font-family: Times New Roman;">، </span><span style="font-size: x-small;">قادر  به محاسبه مجموع و یا معدل دنباله ای از اعداد نمی باشد . </span></p>
</li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"> CSS <span style="font-family: Times New Roman;">،</span> صرفا&#8221; در زمانیکه ساختار  سند مبداء شباهت زیادی به شکل نهائی نمایش دارد <span style="font-family: Times New Roman;">، </span> مفید و قابل استفاده است . صرفنظر  از محدودیت های فوق <span style="font-family: Times New Roman;">، استفاده از </span> CSS  ساده بوده  و منابع زیادی را بر روی ماشین بخود اختصاص نخواهد داد . ( مقرون بصرفه از  بعد در  اختیار گرفتن منابع ) . با توجه به عدم ذخیره سازی سند <span style="font-family: Times New Roman;">، </span> ضرورتی به ایجاد یک مدل شبه درختی  برای نمایش  و ارائه سند در حافظه نبوده و بلافاصله پس از دریافت اولین متون موجود  <span style="font-family: Times New Roman;">، فرآیند نمایش آنها آغاز می گردد . </span><br />
در برخی حالات  <span style="font-family: Times New Roman;">، </span>مناسب است که از XSLT و CSS  در کنار یکدیگر استفاده نمود.  مثلا&#8221; با استفاده از XSLT می توان  یک مدل قابل قبول از سند مورد نظر را که قصد نمایش نهائی آن را داریم  <span style="font-family: Times New Roman;">، </span>(  در مدل فوق متن ها بدرستی و  با اولویت مناسب مستقر  شده اند) ایجاد  و در ادامه  با استفاده  از CSS <span style="font-family: Times New Roman;">،</span> عملیات لازم در رابطه با انتخاب نوع فونت <span style="font-family: Times New Roman;">،</span> اندازه فونت <span style="font-family: Times New Roman;">،</span> رنگ ها و &#8230; را انجام داد .  در این راستا  امکان پردازش XSLT  بر روی سرویس دهنده و پردازش CSS <span style="font-family: Times New Roman;">،</span> بر روی سرویس گیرنده وجود  خواهد داشت . یکی  از مزایای رویکرد فوق <span style="font-family: Times New Roman;">، </span>کاهش حجم داده های ارسالی از طریق  خط  ارتباطی بوده و بدین ترتیب مدت زمان پاسخ به کاربران<span style="font-family: Times New Roman;">، </span> بهبود پیدا خواهد کرد .<br />
در بخش سوم این مقاله  به نحوه شکل گیری و طراحی  XSLT  اشاره  و جایگاه آن  بعنوان یک زبان برنامه نویسی  تبین خواهد شد</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/what-is-xslt-p2-2041/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XSLT چیست و چگونه کار می کند؟ ( قسمت اول )</title>
		<link>http://www.irandevelopers.com/programming/what-is-xslt-2040/</link>
		<comments>http://www.irandevelopers.com/programming/what-is-xslt-2040/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 04:25:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=2040</guid>
		<description><![CDATA[XSLT، از کلمات eXtensible Stylesheet Language :Transformation اقتباس و زبانی برای تبدیل یک سند XML به نوع دیگر است . تکنولوژی فوق توسط کنسرسیوم وب با  هدف  اولیه  تبدیل یک سند XML به نوع دیگر، طراحی شده است . XSLT ، دارای قابلیت های بمراتب بیشتری بمنظور تبدیل یک سند XML به HTML و سایر [...]]]></description>
			<content:encoded><![CDATA[<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">XSLT</span><span style="font-family: Times New Roman; font-size: x-small;">، </span></span><span style="font-family: Times New Roman; font-size: small;"><span style="font-family: Times New Roman; font-size: x-small;">از</span><span style="font-size: x-small;"> کلمات e<strong>X</strong>tensible <strong>S</strong>tylesheet <strong>L</strong>anguage :<strong>T</strong>ransformation اقتباس و  زبانی  برای تبدیل یک سند XML به نوع دیگر است .  تکنولوژی فوق  توسط کنسرسیوم وب با  هدف  اولیه  تبدیل یک سند XML  به نوع دیگر<span style="font-family: Times New Roman;">،  طراحی شده است </span>. XSLT <span style="font-family: Times New Roman;">،</span> دارای  قابلیت های بمراتب بیشتری بمنظور تبدیل یک سند XML  به HTML  و سایر فرمت های مبتنی بر متن است . بدین ترتیب  می توان تعریف کامل تری در   رابطه با تکنولوژی فوق را بصورت زیر ارائه داد :</span></span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<div><span style="font-family: Times New Roman; font-size: small;"> </span> <span style="font-family: Times New Roman; font-size: small;"></p>
<table dir="ltr" border="1" cellspacing="0" cellpadding="3" width="274" bordercolor="#111111">
<tbody>
<tr>
<td dir="rtl" width="256" bgcolor="#cfcf9e"><span style="color: #800000; font-size: x-small;">تعریف                   XSLT </span></td>
</tr>
<tr>
<td dir="rtl" width="256" bgcolor="#ffffe0">
<p dir="rtl"><span style="font-size: x-small;"> XSLT</span><span style="font-size: x-small;"> <span style="font-family: Times New Roman;"> ،</span> زبانی بمنظور تبدیل ساختار یک سند XML است . </span></p>
</td>
</tr>
</tbody>
</table>
<p></span> <span style="font-family: Times New Roman; font-size: small;"> </span></div>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"><strong>جرا سندهای XML   نیازمند تبدیل می باشند ؟</strong></span><br />
XML <span style="font-family: Times New Roman;">،</span> روشی  ساده و  استاندارد بمنظور مبادله داده های ساختیافته بین برنامه های متفاوت  کامپیوتر است .  بخشی از موفقیت  XML جهت نیل به خواسته فوق </span><span style="font-family: Times New Roman; font-size: x-small;">،  به نحوه نوشتن و خواندن این نوع فایل ها بر می گردد . با استفاده از یک  ادیتور متنی  می توان بسادگی و بسرعت اقدام به نوشتن یک سند XML  ،خواندن و اعمال تغییرات در آنان نمود. فراموش نکنیم که مهمترین هدف XML ، ارتباط بین سیتستم های متفاوت نرم افزاری  بوده و  در این راستا  به دو نیاز  حیاتی  بخوبی جواب داده است :<br />
<strong>تفکیک داده از نمایش ( ارائه )</strong> . نیاز به تفکیک اطلاعات از جزئیات  نمایش بر  روی یک دستگاه خاص همواره مورد نظر طراحان و پیاده کنندگان بوده است .  خواسته   فوق ، بموازات رشد دستگاههای مبتنی بر اینترنت به یک ضرورت حیاتی تبدیل شده  است .  سازمان ها و موسسات ارائه دهنده اطلاعات باارزش  ، تمایل به عرضه اطلاعات  خود  بر  روی مرورگرهای وب و سایر دستگاهها  نظیر تلویزیون  و یا تلفن  های مبتنی بر WAP را دارند . بدین ترتیب دامنه استفاده از  اطلاعات  صرفا&#8221; به مرورگرهای وب محدوده نبوده و دستگاههای متفاوت مبتنی بر تکنولوژی  اینترنت  را  شامل می گردد .<br />
ا<strong>رسال داده بین برنامه ها</strong> . ارسال اطلاعات از  سازمانی  به سازمان  دیگر بدون در گیر شدن در جزئیات ، همواره از آرزوهای بزرگ طراحان و پیاده  کنندگان  سیستم های نرم افزاری بوده است . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-family: Times New Roman; font-size: x-small;">دو خواسته فوق  هیچگونه تعارضی با یکدیگر ندارند ، مثلا&#8221; یک لیست قیمت کالا را می توان بر  روی صفحه  ، نمایش و در همان زمان از آن بعنوان ورودی در  سایر برنامه ها استفاده کرد  .  یکی دیگر از مزایای اساسی  XML ، یکپارچگی بین  دنیای سندها و داده ها است . بدین ترتیب می توان از یک روش خاص بمنظور عرضه  ساختار  داده ها ( صرفنظر از اینکه اطلاعات توسط انسان و یا ماشین استفاده می گردد)  ، بهره   گرفت  .  صرفنظر از اینکه داده های XML   سرانجام توسط انسان و یا یک برنامه نرم افزاری دیگر استفاده می گردند ، به  این نکته  مهم می بایست اشاره گردد  که بندرت داده ها به همان صورت که دریافت می  گردند،   استفاده خواهند شد. در این راستا لازم است که داده ها در ابتدا به یک فرمت  دیگر <strong> تبدیل</strong> گردند .  تبدیل XML   به  Html  ، متداولترین کاربرد استفاده از XSLT   است . پس از تبدیل داده ها  به فرمت Html ،  امکان  نمایش آنها در هر مرورگری فراهم خواهد شد  . بنابراین جایگاه &#8220;تبدیل &#8221; در  رابطه با ارائه و نمایش داده ها ، به تغییر فرمت سندهای XML   به سایر فرمت های متداول نظیر Html  برمی گردد .XSLT  در این رابطه بخوبی پاسخگو بوده و با استفاده از قوانین موجود قادر به  تبدیل نوع یک  سند به نوع دیگر با توجه به نیازهای مربوطه خواهد بود . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-family: Times New Roman; font-size: x-small;">بمنظور ارسال  اطلاعات بین برنامه های متفاوت، می بایست قادر به تبدیل داده ها از مدل  استفاده شده  توسط یک برنامه به مدل استفاده شده توسط برنامه دیگر باشیم . بمنظور تامین  اطلاعات  مورد نیاز یک برنامه ،از  فرمت های متفاوت استفاده می گردد . یک فایل حاوی  داده های جداشده توسط ویرگول ، یک اسکریپت SQL  ،  یک پیام  HTTP و  یا مجموعه ای از توابع مربوط به یک اینترفیس خاص برنامه  نویسی  ، نمونه هائی در این زمینه می باشند . بموازات رشد تجارت الکترونیکی مبتنی  بر XML  ، نقش XSLT در تبدیل داده ها بین برنامه ها ی متفاوت  ،   بسیار حائز اهمیت شده است .در این راستا استانداردهای متعددی وجود دارد .  مثلا&#8221;   در صنعت روزنامه نگاری از یک فرمت خاص برای مبادله اطلاعات، نسبت  به صنعت  تلویزیون استفاده می گردد .در برخی حالات دیگر ممکن است ، تمایل به  استخراج    یک آدرس خاص  از یک لیست ثبت سفارش و الحاق آن به  لیست صورتحساب را  داشته باشیم . بهرحال ، استخراج و ترکیب داده ها از یک مجموعه اسناد XML  و ایجاد اطلاعات مورد نیاز برای سایر اسناد  XML    ، یک ضرورت بوده و XSLT در این راستا ابزاری مناسب  است . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-family: Times New Roman; font-size: x-small;"> <span style="color: #000080;"><strong> XSLT چگونه یک سند XML  را  تبدیل می نماید ؟<br />
</strong></span>برای تبدیل یک سند XML  و ایجاد  خروجی  مورد نظر، دو مرحله متفاوت را می بایست دنبال نمود  :</span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl">
<p dir="rtl"><span style="font-family: Times New Roman; font-size: x-small;">اولین  مرحله ،  شامل یک تبدیل ساختاری است . در این حالت داده ها از ساختار استفاده شده در  یک سند XML  ،  به ساختاری دیگر  که تامین کننده خروجی مورد نیاز است ، تبدیل خواهند  شد . </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-family: Times New Roman; font-size: x-small;">دومین  مرحله،   ایجاد فرمت مورد نیاز است . ساختار جدید  به فرمت مورد نظر نظیر Html و یا PDF  تبدیل و در خروجی نمایش داده خواهد شد .</span></p>
</li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-family: Times New Roman; font-size: x-small;">در رابطه با  دومین مرحله ، در بخش قبل موارد لازم بیان  گردید  : ساختمان داده ئی که  از اولین مرحله بدست می آید، می تواند بعنوان یک HTML ،  یک فایل متن و یا یک  سند XML دیگر در خروجی ارائه گردد . خروجی Html ، امکان نمایش مستقیم اطلاعات در یک مرورگر  و یا  تغذیه به یک برنامه پیشرفته واژه پرداز را دارا است  . خروجی مبتنی بر متن ،   امکان فرمت دهی داده ها را با یک روش قابل قبول بمنظور استفاده توسط سایر  برنامه ها  فراهم می نماید . با تبدیل یک سند XML به نوع  دیگر که  خود نیز از نوع  XML  خواهد بود ، امکان استفاده   مستقیم آن برای سایر برنامه هائی که قادر به دریافت داده های خود بصورت XML  می باشند ، فراهم می گردد . مثلا&#8221; یک تبدیل کننده XSLT  ،  ممکن است میزان فروش ماهیانه را بعنوان یک سند XML  اخذ و  یک منحنی هیستوگرام را بصورت XML در خروجی ایجاد  نماید . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-family: Times New Roman; font-size: x-small;">در   مرحله اول ( تبدیل ) ، عملیات لازم در خصوص ایجاد خروجی با فرمت مناسب  انجام خواهد  شد . در مرحله فوق عملیاتی نظیر : انتخاب داده ، گردآوری  و گروه بندی داده  ها  ، مرتب سازی داده ها و  انجام عملیات محاسباتی ( نظیر تبدیل اینچ به  سانتیمتر  ) صورت می پذیرد. نحوه انجام عملیات فوق به چه صورت است ؟ قبل از عرضه XSLT  ،   امکان پردازش سندهای  XML ، صرفا&#8221; از طریق نوشتن یک برنامه خاص میسر بود . برنامه ها با  استفاده  از یک رابط برنامه نویسی (API) ، پارسر را  فراخوانده تا  امکان اخذ اطلاعات دررابطه با سند و یا انجام عملیات مورد نظر فراهم گردد .  در این  راستا از دو رابط برنامه نویسی استفاده می گردد : SAX)Simple API for  XML )  و DOM)Document  object Model) . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-family: Times New Roman; font-size: x-small;">رابط برنامه  نویسی SAX ، یک اینترفیس مبتنی بر رویداد بوده  که پارسر  در رابطه با هر یک از بخش های موجود در سند ، اطلاعات  لازم را در اختیار  برنامه متقاضی  قرارخواهد داد. در صورتیکه از رابط برنامه نویسی DOM  استفاده گردد، پارسر از طریق ایجاد یک ساختار شبه درختی در حافظه ، امکان  ارتباط با  آن را پیدا می نماید . در ادامه ، با نوشتن یک برنامه خاص ( مثلا&#8221; با  استفاده از  زبانهای برنامه نویسی نظیر VB ، جاوا ) امکان  ارتباط با  درخت بوجود می آمد . در مدل فوق ، برای پردازش هر نوع سند XML ، لازم است که یک برنامه خاص و اختصاصی  نوشته شده تا  با دنبال نمودن مراحل مورد نظر، عملیات لازم در  رابطه با یک سند XML صورت پذیرد. </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">چگونه می توان از  XSLT بمنظور تبدیل یک سند XML در مقابل   نوشتن برنامه های اختصاصی استفاده کرد ؟ طراحی XSLT <span style="font-family: Times New Roman;">،</span> مبتنی بر این واقعیت بوده است که  این نوع  برنامه ها بسیار مشابه هم بوده و می توان بمنظور تشریح عملکرد مربوطه <span style="font-family: Times New Roman;">،</span> از یک زبان تعریفی سطح بالا ( در  مقابل  نوشتن هر یک از برنامه ها توسط زبانهائی نظیر VB  و یا  جاوا)  استفاده کرد . تبدیلات انجام شده <span style="font-family: Times New Roman;">،</span> از مجموعه ای قوانین نشات خواهد گرفت . قوانین فوق <span style="font-family: Times New Roman;"> ،نحوه ایجاد خروجی را در صورت وجود یک الگوی خاص در سند ، مشخص می نمایند . </span> زبان فوق تعریفی بوده و تبدیل مورد نیاز تشریح می گردد ( در مقابل ارائه  دنباله ای  از دستورالعمل های رویه ای برای عملیات تبدیل) . XSLT <span style="font-family: Times New Roman;">،</span> تبدیل مورد نیاز را تشریح و در ادامه با تاکید بر نقش پردازنده XSL <span style="font-family: Times New Roman;">،</span> مناسبترین و کارآمدترین روش برای  عملیات  انتخاب می گردد . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">XSLT</span></span><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"> <span style="font-family: Times New Roman;">،</span> همچنان بر نقش پارسرها تاکید (  پارسر سازگار  با DOM  و یا پارسر سازگار با SAX) <span style="font-family: Times New Roman;"> ،</span> و از آن برای تبدیل یک سند XML به یک ساختار درختی استفاده می نماید . در  حقیقت <span style="font-family: Times New Roman;">،</span> پردازش برروی یک سند XML توسط XSLT  <span style="font-family: Times New Roman;">،</span> از طریق ساختار درختی  ارائه شده   از سند <span style="font-family: Times New Roman;">،</span> محقق می گردد . در  DOM <span style="font-family: Times New Roman;">،</span> هر  آیتم در  یک سند XML ( المان ها  <span style="font-family: Times New Roman;">،</span>خصلت   ها  <span style="font-family: Times New Roman;">، </span>دستورالعمل های پردازش ) <span style="font-family: Times New Roman;">،</span> بعنوان یک گره در نظر گرفته می شود .  با  بکارگیری XSLT <span style="font-family: Times New Roman;">،</span> مجهز به یک زبان برنامه نویسی سطح بالا شده که قادر به حرکت در طول درخت و  گره های  موجود <span style="font-family: Times New Roman;">،</span> انتخاب گره ها و انجام عملیات  پیچیده  پردازش برروی گره ها <span style="font-family: Times New Roman;">، خواهیم بود. </span> مدل  درخت XSLT <span style="font-family: Times New Roman;">،</span> در برخی مفاهیم مشابه DOM  بوده ولی دقیقا&#8221; مشابه آن نیست . </span> </span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"><strong>مقایسه XSLT   و SQL<br />
</strong></span>در یک بانک اطلاعاتی رابطه ای <span style="font-family: Times New Roman;">،</span> داده ها شامل مجموعه ای از جداول می باشند . داده ها در فایل هائی تخت  با  فرمت های مورد نظر ذخیره می گردند. قدرت یک بانک اطلاعاتی رابطه ای از  ساختمان داده  آن نبوده و به  زبانی  که قادر به پردازش داده ها است(SQL) <span style="font-family: Times New Roman;">، وابسته است </span>. در روشی مشابه<span style="font-family: Times New Roman;">،</span> XML  <span style="font-family: Times New Roman;">،</span> صرفا&#8221; یک ساختمان داده مناسب از اطلاعات را تعریف و با استفاده از یک زبان  سطح بالا  می توان عملیات دلخواه  در رابطه با ساختمان داده  را انجام داد (XSLT) . </span><span style="font-size: x-small;"><br />
SQL</span><span style="font-size: x-small;"> و XSLT دو زبان کاملا&#8221; متفاوت نسبت بیکدیگر می  باشند .در  حالتی خاص <span style="font-family: Times New Roman;">،</span> می توان این ادعا را  داشت  که آنان دارای شباهت هائی در برخی موارد عملیاتی هستند. مثلا&#8221; بمنظور  پردازش داده  های موجود در یک بانک اطلاعاتی رابطه ای و یا یک سند XML  <span style="font-family: Times New Roman;">،</span> زبان پردازش می بایست مبتنی بر یک  گرامر  مشخص باشد . در SQL از عبارت SELECT و  در XSLT از عبارات XPath  استفاده  می گردد . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">زبان عبارات XPath <span style="font-family: Times New Roman;">،</span> یکی از بخش های اساسی XSLT  بوده که توسط کنسرسیوم  وب استاندارد شده است . امکان استفاده از XPath  مستقل از XSLT نیز وجود دارد . گرامر  XPath <span style="font-family: Times New Roman;">،</span> امکان بازیابی گره های  خاصی را  از یک سند XML فراهم می نماید . بدین منظور ممکن  است از  طریق  مسیری در سند  XML و یا از طریق فهرستی که  گره ها در آن قرار خواهند گرفت <span style="font-family: Times New Roman;">، </span>این امر تحقق یابد . با استفاده از XPath <span style="font-family: Times New Roman;">،</span> امکان دستیابی به گره هائی خاص  فراهم و در  ادامه با استفاده از XSLT امکان اخذ نتایج مورد  نظر  بوجود می آید . ( اجراء پرس وجوی لازم ) </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">XSLT</span></span><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"> و SQL دارای شباهت های دیگری نیزمی باشند .  هر  دو  زبان <span style="font-family: Times New Roman;">،</span> دارای یک ویژگی مهم با نام closure  می باشند. ویژگی فوق<span style="font-family: Times New Roman;">،</span> بدین مفهوم است  که خروجی <span style="font-family: Times New Roman;">،</span> دارای ساختمان داده مشابه ورودی است  . مثلا&#8221; SQL خروجی خود را بصورت یک جدول و  XSLT بصورت یک درخت ارائه خواهد داد . بدین ترتیب می توان خروجی یک  عملیات  را بعنوان ورودی در اختیار عملیات بعدی قرار داد. در SQL    این عملیات با استفاده از تعریف view و یا Subquery و در XSLT  با ارسال  داده از طریق مجموعه ای  stylesheet  انجام می  گیرد . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">در دنیای واقعی وچود  XSLT و SQL ضرورت  داشته و   ارتباطات متعدددی بین آنها  وجود خواهد داشت  . داده ها  عموما&#8221; در  بانک های اطلاعاتی رابطه ای ذخیره و با فرمت XML  بین  سیستم های متنوع ارسال خواهند  شد. مدل های داده در هر یک از سیستم های فوق  با  یکدیگر متفاوت بوده و XSLT  قادر به ایفای نقشی  حساس در رابطه با تبدیل مدل های متفاوت داده است . تولیدکنندگان متفاوت  بانک های  اطلاعاتی در تلاش برای ارائه محصول خود بگونه ای هستند که امکان ارتباط XML و SQL را فراهم  نماید . SQL Server 2000 امکان استفاده از پرس و جو های  مبتنی بر XPath را حمایت می نماید. </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><strong><span style="color: #000080; font-size: x-small;">پردازنده XSLT </span></strong><span style="font-size: x-small;"><br />
مهمترین رسالت پردازنده XSLT <span style="font-family: Times New Roman;">،</span> بکارگیری یک XML   stylesheet در رابطه با یک سند XML و  ایجاد(  تولید ) خروجی مناسب است . لازم به یادآوری  است که هر یک از موارد اشاره  شده <span style="font-family: Times New Roman;">،</span> بمنزله یک برنامه XML  بوده و بدیهی است که ساختار هر یک از آنها یک درخت باشد . عملکرد پردازنده XSLT  وابسته به وجود درخت های فوق است.  پردازنده  های متعددی در رابطه با  XSLT نظیر Saxon, xt, MSXML3  وجود دارد . پردازنده های فوق را می  توان  بصورت رایگان تهیه نمود . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">پردازنده saxon <span style="font-family: Times New Roman;">،</span> قادر به تبدیل سند XML به سایر مدل های دیگر است ( یک سند Html) .  برای استفاده از برنامه فوق<span style="font-family: Times New Roman;">،</span>می بایست برنامه Instan Saxon را از آدرس <a href="http://users.iclway.co.uk/mhkay/saxon/instant.html"> http://users.iclway.co.uk/mhkay/saxon/instant.html</a> دریافت  و بر روی سیستم  نصب کرد . برنامه فوق به زبان جاوا نوشته شده و می توان آن  را  مستقیما&#8221; از طریق خط دستور اجراء نمود ( ضرورتی به داشتن مرورگرهای وب و یا  سرویس  دهنده وب نخواهد بود ) . مرورگرها و سرویس دهندگان وب در این حالت با سند  تبدیل  یافته سروکار خواهند داشت . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">xt <span style="font-family: Times New Roman;">، </span>یکی دیگر از پردازنده های XSLT است . برنامه فوق با زبان جاوا نوشته شده و  امکان  اجرای آن از طریق خط دستور وجود دارد . برای دریافت پردازنده فوق می توان  به آدرس <a href="http://www.jclark.com/xml/xt.html"> http://www.jclark.com/xml/xt.html</a> مراجعه نمود. پردازنده فوق  همانند saxon <span style="font-family: Times New Roman;">،</span> قادر به  فعالیت با پارسر های مبتنی بر SAX می باشد .</span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"> امکان اجرای  XSLT stylesheet بهمراه مرورگر IE نیز  وجود دارد  . بدین منظور می بایست  نسخه پنج مرورگر فوق و آخرین نسخه پردازنده MSXML مربوط به شرکت ماکروسافت <span style="font-family: Times New Roman;">،</span> بر روی سیستم نصب گردند. برای  دریافت آخرین  نسخه پردازنده فوق می توان به آدرس  <a href="http://www.microsoft.com/xml">www.microsoft.com/xml</a> مراجعه کرد . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">مثال : در ادامه به بررسی مثالی  خواهیم پرداخت که  نحوه استفاده از XSLT بمنظور  تبدیل یک سند ساده XML را نشان خواهد داد . فرض  کنید <span style="font-family: Times New Roman;">،</span> یک سند ساده XML   مطابق زیر را داشته باشیم : </span></span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<div><span style="font-family: Times New Roman; font-size: small;"> </span> <span style="font-family: Times New Roman; font-size: small;"></p>
<table dir="ltr" border="1" cellspacing="0" cellpadding="3" width="390" bordercolor="#111111">
<tbody>
<tr>
<td dir="rtl" width="372" bgcolor="#cfcf9e"><span style="color: #800000; font-size: x-small;">یک سند  ساده                   XML </span></td>
</tr>
<tr>
<td dir="rtl" width="372" bgcolor="#ffffe0">
<p dir="ltr"><span style="font-size: x-small;">&lt;?xml  version=&#8221;1.0&#8243;                    encoding=&#8221;iso-8859-1&#8243;?&gt;<br />
&lt;greeting&gt;Hello, world!&lt;/greeting&gt;</span></p>
</td>
</tr>
</tbody>
</table>
<p></span> <span style="font-family: Times New Roman; font-size: small;"> </span></div>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">خروجی مورد نظر سند XML یک فایل Html  بصورت زیر  خواهد بود .</span></span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<div><span style="font-family: Times New Roman; font-size: small;"> </span> <span style="font-family: Times New Roman; font-size: small;"></p>
<table dir="ltr" border="1" cellspacing="0" cellpadding="3" width="390" bordercolor="#111111">
<tbody>
<tr>
<td dir="rtl" width="372" bgcolor="#cfcf9e"><span style="color: #800000; font-size: x-small;">خروجی                   Html</span></td>
</tr>
<tr>
<td dir="rtl" width="372" bgcolor="#ffffe0">
<p dir="ltr"><span style="font-size: x-small;">&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;Today&#8217;s greeting&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;p&gt;Hello, world!&lt;/p&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</span></p>
</td>
</tr>
</tbody>
</table>
<p></span> <span style="font-family: Times New Roman; font-size: small;"> </span></div>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">XSLT</span></span><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"> زیر بمنظور تبدیل سند XML و ایجاد خروجی Html استفاده می گردد . </span></span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<div><span style="font-family: Times New Roman; font-size: small;"> </span> <span style="font-family: Times New Roman; font-size: small;"></p>
<table dir="ltr" border="1" cellspacing="0" cellpadding="3" width="472" bordercolor="#111111">
<tbody>
<tr>
<td dir="rtl" width="454" bgcolor="#cfcf9e"><span style="color: #800000; font-size: x-small;"> XSLT  بمنظور تبدیل سند                   XML و ایجاد خروجی                    Html</span></td>
</tr>
<tr>
<td dir="rtl" width="454" bgcolor="#ffffe0">
<p dir="ltr"><span style="font-size: x-small;">&lt;?xml  version=&#8221;1.0&#8243;                    encoding=&#8221;iso-8859-1&#8243;?&gt;<br />
&lt;xsl:stylesheet  version=&#8221;1.0&#8243;                    xmlns:xsl=&#8221;http://www.w3.org/1999/XSL/Transform&#8221;&gt;<br />
&lt;xsl:template match=&#8221;/&#8221;&gt;<br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;Today&#8217;s greeting&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;p&gt;&lt;xsl:value-of  select=&#8221;greeting&#8221;/&gt;&lt;/p&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;/xsl:stylesheet&gt;</span></p>
</td>
</tr>
</tbody>
</table>
<p></span> <span style="font-family: Times New Roman; font-size: small;"> </span></div>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"><strong>اجرای StyleSheet<br />
</strong></span>برای اجرای stylesheet با استفاده از  سه  پردازنده اشاره شده در بخش قبل <span style="font-family: Times New Roman;">،</span> مراحل زیر را  می بایست دنبال کرد.</span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><strong>استفاده از پردازنده saxon</strong> .بمنظور اجرای  Stylesheet فوق با استفاده از پردازنده saxon <span style="font-family: Times New Roman;">،</span> عملیات زیر را می بایست انجام داد :</span></span></p>
<ul dir="rtl"><span style="font-family: Times New Roman; font-size: small;"></p>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">دریافت برنامه پردازنده (  آدرس مربوطه  در بخش قبل اشاره گردید )</span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">نصب برنامه  saxon.exe در یک فولدر مناسب </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">با استفاده از برنامه notepad دو فایل اشاره شده را در فایل هائی با  نام hello.xml و hello.xsl  ذخیره  نمائید. </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">خط دستور DOS   را فعال نمائید .(start|programs|MSDOS prompt) </span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">دستور saxon   hello.xml    hello.xsl  را در خط دستور تایپ نمائید .</span></p>
</li>
<li dir="rtl">
<p dir="rtl"><span style="font-size: x-small;">خروجی html   بر روی صفحه نمایش داده خواهد شد . </span></p>
</li>
<p></span></ul>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">در صورتیکه قصد مشاهده خروجی را در  مرورگر داشته باشید <span style="font-family: Times New Roman;">،</span> خروجی خط دستور  را در یک  فایل Html بصورت زیر ذخیره نمائید . </span></span></p>
<div><span style="font-family: Times New Roman; font-size: small;"></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td bgcolor="#cfcf9e">
<p dir="ltr"><span style="font-size: x-small;">Saxon hello.xml hello.xsl &gt;  hello.html</span></p>
</td>
</tr>
</tbody>
</table>
<p></span></div>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><strong>استفاده از پردازنده xt </strong>.  برای اجرای پردازنده  xt <span style="font-family: Times New Roman;">،</span> از   روشی مشابه saxon استفاده شده با این تفاوت که  در عوض  استفاده از برنامه  saxon از برنامه  xt استفاده می گردد . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><strong>استفاده از پردازنده MSXML</strong> . بمنظور اجرای  stylesheet بهمراه مرورگر IE <span style="font-family: Times New Roman;">،</span> می بایست تغییرات اندکی در سند XML بمنظور مراجعه به stylesheet   ایجاد گردد :</span></span></p>
<div><span style="font-family: Times New Roman; font-size: small;"></p>
<table border="0" cellspacing="0" cellpadding="0" width="288">
<tbody>
<tr>
<td width="288" bgcolor="#cfcf9e">
<p dir="ltr"><span style="font-size: x-small;">&lt;?xml version=&#8221;1.0&#8243;  encoding=&#8221;iso-8859-1&#8243;?&gt;<br />
&lt;?xml-stylesheet type=&#8221;text/xsl&#8221; href=&#8221;hello.xsl&#8221;?&gt;<br />
&lt;greeting&gt;Hello, world!&lt;/greeting&gt;</span></p>
</td>
</tr>
</tbody>
</table>
<p></span></div>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">در ادامه می توان فایل hello.xml را در مرورگر IE <span style="font-family: Times New Roman;">،</span> فعال و مشاهده نمود . مرورگر فوق <span style="font-family: Times New Roman;">،</span> سند XML  را  خوانده و از وجود  یک stylesheet آگاه می گردد .  در  ادامه stylesheet مربوطه  فعال و بمنظور تبدیل  سند XML و ایجاد خروجی Html <span style="font-family: Times New Roman;">،</span> آن را اجراء می نماید . در صورتیکه  بر روی  صفحه نمایشگر عبارت hello,world نمایش داده نشود  و صرفا&#8221;  سند XML مشاهده گردد<span style="font-family: Times New Roman;">،</span> علت  عدم استفاده از آخرین نسخه MSXML بهمراه  مرورگر بوده و می بایست آخرین نسخه را از آدرس اشاره شده دریافت و بر روی  سیستم نصب  نمود . </span></span></p>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;"><span style="color: #000080;"><strong>تشریح نحوه  عملکرد XSLT  در رابطه با مثال فوق<br />
</strong></span>اولین خط فایل stylesheet <span style="font-family: Times New Roman;">،</span> شامل دستور زیر است :</span></span></p>
<div><span style="font-family: Times New Roman; font-size: small;"></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td bgcolor="#cfcf9e">
<p dir="ltr"><span style="font-size: x-small;">&lt;?xml version=&#8221;1.0&#8243;  encoding=&#8221;iso-8859-1&#8243;?&gt;</span></p>
</td>
</tr>
</tbody>
</table>
<p></span></div>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">دستور فوق<span style="font-family: Times New Roman;">،</span> اعلام می نماید که   یک XSLT stylesheet  <span style="font-family: Times New Roman;">،</span> خود بعنوان یک سند XML  است . برای encoding کاراکترها <span style="font-family: Times New Roman;">،</span>می توان از استانداردهای متعدد موجود  منجمله utf-8 استفاده کرد .<br />
در ادامه با خط زیر مواجه می گردیم :</span></span></p>
<div><span style="font-family: Times New Roman; font-size: small;"></p>
<table border="0" cellspacing="0" cellpadding="0" width="470">
<tbody>
<tr>
<td width="470" bgcolor="#cfcf9e">
<p dir="ltr"><span style="font-size: x-small;">&lt;xsl:stylesheet           xmlns:xsl=&#8221;http://www.w3.org/1999/XSL/Transform&#8221;          version=&#8221;1.0&#8243;&gt;</span></p>
</td>
</tr>
</tbody>
</table>
<p></span></div>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">خط فوق<span style="font-family: Times New Roman;">،</span> عنوان استاندارد XSLT است . یک المان شروع که  نوع سند را  بعنوان یک stylesheet معرفی می نماید . خصلت  xmlns:xsl تعریف یک namespace    بوده که مشخص می نماید پیشوند xsl در ادامه  بمنظور  مراجعه به  المان های تعریف شده ( استاندارد کنسرسیوم وب  XSLT ) <span style="font-family: Times New Roman;">،</span> استفاده خواهد شد .<br />
در ادامه با خط زیر مواجه می شویم :</span></span></p>
<div><span style="font-family: Times New Roman; font-size: small;"></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td bgcolor="#cfcf9e">
<p dir="ltr"><span style="font-size: x-small;">&lt;xsl:template match=&#8221;/&#8221;&gt;</span></p>
</td>
</tr>
</tbody>
</table>
<p></span></div>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">المان &lt;xsl:template&gt; <span style="font-family: Times New Roman;">،</span> یک قانون تمپلیت را تعریف که بر  اساس آن  نحوه برخورد با بخش های خاص سند مبداء در هنگام پردازش<span style="font-family: Times New Roman;">،</span> تبین می گردد . خصلت &#8220;/&#8221; مشخص می نماید که قانون  فوق از  ابتدای سند مبداء اعمال خواهد شد . در حقیقت<span style="font-family: Times New Roman;">،</span> عبارت فوق یک عبارت مبتنی بر XPath بوده و المان  ریشه  سند XML را مشخص می نماید . یک سند  XML دارای یک ساختار سلسله مراتبی بوده و همانند یونیکس که از &#8220;/&#8221; برای مشخص نمودن ریشه استفاده می نماید<span style="font-family: Times New Roman;">،</span> XPath نیز از &#8220;/&#8221;  برای مشخص  نمودن المان ریشه در یک سند XML  استفاده می  نماید  . در مدل DOM به عنصر فوق  &#8221;  Document object&#8221; و در XPath به آن ریشه  گفته می  شود .<br />
در ادامه با خطوط زیر مواجه می شویم :</span></span></p>
<div><span style="font-family: Times New Roman; font-size: small;"></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td bgcolor="#cfcf9e">
<p dir="ltr"><span style="font-size: x-small;">&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;Today&#8217;s greeting&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;p&gt;&lt;xsl:value-of select=&#8221;greeting&#8221;/&gt;&lt;/p&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</span></p>
</td>
</tr>
</tbody>
</table>
<p></span></div>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">بدنه تمپلیت<span style="font-family: Times New Roman;">،</span>نحوه  ایجاد خروجی را مشخص می نماید . اکثر بدنه تمپلیت در مثال فوق <span style="font-family: Times New Roman;">،</span> مجموعه ای از المان های  Html  و متن مورد نظر را که  می بایست در فایل خروجی منعکس گردند  <span style="font-family: Times New Roman;">،</span> شامل می گردد . در دستورات فوق یک  المان خاص  با نام &lt;xsl:valeu-of&gt; وجود داشته  که یک  دستورالعمل XSLT است( چون از  namespace مربوطه با نام xsl استفاده می  نماید )  . دستورالعمل فوق <span style="font-family: Times New Roman;">، </span>مقدار یک گره  موجود در سند  مبداء را در سند خروجی تکثیر می نماید . خصلت SELECT    مربوط به المان <span style="font-family: Times New Roman;">،</span> گره ای را که مقدار  آن  می بایست انتخاب شود  را مشخص می نماید . ( تمام المان های  &lt;greeting&gt; که فرزند گره مربوطه می باشند <span style="font-family: Times New Roman;">،</span>انتخاب  می گردند ) .<br />
در ادامه با دستور زیر مواجه می گردیم :</span></span></p>
<div><span style="font-family: Times New Roman; font-size: small;"></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td bgcolor="#cfcf9e">
<p dir="ltr"><span style="font-size: x-small;">&lt;/xsl:template&gt;</span></p>
</td>
</tr>
</tbody>
</table>
<p></span></div>
<p dir="rtl"><span style="font-family: Times New Roman; font-size: small;"><span style="font-size: x-small;">برای یک تمپلیت ساده<span style="font-family: Times New Roman;"> </span>نظیر آنچه در مثال فوق <span style="font-family: Times New Roman;">وجود داشت ،</span> می  توان برخی از بخش ها را حذف نمود. با توجه به اینکه صرفا&#8221; از یک تمپلیت  استفاده شده  است المان &lt;xsl:template&gt; را می توان حذف  نمود . در این  حالت Stylesheet مربوطه بصورت زیر خواهد بود :</span></span></p>
<div><span style="font-family: Times New Roman; font-size: small;"></p>
<table border="0" cellspacing="0" cellpadding="0" width="364">
<tbody>
<tr>
<td width="364" bgcolor="#cfcf9e">
<p dir="ltr"><span style="font-size: x-small;">&lt;html xsl:version=&#8221;1.0&#8243;<br />
xmlns:xsl=&#8221;http://www.w3.org/1999/XSL/Transform&#8221;&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;Today&#8217;s greeting&lt;/title&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;p&gt;&lt;xsl:value-of select=&#8221;greeting&#8221;/&gt;&lt;/p&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</span></p>
</td>
</tr>
</tbody>
</table>
<p></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/what-is-xslt-2040/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

