لینوکس در شبکه های محلی بیسیم در لینوکس(3164 مجموع کلمات موجود در متن) (15170 بار مطالعه شده است) 
لینوکس در
شبکه های محلی بیسیم مبتنی بر استاندارد
IEEE
802.11
۱- مقدمه
شبکههای بیسیم
درسالهای اخیر شاهد رشد فزایندهی تعداد
کاربران و در نتیجه سرمایهگذاری شرکتهای
کامپیوتری و مخابراتی بوده اند.
اگرچه
این شبکهها همگی از "هوا"
به
عنوان رسانهی انتقال استفاده میکنند
، اما از لحاظ تنوع تکنولوژی و کاربرد
بسیار متنوعند.
مثلا
شبکههای GSM
که
همان شبکههای سلولی تلفن همراه هستند
نوعی از شبکههای بیسیم محسوب میشوند.
نمونههای
دیگر از این تکنولوژی که بیشتر به شبکههای
کامپوتری مربوط می شوند Wi-Fi
(استاندارد
IEEE
802.11) شبکههای
WiMax
(استاندارد
IEEE
802.16) و
شبکههای Bluetooth
( استاندارد
IEEE
802.15) هستند.
. این
استانداردها همگی مشخصات و مکانیزمهای
لایه اول (Physical
layer)وقسمتی
از لایه دوم مدل OSI
را
در این شبکهها تعریف میکنند.
در
این مقاله من بر رویWi-Fi
که
در حال حاضریکی از داغترین موضوعات مورد
علاقه کاربران شبکههای کامپیوتری است
، بحث خواهم کرد.
امروزه تقریبا
همه مدل های کامپوترهای نوت بوک همراه با
کارت شبکه بیسیم عرضه میشوند.کارتهای
شبکه بیسیم PCI
نیز
با قیمت مناسبی در بازار یافت میشوند.حتی
شما برای PDA
خود
میتوانید کارت بیسیم خریداری کنید.
به
علاوه سادگی راه اندازی و
به کارگیری چنین شبکههایی باعث محبوبیت
آنها در بین طیف وسیعی از کاربران خانگی
و نیز شرکتها شده است .
مثلا
یک اداره میتواند با این تکنولوژی دسترسی
کامپیوترهای موجود به شبکه محلی اداره
را بدون نیاز به کابل کشی فراهم کند در
عین حال که جابجایی راحت و بی دردسر
کامیوترها حتی بدون قطع اتصال آنها از
شبکه (مثل
موقعی که با یک نوت بوک متصل هستید)
امکان
پذیر است.امروزه
خیلی از کافهها و رستورانها سرویس
اینترنت بیسیم مجانی به مشتریان خود
عرضه میکنند.
کاربران
خانگی با استفاده از سختافزارهای ارزان
قیمت، شبکه بیسیم خود را بر پا میکنند
تا بتوانند بدون نیاز به کابل کشی دسترسی
همزمان چند کامپیوتر موجود در خانه را به
اینترنتی که از طریق ADSL
دریافت
میکنند فراهم کنند یا حتی اتصال اینترنت
خود را با همسایه ها به اشتراک بگذارند
تا هزینه دسترسی برای آنها کمتر شود.
استاندارد IEEE
802.11 که
بیشتر با نام WiFi
شناخته
می شود در سال 1997
توسط
IEEE
تصویب
شد. ازآن
زمان تا کنون تغییرات و تصحیحات فراوانی
برای این استاندارد پیشنهاد شده که بعضی
از آنها تصویب شده و بعضی هنوز در حال
بررسی و تکمیلاند.
به طور
کلی در این استاندارد اتصال کامپیوترها
به بخش باسیم (Wired)
شبکه
محلی از طریق وسیله ای به نام Access
Point امکان
پذیر میگردد.در
شکل 1
نمونه
ای از این نوع شبکه را مشاهده میکنید.در
حقیقت Access
Point رابط
اتصال کامپیوترها به شبکه باسیم محسوب
میشود.
البته
شما میتوانید بدون نیاز به Access
Point دو
یا تعداد بیشتری از کامپیوتر های مجهز به
کارت شبکه بیسیم (Wireless
Network Interface Card) را
مستقیما به هم متصل کنید تا مثلا بتوانید
فایلهایی را بین آنها منتقل کنید.
بدیهی
است که در این حالت کامپیوترها امکان
دسترسی به سایرکامپیوترهای موجود در بخش
باسیم شبکه را ندارند.
(چون
Access
Point ای
در کار نیست)
به
این نوع شبکه Ad-Hoc
گفته
میشود.
شکل ۱- نمونهای از یک شبکه محلی بیسیم
این
مقدمه فقط
جهت آشنا
کردن شما
با شبکههای
محلی بیسیم
ذکر شد.
خوشبختانه
منابع متعددی
در این مورد
بر روی
اینترنت و
در سطوح
مختلف موجودند
که در صورتی
که علاقمند
باشید می
توانید به
آنها مراجعه
کنید.
۲-
لینوکس
بر روی کامپیوترهای شخصی
پشتیبانی لینوکس
از شبکههای 802.11
از هسته
ورژن 2.2.14
شروع
شد. تا
آن زمان فقط یکی دو تولید کننده درایور
لینوکس برای سخت افزارهایشان ارائه می
کردند.
چگونگی
ارتباط برنامه کاربر با درایور به شکل
واحدی نبود و برنامهی استانداردی برای
پیکربندی و راه اندازی این سختافزار
برای لینوکس وجود نداشت.
Jean Tourrilhes یکی
از محققان آزمایشگاههای HP
که در
این میان نقش بسیار فعالی داشته و هنوز
هم وبسایت او [1]
یکی از
معتبر ترین مراجع در موضوعات مختلف مربوط
به لینوکس در شبکههای بیسیم است ، در
پروژهای به نام Wireless
Extensions شروع
به تعریف و توسعه استانداردهایی برای
ارتباط برنامههای کاربردی با درایور
کارت شبکه بیسیم و سیستم عامل کرد.
اگر شما
با برنامهنویسی سطح پایین در لینوکس
آشنا باشید حتما با فراخوانی سیستم ioctl
آشنا
هستید که جزء فراخوانی های سیستم در
لینوکس می باشد و با آن برنامهنویس
فرامین خاص هر سختافزار را به درایور
آن سخت افزار فرستاده و پارامترهای مختلفی
را برای کنترل چگونگی عملکرد سخت افزار
به آن ارسال میکند.
Tourrilhes با
تعریف مجموعه ای از ماکروهای مورد نیاز
این دستور و تعریف ساختارهای داده ای مورد
نیاز این تابع (آنچه
که در زبان C
به
آنstructure
می
گوییم)
نویسندگان
درایور برای کارتهای شبکه بیسیم را
تشویق کرد تا مجوعه ای از قابلیتهای
استاندارد را در درایورهای خود بگنجانند.
به این
ترتیب برنامههای کاربردی برای به
کارگیری این قابلیتها و تنظیمات نیازی
به دستورات خاص و مجزای هر نوع کارت ندارند
و برنامه قادر به کارکردن با هرنوع کارت
و درایور خاص آن است.
اگر در
مورد اینکه چه قابلیتهایی توسط Wireless
Extensions تعریف
شده کنکجاو هستید نگاهی به محتویات فایل
wireless.h
بکنید
[۲].
البته
فراموش نکنید که ممکن است همهی امکاناتی
که در این فایل مشاهده می کنید توسط درایور
پیاده سازی نشده باشد.
یکی
دیگر از کارهای Tourrilhes
این بود
که مجموعه ای از برنامههای کاربردی مفید
برای کار با کارت شبکه بیسیم نوشت که
اکنون تقریبا در تمام توزیعهای لینوکس
به عنوان یک پکیج استاندارد وجود دارد و
به شکل پیشفرض نصب میشود.
این
مجموعه شامل iwconfig,
iwlist, iwspy, iwevent ,iwprev, iwgetid میشود
که همگی برنامه های خط فرمان هستند.
برنامه
iwconfig
مهمترین
آنهاست که با استفاده از آن میتوانید
پارامترهای مختلف کارت را مانند کانال
فرکانسی یا Access
Point ای
که میخواهید به آن متصل شوید، تنظیم
کنید.
۳-
لینوکس
بر روی سخت افزارهای شبکه
لینوکس امروزه
به عنوان یکی از پرکاربردترین سیستم عامل
های توکار (Embedded)
برای
تجهزات الکترونیکی مختلف از تلفنهای
همراه و تلویزیونها تا سوییچها ی
مخابراتی کاربرد دارد[۳].
بعضی
از Access
Point های
موجود در بازار نیز از لینوکس به عنوان
سیسم عامل خود استفاده می کنند.
به عنوان
مثال سری WRT54GL
از شرکت
Linksys که
در شکل ۲ مشاهده می کنید به شما این امکان
را می دهد که Firmware
نصب شده
بر روی آنرا با لینوکس سفارشی شده خودتان
جایگزین کنید.
جالبتر
آنکه توزیع های خاصی برای این منظور ایجاد
شده اند که DD-WRT,
Alchemy, OpenWRT معروفترین
آنها هستند.
DD-WRT که
گزینه مجبوب من نیز هست به شما این امکان
را می دهد که روتر بیسیم خود را از یک
دستگاه با کاربردهای خانگی به یک سیستم
پرقدرت با قابلیتهای فراوان تبدیل کنید.
چیزی
که برای خرید آن باید 6
یا 7
برابرقیمت
این روتر بیسیم میپرداختید.
[4]
شکل۲ روتر بیسیم Linksys مدل WRT54GL
جالبتر آنکه
شما با استفاده از سخت افزار های قدیمی و
ازران قیمت با داشتن یک کارت شبکه می
توانید access
point خود
را با استفاده از لینوکس بسازید.
به این
ترتیب با کم ترین هزینه می توانید صاحب
یک access
point با
قابلیتهای فراوان شوید.
۴-
سخت
افزار و درایورها
کارتهای شبکه
بیسیم متنوعی در بازار وجود دارند.
اگر قصد
خرید کارت شبکه بیسیم برای کامپیوتر
خود دارید و می خواهید از آن در محیط لینوکس
هم استفاده کنید بهترست پیش از خرید از
وجود درایور برای آن کارت مطمئن شوید.
اگرچه
قسمت اصلی همه این کارت ها چیپست موجود
روی آنها است.
به همین
خاطر زمانی که شما بدانید مثلا درایوری
برای مدل خاصی از چیپ ست Atheros
موجود
هست می توانید هر کارت شبکه بیسیم دارای
این چیپ ست را خریداری کنید.
در حال
حاضر تعداد تولید کنندگان عمده این چیپ
ست ها حدودا 10
تا است
که معروفترین آنها عبارتند از:
Intel, Intersil, Agere, Marvell , Atheros, Broadcom, Lucent, Atmel که
چگونگی پیاده سازی مکانیزم های مورد نیاز
استاندارد در انها متفاوت است.
بعضی
بیشتر بر پایه سختافزارر کار میکنند
و بیشتر اعمال در آنها توسط مدارهای موجود
در چیپ ست انجام میشود.
مثل
آنچه در چیپ ست های اینتل می بینیم.
برخی
هم بیشتر بر پایه ثابت افزار (Firmware)
هستند.
مانند
Atheros.
مدتی پیش که
Slackware
11 را بر
روی لپ تاپ خود نصب کردم متوجه شدم که
درایور کارت شبکه بیسیم من که یک اینتل
ipw2200
است به
شکل ماژول بارگذاری شده اما من همچنان
قادر به راه اندازی کارت بیسیم نیستم.
وقتی
دنبال فایل های باینری Firmware
در جایی
که انتظار وجود انها را داشتم گشتم متوجه
شدم که اصلا این فایل ها همراه با لینوکس
Slackwareتوزیع
نشده اند که علت آنهم اوپن سورس نبودن
آنهاست.
قضیه
اینجاست که مطابق مقررات FCC
(سازمانی
که مقررات ارتباط رادیویی را در آمریکا
وضع و نظارت میکند)
دستگاه
هایی که در باند های فرکانسی آزاد (مثل
باند فرکانسی مورد استفاده شبکه های محلی
بیسیم یا فرهای مایکروویو)
کار
میکنند باید از حد اکثر توان خروجی مشخصی
برخوردار باشند.
در بعضی
از کارت های شبکه بیسیم (مانند
کارت های مبتنی بر چیپ ست Atheros)
این
توان خروجی توسط Firmware
تنظیم
می شود.
با این
حساب اگر قرار باشد که Firmware
کارت
شبکه هم به شکل اوپن سورس در اختیار کاربران
معمولی قرارگیرد ممکن است برخی افراد
توان خروجی کارت بیسیم خود را از حد
معمول به حدی خارج از محدوده قانونی افزایش
دهند.
(اگرچه
این مساله می تواند باعث افزایش برد سیگنال
های رادیویی شود اما در عین حال امکان
تداخل سیگنال با سایر شبکه هایی که از
همین محدوده فرکانسی استفاده میکنند
نیز افزایش می یابد)
از این
رو این تولید کنندگان معمولا درایور ها
را به شکل اوپن سورس و Firmware
ها را
فقط به شکل فایلهای باینری منتشر میکنند
و به همین دلیل برخی از توزیع کنندگان
لینوکس حاضر به گنجاندن اینFirmware
ها در
توزیع خود نیستند.
به هر حال اگر
حوصله جستجو به دنبال درایور و دردسرهای
کامپایل کردن سورس کد درایور برای کارت
خود را ندارید پیشنهاد میکنم به سراغ
توزیعهایی بروید که پشتیبانی بهتری از
کارتهای وایرلس میکنند به این ترتیب
که درایورهای بیشتری را در خود دارند و
Firmware
ها را
هم در خود دارند بنابرین شما نیازی به
یافتن درایور و یا Firmware
برای
سختافزار خود ندارید.
ازاین
لحاظ بودن من اوبونتو را بسیار کامل دیدم.
اوبونتو
همه کارتهای بیسیم من را بدون هیچ درد
سری پشیبانی کرد.
حتی
کارت بیسیم Linksys
WUSB 11 که
از چیپستهای ATMEL
استفاده
میکند و من برای کامپایل کردن سورس کد
درایور آن بر روی Slackware
مدتها
مشکل داشتم توسط اوبونتو بسیار راحت و بی
دردسر راه اندازی شد.
[5] و
[6 ]لیست
بسیار مفیدی (البته
نه چندان به روز)
از
کارتهای وایرلس موجود ، چیپ ست استفاده
شده در کارتها و وضعیت پشتیبانی این
کارت هادر لینوکس ارائه می دهند.
به علاوه
در صورتی که درایوری برای کارت شما موجود
باشد آدرسی برای محل دانلود کردن درایور
موجود است.
با این
حال اگر درایور مخصوص لینوکس برای کارت
وایرلس خود پیدا نکردید هنوز هم جای
امیدواری هست.
پروژه
NDISwrapper
که
کرنل ویندوز را برای درایور بر روی لینوکس
شبیه سازی میکند به شما این امکان را می
دهد که از درایور مخصوص ویندوز بر روی
لینوکس استفاده کنید [7].
همانطور
که در صفحه ویکی وب سایت این پروژه [8]
می
توانید ببینید تعداد بسیاری از کارتهای
شبکه وایرلس تحت این پروژه پشتیبانی می
شوند.
۵-
نرم
افزارها و ابزارهای مفید
نرم افزارهایی
که به نحوی به شبکه بیسیم مربوط میشوند
به دو دسته تقسیم میکنم:
الف.
ابزارهایی که
برای کاربردهای معمولی مثل متصل شدن به
یک شبکه بیسیم و یا جستجو برای شبکههای
بیسیم موجود استفاده میشود.
این
ابزارها مورد استفاده همه کاربران هستند.
هر کسی
ممکن است بخواهد به شبکه محلی بیسیم
موجود در محل کار یا دانشگاه متصل شود.
برنامههای
گرافیکی زیادی برای این کار هستند مثلا
در میز کار KDE
می
توانید از kwifimanager
استفاده
کنید یا netapplet
در GNOME
توانایی
جستجو برای شبکههای بیسیم موجود و
اتصال به آنها را دارند.
البته
من هنوز ابزار گرافیکی کاملا مناسب و
کاملی در این زمینه ندیدهام.
با این
وجود اگر رابطه خوبی با خط فرمان دارید
بدانید که قدرت در دستان شماست !
همانطور که در
ابتدا گفتم بسته Wireless
Tools که
جزء بستههای استاندارد هر لینوکس معمولا
به صورت پیش فرض نصب می شود شامل تعدادی
برنامههای قابل اجرا در خط فرمان است
که با آنها میتوانید وظایف مختلفی انجام
دهید.
بییاید
با هم نگاهی به دوتا از مهمترین آنها
بیاندازیم.
من در
ابنجا میخواهم ابتدا شبکههای محلی
بیسیم قابل دسترس را جستجو کنم.
از
برنامه iwlist
استفاده
میکنم.توجه
کنید که eth1
نام
کارت شبکه بیسیم من می باشد.
root@amirhossein:~#
iwlist eth1 scan
:
eth1 Scan completed
Cell
01 - Address: 02:12:F0:02:59:49
ESSID:"amirhossein""
Protocol:IEEE
802.11bg
Mode:Ad-Hoc
Channel:1
Encryption
key:on
Bit
Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
11
Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48
Mb/s; 54 Mb/s
Quality=85/100
Signal level=-61 dBm
Extra:
Last beacon: 176ms ago
Cell
02 - Address: 00:0E:E8:F8:52:07
SSID:"iptime"
Protocol:IEEE
802.11bg
Mode:Master
Channel:6
Encryption
key:off
Bit
Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
11
Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48
Mb/s; 54 Mb/s
Quality=58/100
Signal level=-66 dBm
Extra:
Last beacon: 68ms ago
خروجی برنامه
iwlist دو
شبکه بیسیم را نشان میدهد.
مثلا
شبکه اولی با نام "amirhossein"
از نوع
Ad-hoc
یعنی
بدون access
point ،
در کانال فرکانسی شماره ۱، با سرعت ۵۴
مگابیت در ثانیه و با رمزگذاری می باشد.
من این
شبکه را بر پا کرده ام تا به شکل بیسیم
به کامپیوتر دوستم که از ویندوز استفاده
میکند متصل شوم.
خوب
اکنون برای اتصال به ابن شبکه به شکل زیر
عمل میکنم:
*****
:root@amirhossein:~# iwconfig eth1 essid "amirhossein"
mode ad-hoc key s
root@amirhossein:~#
ifconfig eth1 192.168.0.2 netmask 255.255.255.0
در خط اول با
دستور iwconfig
به شبکه
بیسیم متصل شدم (
کلید
رمز گذاری را در اینجا با کاراکتر های
ستاره نشان دادهام)
و در خط
دوم به کارت شبکه بیسیم آدرس آیپی
اختصاص دادم.
به همین
سادگی و بدون درد سر.
ب.
دسته دوم
ابزارهایی هستند که مورد استفاده کاربران
حرفهای، مدیران شبکه و محققان شبکههای
بیسیم هستند وکاربران عادی معمولا نیازی
به آنها ندارند.
همه
شبکههای بیسیم از هوا به عنوان
رسانه انتقال استفاده میکنند.
این
بدین معناست که امکان دسترسی غیر مجاز و
حملههای DoS
در این
شبکهها نسبت به شبکههای با سیم بیشتر
است. بی
شک لینوکس محبوبترین پلتفورم برای
هکرها و متخصصین امنیت شبکههای بیسیم
است.
زیرا
نرم افزارهای مختلف با قابلیتهای متنوع
برای نفوذ به شبکههای بیسیم و ارزیابی
امنیت آنها تحت لینوکس وجود دارد.
در حقیقت
این موضوع از کد باز بودن درایورهای موجود
برای لینوکس و تعهد نویسندگان این درایورها
نسبت به پشتیبانی و به روزرسانی آنها
سرچشمه می گیرد.
اگرچه
تعدادی از این نرم افزارها با استفاده از
Cygwin بر
روی ویندوز قابل استفاده اند اما قابلیتهای
جالب انها معمولا به علت عدم پشتیبانی
درایور و یا سیستم عامل غیر قابل استفاده
است.
یکی از معروفترین
این برنامهها، Kismet
است که
مطابق نظر سنجی سایت [9]
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
از
آن استفاده میکنند.)
به هر حال
ابزارهای متعدد زیادی به جز این دو برنامه
وجود دارند که معرفی آنها و امکانات آنها
از حوصله شما و این مقاله خارج است.
نویسنده:
امیر
حسین ملک پور a.malekpour<.at.>gmail<.dot.>com
پی نوشت:
[۱]. http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux
[۲]. معمولا این فایل را میتوانید در مسیر /usr/local/linux/include/ پیدا کنید.
[۳]. http://www.linuxdevices.com/articles/AT7792639520.htm
[۴]. http://www.wi-fiplanet.com/tutorials/article.php/3562391
[۵]. http://www.linux-wlan.org/docs/wlan_adapters.html.gz
[۶]. http://linux-wless.passys.nl
[۷]. http://ndiswrapper.sourceforge.net
[۸]. http://ndiswrapper.sourceforge.net/mediawiki/index.php/List#R
[۹]. http://www.sectools.org
PDF Version
|