لینوکس در شبکه های محلی بیسیم مبتنی بر استاندارد IEEE ۸۰۲.۱۱
شبکههای بیسیم درسالهای اخیر شاهد رشد فزایندهی تعداد کاربران و در نتیجه سرمایهگذاری شرکتهای کامپیوتری و مخابراتی بوده اند. اگرچه این شبکهها همگی از "هوا" به عنوان رسانهی انتقال استفاده میکنند ، اما از لحاظ تنوع تکنولوژی و کاربرد بسیار متنوعند. مثلا شبکههای GSM که همان شبکههای سلولی تلفن همراه هستند نوعی از شبکههای بیسیم محسوب میشوند. نمونههای دیگر از این تکنولوژی که بیشتر به شبکههای کامپوتری مربوط می شوند Wi-Fi (استاندارد IEEE ۸۰۲.۱۱) شبکههای WiMax (استاندارد IEEE ۸۰۲.۱۶) و شبکههای Bluetooth ( استاندارد IEEE ۸۰۲.۱۵) هستند.
این استانداردها همگی مشخصات و مکانیزمهای لایه اول (Physical layer)وقسمتی از لایه دوم مدل OSI را در این شبکهها تعریف میکنند. در این مقاله من بر رویWi-Fi که در حال حاضریکی از داغترین موضوعات مورد علاقه کاربران شبکههای کامپیوتری است ، بحث خواهم کرد.
امروزه تقریبا همه مدل های کامپوترهای نوت بوک همراه با کارت شبکه بیسیم عرضه میشوند.کارتهای شبکه بیسیم PCI نیز با قیمت مناسبی در بازار یافت میشوند.حتی شما برای PDA خود میتوانید کارت بیسیم خریداری کنید.
به علاوه سادگی راه اندازی و به کارگیری چنین شبکههایی باعث محبوبیت آنها در بین طیف وسیعی از کاربران خانگی و نیز شرکتها شده است . مثلا یک اداره میتواند با این تکنولوژی دسترسی کامپیوترهای موجود به شبکه محلی اداره را بدون نیاز به کابل کشی فراهم کند در عین حال که جابجایی راحت و بی دردسر کامیوترها حتی بدون قطع اتصال آنها از شبکه (مثل موقعی که با یک نوت بوک متصل هستید) امکان پذیر است.امروزه خیلی از کافهها و رستورانها سرویس اینترنت بیسیم مجانی به مشتریان خود عرضه میکنند.
کاربران خانگی با استفاده از سختافزارهای ارزان قیمت، شبکه بیسیم خود را بر پا میکنند تا بتوانند بدون نیاز به کابل کشی دسترسی همزمان چند کامپیوتر موجود در خانه را به اینترنتی که از طریق ADSL دریافت میکنند فراهم کنند یا حتی اتصال اینترنت خود را با همسایه ها به اشتراک بگذارند تا هزینه دسترسی برای آنها کمتر شود.
استاندارد IEEE ۸۰۲.۱۱ که بیشتر با نام WiFi شناخته می شود در سال ۱۹۹۷ توسط IEEE تصویب شد. ازآن زمان تا کنون تغییرات و تصحیحات فراوانی برای این استاندارد پیشنهاد شده که بعضی از آنها تصویب شده و بعضی هنوز در حال بررسی و تکمیلاند. به طور کلی در این استاندارد اتصال کامپیوترها به بخش باسیم (Wired) شبکه محلی از طریق وسیله ای به نام Access Point امکان پذیر میگردد.
در شکل ۱ نمونه ای از این نوع شبکه را مشاهده میکنید.در حقیقت Access Point رابط اتصال کامپیوترها به شبکه باسیم محسوب میشود. البته شما میتوانید بدون نیاز به Access Point دو یا تعداد بیشتری از کامپیوتر های مجهز به کارت شبکه بیسیم (Wireless Network Interface Card) را مستقیما به هم متصل کنید تا مثلا بتوانید فایلهایی را بین آنها منتقل کنید. بدیهی است که در این حالت کامپیوترها امکان دسترسی به سایرکامپیوترهای موجود در بخش باسیم شبکه را ندارند. (چون Access Point ای در کار نیست) به این نوع شبکه Ad-Hoc گفته میشود.
این مقدمه فقط جهت آشنا کردن شما با شبکههای محلی بیسیم ذکر شد. خوشبختانه منابع متعددی در این مورد بر روی اینترنت و در سطوح مختلف موجودند که در صورتی که علاقمند باشید می توانید به آنها مراجعه کنید.
شکل ۱- نمونهای از یک شبکه محلی بیسیم
● لینوکس بر روی کامپیوترهای شخصی >
پشتیبانی لینوکس از شبکههای ۸۰۲.۱۱ از هسته ورژن ۲.۲.۱۴ شروع شد. تا آن زمان فقط یکی دو تولید کننده درایور لینوکس برای سخت افزارهایشان ارائه می کردند. چگونگی ارتباط برنامه کاربر با درایور به شکل واحدی نبود و برنامهی استانداردی برای پیکربندی و راه اندازی این سختافزار برای لینوکس وجود نداشت.
Jean Tourrilhes یکی از محققان آزمایشگاههای HP که در این میان نقش بسیار فعالی داشته و هنوز هم وبسایت او [۱] یکی از معتبر ترین مراجع در موضوعات مختلف مربوط به لینوکس در شبکههای بیسیم است ، در پروژهای به نام Wireless Extensions شروع به تعریف و توسعه استانداردهایی برای ارتباط برنامههای کاربردی با درایور کارت شبکه بیسیم و سیستم عامل کرد. اگر شما با برنامهنویسی سطح پایین در لینوکس آشنا باشید حتما با فراخوانی سیستم ioctl آشنا هستید که جزء فراخوانی های سیستم در لینوکس می باشد و با آن برنامهنویس فرامین خاص هر سختافزار را به درایور آن سخت افزار فرستاده و پارامترهای مختلفی را برای کنترل چگونگی عملکرد سخت افزار به آن ارسال میکند.
Tourrilhes با تعریف مجموعه ای از ماکروهای مورد نیاز این دستور و تعریف ساختارهای داده ای مورد نیاز این تابع (آنچه که در زبان C به آنstructure می گوییم) نویسندگان درایور برای کارتهای شبکه بیسیم را تشویق کرد تا مجوعه ای از قابلیتهای استاندارد را در درایورهای خود بگنجانند. به این ترتیب برنامههای کاربردی برای به کارگیری این قابلیتها و تنظیمات نیازی به دستورات خاص و مجزای هر نوع کارت ندارند و برنامه قادر به کارکردن با هرنوع کارت و درایور خاص آن است. اگر در مورد اینکه چه قابلیتهایی توسط Wireless Extensions تعریف شده کنکجاو هستید نگاهی به محتویات فایل wireless.h بکنید [۲].
البته فراموش نکنید که ممکن است همهی امکاناتی که در این فایل مشاهده می کنید توسط درایور پیاده سازی نشده باشد. یکی دیگر از کارهای Tourrilhes این بود که مجموعه ای از برنامههای کاربردی مفید برای کار با کارت شبکه بیسیم نوشت که اکنون تقریبا در تمام توزیعهای لینوکس به عنوان یک پکیج استاندارد وجود دارد و به شکل پیشفرض نصب میشود. این مجموعه شامل iwconfig, iwlist, iwspy, iwevent ,iwprev, iwgetid میشود که همگی برنامه های خط فرمان هستند.
برنامه iwconfig مهمترین آنهاست که با استفاده از آن میتوانید پارامترهای مختلف کارت را مانند کانال فرکانسی یا Access Point ای که میخواهید به آن متصل شوید، تنظیم کنید.
شکل۲ روتر بیسیم Linksys مدل WRT۵۴GL
● لینوکس بر روی سخت افزارهای شبکه >
لینوکس امروزه به عنوان یکی از پرکاربردترین سیستم عامل های توکار (Embedded) برای تجهزات الکترونیکی مختلف از تلفنهای همراه و تلویزیونها تا سوییچها ی مخابراتی کاربرد دارد[۳]. بعضی از Access Point های موجود در بازار نیز از لینوکس به عنوان سیسم عامل خود استفاده می کنند. به عنوان مثال سری WRT۵۴GL از شرکت Linksys که در شکل ۲ مشاهده می کنید به شما این امکان را می دهد که Firmware نصب شده بر روی آنرا با لینوکس سفارشی شده خودتان جایگزین کنید.
جالبتر آنکه توزیع های خاصی برای این منظور ایجاد شده اند که DD-WRT, Alchemy, OpenWRT معروفترین آنها هستند. DD-WRT که گزینه مجبوب من نیز هست به شما این امکان را می دهد که روتر بیسیم خود را از یک دستگاه با کاربردهای خانگی به یک سیستم پرقدرت با قابلیتهای فراوان تبدیل کنید. چیزی که برای خرید آن باید ۶ یا ۷ برابرقیمت این روتر بیسیم میپرداختید. [۴]
جالبتر آنکه شما با استفاده از سخت افزار های قدیمی و ازران قیمت با داشتن یک کارت شبکه می توانید access point خود را با استفاده از لینوکس بسازید. به این ترتیب با کم ترین هزینه می توانید صاحب یک access point با قابلیتهای فراوان شوید.
● سخت افزار و درایورها
کارتهای شبکه بیسیم متنوعی در بازار وجود دارند. اگر قصد خرید کارت شبکه بیسیم برای کامپیوتر خود دارید و می خواهید از آن در محیط لینوکس هم استفاده کنید بهترست پیش از خرید از وجود درایور برای آن کارت مطمئن شوید. اگرچه قسمت اصلی همه این کارت ها چیپست موجود روی آنها است.
به همین خاطر زمانی که شما بدانید مثلا درایوری برای مدل خاصی از چیپ ست Atheros موجود هست می توانید هر کارت شبکه بیسیم دارای این چیپ ست را خریداری کنید. در حال حاضر تعداد تولید کنندگان عمده این چیپ ست ها حدودا ۱۰ تا است که معروفترین آنها عبارتند از: Intel, Intersil, Agere, Marvell , Atheros, Broadcom, Lucent, Atmel که چگونگی پیاده سازی مکانیزم های مورد نیاز استاندارد در انها متفاوت است. بعضی بیشتر بر پایه سختافزارر کار میکنند و بیشتر اعمال در آنها توسط مدارهای موجود در چیپ ست انجام میشود. مثل آنچه در چیپ ست های اینتل می بینیم. برخی هم بیشتر بر پایه ثابت افزار (Firmware) هستند. مانند Atheros.
مدتی پیش که Slackware ۱۱ را بر روی لپ تاپ خود نصب کردم متوجه شدم که درایور کارت شبکه بیسیم من که یک اینتل ipw۲۲۰۰ است به شکل ماژول بارگذاری شده اما من همچنان قادر به راه اندازی کارت بیسیم نیستم. وقتی دنبال فایل های باینری Firmware در جایی که انتظار وجود انها را داشتم گشتم متوجه شدم که اصلا این فایل ها همراه با لینوکس Slackwareتوزیع نشده اند که علت آنهم اوپن سورس نبودن آنهاست.
قضیه اینجاست که مطابق مقررات FCC (سازمانی که مقررات ارتباط رادیویی را در آمریکا وضع و نظارت میکند) دستگاه هایی که در باند های فرکانسی آزاد (مثل باند فرکانسی مورد استفاده شبکه های محلی بیسیم یا فرهای مایکروویو) کار میکنند باید از حد اکثر توان خروجی مشخصی برخوردار باشند. در بعضی از کارت های شبکه بیسیم (مانند کارت های مبتنی بر چیپ ست Atheros) این توان خروجی توسط Firmware تنظیم می شود.
با این حساب اگر قرار باشد که Firmware کارت شبکه هم به شکل اوپن سورس در اختیار کاربران معمولی قرارگیرد ممکن است برخی افراد توان خروجی کارت بیسیم خود را از حد معمول به حدی خارج از محدوده قانونی افزایش دهند. (اگرچه این مساله می تواند باعث افزایش برد سیگنال های رادیویی شود اما در عین حال امکان تداخل سیگنال با سایر شبکه هایی که از همین محدوده فرکانسی استفاده میکنند نیز افزایش می یابد) از این رو این تولید کنندگان معمولا درایور ها را به شکل اوپن سورس و Firmware ها را فقط به شکل فایلهای باینری منتشر میکنند و به همین دلیل برخی از توزیع کنندگان لینوکس حاضر به گنجاندن اینFirmware ها در توزیع خود نیستند.
به هر حال اگر حوصله جستجو به دنبال درایور و دردسرهای کامپایل کردن سورس کد درایور برای کارت خود را ندارید پیشنهاد میکنم به سراغ توزیعهایی بروید که پشتیبانی بهتری از کارتهای وایرلس میکنند به این ترتیب که درایورهای بیشتری را در خود دارند و Firmware ها را هم در خود دارند بنابرین شما نیازی به یافتن درایور و یا Firmware برای سختافزار خود ندارید. ازاین لحاظ بودن من اوبونتو را بسیار کامل دیدم. اوبونتو همه کارتهای بیسیم من را بدون هیچ درد سری پشیبانی کرد.
حتی کارت بیسیم Linksys WUSB ۱۱ که از چیپستهای ATMEL استفاده میکند و من برای کامپایل کردن سورس کد درایور آن بر روی Slackware مدتها مشکل داشتم توسط اوبونتو بسیار راحت و بی دردسر راه اندازی شد.
[۵] و [۶ ]لیست بسیار مفیدی (البته نه چندان به روز) از کارتهای وایرلس موجود ، چیپ ست استفاده شده در کارتها و وضعیت پشتیبانی این کارت هادر لینوکس ارائه می دهند. به علاوه در صورتی که درایوری برای کارت شما موجود باشد آدرسی برای محل دانلود کردن درایور موجود است. با این حال اگر درایور مخصوص لینوکس برای کارت وایرلس خود پیدا نکردید هنوز هم جای امیدواری هست. پروژه NDISwrapper که کرنل ویندوز را برای درایور بر روی لینوکس شبیه سازی میکند به شما این امکان را می دهد که از درایور مخصوص ویندوز بر روی لینوکس استفاده کنید [۷]. همانطور که در صفحه ویکی وب سایت این پروژه [۸] می توانید ببینید تعداد بسیاری از کارتهای شبکه وایرلس تحت این پروژه پشتیبانی می شوند.
● نرم افزارها و ابزارهای مفید
نرم افزارهایی که به نحوی به شبکه بیسیم مربوط میشوند به دو دسته تقسیم میکنم:
الف) ابزارهایی که برای کاربردهای معمولی مثل متصل شدن به یک شبکه بیسیم و یا جستجو برای شبکههای بیسیم موجود استفاده میشود. این ابزارها مورد استفاده همه کاربران هستند. هر کسی ممکن است بخواهد به شبکه محلی بیسیم موجود در محل کار یا دانشگاه متصل شود. برنامههای گرافیکی زیادی برای این کار هستند مثلا در میز کار KDE می توانید از kwifimanager استفاده کنید یا netapplet در GNOME توانایی جستجو برای شبکههای بیسیم موجود و اتصال به آنها را دارند. البته من هنوز ابزار گرافیکی کاملا مناسب و کاملی در این زمینه ندیدهام. با این وجود اگر رابطه خوبی با خط فرمان دارید بدانید که قدرت در دستان شماست !
همانطور که در ابتدا گفتم بسته Wireless Tools که جزء بستههای استاندارد هر لینوکس معمولا به صورت پیش فرض نصب می شود شامل تعدادی برنامههای قابل اجرا در خط فرمان است که با آنها میتوانید وظایف مختلفی انجام دهید. بییاید با هم نگاهی به دوتا از مهمترین آنها بیاندازیم. من در ابنجا میخواهم ابتدا شبکههای محلی بیسیم قابل دسترس را جستجو کنم. از برنامه iwlist استفاده میکنم.توجه کنید که eth۱ نام کارت شبکه بیسیم من می باشد.
root@amirhossein:~# iwlist eth۱ scan
: eth۱ Scan completed
Cell ۰۱ - Address: ۰۲:۱۲:F۰:۰۲:۵۹:۴۹
ESSID:"amirhossein""
Protocol:IEEE ۸۰۲.۱۱bg
Mode:Ad-Hoc
Channel:۱
Encryption key:on
Bit Rates:۱ Mb/s; ۲ Mb/s; ۵.۵ Mb/s; ۶ Mb/s; ۹ Mb/s
۱۱ Mb/s; ۱۲ Mb/s; ۱۸ Mb/s; ۲۴ Mb/s; ۳۶ Mb/s
۴۸ Mb/s; ۵۴ Mb/s
Quality=۸۵/۱۰۰ Signal level=-۶۱ dBm
Extra: Last beacon: ۱۷۶ms ago
Cell ۰۲ - Address: ۰۰:۰E:E۸:F۸:۵۲:۰۷
SSID:"iptime"
Protocol:IEEE ۸۰۲.۱۱bg
Mode:Master
Channel:۶
Encryption key:off
Bit Rates:۱ Mb/s; ۲ Mb/s; ۵.۵ Mb/s; ۶ Mb/s; ۹ Mb/s
۱۱ Mb/s; ۱۲ Mb/s; ۱۸ Mb/s; ۲۴ Mb/s; ۳۶ Mb/s
۴۸ Mb/s; ۵۴ Mb/s
Quality=۵۸/۱۰۰ Signal level=-۶۶ dBm
Extra: Last beacon: ۶۸ms ago
خروجی برنامه iwlist دو شبکه بیسیم را نشان میدهد. مثلا شبکه اولی با نام "amirhossein" از نوع Ad-hoc یعنی بدون access point ، در کانال فرکانسی شماره ۱، با سرعت ۵۴ مگابیت در ثانیه و با رمزگذاری می باشد. من این شبکه را بر پا کرده ام تا به شکل بیسیم به کامپیوتر دوستم که از ویندوز استفاده میکند متصل شوم. خوب اکنون برای اتصال به ابن شبکه به شکل زیر عمل میکنم:
***** :root@amirhossein:~# iwconfig eth۱ essid "amirhossein" mode ad-hoc key s
root@amirhossein:~# ifconfig eth۱ ۱۹۲.۱۶۸.۰.۲ netmask ۲۵۵.۲۵۵.۲۵۵.۰
در خط اول با دستور iwconfig به شبکه بیسیم متصل شدم ( کلید رمز گذاری را در اینجا با کاراکتر های ستاره نشان دادهام) و در خط دوم به کارت شبکه بیسیم آدرس آیپی اختصاص دادم. به همین سادگی و بدون درد سر.
ب) دسته دوم ابزارهایی هستند که مورد استفاده کاربران حرفهای، مدیران شبکه و محققان شبکههای بیسیم هستند وکاربران عادی معمولا نیازی به آنها ندارند. همه شبکههای بیسیم از هوا به عنوان رسانه انتقال استفاده میکنند. این بدین معناست که امکان دسترسی غیر مجاز و حملههای DoS در این شبکهها نسبت به شبکههای با سیم بیشتر است. بی شک لینوکس محبوبترین پلتفورم برای هکرها و متخصصین امنیت شبکههای بیسیم است.
زیرا نرم افزارهای مختلف با قابلیتهای متنوع برای نفوذ به شبکههای بیسیم و ارزیابی امنیت آنها تحت لینوکس وجود دارد. در حقیقت این موضوع از کد باز بودن درایورهای موجود برای لینوکس و تعهد نویسندگان این درایورها نسبت به پشتیبانی و به روزرسانی آنها سرچشمه می گیرد. اگرچه تعدادی از این نرم افزارها با استفاده از Cygwin بر روی ویندوز قابل استفاده اند اما قابلیتهای جالب انها معمولا به علت عدم پشتیبانی درایور و یا سیستم عامل غیر قابل استفاده است.
یکی از معروفترین این برنامهها، Kismet است که مطابق نظر سنجی سایت [۹] sectool.org رتبه هفتم را در لیست ۱۰۰ ابزار برتر امنیت شبکه به خود اختصاص داده است.Kismet ابزاری بسیار قدرتمند با امکانات متعدد برای هکرها و مهندسین شبکه می باشد که قادر به تشخیص access point ها و client های موجود در محدوده با استفاده از اسکن غیر فعال (Passive Scanning) ، کشف ترافیکهای مشکوک به فعالیتهای مخرب (Intrusion Detection) ، نمایش آدرس IP کامپیوترهای فعال، امکان استفاده از GPS و نمایش محل access point های کشف شده بر روی نقشه با استفاده از GPS و بسیاری امکانات دیگر می باشد.
Aircrack دیگر نرمافزار معروف از این دسته است که بیشتر به خاطر قابلیتهایش در شکستن کلیدهای رمز WEP که برای حفاظت شبکههای بیسیم از دسترسی غیر مجاز و کد کردن اطلاعات استفاده می شود است.
مشابه Kismet این نرم افزار قادر به کشف شبکههای بیسیم موجود در ناحیه و کامپیوترهای موجود در آنهاست. در صورتی که از کارت وایرلس مبتنی بر چیپست Prism ویا Atheros استفاده کنید با این نرمافزار قادر به تزریق فریم در شبکه بیسیم (Frame Injection) با MAC آدرسی غیر از آدرس کارت بیسیم خود خواهید بود (چیزی که به آن spoofing می گوییم و معمولا خرابکاران برای حملات DoS از آن استفاده میکنند.)
به هر حال ابزارهای متعدد زیادی به جز این دو برنامه وجود دارند که معرفی آنها و امکانات آنها از حوصله شما و این مقاله خارج است.
شبکههای بیسیم درسالهای اخیر شاهد رشد فزایندهی تعداد کاربران و در نتیجه سرمایهگذاری شرکتهای کامپیوتری و مخابراتی بوده اند. اگرچه این شبکهها همگی از "هوا" به عنوان رسانهی انتقال استفاده میکنند ، اما از لحاظ تنوع تکنولوژی و کاربرد بسیار متنوعند. مثلا شبکههای GSM که همان شبکههای سلولی تلفن همراه هستند نوعی از شبکههای بیسیم محسوب میشوند. نمونههای دیگر از این تکنولوژی که بیشتر به شبکههای کامپوتری مربوط می شوند Wi-Fi (استاندارد IEEE ۸۰۲.۱۱) شبکههای WiMax (استاندارد IEEE ۸۰۲.۱۶) و شبکههای Bluetooth ( استاندارد IEEE ۸۰۲.۱۵) هستند.
این استانداردها همگی مشخصات و مکانیزمهای لایه اول (Physical layer)وقسمتی از لایه دوم مدل OSI را در این شبکهها تعریف میکنند. در این مقاله من بر رویWi-Fi که در حال حاضریکی از داغترین موضوعات مورد علاقه کاربران شبکههای کامپیوتری است ، بحث خواهم کرد.
امروزه تقریبا همه مدل های کامپوترهای نوت بوک همراه با کارت شبکه بیسیم عرضه میشوند.کارتهای شبکه بیسیم PCI نیز با قیمت مناسبی در بازار یافت میشوند.حتی شما برای PDA خود میتوانید کارت بیسیم خریداری کنید.
به علاوه سادگی راه اندازی و به کارگیری چنین شبکههایی باعث محبوبیت آنها در بین طیف وسیعی از کاربران خانگی و نیز شرکتها شده است . مثلا یک اداره میتواند با این تکنولوژی دسترسی کامپیوترهای موجود به شبکه محلی اداره را بدون نیاز به کابل کشی فراهم کند در عین حال که جابجایی راحت و بی دردسر کامیوترها حتی بدون قطع اتصال آنها از شبکه (مثل موقعی که با یک نوت بوک متصل هستید) امکان پذیر است.امروزه خیلی از کافهها و رستورانها سرویس اینترنت بیسیم مجانی به مشتریان خود عرضه میکنند.
کاربران خانگی با استفاده از سختافزارهای ارزان قیمت، شبکه بیسیم خود را بر پا میکنند تا بتوانند بدون نیاز به کابل کشی دسترسی همزمان چند کامپیوتر موجود در خانه را به اینترنتی که از طریق ADSL دریافت میکنند فراهم کنند یا حتی اتصال اینترنت خود را با همسایه ها به اشتراک بگذارند تا هزینه دسترسی برای آنها کمتر شود.
استاندارد IEEE ۸۰۲.۱۱ که بیشتر با نام WiFi شناخته می شود در سال ۱۹۹۷ توسط IEEE تصویب شد. ازآن زمان تا کنون تغییرات و تصحیحات فراوانی برای این استاندارد پیشنهاد شده که بعضی از آنها تصویب شده و بعضی هنوز در حال بررسی و تکمیلاند. به طور کلی در این استاندارد اتصال کامپیوترها به بخش باسیم (Wired) شبکه محلی از طریق وسیله ای به نام Access Point امکان پذیر میگردد.
در شکل ۱ نمونه ای از این نوع شبکه را مشاهده میکنید.در حقیقت Access Point رابط اتصال کامپیوترها به شبکه باسیم محسوب میشود. البته شما میتوانید بدون نیاز به Access Point دو یا تعداد بیشتری از کامپیوتر های مجهز به کارت شبکه بیسیم (Wireless Network Interface Card) را مستقیما به هم متصل کنید تا مثلا بتوانید فایلهایی را بین آنها منتقل کنید. بدیهی است که در این حالت کامپیوترها امکان دسترسی به سایرکامپیوترهای موجود در بخش باسیم شبکه را ندارند. (چون Access Point ای در کار نیست) به این نوع شبکه Ad-Hoc گفته میشود.
این مقدمه فقط جهت آشنا کردن شما با شبکههای محلی بیسیم ذکر شد. خوشبختانه منابع متعددی در این مورد بر روی اینترنت و در سطوح مختلف موجودند که در صورتی که علاقمند باشید می توانید به آنها مراجعه کنید.
شکل ۱- نمونهای از یک شبکه محلی بیسیم
● لینوکس بر روی کامپیوترهای شخصی >
پشتیبانی لینوکس از شبکههای ۸۰۲.۱۱ از هسته ورژن ۲.۲.۱۴ شروع شد. تا آن زمان فقط یکی دو تولید کننده درایور لینوکس برای سخت افزارهایشان ارائه می کردند. چگونگی ارتباط برنامه کاربر با درایور به شکل واحدی نبود و برنامهی استانداردی برای پیکربندی و راه اندازی این سختافزار برای لینوکس وجود نداشت.
Jean Tourrilhes یکی از محققان آزمایشگاههای HP که در این میان نقش بسیار فعالی داشته و هنوز هم وبسایت او [۱] یکی از معتبر ترین مراجع در موضوعات مختلف مربوط به لینوکس در شبکههای بیسیم است ، در پروژهای به نام Wireless Extensions شروع به تعریف و توسعه استانداردهایی برای ارتباط برنامههای کاربردی با درایور کارت شبکه بیسیم و سیستم عامل کرد. اگر شما با برنامهنویسی سطح پایین در لینوکس آشنا باشید حتما با فراخوانی سیستم ioctl آشنا هستید که جزء فراخوانی های سیستم در لینوکس می باشد و با آن برنامهنویس فرامین خاص هر سختافزار را به درایور آن سخت افزار فرستاده و پارامترهای مختلفی را برای کنترل چگونگی عملکرد سخت افزار به آن ارسال میکند.
Tourrilhes با تعریف مجموعه ای از ماکروهای مورد نیاز این دستور و تعریف ساختارهای داده ای مورد نیاز این تابع (آنچه که در زبان C به آنstructure می گوییم) نویسندگان درایور برای کارتهای شبکه بیسیم را تشویق کرد تا مجوعه ای از قابلیتهای استاندارد را در درایورهای خود بگنجانند. به این ترتیب برنامههای کاربردی برای به کارگیری این قابلیتها و تنظیمات نیازی به دستورات خاص و مجزای هر نوع کارت ندارند و برنامه قادر به کارکردن با هرنوع کارت و درایور خاص آن است. اگر در مورد اینکه چه قابلیتهایی توسط Wireless Extensions تعریف شده کنکجاو هستید نگاهی به محتویات فایل wireless.h بکنید [۲].
البته فراموش نکنید که ممکن است همهی امکاناتی که در این فایل مشاهده می کنید توسط درایور پیاده سازی نشده باشد. یکی دیگر از کارهای Tourrilhes این بود که مجموعه ای از برنامههای کاربردی مفید برای کار با کارت شبکه بیسیم نوشت که اکنون تقریبا در تمام توزیعهای لینوکس به عنوان یک پکیج استاندارد وجود دارد و به شکل پیشفرض نصب میشود. این مجموعه شامل iwconfig, iwlist, iwspy, iwevent ,iwprev, iwgetid میشود که همگی برنامه های خط فرمان هستند.
برنامه iwconfig مهمترین آنهاست که با استفاده از آن میتوانید پارامترهای مختلف کارت را مانند کانال فرکانسی یا Access Point ای که میخواهید به آن متصل شوید، تنظیم کنید.
شکل۲ روتر بیسیم Linksys مدل WRT۵۴GL
● لینوکس بر روی سخت افزارهای شبکه >
لینوکس امروزه به عنوان یکی از پرکاربردترین سیستم عامل های توکار (Embedded) برای تجهزات الکترونیکی مختلف از تلفنهای همراه و تلویزیونها تا سوییچها ی مخابراتی کاربرد دارد[۳]. بعضی از Access Point های موجود در بازار نیز از لینوکس به عنوان سیسم عامل خود استفاده می کنند. به عنوان مثال سری WRT۵۴GL از شرکت Linksys که در شکل ۲ مشاهده می کنید به شما این امکان را می دهد که Firmware نصب شده بر روی آنرا با لینوکس سفارشی شده خودتان جایگزین کنید.
جالبتر آنکه توزیع های خاصی برای این منظور ایجاد شده اند که DD-WRT, Alchemy, OpenWRT معروفترین آنها هستند. DD-WRT که گزینه مجبوب من نیز هست به شما این امکان را می دهد که روتر بیسیم خود را از یک دستگاه با کاربردهای خانگی به یک سیستم پرقدرت با قابلیتهای فراوان تبدیل کنید. چیزی که برای خرید آن باید ۶ یا ۷ برابرقیمت این روتر بیسیم میپرداختید. [۴]
جالبتر آنکه شما با استفاده از سخت افزار های قدیمی و ازران قیمت با داشتن یک کارت شبکه می توانید access point خود را با استفاده از لینوکس بسازید. به این ترتیب با کم ترین هزینه می توانید صاحب یک access point با قابلیتهای فراوان شوید.
● سخت افزار و درایورها
کارتهای شبکه بیسیم متنوعی در بازار وجود دارند. اگر قصد خرید کارت شبکه بیسیم برای کامپیوتر خود دارید و می خواهید از آن در محیط لینوکس هم استفاده کنید بهترست پیش از خرید از وجود درایور برای آن کارت مطمئن شوید. اگرچه قسمت اصلی همه این کارت ها چیپست موجود روی آنها است.
به همین خاطر زمانی که شما بدانید مثلا درایوری برای مدل خاصی از چیپ ست Atheros موجود هست می توانید هر کارت شبکه بیسیم دارای این چیپ ست را خریداری کنید. در حال حاضر تعداد تولید کنندگان عمده این چیپ ست ها حدودا ۱۰ تا است که معروفترین آنها عبارتند از: Intel, Intersil, Agere, Marvell , Atheros, Broadcom, Lucent, Atmel که چگونگی پیاده سازی مکانیزم های مورد نیاز استاندارد در انها متفاوت است. بعضی بیشتر بر پایه سختافزارر کار میکنند و بیشتر اعمال در آنها توسط مدارهای موجود در چیپ ست انجام میشود. مثل آنچه در چیپ ست های اینتل می بینیم. برخی هم بیشتر بر پایه ثابت افزار (Firmware) هستند. مانند Atheros.
مدتی پیش که Slackware ۱۱ را بر روی لپ تاپ خود نصب کردم متوجه شدم که درایور کارت شبکه بیسیم من که یک اینتل ipw۲۲۰۰ است به شکل ماژول بارگذاری شده اما من همچنان قادر به راه اندازی کارت بیسیم نیستم. وقتی دنبال فایل های باینری Firmware در جایی که انتظار وجود انها را داشتم گشتم متوجه شدم که اصلا این فایل ها همراه با لینوکس Slackwareتوزیع نشده اند که علت آنهم اوپن سورس نبودن آنهاست.
قضیه اینجاست که مطابق مقررات FCC (سازمانی که مقررات ارتباط رادیویی را در آمریکا وضع و نظارت میکند) دستگاه هایی که در باند های فرکانسی آزاد (مثل باند فرکانسی مورد استفاده شبکه های محلی بیسیم یا فرهای مایکروویو) کار میکنند باید از حد اکثر توان خروجی مشخصی برخوردار باشند. در بعضی از کارت های شبکه بیسیم (مانند کارت های مبتنی بر چیپ ست Atheros) این توان خروجی توسط Firmware تنظیم می شود.
با این حساب اگر قرار باشد که Firmware کارت شبکه هم به شکل اوپن سورس در اختیار کاربران معمولی قرارگیرد ممکن است برخی افراد توان خروجی کارت بیسیم خود را از حد معمول به حدی خارج از محدوده قانونی افزایش دهند. (اگرچه این مساله می تواند باعث افزایش برد سیگنال های رادیویی شود اما در عین حال امکان تداخل سیگنال با سایر شبکه هایی که از همین محدوده فرکانسی استفاده میکنند نیز افزایش می یابد) از این رو این تولید کنندگان معمولا درایور ها را به شکل اوپن سورس و Firmware ها را فقط به شکل فایلهای باینری منتشر میکنند و به همین دلیل برخی از توزیع کنندگان لینوکس حاضر به گنجاندن اینFirmware ها در توزیع خود نیستند.
به هر حال اگر حوصله جستجو به دنبال درایور و دردسرهای کامپایل کردن سورس کد درایور برای کارت خود را ندارید پیشنهاد میکنم به سراغ توزیعهایی بروید که پشتیبانی بهتری از کارتهای وایرلس میکنند به این ترتیب که درایورهای بیشتری را در خود دارند و Firmware ها را هم در خود دارند بنابرین شما نیازی به یافتن درایور و یا Firmware برای سختافزار خود ندارید. ازاین لحاظ بودن من اوبونتو را بسیار کامل دیدم. اوبونتو همه کارتهای بیسیم من را بدون هیچ درد سری پشیبانی کرد.
حتی کارت بیسیم Linksys WUSB ۱۱ که از چیپستهای ATMEL استفاده میکند و من برای کامپایل کردن سورس کد درایور آن بر روی Slackware مدتها مشکل داشتم توسط اوبونتو بسیار راحت و بی دردسر راه اندازی شد.
[۵] و [۶ ]لیست بسیار مفیدی (البته نه چندان به روز) از کارتهای وایرلس موجود ، چیپ ست استفاده شده در کارتها و وضعیت پشتیبانی این کارت هادر لینوکس ارائه می دهند. به علاوه در صورتی که درایوری برای کارت شما موجود باشد آدرسی برای محل دانلود کردن درایور موجود است. با این حال اگر درایور مخصوص لینوکس برای کارت وایرلس خود پیدا نکردید هنوز هم جای امیدواری هست. پروژه NDISwrapper که کرنل ویندوز را برای درایور بر روی لینوکس شبیه سازی میکند به شما این امکان را می دهد که از درایور مخصوص ویندوز بر روی لینوکس استفاده کنید [۷]. همانطور که در صفحه ویکی وب سایت این پروژه [۸] می توانید ببینید تعداد بسیاری از کارتهای شبکه وایرلس تحت این پروژه پشتیبانی می شوند.
● نرم افزارها و ابزارهای مفید
نرم افزارهایی که به نحوی به شبکه بیسیم مربوط میشوند به دو دسته تقسیم میکنم:
الف) ابزارهایی که برای کاربردهای معمولی مثل متصل شدن به یک شبکه بیسیم و یا جستجو برای شبکههای بیسیم موجود استفاده میشود. این ابزارها مورد استفاده همه کاربران هستند. هر کسی ممکن است بخواهد به شبکه محلی بیسیم موجود در محل کار یا دانشگاه متصل شود. برنامههای گرافیکی زیادی برای این کار هستند مثلا در میز کار KDE می توانید از kwifimanager استفاده کنید یا netapplet در GNOME توانایی جستجو برای شبکههای بیسیم موجود و اتصال به آنها را دارند. البته من هنوز ابزار گرافیکی کاملا مناسب و کاملی در این زمینه ندیدهام. با این وجود اگر رابطه خوبی با خط فرمان دارید بدانید که قدرت در دستان شماست !
همانطور که در ابتدا گفتم بسته Wireless Tools که جزء بستههای استاندارد هر لینوکس معمولا به صورت پیش فرض نصب می شود شامل تعدادی برنامههای قابل اجرا در خط فرمان است که با آنها میتوانید وظایف مختلفی انجام دهید. بییاید با هم نگاهی به دوتا از مهمترین آنها بیاندازیم. من در ابنجا میخواهم ابتدا شبکههای محلی بیسیم قابل دسترس را جستجو کنم. از برنامه iwlist استفاده میکنم.توجه کنید که eth۱ نام کارت شبکه بیسیم من می باشد.
root@amirhossein:~# iwlist eth۱ scan
: eth۱ Scan completed
Cell ۰۱ - Address: ۰۲:۱۲:F۰:۰۲:۵۹:۴۹
ESSID:"amirhossein""
Protocol:IEEE ۸۰۲.۱۱bg
Mode:Ad-Hoc
Channel:۱
Encryption key:on
Bit Rates:۱ Mb/s; ۲ Mb/s; ۵.۵ Mb/s; ۶ Mb/s; ۹ Mb/s
۱۱ Mb/s; ۱۲ Mb/s; ۱۸ Mb/s; ۲۴ Mb/s; ۳۶ Mb/s
۴۸ Mb/s; ۵۴ Mb/s
Quality=۸۵/۱۰۰ Signal level=-۶۱ dBm
Extra: Last beacon: ۱۷۶ms ago
Cell ۰۲ - Address: ۰۰:۰E:E۸:F۸:۵۲:۰۷
SSID:"iptime"
Protocol:IEEE ۸۰۲.۱۱bg
Mode:Master
Channel:۶
Encryption key:off
Bit Rates:۱ Mb/s; ۲ Mb/s; ۵.۵ Mb/s; ۶ Mb/s; ۹ Mb/s
۱۱ Mb/s; ۱۲ Mb/s; ۱۸ Mb/s; ۲۴ Mb/s; ۳۶ Mb/s
۴۸ Mb/s; ۵۴ Mb/s
Quality=۵۸/۱۰۰ Signal level=-۶۶ dBm
Extra: Last beacon: ۶۸ms ago
خروجی برنامه iwlist دو شبکه بیسیم را نشان میدهد. مثلا شبکه اولی با نام "amirhossein" از نوع Ad-hoc یعنی بدون access point ، در کانال فرکانسی شماره ۱، با سرعت ۵۴ مگابیت در ثانیه و با رمزگذاری می باشد. من این شبکه را بر پا کرده ام تا به شکل بیسیم به کامپیوتر دوستم که از ویندوز استفاده میکند متصل شوم. خوب اکنون برای اتصال به ابن شبکه به شکل زیر عمل میکنم:
***** :root@amirhossein:~# iwconfig eth۱ essid "amirhossein" mode ad-hoc key s
root@amirhossein:~# ifconfig eth۱ ۱۹۲.۱۶۸.۰.۲ netmask ۲۵۵.۲۵۵.۲۵۵.۰
در خط اول با دستور iwconfig به شبکه بیسیم متصل شدم ( کلید رمز گذاری را در اینجا با کاراکتر های ستاره نشان دادهام) و در خط دوم به کارت شبکه بیسیم آدرس آیپی اختصاص دادم. به همین سادگی و بدون درد سر.
ب) دسته دوم ابزارهایی هستند که مورد استفاده کاربران حرفهای، مدیران شبکه و محققان شبکههای بیسیم هستند وکاربران عادی معمولا نیازی به آنها ندارند. همه شبکههای بیسیم از هوا به عنوان رسانه انتقال استفاده میکنند. این بدین معناست که امکان دسترسی غیر مجاز و حملههای DoS در این شبکهها نسبت به شبکههای با سیم بیشتر است. بی شک لینوکس محبوبترین پلتفورم برای هکرها و متخصصین امنیت شبکههای بیسیم است.
زیرا نرم افزارهای مختلف با قابلیتهای متنوع برای نفوذ به شبکههای بیسیم و ارزیابی امنیت آنها تحت لینوکس وجود دارد. در حقیقت این موضوع از کد باز بودن درایورهای موجود برای لینوکس و تعهد نویسندگان این درایورها نسبت به پشتیبانی و به روزرسانی آنها سرچشمه می گیرد. اگرچه تعدادی از این نرم افزارها با استفاده از Cygwin بر روی ویندوز قابل استفاده اند اما قابلیتهای جالب انها معمولا به علت عدم پشتیبانی درایور و یا سیستم عامل غیر قابل استفاده است.
یکی از معروفترین این برنامهها، Kismet است که مطابق نظر سنجی سایت [۹] sectool.org رتبه هفتم را در لیست ۱۰۰ ابزار برتر امنیت شبکه به خود اختصاص داده است.Kismet ابزاری بسیار قدرتمند با امکانات متعدد برای هکرها و مهندسین شبکه می باشد که قادر به تشخیص access point ها و client های موجود در محدوده با استفاده از اسکن غیر فعال (Passive Scanning) ، کشف ترافیکهای مشکوک به فعالیتهای مخرب (Intrusion Detection) ، نمایش آدرس IP کامپیوترهای فعال، امکان استفاده از GPS و نمایش محل access point های کشف شده بر روی نقشه با استفاده از GPS و بسیاری امکانات دیگر می باشد.
Aircrack دیگر نرمافزار معروف از این دسته است که بیشتر به خاطر قابلیتهایش در شکستن کلیدهای رمز WEP که برای حفاظت شبکههای بیسیم از دسترسی غیر مجاز و کد کردن اطلاعات استفاده می شود است.
مشابه Kismet این نرم افزار قادر به کشف شبکههای بیسیم موجود در ناحیه و کامپیوترهای موجود در آنهاست. در صورتی که از کارت وایرلس مبتنی بر چیپست Prism ویا Atheros استفاده کنید با این نرمافزار قادر به تزریق فریم در شبکه بیسیم (Frame Injection) با MAC آدرسی غیر از آدرس کارت بیسیم خود خواهید بود (چیزی که به آن spoofing می گوییم و معمولا خرابکاران برای حملات DoS از آن استفاده میکنند.)
به هر حال ابزارهای متعدد زیادی به جز این دو برنامه وجود دارند که معرفی آنها و امکانات آنها از حوصله شما و این مقاله خارج است.
+ نوشته شده توسط امیرحسین عربی زاده در شنبه بیست و ششم خرداد 1386 و ساعت
23:57 |


