هفتمین نقطه آسیب پذیر : ( Simple Network Management Protocol (SNMP
از پروتکل SNMP بمنظور کنترل ، مانیتورینگ از راه دور و پیکربندی تمامی دستگاه های پیشرفته مبتنی بر TCP/IP در ابعاد گسترده ای استفاده می شود.با اینکه استفاده از SNMP در بین پلات فرم های متفاوت شبکه استفاده می گردد، ولی در اغلب موارد از آن بمنظور پیکربندی و مدیریت دستگاههائی نظیر چاپگر ، روترها ، سوئیچ ها ، Access point ها و دریافت داده های مورد نیاز دستگاههای مانیتورینگ شبکه ، استفاده می شود .
SNMP ، از روش های متفاوتی بمنظور مبادله پیام بین ایستگاههای مدیریت SNMP و دستگاههای شبکه ای استفاده می نماید . روش های استفاده شده بمنظور برخورد با پیام های مبادله شده و مکانیزم تائید و معتبر سازی پیا م ها، از جمله عوامل اصلی در رابطه با نقاط آسیب پذیر SNMP می باشند .
نقاط آسیب پذیر مرتبط با روش های استفاده شده در SNMP ( نسخه یک ) بهمراه جزئیات مربوطه را می توان در آدرس CERT - 2002 - 03 ، مشاهده نمود . نقاط آسیب پذیر متعددی در SNMP متاثر از روش برخورد با پیام ها توسط ایستگاه های مدیریتی است . نقاط آسیب پذیر فوق، به نسخه ای خاص از SNMP محدود نبوده و محصولات متعدد ارائه شده توسط تولید کنندگان را نیز شامل می گردد . مهاجمان با استفاده از نقاط آسیب پذیر فوق ، قادر به انجام حملات متفاوت از نوع DoS ( از کار افتادن یک سرویس ) تا پیکربندی و مدیریت ناخواسته ماشین آلات و تجهیزات مبتنی بر SNMP ، می باشند .
برخی از نقاط آسیب پذیر در ارتباط با SNMP متاثر از روش های استفاده شده بمنظور تائید و معتبر سازی پیام ها در نسخه های قدیمی SNMP است ( توارث مشکلات ) . نسخه های یک و دو SNMP ، از یک " رشته مشترک " غیررمز شده بعنوان تنها گزینه موجود برای تائید پیام ها استفاده می نمایند . عدم استفاده از روش های مناسب رمزنگاری ، می تواند عاملی مهم در پیدایش نقاط آسیب پذیر باشد. نگرش پیش فرض نسبت به " رشته مشترک " که توسط تعداد زیادی از دستگاههای SNMP استفاده می گردد ، از ذیگر عوامل مهم در ارتباط با عرضه نقاط آسیب پذیر است( برخی از تولید کنندگان بمنظور افزایش سطح ایمنی مربوط به داده های حساس ، رشته را بصورت "اختصاصی " تغییر و استفاده می نمایند ) . شنود اطلاعاتی و ترافیک SNMP ، می تواند افشاء اطلاعات و ساختار شبکه ( سیستم ها و دستگاههای متصل شده به آن ) را بدنبال داشته باشد . مهاجمین با استفاده از اطلاعات فوق ، قادر به انتخاب مناسب و دقیق هدف خود بمنظور برنامه ریزی حملات خود می باشند .
اکثر تولید کنندگان بصورت پیش فرض نسخه یک SNMP را فعال و تعدادی دیگر، محصولاتی را ارائه می نمایند که قادر به استفاده ازمدل های امنیتی نسخه شماره سه SNMP نمی باشند. ( با استفاده از مدل های امنیـی ارائه شده در نسخه شماره سه SNMP ، می توان پیکربندی لازم در خصوص روش های تائید را بهبود بخشید ) .
SNMP ، مختص یونیکس نمی باشد و در ابعاد وسیعی در ویندوز ، در تجهیزات شبکه ای ، در چاپگرها ، access point ها و Bridges ، استفاده می گردد. با توجه به نتایج حاصل از آنالیز حملات مبتنی بر SNMP ، مشخص شده است که اکثر حملات در این رابطه بدلیل ضعف در پیکربندی SNMP در سیستم های یونیکس است .
سیستم های عامل در معرض تهدید
تقریبا" بر روی تمامی سیستم های یونیکس و لینوکس یک نسخه SNMP نصب و بهمراه آن عرضه می گردند. در اغلب موارد پروتکل فوق ، بصورت پیش فرض فعال می باشد. اکثر دستگاه ها و سیستم های عامل شبکه ای مبتنی بر SNMP دارای نقطه آسیب پذیر فوق بوده و در معرض تهدید قرار خواهند داشت .
نحوه تشخیص آسیب پذیری سیستم
بمنظور بررسی نصب SNMP بر روی دستگاههای موجود و متصل شده در شبکه ، می توان از یک برنامه کمکی و یا روش دستی استفاده نمود. برنامه پویشگر SNScan ، نمونه ای در این زمینه بوده که می توان آن را از طریق آدرس http://www.foundstone.com/knowledge/free_tools.html دریافت نمود. در مواردیکه امکان استفاده از ابزارهای پویشگر وجود ندارد ، می توان بررسی لازم در خصوص نصب و اجراء SNMP را بصورت دستی انجام داد. در این راستا می توان به مستندات سیستم عامل مربوطه مراجعه تا پس از آگاهی از نحوه پیاده سازی SNMP ، عملیات لازم بمنظور تشخیص فعال بودن SNMP را انجام داد . در این رابطه می توان ، جستجوی لازم در لیست پردازه ها برای یافتن "snmp" در حال اجراء بر روی پورت های 161 و 162 را انجام داد . وجود صرفا " یک نمونه SNMP ، دلیلی بر آسیب پذیری سیستم است . بمنظور آگاهی از جزیئات لازم در اینخصوص می توان از آدرس CERT - 2002 - 03 استفاده نمود . در صورت تحقق یکی از شرایط زیر و نصب SNMP ، سیستم در معرض آسیب و تهدید قرار خواهد داشت :
نحوه حفاظت در مقابل نقطه آسیب پذیر
بمنظور حفاظت در مقابل نقطه آسیب پذیر فوق ،در دو زمینه می توان اقدامات حفاظتی را سازماندهی نمود .
حفاظت در مقابل درخواست های آسیب رسان و تهدید کننده :
SNMP را در گلوگاه های ورودی شبکه فیلتر نمائید ( پورت 161 مربوط به TCP/UDP و پورت 162 مربوطه به TCP/UDP ) . عملیات فوق را در مواردیکه ضرورتی به مدیریت دستگاهها بصورت خارجی وجود ندارد ، می بایست انجام داد .
از کنترل دستیابی مبتنی بر میزبان بر روی سیستم های SNMP agent استفاده گردد . ویژگی فوق ممکن است توسط SNMP agent سیستم های عامل دارای محدودیت هائی باشد ، ولی می توان کنترل لازم در خصوص پذیرش درخواست ها توسط agent مربوطه را انجام داد. در اکثر سیستم های یونیکس ، می توان عملیات فوق را توسط یک TCP-Wrapper و یا پیکربندی Xined انجام داد . استفاده از یک فایروال فیلترینگ بسته های اطلاعاتی مبتنی بر agent بر روی یک میزبان نیز می تواند در بلاک نمودن درخواست های ناخواسته SNMP موثر واقع شود .
حفاظت در مقابل رشته های قابل حدس
غیر فعال نمودن SNMP در صورت عدم ضرورت استفاده از آن
استفاده از یک مدل امنیتی مبتنی بر کاربر SNMPv3 ، بمنظور تائید پیام ها و رمزنگاری داده ها ( در صورت امکان )
در صورت استفاده از SNMP نسخه یک و یا دو ، می بایست از یک سیاست خاص بمنظور اسامی community ( استفاده شده بعنوان رمزهای عبور ) استفاده گردد. در این راستا لازم است اسامی بگونه ای انتخاب گردند که غیر قابل حدس بوده و بصورت ادواری و در محدوده های خاص زمانی نیز تغییر داده شوند .
با استفاده از امکانات موجود می بایست بررسی لازم در خصوص استحکام اسامی در نظر گرفته شده برای رمزهای عبور راانجام داد.در این رابطه می توان از خودآموز و ابزار ارائه شده در آدرس http://www.sans.org/resources/idfaq/snmp.php ، استفاده کرد.
SNMP را در گلوگاه های ورودی شبکه فیلتر نمائید ( پورت 161 مربوط به TCP/UDP و پورت 162 مربوطه به TCP/UDP ) . عملیات فوق را در مواردیکه ضرورتی به مدیریت دستگاهها بصورت خارجی وجود ندارد ، می بایست انجام داد . پیکربندی فیلترینگ را صرفا" بمنظور ترافیک مجاز SNMP بین subnet های ممیزی شده ، انجام دهید.
هشتمین نقطه آسیب پذیر : :( Secure Shell (SSH
SSH ، یک سرویس عمومی برای ایمن سازی Login ، اجرای دستورات و ارسال فایل در یک شبکه است .اکثر سیستم های مبتنی بر یونیکس از بسته نرم افزاری OpenSSH ( نسخه فوق بصورت open-source است ) و یا نسخه تجاری SSH Communication Security ، استفاده می نمایند . با اینکه SSH دارای ایمنی مناسبتری نسبت به telnet,ftp و برنامه های R-Command می باشد ، ولی همچنان در هر دو نسخه اشاره شده ، ضعف های امنیتی متعددی وجود دارد . اکثر ضعف های موجود صرفا" اشکالات جزئی بوده و تعداد اندکی از آنان ، حائز اهمیت بوده و می بایست بلافاصله نسبت به برطرف نموودن آنان اقدام گردد . مهمترین تهدید مرتبط با ضعف های امنیتی SSH ، امکان دستیابی (سطح ریشه) به ماشین آسیب پذیر توسط مهاجمان است . با توجه به رشد چشمگیر استفاده از سرویس گیرندگان و سرویس دهندگان SSH در محیط های ویندوز، اکثر اطلاعات ارائه شده در رابطه با نقطه آسیب پذیر فوق ، به نسخه های پیاده سازی شده SSH در ویندوز و nix * ( یونیکس ، لینوکس ) بر می گردد .عدم مدیریت مناسب SSH ، خصوصا" در ارتباط با پیکربندی و بکارگیری patch ها و بهنگام سازی لازم ، می تواند مسائل و مشکلات خاص خود را بدنبال داشته باشد .
SSH2 ، ابزاری قدرتمند
تعداد زیادی از نقاط آسییب پذیر تشخیص داده شده در پروتکل هائی نظیر POP3 ( جایگزین با SSH2 SFTP ) ، برنامه Telnet ، سرویس HTTP , و ابزارهای مبتنی بر rhost ( نظیر : روش های تائید ,rsh , rlogin ,rcp ) باعث ارسال اطلاعات بصورت clear text و یا عدم پردازش مناسب session های سرویس گیرنده - سرویس دهنده می گردد. پروتکل SSH1 ، دارای پتانسیل آسیب پذیری بالائی خصوصا" در ارتباط با session موقتی رمزنشده می باشد . بدین دلیل مدیران سیستم و شبکه ، استفاده از پروتکل SSH2 را گزینه ای شایسته در اینخصوص می دانند( در مواردیکه امکان آن وجود دارد) . لازم است به این نکته مهم اشاره گردد که SSH1 و SSH2 با یکدیگر سازگار نبوده و لازم است نسخه SSH بر روی سرویس گیرنده و سرویس دهنده یکسان باشند (در این رابطه موارد استثنا ء نیز وجود دارد ) .
کاربران OpenSSH می بایست به این نکته توجه نمایند که کتابخانه های OpenSSH در مقابل پتانسیل های ایجاد شده توسط OpenSSH ، دارای نرم افزارهای آسیب پذیر مختص خود می باشند. بمنظور آگاهی از جزئیات مربوطه ، می توان از آدرس CERT Advisory 2002-23 استفاده نمود .در سال 2002 یک نسخه آلوده از OpenSSH ( نسخه فوق دارای یک trojan-horse بود ) در زمان کوتاهی گسترش و باعث آسیب های فراوانی گردید. بمنظور کسب اطلاعات بیشتر در این رابطه و اطمینان از عدم آسیب پذیری سیستم خود در مقابل نسخه آلوده فوق ، می توان از آدرس http://www.openssh.org/txt/trojan.adv استفاده نمود .
سیستم های عامل در معرض تهدید
هر نسخه یونیکس و یا لینوکس که بر روی آن OpenSSH 3.3 و یا بعد از آن ( نسخه ارائه شده در سال 2003 ،version 3.6.1) و یا SSH Communication Security's SSH 3.0.0 و یا بعد از آن ( نسخه ارائه شده در سال 2003 شماره version 3.5.2 ) نصب واجراء می گردد ، در معرض این آسیب قرار خواهد داشت .
نحوه تشخیص آسیب پذیری سیستم
با استفاده از یک پویشگر مناسب ، می توان بررسی لازم در خصوص آسیب پذیری یک نسخه را انجام داد . در این رابطه می توان با اجرای دستور " ssh -V " ، از شماره نسخه نصب شده بر روی سیستم آگاه گردید. ScanSSH ، ابزاری مفید بمنظور تشخیص از راه دور سرویس دهندگان SSH آسیب پذیر بدلیل عدم Patching ، می باشد. دستور خطی ScanSSH ، لیستی از آدرس های شبکه را برای سرویس دهندگان پویش و گزارشی در ارتباط با شماره نسخه های آنان را ارائه می نماید . آخرین نسخهScanSSH که در سال 2001 ارائه شده است را می توان از آدرس http://www.monkey.org/~provos/scanssh/ دریافت نمود .
نحوه حفاظت در مقابل نقطه آسیب پذیر
بمنظور حفاظت در مقابل نقطه آسیب پذیر فوق ، موارد زیر پیشنهاد می گردد :
نسخه SSH و یا OpenSSH را به آخرین نسخه موجود ارتقاء دهید . درصورتیکه SSH و یا OpenSSH بهمراه سیستم عامل ، نصب شده باشد ، می بایست آخرین Patchمربوطه را از سایت ارائه دهنده سیستم عامل دریافت و آن را برروی سیستم نصب نمود. در صورت استفاده از OpenSSL ، از نصب آخرین نسخه آن مطمئن شوید .
حتی المقدور سعی گردد، نسخه SSH1 به SSH2 ارتقاء یابد .در رابطه با توسعه SSH1 در آینده تصمیم خاصی وجود نداشته و توسعه SSH2 مورد نظر می باشد .
دو نسخه پیاده سازی شده SSH ، دارای مجموعه ای از گزینه های انتخابی بوده که مدیران سیستم با استفاده از آنان و با توجه به سیاست های موجود می توانند پیکربندی مناسبی در اینخصوص را انجام دهند. امکان محدودیت در دستیابی به ماشین مورد نظر و اتصال به آن ، روش های تائید کاربران و ماهیت کاربران مجاز ، نمونه هائی از گزینه های انتخابی بوده که می توان از آنان بمنظور پیکربندی مطلوب استفاده گردد.
پیکربندی مناسب سرویس گیرندگان SSH در زمان اتصال به سرویس دهنده ای که SSH را حمایت نمی نماید . در چنین مواردی سرویس گیرنده ممکن است به عقب برگشته و استفاده از rsh را در این رابطه مفید تشخیص دهد . بمنظور پیشگیری از مواردی اینچنین می بایست به کلید FallBackToRsh در فایل پیکربندی SSH ، مقدار NO را نسبت داد .
از رمزنگاری blowfish در مقابل 3DES استفاده گردد (روش 3DES ، ممکن است بصورت پیش فرض در نسخه مربوطه در نظر گرفته شده باشد ). بدین ترتیب علاوه بر افزایش سرعت در عملیات ، رمزنگاری انجام شده نیز از استحکام مناسبی برخوردار خواهد بود.
پنجمین نقطه آسیب پذیر : :Clear Text Services
تعداد زیادی از سرویس های شبکه استفاده شده توسط سیستم های مبتنی بر یونیکس ، بصورت plain text بوده و از رمزنگاری خاصی استفاده نمی نمایند. ضعف در رمزنگاری ، امکان شنود اطلاعاتی ( مشاهده ترافیک شبکه ) را فراهم و مهاجمان در ادامه امکان دستیابی به محتویات ارتباط ایجاد شده و یا اطلاعات حساس کاربران نظیر داده های مرتبط با رمز عبور را بدست خواهند آورد. مثلا" بمنظور تشخیص اطلاعات مرتبط با FTP و یا telnet ( اطلاعات login ) ، یک مهاجم ، می تواند یک sniffer را در شبکه و در محلی بین مسیر ارتباطی، مستقر نماید (بعنوان سرویس دهنده FTP و یا یا Client LAN ) . تبادل اطلاعات بین دستورات ورودی توسط سرویس گیرندگان و پاسخ های ارائه شده توسط سرویس های موجود بر روی سرویس دهنده ، بصورت plain-text خواهد بود. بدین ترتیب ،امکان ردیابی ( رهگیری ) داده و یا کلیدهای فشرده شده توسط کاربر بسادگی فراهم می گردد. اغلب مهاجمان در حملات اخیر خود از برنامه های مختص شنود اطلاعاتی استفاده و عمدتا" اینگونه برنامه ها را بر روی دستگاهها ی آسییب پذیر نصب می نمایند. در چنین مواردی ، تشخیص نام و رمز عبور کاربر در داده های جمع آوری شده ( شنود اطلاعاتی ) ، بسادگی میسر خواهد شد.جدول زیر، لیست برخی از سرویس های شبکه یونیکس را که اطلاعات را بصورت Clear Text ، مبادله می نمایند ، نشان می دهد :
آیتم ارسالی |
Clear Auth |
Clear Content |
پورت |
سرویس |
متن ، باینری |
Yes | Yes | 21 , 20 | FTP |
متن ، باینری | N/A | Yes | 69 | TFTP |
متن | Yes | Yes | 23 | telnet |
متن ، باینری | N/A | Yes | 25 | SMTP |
متن ، باینری | Yes | Yes | 110 | POP3 |
متن ، باینری | Yes | Yes | 143 | IMAP |
متن | Yes | Yes | 513 | rlogin |
متن | Yes | Yes | 514 | rsh |
متن ، باینری | Yes | Yes | 80 | HTTP |
سرویس هائی نظیر Telnet و FTP که شامل اطلاعات مربوط به تائید هویت کاربران می باشند ، اطلاعات مورد نظر را بصورت متن ارسال که بالاترین ریسک را بدنبال خواهد داشت . در چنین مواردی مهاجمان می توانند با استفاده مجدد از داده های حساس کاربران نظیر نام و رمز عبور، با خیال راحت ! به سیستم دستیابی نمایند .علاوه براین ، اجرای دستورات بصورت clear text می تواند توسط مهاجمان استفاده تا با استفاده از آنان دستورات دلخواه خود را بدون الزامی برای تائید ، اجراء نمایند. سرویس های Clear text ، می توانند زمینه تهدیدات مختلفی نظیر : تسهیل در انجام حملات ، دستیابی از راه دور ، اجرای دستورات بر روی یک سیستم مقصد ، شنود و تشخیص اطلاعات را بدنبال داشته باشد .
سیستم های عامل در معرض تهدید
تمامی نمونه های یونیکس ارائه شده ، از سرویس ها ی Clear text استفاده می نمایند. ( telnet و FTP دو نمونه متدواول در این زمینه می باشند ) . تمامی نمونه نسخه های ارائه شده یونیکس و لینوکس ( تنها استنثاء در این رابطه، مربوط به آخرین ویرایش Free/OpenBSD می باشد ) ، بصورت پیش فرض ، برخی از سرویس های فوق را نصب می نمایند .
نحوه تشخیص آسیب پذیری سیستم
موثرترین و مطمئن ترین روش بمنظور تشخیص نقطه آسیب پذیر فوق (سرویس های clear text ) ، بکارگیری نرم افزاری مشابه با ابزارهای استفاده شده (sniffer) توسط مهاجمان است. متداولترین برنامه موجود در این زمینه ، tcpdump می باشد. برای دریافت برنامه "tcpdump " می توان از آدرس http://www.tcpdump.org/ ، استفاده نمود . نحوه فعال نمودن برنامه فوق،بمنظور تشخیص هر گونه ارتباط clear text ، بصورت زیر است :
# tcpdump -X -s 1600
دراین راستا می توان از برنامه های دیگر نظیر : "ngrep" نیز استفاده نمود. برنامه فوق،امکان جستجوی الگوئی خاص نظیر "username " و یا " password " را در شبکه فراهم می نماید. ( اولین حروف، بمنظور سازگاری با حروف بزرگ احتمالی ، در نظر گرفته نشده است ) . برای دریافت برنامه فوق ، می توان از آدرس http://www.packetfactory.net/projects/ngrep/ استفاده نمود . نحوه فعال نمودن برنامه فوق ، بصورت زیر است :
# ngrep assword
در این رابطه می توان از ابزارهای متنوع دیگری بمنظور تشخیص داده های حساس کاربران ( نام و رمز عبور ) استفاده نمود . Dsniff ، متداولترین ابزار در این زمینه است . برنامه فوق ، بررسی لازم در خصوص تمامی زوج نام و رمزعبور بر روی پروتکل های Plain text حجیم، نظیر FTP ، Telnet و POP3 را انجام و پس از تشخیص، آنان را نمایش خواهد داد. برای بدست آوردن برنامه فوق می توان از آدرس http://www.monkey.org/~dugsong/dsniff/ استفاده نمود . نحوه فعال نمودن برنامه فوق ، بصورت زیر است :
# /usr/sbin/dsniff
نحوه حفاظت در مقابل نقطه آسیب پذیر
استفاده از رمزنگاری End-To-End و یا حداقل رمزنگاری Link-level می تواند در این زمینه مفید واقع گردد. برخی پروتکل ها از لحاظ رمزنگاری معادل یکدیگر می باشند( نظیر : POP3S و HTTPS ) . برای پروتکل هائی که دارای قابلیت ها و امکانات , ذاتی رمزنگاری نمی باشند ، می توان آنان را از طریق SSH : Secure Shell ، و یا SSL connection انجام داد( tunneling ) .
OpenSSH یک نمونه پیاده سازی شده متداول و انعطاف پذیر ازSSH است.( قابل دسترس در آدرس http://www.openssh.org/ ) . برنامه فوق، در اکثر نسخه های یونیکس اجراء و می توان از آن بمنظور ارتباطات از راه دور ( replaces telnet ,rlogin ,rsh ) و tunneling ( پروتکل هائی نظیر POP3,SMTP و X11 ) استفاده گردد .
دستور زیر نحوه tunnel نمودن POP3 را بر روی SSH connection نشان می دهد. بر روی سرویس دهنده POP3 ، می بایست سرویس دهنده SSH نیز اجراء گردد. در ابتدا آن را بر روی ماشین سرویس گیرنده اجراء می نمائیم :
# ssh -L 110:pop3.mail.server.com:110 username@pop3.mail.server.com
در ادامه ، برنامه سرویس گیرنده پست الکترونیکی را به localhost اشاره می دهیم ، پورت TCP 110 ( برخلاف روال معمول که بصورت : pop3.mail.server.com ، پورت 110 است ) . بدین ترتیب ، تمامی ارتباطات بین ماشین و سرویس دهنده پست الکترونیکی بصورت رمز شده انجام خواهد شد ( tunneled over SSH ) .
یکی دیگر از راه حل های متداول رمزنگاری مبتنی بر tunneling ، استفاده از stunnel است . روش فوق ، پروتکل SSL را پیاده سازی( با استفاده از OpenSSL Toolkit ) و می توان آن را بمنظور tunel نمودن پروتکل های متفاوت plain text بخدمت گرفت . برای دریافت برنامه فوق ، می توان از آدرس http://www.stunnel.org/ استفاده نمود.
ششمین نقطه آسیب پذیر : : Sendmail
Sendmail ، برنامه ای است که از آن بمنظور ارسال ، دریافت و فوروارد نمودن نامه های الکترونیکی در اغلب سیستم های یونیکس و لینوکس استفاده می گردد. Sendmail ، یکی از متداولترین MTA : Mail Transfer Agent در اینترنت بوده که بطور گسترده ای از آن بعنوان "آژانش توزیع نامه های الکترونیکی" بهمراه سرویس دهندگان پست الکترونیکی ، استفاده می گردد . Sendmail ، یکی از اهداف اولیه مهاجمان در سالیان اخیر بوده و تاکنون حملات متعددی را در ارتباط با آن شاهد بوده ایم. اکثر حملات انجام شده بدلیل قدیمی بودن و یا عدم patch مناسب نسخه های نصب شده ، با موفقیت همراه بوده است .در این رابطه می توان به چندین نمونه از حملات اخیر اشاره نمود :
- CERT Advisory CA-2003-12 Buffer Overflow in Sendmail
- CERT Advisory CA-2003-07 Remote Buffer Overflow in Sendmail
- CERT Advisory CA-2003-25 Buffer Overflow in Sendmail
خطرات و تهدیدات مرتبط با Sendmail را می توان به دو گروه عمده تقسیم نمود : از دست رفتن امتیازات که علت آن buffer overflow خواهد بود و پیکربندی نادرست سیستم که می تواند تبعات منفی را بدنبال داشته باشد ( مثلا" تبدیل یک سیستم به مرکزی آلوده برای توزیع نامه های الکترونیکی ) .عامل اصلی در بروز تهدیدات نوع اول ، عمدتا" به استفاده از نسخه های قدیمی و یا عدم patching مناسب سیستم برمی گردد.علت اصلی تهدیدات نوع دوم ، به استفاده از فایل های پیکربندی پیش فرض و نادرست برمی گردد .
سیستم های عامل در معرض تهدید
تقریبا" تمامی نسخه های لینوکس و یونیکس بهمراه یک نسخه نصب شده از Sendmail عرضه می گردند. سرویس فوق، بصورت پیش فرض فعال می باشد .
نحوه تشخیص آسیب پذیری سیستم
Sendmail ، در گذشته دارای نقاط آسیب پذیر فراوانی بوده که بتدریج وبا ارائه نسخه های جدیدتر و patch های مربوطه ، میزان آسیب پذیری آن کاهش یافته است .هر نسخه قدیمی و یا Patch نشده نرم فزار فوق در معرض آسیب قرار خواهد داشت . بمنطور مشخص نمودن شماره نسخه برنامه sendmail ، می توان از دستور زیر استفاده نمود :
echo \$Z | /usr/lib/sendmail -bt -d0
مسیر مشخص شده sendmail در دستور فوق ، با توجه به پیکربندی سیستم ، می تواند متفاوت باشد. برای آگاهی از آخرین نسخه ارائه شده Sendmail می توان از آدرس http://www.sendmail.org/current-release.html استفاده نمود .
نحوه حفاظت در مقابل نقطه آسیب پذیر
مراحل زیر بمنظور ایمن سازی و حفاظت Sendmail پیشنهاد می گردد :
نسخه موجود را به آخرین نسخه ارتقاء و از آخرین patch های موجود ، استفاده گردد . برای دریافت source code می توان از آدرس http://www.sendmail.org/ استفاده نمود. در صورتیکه نسخه sendmail بهمراه سیستم عامل ارائه شده است ( یک Package ) ، می توان برای دریافت patch مربوطه به سایت عرضه کنندگان سیستم عامل مراجعه نمود.
برنامه sendmail عموما" بصورت پیش فرض در اکثر سیستم های یونیکس و لینوکس ( حتی آنانی که بعنوان سرویس دهنده mail مورد نظر نبوده و فعالیت آنان در ارتباط با mail نخواهد بود) نصب می گردد. برنامه Sendmail را در حالت daemon بر روی ماشین های فوق ، اجراء ننمائید ( غیر فعال نمودن سوئیچ bd - ) . امکان ارسال نامه الکترونیکی توسط سیستم های فوق ، همچنان وجود خواهد داشت . در این رابطه می بایست پیکربندی سیستم بگونه ای انجام شود که به یک mail relay در فایل پیکربندی sendmail ، اشاره گردد.فایل پیکربندی، sendmail.cf نام داشته و معمولا" در آدرس etc/mail/sendmail.cf قرار دارد .
در صورتیکه لازم است sendmail در حالت daemon اجراء گردد، می بایست از صحت پیکربندی انجام شده اطمینان حاصل گردد. در این رابطه می توان از منابع اطلاعاتی زیر استفاده نمود :
http://www.sendmail.org/tips/relaying.html
http://www.sendmail.org/m4/anti_spam.html
در نسخه Sendmail 8.9.0 ، امکان open relay بصورت پیش فرض غیرفعال می باشد.تعداد زیادی از عرضه کنندگان سیستم های عامل ، مجددا" آن رادر پیکربندی پیش فرض خود فعال می نمایند. در صورت استفاده از نسخه Sendmail ارائه شده بهمراه سیستم عامل ، می بایست دقت لازم در اینخصوص را انجام داد ( عدم استفاده سرویس دهنده برای realying ).
در زمان استفاده از نسخه جدید sendmail ( سوئیچ نمودن به یک نسخه دیگر ) ، لازم است تدابیر لازم در خصوص تغییر فایل های پیکربندی ارائه شده توسط نسخه قدیمی ، اندیشیده گردد . برای آگاهی از جزئیات بیشتر در ارتباط با پیکربندی Sendmail ، می توان از آدرس http://www.sendmail.org/m4/readme.html استفاده نمود.
در مواردیکه برنامه Sendmail از منابع موجود بر روی اینترنت Download می گردد ، می بایست بمنظور اطمینان از مجاز بودن نسخه تکثیری از PGP signature استفاده نمود. در این رابطه لازم است به این نکته دقت شود که بدون بررسی integrity مربوطه به source code برنامه Sendmail ، نمی بایست از آن استفاده شود. در گذشته ، نسخه هائی از Trojan ها در Sendmail مستقر تا در زمان مناسب حرکت مخرب خود را آغاز نمایند . بمنظور دریافت اطلاعات تکمیلی در این رابطه می توان از آدرس CERT Advisory CA-2002-28 استفاده نمود. کلیدهای استفاده شده بمنظور sign نمودن برنامه Sendmail دریافتی را می توان از آدرس http://www.sendmail.org/ftp/PGPKEYS بدست آورد . در صورت فقدان PGP ، می بایست از MD5 Checksum بمنظور بررسی integrity کد منبع Sendmail ، استفاده گردد.
برای کسب اطلاعات بیشتر می توان از منابع اطلاعاتی زیر استفاده نمود :
http://www.sendmail.org/secure-install.html
http://www.sendmail.org/m4/security_notes.html
http://www.sendmail.org/~gshapiro/security.pdf
سومین نقطه آسیب پذیر : Apache Web Server
آپاچی ( Apache) یکی از متداولترین سرویس دهندگان وب بر روی اینترنت است . در مقایسه با سرویس دهنده وب مایکروسافت ( IIS ) ، آپاچی مسائل و مشکلات امنیتی کمتری را داشته ولی همچنان دارای آسیب پذیری خاص خود است .
علاوه بر وجود نقاط آسیب پذیر در ماژول ها و کد آپاچی ( CA-2002-27 و CA-2002-17 ) ، تکنولوژی های CGI و PHP نیز دارای نقاط آسیب پذیری خاص خود بوده که ضعف های امنیتی آنان به سرویس دهنده وب نیز سرایت می گردد. در صورت وجود نقاط آسیب پذیر در سرویس دهنده آپاچی و یا عناصر مرتبط به آن ، زمینه تهدیدات زیر فراهم می گردد :
سیستم های عامل در معرض تهدید
تمامی سیستم های یونیکس قادر به اجراء آپاچی می باشند . آپاچی بصورت پیش فرض بر روی تعداد زیادی از نسخه های یونیکس و لینوکس ، نصب می گردد .علاوه بر امکان فوق ، آپاچی را می توان بر روی میزبانی دیگر که از سیستم عاملی مختلف نظیر ویندوز استفاده می نماید نیز نصب نمود. این نوع از نسخه های آپاچی نیز می تواند دارای نقاط آسیب پذیر خاص خود باشد .
نحوه تشخیص آسیب پذیری سیستم
بمنظور آگاهی و کسب اطلاعات لازم در خصوص نحوه تشخیص آسیب پذیری سرویس دهنده وب آپاچی ، می توان از آدرس های زیر استفاده نمود :
آدرس های اشاره شده ، دارای اطلاعات فنی لازم بمنظور نحوه تشخیص آسیب پذیری سیستم و پیشنهادات لازم در خصوص ارتقاء وضعیت امنیتی می باشند . استفاده از آدرس: http://httpd.apache.org/ نیز در این زمینه مفید است .
نحوه حفاظت در مقابل نقطه آسیب پذیر
بمنظور حفاظت یک سرویس دهنده وب آپاچی ، پیشنهادات زیر ارائه می گردد :
اطمینان از نصب آخرین patch ارائه شده
- در این رابطه می توان از آدرس http://httpd.apache.org/ بمنظور آگاهی از آخرین وضعیت نسخه ها و Patch levels استفاده نمود.
- بمنظور دستیابی به Source code اکثر نسخه های آپاچی، می توان از آدرس http://httpd.apache.org/download.cgi استفاده نمود.
- بمنظور آگاهی و دریافت آخرین Patch های ارائه شده می توان از آدرس http://www.apache.org/dist/httpd/patches/ استفاده نمود.
اطمینان از patching عناصر کلیدی سیستم عامل که آپاچی بعنوان مرجع از آنان استفاده می نماید .در این رابطه لازم است که صرفا" ماژول های ضروری بمنظور صحت عملکرد سرویس دهنده ، در آپاچی کمپایل گردند .لازم است به این نکته اشاره گردد که کرم( mod_ssl ( CA-2002-27 نمونه ای کامل در این زمینه بوده که از نقاط آسیب پذیر در( OpenSSL ( CA-2002-23 استفاده نموده است .
از اجرای آپاچی بعنوان ریشه ، اجتناب و می بایست بدین منظور ، کاربر و یا گروهی خاص با حداقل مجوز ایجاد گردد. سایر پردازه های سیستم ضرورتی به اجراء تحت کاربر و یا گروه فوق را نخواهند داشت .
Chroot ، پتانسیلی است که باعث تعریف مجدد محدوده یک برنامه می گردد . در حقیقت chroot ، باعث تعریف مجدد دایرکتوری ROOT" و یا "/" برای یک برنامه و یا یک Login session می گردد .chroot می تواند بعنوان یک لایه تدافعی استفاده گردد . مثلا" در صورتیکه فردی به کامپیوتر شما دستیابی پیدا نماید ، قادر به مشاهده تمامی فایل های موجود بر روی سیستم نخواهد بود . علاوه بر محدودیت فوق ، محدودیت هائی در خصوص اجرای برخی از دستورات نیز بوجود می آید.در این رابطه یک دایرکتوری با نام chroot/ ، ایجاد و تمامی سرویس های مورد نطر با یک انظباط خاص در آن مستقر می گردند . مثلا" سرویس دهنده آپاچی در chroot/httpd / قرار می گیرد. با توجه به موارد فوق ، می بایست آپاچی را در یک محیط chroot اجراء نمود . درصورتیکه آپاچی بصورت chrooted اجراء و فعالیت خود را آغاز نماید ، امکان دستیابی آن به سایر بخش های موجود در ساختار دایرکتوری سیستم عامل و خارج از chroot وجود نخواهد داشت . بدین ترتیب یک لایه تدافعی مناسب در خصوص سوء استفاده های احتمالی ایجاد می گردد. بعنوان نمونه ، ممکن است یک shell فراخوانده شده و با توجه به اینکه bin/sky / در chroot قرار ندارد ، می تواند زمینه سوء استفاده احتمالی را فراهم نماید. لازم است به این نکته مهم نیز اشاره گردد که Chrooting آپاچی می تواند اثرات جا نبی نامطلوبی را در ارتباط با CGI,PHP ، بانک های اطلاعاتی و سایر ماژول ها و یا ارتباطاتی که محیط سرویس دهنده وب بمنظور سرویس دهی به آنان نیازمند دستیابی به توابع کتابخانه ای خارجی است را بدنبال داشته باشد .روش های متعددی بمنظور chrooting وجود داشته و می بایست از مستندات نرم افزار مورد نظر ، بعنوان یک منبع اطلاعاتی مناسب در خصوص ارائه راهکارهای مربوطه ، استفاده گردد
بمنظور مدیریت یک سرویس دهنده وب ، لازم است فیدبک های لازم در خصوص فعالیت و کارآئی سرویس دهنده و سایر مسائلی که ممکن است یک سرویس دهنده با آنان برخورد نماید را اخذ و در ادامه با آنالیز آنان تمهِیدات لازم در خصوص مسائل موجود را بکار گرفت . سرویس دهنده آپاچی ، قابلیت ها و پتانسیل های انعطاف پذیری را در خصوص logging ارائه می نماید . بنابراین لازم است عملیات logging با دقت نظر بالا بصورت موثر و موشکافانه انجام تا امکان ردیابی هر نوع فعالیت امنیتی غیر مجاز و یا رفتار غیر منطقی سرویس دهنده ، فراهم گردد .پیشنهاد می گردد که با یک نظم خاص از اطلاعات موجود در فایل های لاگ ، آرشیو تهیه شود . بدین ترتیب ، امکان مدیریت فایل های لاگ و بررسی آنان فراهم خواهد شد. بمنظور آشنائی با فرمت های متفاوت لاگ می تواند از منابع زیر استفاده نمود :
- برای Apache 1.3.x از آدرس http://httpd.apache.org/docs/logs.html استفاده شود .
- برای Apache 2.0.x از آدرس http://httpd.apache.org/docs-2.0/logs.html استفاده شود .
در موارد متفاوتی و با توجه به شرایط پیش آمده ممکن است محتوی فایل های لاگ بتنهائی کافی نباشد . وضعیت فوق در مواردیکه از PHP ، CGI و یا سایر تکنولوژی های مبتنی بر اسکریپت استفاده می گردد ، تشدید و می توان بمنظور افزایش توان آنالیز یک تهاجم و سوءاستفاده از یک ضعف امنیتی ، اقدام به ثبت لاگ های مربوط به GET و POST نمود.لاگ نمودن عملیات مرتبط به GET و POST می تواند از طریق mod_Security صورت پذیرد. ModSecurity یک سیستم تشخیص مزاحمین ( Intruder detection ) یوده و پیشگیری های لازم در خصوص یک برنامه وب را ارائه می نماید . سیستم فوق بهمراه سرویس دهنده وب مستقر و یک پوشش امنیتی مناسب را در جهت پیشگیری از یک تهاجم در ارتباط با برنامه های وب فراهم می نماید . ModSecurity ، از سرویس دهنده آپاچی حمایت می نماید .
- http://www.modsecurity.org/
- http://www.securityfocus.com/infocus/17064.152.44.126%20152.44.126
PHP، CGI،SSI و سایر اسکریپت ها . در این رابطه موارد زیر پیشنهاد می گردد :
- PHP,CGI,SSI و سایر زبان های اسکریپت را غیر فعال نمائید ( مگر اینکه ضرورتی جدی در رابطه با آنان وجود داشته باشد ).
- SSI یا Server Side Includes را که می تواند زمینه مساعدی بمنظور سوء استفاده از سرویس دهنده و الزام آن در جهت اجرای کد ناخواسته گردد را غیر فعال نمائید .
- در صورتیکه ضروری است که از PHP,CGI,SSI و یا سایر زبان های اسکریپت استفاده گردد ، می بایست از SuEXEC استفاده شود. suEXEC ، امکان اجرای اسکریپت ها تحت آپاچی بهمراه یک User Id در مقابل یک Apache User Id را فراهم می نماید در حقیقت suEXEC این امکان را برای کاربران آپاچی فراهم می نماید که قادر به اجرای برنامه های SSI و CGI تحت یک User Id متفاوت نسبت به User Id مربوط به فراخوانی سرویس دهنده وب باشند.بدین ترتیب تهدیدات امنیـتی کاهش و امکان نوشتن و اجرای برنامه های SSI و CGI اختصاصی نوشته شده توسط مهاجمان ، حذف خواهد شد . استفاده از suEXEC ،می بایست توام با آگاهی و دانش لازم باشد چراکه در صورت استفاده نادرست و یا عدم پیکربندی مناسب و شناخت نسبت به مدیریت setupid Root ، خود باعث بروز حفره های امنیتی دیگر خواهد شد.. در این رابطه و بمنظور آشنائی با نحوه عملکرد و استفاده از suEXEC می توان از آدرس های زیر استفاده نمود:
-- برای Apache 1.3.x از آدرس http://httpd.apache.org/docs/suexec.html استفاده شود .
-- برای Apache 2.0.x از آدرس http://httpd.apache.org/docs-2.0/suexec.html استفاده شود.
- بررسی لازم در خصوص محتوی دایرکتوری cgi-bin و سایر دایرکتوری های شامل اسکریپت ها انجام و لازم است تمامی اسکریپت های پیش فرض نمونه ، حذف گردند.
- ایمن سازی PHP . پرداختن به موضوع فوق با توجه به گستردگی مطالب از حوصله این مقاله خارج بوده و صرفا" به دو نمونه مهم در اینخصوص اشاره می گردد :
- غیر فعال نمودن پارامترهائی که باعث ارائه اطلاعات در HTTP header می گردد .
- حصول اطمینان از اجرای PHP در حالت safe
برای دریافت اطلاعات تکمیلی دراین خصوص می توان از آدرس http://www.securityfocus.com/printable/infocus/1706 استفاده نمود .
- استفاده از ماژولهای اضافه بمنظوربهبود وضعیت امنیتی. مثلا"ماژول mod_Security می تواند باعث حفاظت در مقابل Cross Site Scripting: XSS ، شود . برای آشنائی و مشاهده اطلاعات تکمیلی در این خصوص می توان از آدرس http://www.modsecurity.org/ استفاده نمود.
- ممیزی و بررسی اسکریپت ها برای نقاط آسیب پذیر شامل XSS & SQL Injection نیز حائز اهمیت است . در این رابطه می توان از ابزارهای متعددی استفاده نمود. نرم افزار Nikto ( قابل دسترس در آدرس http://www.cirt.net/code/nikto.shtml ) یکی از مناسبترین ابزارهای پویش و بررسی CGI است .
چهارمین نقطه آسیب پذیر : account هائی با رمز عبور ضعیف و یا فاقد رمز عبور
استفاده از رمزعبور، روش های تائید کاربر و کدهای امنیتی در هر گونه تعامل ارتباطی بین کاربران وسیستم های اطلاعاتی ، امری متداول و رایج است . اکثر روش ها ی تائید کاربران ، نظیر حفاظت فایل و داده ، مستقیما" به رمزهای عبور ارائه شده توسط کاربران ، بستگی خواهد داشت . پس از تائید کاربران ، امکان دستیابی آنان به منابع مشخص شده فراهم و هر یک از آنان با توجه به امتیازات و مجوزهای نسبت داده شده ، قادر به استفاده از منابع موجودخواهند بود. در اغلب موارد ، فعالیت کاربرانی که مجاز بودن آنان برای دستیابی به منابع ، تائید شده است ، لاگ نشده و یا در صورتیکه فعالیت آنان ثبت گردد ، کمتر سوء ظنی به آنان می تواند وجود داشته باشد . ( آنان پس از تائید وارد میدانی شده اند که بدون هیچگونه ردیابی ، قادر به انجام فعالیت های گسترده ای خواهند بود) . بنابراین ، رمز عبور دارای نقشی حیاتی و اساسی در ایجاد اولین سطح دفاع در یک سیستم اطلاعاتی بوده و از دست رفتن رمز عبور و یا ضعف آن می تواند سیستم را در معرض تهدیدات جدی قرار دهد . مهاجمان پس از دستیابی به رمز عبور کاربران تائید شده ( استفاده از مکانیزم های متفاوت ) قادر به دستیابی منابع سیستم و حتی تغییر در تنظیمات سایر account های تعریف شده و موجود بر روی سیستم خواهند بود،عملیاتی که می تواند پیامدهای بسیار منفی را بدنبال داشته باشد . پس می بایست بپذیریم که وجود یک account ضعیف و یا فاقد رمز عبور می تواند تهدیدی جدی در یک سازمان باشد . در این راستا علاوه بر اینکه می بایست از پتانسیل های ارائه شده توسط سیستم عامل با دقت استفاده نمود ، ضروری است ، تابع یک سیاست امنیتی تدوین شده در رابطه با رمز عبور در سازمان متبوع خود باشیم . تعریف و نگهداری یک account بهمراه رمز عبور مربوطه در سازمان ما تابع چه سیاست امنیتی است ؟ مهمترین و متداولترین نقاط آسیب پذیر در ارتباط با رمز عبور شامل موارد زیر است :
الگوریتم های Hashing رمز عبور( رمزنگاری مبتنی بر کلید عمومی بر پایه یک مقدار hash ، استوار بوده و بر اساس یک مقدار ورودی که دراختیار الگوریتم hashing گذاشته می گردد ، ایجاد می گردد. در حقیقت مقدار hash ، فرم خلاصه شده و رمز شده ای از مقدار اولیه خود است ) ، شناخته شده بوده و در اغلب موارد مقدار Hashe بدست آمده ، بگونه ای ذخیره می گردد که امکان مشاهده آن توسط سایرین وجود خواهد داشت. مناسبترین نوع حفاظت در این راستا ، تبعیت از یک سیاست رمز عبور قدرتمند بوده که در آن دستورالعمل ها ی لازم برای تعریف یک رمز عبورمناسب مشخص و در ادامه با استفاده از ابزارهای موجود، بررسی لازم در خصوص استحکام و بی نقص بودن رمز عبور صورت گیرد.
سیستم ها ی در معرض آسیب پذیر
هر سیستم عامل و یا برنامه ای که فرآیند تائید کاربران آن براساس یک User ID و رمز عبور باشد ، در معرض این تهدید خواهد بود.
نحوه تشخیص آسیب پذیری سیستم
در صورتیکه از account هائی استفاده می شود که بین کاربران متعدد و یا کارکنان موقت یک سازمان به اشتراک گذاشته شده و یا کاربران از رمزهای عبور بدرستی حفاظت ننمایند، پتانسیل نفوذ به شبکه توسط یک مهاجم فراهم می گردد.پیکربندی account های جدید کاربران با یک رمز عبور مشابه و یا رمز عبوری که بسادگی قابل حدس باشد نیز فرصتی مناسب را در اختیار مهاجمان بمنظور دستیابی به منابع اطلاعاتی موجود در یک سازمان قرار خواهد داد .
لازم است در خصوص ذخیره سازی رمز عبور hashes تصمیم گیری و مشخص شود که محل استقرار و ذخیره سازی آنان در etc/passwd / و یا etc/shadow / می باشد.قابلیت خواندن فایل etc/passwd /، می بایست توسط تمامی کاربران شبکه وجود داشته تا زمینه و امکان تائید کاربران فراهم گردد. در صورتیکه فایل فوق ، شامل رمزعبور hashed نیز باشد ، در ادامه و پس از دستیابی کاربران به سیستم ، امکان خواندن مقادیر hash فراهم و مهاجمان می توانند با استفاده از یک برنامه cracker ، تلاش خود را جهت شکستن و تشخیص رمز عبور آغاز و به سرانجام برسانند . فایل etc/shadow/ ، صرفا" برای root قابل خواندن بوده و مکانی مناسب بمنظور ذخیره نمودن مقادیر hashes است . در صورتیکه account های محلی ، توسط /etc/shadow حفاظت نشود ، ریسک رمزهای عبور افزایش خواهد یافت . اکثر سیستم های عامل جدید بصورت پیش فرض از etc/shadow / بمنظور ذخیره سازی رمز عبور hashes استفاده می نمایند ( مگر اینکه شرایط فوق توسط نصب کننده تغییر یابد ). در این رابطه می توان از الگوریتم MD5 بمنظور hash نمودن رمزهای عبور نیز استفاده نمود. الگوریتم فوق، بمراتب از الگوریتم قدیمی crypt ایمن تر است .
NIS)Network Information System) ، یک بانک اطلاعاتی توزیع شده بمنظور مدیریت یک شبکه است . در حقیقت NIS ، استانداردی برای اشتراک فایل ها بین سیستم های کامپیوتری متعدد را فراهم و شامل مجموعه ای از سرویس هائی است که بمنزله یک بانک اطلاعاتی از سرویس ها عمل نموده و اطلاعات مربوط به مکان سرویس ( Mapping ) را در اختیار سایر سرویس های شبکه نظیر( Network File System (NFS) ، قرار می دهد. با توجه به ماهیت طراحی بعمل آمده ، فایل های پیکربندی NIS ، شامل رمزهای عبور hash بوده و این امر می تواند امکان خواندن آنان را برای تمامی کاربران فراهم و عملا" رمزهای عبور در معرض تهدید قرار گیرند .نسخه های جدید پیاده سازی شده از NIS ، نظیر +NIS و یا LDAP عموما" دارای استحکام لازم در ارتباط با رمزهای عبور hashes می باشند( مگر اینکه شرایط فوق توسط نصب کننده تغییر یابد). تنظیم و پیکربندی نسخه های فوق ( نسخه های جدید ) ، مشکل تر بوده و همین امر می تواند استفاده از آنان را با تردید و مشکل مواجه نماید .
حتی اگر رمزهای عبور hashes توسط /etc/shadow و یا امکانات پیاده سازی شده ، محافظت گردند ، امکان حدس و تشخیص رمزهای عبور توسط سایر افراد وجود خواهد داشت . در این رابطه می توان به موارد متعدد دیگری نظیر : ضعف رمز عبور ، وجود account های غیر استفاده مربوط به کارکنانی که سازمان خود را ترک نموده اند ، اشاره نمود .سازمان ها معمولا" در رابطه با غیر فعال نمودن account مربوط به کاربران قدیمی کوتاهی نموده و لازم است در این رابطه از روش های خاصی استفاده گرد.
نصب های پیش فرض سیستم های عامل و یا شبکه توسط سازندگان و یا مدیران سیستم و یا شبکه ، می تواند نصب مجموعه ای از سرویس های غیرضروری را نیز بدنبال داشته باشد. رویکرد فوق،با اینکه عملیات نصب سیستم عامل و سرویس ها ی مربوطه را تسهیل می نماید ولی مجموعه ای از سرویس های غیر ضروری و account هائی که بصورت پیش فرض ضعیف ویا فاقد رمز عبور می باشند را بهمراه بر روی سیستم مستقر و پیکربندی می نماید.
نحوه حفاظت در مقابل نقطه آسیب پذیر
بهترین و مناسبترین دفاع در مقابل ضعف رمزهای عبور ، تبعیت از یک سیاست امنیتی مستحکم بوده که دستورالعمل های لازم کهه موجب می شود رمزهای عبور مناسب و مستحکمی توسط کاربران تعریف و توسط مدیران سیستم بصورت مستمر پیوستگی و استحکام آنان بررسی می گردد با حمایت کامل سازمان . مراحل زیر توصیه های لازم برای ارائه یک سیاست امنیتی مناسب می باشد :
اطمینان ازاستحکام و انسجام رمز های عبور . با استفاده از سخت افزار مناسب و اختصاص زمان کافی ، می توان هر رمز عبوری را crack نمود. در این راستا می توان با استفاده ازروش های ساده و در عین حال موفقیت آمیز، عملیات تشخیص رمز عبور را انجام داد . اغلب برنامه های تشخیص دهنده رمزعبوراز روشی موسوم به "حملات مبتنی بر سبک دیکشنری " ، استفاده می نمایند. با توجه به اینکه روش های رمز نگاری تا حدود زیادی شناخته شده می باشند ، برنامه های فوق ، قادر به مقایسه شکل رمز شده یک رمز عبور در مقابل شکل های رمز شده کلمات دیکشنری می باشند( در زبان های متعدد و استفاده از اسامی مناسب بهمراه جایگشت های مختلف آنان ) . بنابراین ، رمز عبوری که ریشه آن در نهایت یک کلمه شناخته شده باشد ، دارای استعداد ذاتی در رابطه با این نوع از حملات خواهد بود . تعداد زیادی از سازمان ها ، آموزش های لازم در خصوص نحوه تعریف رمزهای عبور را به کارکنان خود داده و به آنان گفته شده است که رمزهای عبور مشتمل بر ترکیبی از حروف الفبائی و کاراکترهای ویژه را برای خود تعریف نمایند.متاسفانه اکثر کاربران این موضوع را رعایت ننموده و بمنظور تعریف یک رمز عبور با نام "password" ، صرفا" اقدام به تبدیل حروف به اعداد و یا حروف ویژه می نمایند ( pa$$w0rd) . چنین جایگشت هائی نیز قادر به مقاومت در مقابل یک تهاجم مبتنی بر دیکشنری نبوده و "pa$$w0rd" به روش مشابهی که "password" تشخیص داده می شود ، crack خواهد شد .
یک رمز عبور خوب ، نمی بایست از ریشه یک کلمه و یا نام شناخته شده ای اقتباس شده باشد .در این راستا لازم است به کاربران آموزش لازم در خصوص انتخاب و ایجاد رمزهای عبور از موارد تصادفی نظیر یک عبارت ، عنوان یک کتاب ،نام یک آواز و یا نام یک فیلم داده شود. با انتخاب یک رشته طولانی که بر اساس رویکردهای خاصی می تواند انتخاب گردد( گرفتن اولین حرف هر کلمه ، جایگزینی یک کاراکتر خاص برای یک کلمه ، حذف تمامی حروف صدادارو سایر موارد ) ، کاربران قادر به ایجاد رمزهای عبور مشتمل بر ترکیبی از حروف الفبائی و حروف ویژه بوده که در صورت مواجه شدن با حملات مبتنی بر دیکشنری ، تشخیص آنان بسختی انجام می شود. لازم است به این نکته نیز اشاره گردد که رمزعبور می بایست براحتی بخاطر سپرده شده و بازیابی ( یادآوری)آن مشکل نباشد ( هدف از ذخیره سازی ، بازیابی است اگر چیزی را ذخیره نمائیم ولی در زمان مورد نظر قادر به بازیابی آن نباشیم ، سیستم ذخیره و بازیابی ما با اشکال مواجه شده است ! ). پس از تدوین دستورالعمل لازم بمنظور تولید رمزهای عبور مناسب و آموزش کاربران بمنظور پایبندی به اصول امنیتی تعریف شده ، می بایست از روتین ها ی جانبی متعددی بمنظور اطمینان از پیروی کاربران از دستوراالعمل های اعلام شده ، استفاده گردد. بهترین گزینه در این راستا ، بررسی صحت رمزهای عبور پس از اعمال تغییرات توسط کاربران است .
پس از ارائه دستورالعمل ها ی لازم و مناسب برای ایجاد رمزهای عبور ، روتین های تکمیلی خاصی می بایست ایجاد تا این اطمینان حاصل گردد که کاربران پایبند به دستورالعمل های ارائه شده بوده اند. بهترین روش در این زمینه ، بررسی صحت اعتبار رمزهای عبور پس از اعمال تغییرات توسط کاربران است . اکثر نمونه های یونیکس و لینوکس می توانند از Npasswd بمنظور بررسی رمز عبور در مقابل سیاست امنیتی موجود استفاده نمایند. سیستم های PAM-Enabled نیز می توانند از Cracklib ( کتابخانه لازم بمنظور هماهنگی با Crack ) بمنظور بررسی رمزهای عبور ایجاد شده ، استفاده نمایند.اکثر سیستم های PAM-enabled را می توان بگونه ای پیکربندی نمود که رمزهای عبوری را که با سیاست های مشخص شده مطابقت ندارد ، رد نمایند .
درمواردیکه امکان استفاده از ابزارهائی نظیر Npasswd و یا کتابخانه های PAM-Enabled ، وجود ندارد، مدیران سیستم و شبکه می توانند از برنامه های کاربردی Cracking در حالت stand-alone و بعنوان یک روتین کنشگرایانه مستمر، استفاده نمایند. LC4 )l0phtcrack version 4) و John the Ripper ، نمونه هائی از برنامه های فوق ، می باشند. لازم است مجددا" به این موضوع اشاره گردد که بدون کسب مجوز لازم از مدیران ارشد سیستم در سازمان ، نمی بایست از برنامه های cracking استفاده گردد.پس از کسب مجوزهای لازم ، می توان عملیات فبررسی رمزهای عبور را بر روی یک ماشین حفاظت شده انجام داد. به کاربرانی که رمزهای عبور آنان crack می گردد، بصورت محرمانه وضعیت فوق گزارش و دستورالعمل های لازم در خصوص نحوه انتخاب یک رمز عبور مناسب نیز به آنان ارائه گردد .اخیرا" و در پاسخ به رمزهای عبور ضعیف ، استفاده از روش هائی دیگر بمنظور تائید کاربران، نظیر بیومتریک (زیست سنجی ) ، نیز مورد توجه واقع شده است .
حفاظت رمزهای عبور مستحکم . در صورتیکه رمزهای عبور hashes در etc/passwd / ذخیره می گردند ، سیستم را بهنگام نموده تا از /etc/shadow استفاده گردد . در صورتیکه بر روی سیتستم NIS و یا LDAP اجراء که امکان حفاظت hashes وجود نداشته باشد ، هر کاربری قادر به خواندن رمزهای عبور hashes و تلاش بمنظور cracking آنان ، خواهد بود.در این رابطه می بایست بررسی لازم در خصوص استفاده از گزینه های ایمن تری از نسخه های NIS و LDAP را انجام داد. تا زمانیکه این نوع برنامه های غیر ایمن وجود داشته و با نمونه های ایمن جایگزین نشده اند، می بایست مجوزهای مربوطه را ایمن و از ابزارهای کنشکرایانه بصورت مستمر استفاده گردد.در این رابطه پیشنهاد می گردد که در مقابل استفاده از الگوریتم قدیمی Crypt بمنظورhash نمودن رمزهای عبور از الگوریتم MD5 استفاده گردد.
حتی اگر رمزهای عبور ، مستحکم و قدرتمند باشند ، در صورت عدم حفاظت آنان توسط کاربران ، سیستم های موجود در یک سازمان در معرض تهدید قرار خواهند گرفت . یک سیاست امنیتی مناسب ، می بایست شامل دستورالعمل های لازم بمنظور آموزش کاربران در رابطه با حفاظت رمزهای عبور می باشد.عدم ارائه رمز عبور به افراد دیگر، عدم نوشتن رمز عبور در محلی که امکان خواندن آن برای دیگران وجود داشته باشد و حفاظت اتوماتیک فایل هائی که رمزهای عبور در آن ذخیره شده اند ، از جمله مواردی می باشند که می بایست به کاربران آموزش داده شود. اغلب کاربران در مواجهه با پیامی مشابه "Your password has expired" که نشاندهنده اتمام عمر مفید یک رمز عبور است ، یک رمز عبور ضعیف را برای خود انتخاب می نمایند ، بنابراین لازم است در فرصت مناسب و قبل از برخورد با اینچنین پیام هائی ، به کاربران آموزش های لازم ارائه گردد.
کنترل دائم و پیوسته accounts . هر account مدیریتی و یا مبتنی بر سرویس که از آن استفاده نمی گردد، می بایست غیر فعال و یا در صورت امکان از روی سیستم حذف گردد. هر account مدیریتی و یا مبتنی بر سرویس که از آن استفاده می گردد ، می بایست دارای رمزعبورجدید و مستحکمی باشد. پیکربندی account های جدید کاربران با رمزهای عبور اولیه (تولیده شده بصورت تصادفی) و ضرورت تغییر رمزهای عبور توسط کاربران و در اولین log in نیز می تواند در این زمینه مفید واقع شود. ممیزی account ها بر روی سیستم را انجام و لازم است در این رابطه یک لیستی اصلی ایجاد گردد .در این رابطه می بایست رمزهای عبور در ارتباط با سیستم هائی نظیر روترها ، چاپگرهای دیجیتالی متصل شده به اینترنت و سایر موارد دیگر نیز مورد بررسی قرار گرفته و روتین هائی خاص بمنظور افزودن account های تائید شده به لیست و یا حذف account هائی که ضرورتی به استفاده از آنان نمی باشد ، پیاده سازی و همواره خود را پایبند به آن بدانیم .اعتبار لیست را در فواصل زمانی خاصی بررسی تا از بهنگام بودن آن اطمینان حاصل گردد.از روتین های خاصی بمنظورحذف account متعلق به کارکنان و یا پیمانکارانی که سازمان را ترک نموده اند ، استفاده گردد .
منبع:srco.ir
مهمترین نقاط آسیب پذیر یونیکس:
یونیکس ، یکی از سیستم های عامل رایج در جهان بوده که امروزه در سطح بسیار وسیعی استفاده می گردد . تا کنون حملات متعددی توسط مهاجمین متوجه سیستم هائی بوده است که از یونیکس ( نسخه های متفاوت ) بعنوان سیستم عامل استفاده می نمایند . با توجه به حملات متنوع و گسترده انجام شده ، می توان مهمترین نقاط آسیب پذیر یونیکس را به ده گروه عمده تقسیم نمود :
BIND Domain Name System
Remote Procedure Calls (RPC)
Apache Web Server
General UNIX Authentication Accounts with No Passwords or Weak Passwords
Clear Text Services
Sendmail
Simple Network Management Protocol (SNMP)
Secure Shell (SSH)
Misconfiguration of Enterprise Services NIS/NFS
Open Secure Sockets Layer (SSL)
در بخش اول این مقاله ، به بررسی BIND Domain Name System وRemote Procedure Calls (موارد یک و دو) ، خواهیم پرداخت .
اولین نقطه آسیب پذیر : BIND Domain Name System
نرم افزار BIND ) Berkeley Internet Name Domain) ، در مقیاس گسترده ای و بمنظور پیاده سازی DNS)Domain Name Service) ، استفاده می گردد. BIND ، سیستمی حیاتی است که از آن بمنظور تبدیل اسامی میزبان ( نظیر : http://www.srco.ir/ ) به آدرس IP ریجستر شده ،استفاده می گردد .با توجه به استفاده وسیع از BIND و جایگاه حیاتی آن در یک شبکه کامپیوتری ، مهاجمان آن را بعنوان یک هدف مناسب بمنظور انجام حملات ، خصوصا" از نوع DoS)Denila Of Service) انتخاب و حملات متنوعی را در ارتباط با آن انجام داده اند. حملات فوق،از کارافتادن سرویس DNS و عدم دستیابی به اینترنت برای سرویس های مربوطه و میزبانان را می تواند بدنبال داشته باشد. با اینکه پیاده کنندگان BIND ، تلاشی مستمر را از گذشته تا کنون بمنظور برطرف نمودن نقاط آسیب پذیر انجام داده اند ، ولی هنوز تعداد زیادی از نقاط آسیب پذیر قدیمی ، بدرستی پیکربندی نشده و سرویس دهندگان آسیب پذیر در آن باقی مانده است .
عوامل متعددی در بروز اینگونه حملات نقش دارد: عدم آگاهی لازم مدیران سیستم در خصوص ارتقاء امنیتی سیستم هائی که بر روی آنان Bind deamon بصورت غیر ضروری اجراء می گردد و پیکربندی نامناسب فایل ها ، نمونه هائی از عوامل فوق بوده و می تواند زمینه یک تهاجم از نوع DoS ، یک Buffer Overflow و یا بروز اشکال در DNS Cache را بدنبال داشته باشد.از جمله مواردیکه اخیرا" در رابطه با ضعف امنیتی BIND کشف شده است مربوط به یک تهاجم از نوع DoS است . مقاله CERT Advisory CA-2002-15 جزئیات بیشتری را در این رابطه ارائه می نماید. از دیگر حملات اخیر ، تهاجمی از نوع Buffer Overflow است . مقاله CERT Advisory CA-2002-19 جزئیات بیشتری را در این رابطه در اختیار قرار می دهد. درتهاجم فوق ، یک مهاجم از نسخه آسیب پذیر پیاده سازی توابع Resolver مربوط به DNS استفاده و با ارسال پاسخ های مخرب به DNS و اجرای کد دلخواه ، امکان سوء استفاده از نقطه آسیب پذیر فوق را فراهم و حتی دربرخی موارد می تواند زمینه بروز یک تهاجم از نوع DoS را باعث گردد .
تهدیدی دیگر که می تواند در این رابطه وجود داشته باشد ، حضور یک سرویس دهنده BIND آسیب پذیر در شبکه است . در چنین مواردی ، مهاجمان از وضعیت فوق استفاده و از آن بمنزله مکانی جهت استقرار داده های غیر معتبر خود و بدون آگاهی مدیرسیستم استفاده می نمایند. بدین ترتیب ، مهاجمان از سرویس دهنده بعنوان پلات فرمی بمنظور فعالیت های آتی مخرب خود بهره برداری خواهند کرد .
سیستم های عامل در معرض تهدید :
تقریبا" تمامی سیستم های عامل یونیکس و لینوکس بهمراه یک نسخه از BIND ارائه شده اند .در صورت پیکربندی میزبان بعنوان سرویس دهنده ، نسخه ای از BIND بر روی آن نصب خواهد شد.
نحوه تشخیص آسیب پذیری سیستم
در صورت دارا بودن نسخه خاصی از BIND که بهمراه سیستم عامل ارائه و بر روی سیستم نصب شده است ، می بایست عملیات بهنگام سازی آن را با استفاده از آخرین Patch های ارائه شده توسط تولید کننده ( عرضه کننده ) انجام داد. در صورت استفاده از نسخه BIND مربوط به ISC: Internet Software Consortium ، می بایست از نصب آخرین نسخه BIND ، اطمینان حاصل نمود . در صورتیکه BIND نصب شده بر روی سیستم ، نسخه ای قدیمی بوده و یا بطور کامل Patch نشده باشد ، احتمال آسیب پذیری سیستم وجود خواهد داشت . در اکثر سیستم ها ، دستور : "named - v " ، اطلاعات لازم در خصوص نسخه BIND نصب شده بر روی سیستم را بصورت X.Y.Z نمایش خواهد داد . X ، نشاندهنده نسخه اصلی ، Y ،نشاندهنده جزئیات نسخه و Z نشاندهنده یک Patch Level است . پیشنهاد می گردد ، آخرین نسخه BIND ارائه شده توسط ISC را دریافت و آن را بر روی سیستم نصب نمود. آخرین نسخه موجود Version 9.2.2 بوده و می توان آن را از سایت ISC دریافت نمود. یکی دیگر از رویکردهای کنشگرایانه مرتبط با نگهداری امنیت BIND ، عضویت در گروه های خبری نظیر Symantec برای آگاهی از آخرین هشدارهای امنیتی است . در این راستا می توان از یک برنامه پویشگر بهنگام شده که قادر به بررسی دقیق سیستم های DNS بمنظور تشخیص نقاط آسیب پذیراست ، نیز استفاده گردد .
نحوه حفاظت در مقابل نقطه آسیب پذیر
بمنظور حفاظت در مقابل نقاط آسیب پذیر مرتبط با BIND موارد زیر پیشنهاد می گردد :
غیر فعال نمودن BIND deamon ( به آن named نیز اطلاق می گردد ) بر روی سیستم هائی که بعنوان یک سرویس دهنده DNS در نظر گرفته نشده اند . بمنظور پیشگیری ازاعمال برخی تغییرات خاص ( نظیر فعال نمودن مجدد آن ) ، می توان نرم افزار BIND را از روی اینگونه سیستم ها حذف نمود.
بمنظور بهنگام سازی سرویس دهنده DNS ، از تمامی Patch های ارائه شده توسط تولید کنندگان استفاده و در صورت امکان آن را به آخرین نسخه موجود ارتقاء دهید . برای دریافت اطلاعات تکمیلی در رابطه با نصب مطمئن تر BIND ، از مقالات ارائه شده درسایت CERT و بخش UNIX Security Checklist ، استفاده نمائید .
بمنظور پیچیده تر نمودن حملات اتوماتیک و یا پویش سیستم مورد نظر ، Banner مربوط به " Version String " را از BIND حذف و نسخه واقعی BIND را با یک شماره نسخه غیرواقعی در فایل named.conf ، جایگزین نمائید .
امکان ارسال انتقالات Zone را صرفا" برای سرویس دهندگان ثانویه DNS در Domain فراهم نمائید ( secondary DNS servers) . امکان انتقالات Zone در ارتباط با Domain های Parent و Child را غیر فعال و در مقابل از امکان Delegation ( واگذاری مسئولیت ) و فورواردینگ ( Forwarding ) استفاده نمائید .
امکان Recursion و glue fetching را بمنظور حفاظت در مقابل عماکرد ناصحیح DNS Cache ، غیر فعال نمائید .
بمنظور حفاظت در رابطه با استفاده از "named" و تحت تاثیر قرار دادن تمامی سیستم ، BIND را محدود نمائید . بنابراین BIND بعنوان یک کاربر non-privilage در دایرکتوری Chroot اجراء می گردد. برای نسخه شمازه نه BIND از آدرس http://www.losurs.org/docs/howto/Chroot-BIND.html استفاده نمائید .
بمنظور حفاظت در مقابل حملات اخیر و مرتبط با نقاط آسیب پذیر کشف شده BIND می توان از منابع زیر استفاده نمود:
برای نقطه آسیب پذیر DoS در رابطه با ISC BIND 9 از آدرس http//www.cert.org/advisories/CA-2002-15.html استفاده گردد.
چندین نقطه آسیب پذیر DoS در رابطه با ISC BIND 8 از آدرس http://www.isc.org/products/BIND/bind-security.html استفاده گردد .
برای آگاهی و استفاده از پیشنهادات لازم بمنظور نصب ایمن تر BIND بر روی سیستم های سولاریس ، می توان از آدرس : Running the BIND9 DNS Server Securely و آرشیو مقالات ارائه شده در آدرس Afentis استفاده نمود.
دومین نقطه آسیب پذیر : ( Remote Procedure Calls (RPC
با استفاده از RPC برنامه های موجود بر روی یک کامپیوتر قادر به اجرای روتین هائی در کامپیوتر دوم از طریق ارسال داده و بازیابی نتایج می باشند . با توجه به جایگاه عملیاتی RPC ، استفاده از آن بسیار متداول بوده و درموارد متعددی از آن بمنظور ارائه سرویس های توزیع شده شبکه نظیر مدیریت از راه دور ، اشتراک فایل NFS و NIS استفاده می گردد.وجود ضعف های امنیتی متعدد در RPC باعث بهره برداری مهاجمان بمنظور انجام حملات مختلفی شده است .دراکثر موارد ، سرویس های RPC با مجوزهای بیش از حد معمول ، اجراء می گردند . بدین ترتیب یک مهاجم غیر مجاز قادر به استفاده از سیستم های آسیب پذیر در جهت اهداف خود خواهد بود.اکثر حملات از نوع DoS در سال 1999 و اوایل سال 2000 در ارتباط با سیستم هائی بود که دارای ضعف امنیـتی و نقظه آسیب پذیر RPC بودند. مثلا" حملات گشترده و موفقیت آمیز در رابطه با سیستم های نظامی امریکا ، بدلیل نقطه آسیب پذیر RPC کشف شده در صدها دستگاه کامپیوتر مربوط به وزارت دفاع امریکا بوده است . اخیرا" نیز وجود یک ضعف امنیتی DCOM RPC در ویندوز ، باعث انتشار گسترده یک کرم در سطح اینترنت گردید .
سیستم های عامل در معرض تهدید :
تمامی نسخه های یونیکس و لینوکس که بر روی آنان سرویس های RPC نصب شده است در معرض این آسیب می باشند .
نحوه تشخیص آسیب پذیری سیستم
با استفاده از یک پویشگر نقاط آسیب پذیر و یا دستور " rpcinfo" ، می توان از اجراء یکی از سرویس های متداول RPC بر روی سیستم آگاه گرید :
RPC Service |
RPC Program Number |
rpc.ttdbserverd | 100083 |
rpc.cmsd | 100068 |
rpc.statd | 100024 |
rpc.mountd | 100005 |
sadmind | 100232 |
cachefsd | 100235 |
snmpXdmid | 100249 |
سرویس های RPC ، عموما" از طریق حملات buffer Overflow ، مورد سوء استفاده قرار می گیرند .علت این امر ، عدم انجام بررسی لازم و کافی در خصوص خطاها و یا اعتبار داده های ورودی توسط برنامه های RPC است . نقاط آسیب پذیر Buffer overflow ، این امکان را برای یک مهاجم فراهم می نماید که داده غیر قابل پیش بینی را ( اغلب بصورت کد مخرب ) به درون حافظه برنامه ، ارسال نماید . با توجه به ضعف موجود در رابطه با بررسی خطاء و صحت داده ، داده ارسالی مکان هائی حساس و کلیدی که مورد استفاده پردازنده می باشند را بازنویسی می نماید.در یک تهاجم موفقیت آمیز Overflow ، کد مخرب ارسالی ،در ادامه توسط سیستم عامل اجراء می گردد . با توجه به اینکه تعداد زیادی از سرویس های RPC ، با مجوزهای بیش از حد معمول ، اجراء می گردند ، استفاده موفقیت آمیز از نقاط آسیب پذیر فوق می تواند امکان دسـیابی غیر مجاز و از راه دور را به سیستم فراهم می نماید.
نحوه حفاظت در مقابل نقطه آسیب پذیر
بمنظور حفاظت سیستم در مقابل حملات مبتنی بر RPC ، موارد زیر پیشنهاد می گردد :
برای اخذ اطلاعات تکمیلی در رابطه با نقاط آسیب پذیر RPC ، می توان از آدرس های زیر استفاده نمود :
اینترنت در عمر نسبتا" کوتاه خود توانسته است منشاء تحولات چشمگیری در عرصه های متفاوت حیات بشریت باشد . فن آوری VoIP نمونه ای در این زمینه است که با استفاده از آن می توان از زیرساخت اینترنت برای مکالمات تلفنی استفاده نمود . ( در مقابل استفاده از یک خط تلفن ) . فن آوری فوق علیرغم ارائه امکانات گسترده ، مسائل و چالش های امنیتی مختص به خود را دارا است . در ادامه با فن آوری فوق از بعد مسائل امنیتی بیشتر آشنا خواهیم شد.
VoIP چیست ؟
VoIP ( برگرفته از Voice over internet protocol ) که با نام IP تلفنی نیز از آن یاد می شود ، امکان استفاده از اینترنت برای مکالمات تلفنی را فراهم می نماید . در مقابل استفاده از خطوط تلفن سنتی ، VoIP از فن آوری دیجیتال استفاده می نماید و نیازمند یک اتصال broadband نظیر DSL است . هم اینک شرکت های متعددی سرویس فوق را در اختیار علاقه مندان قرار می دهند .
متداولترین کاربرد VoIP برای موارد شخصی و استفاده در منازل ، سرویس های تلفنی مبتنی بر اینترنت است که با محوریت یک سوئیچ تلفن انجام می شود . با استفاده از فن آوری فوق ، استفاده کنندگان می توانند همچنان دارای یک شماره تلفن باشند . در چنین مواردی ممکن است از یک آداپتور نیز استفاده گردد. آداپتور فوق این امکان را دراختیار استفاده کننده قرارخواهد داد تا بتوانند از یک تلفن معمولی نیز استفاده نمایند .
در زمان استفاده از سرویس فوق ، مخاطب شما متوجه این موضوع نخواهد شد که شما از فن آوری VoIP استفاده می نمائید و قادر به تشخیص دقیق تفاوت سرویس فوق نسبت به یک تلفن سنتی نمی باشد .
چالش های امنیتی VoIP
با توجه به این که فن آوری VoIP در ارتباط با اتصال اینترنت است و از آن استفاده می نماید ، مشکلات و مسائل امنیتی در ارتباط با کامپیوتر متصل شده به اینترنت می تواند سرویس فوق را نیز تحت تاثیر قرار دهد. فن آوری VoIP هنوز جوان است و بحث های مختلفی در خصوص ظرفیت ریسیک پذیری آن وجود دارد . مهاجمان ممکن است قادر به انجام فعالیت هائی نظیر قطع مکالمه تلفنی ، استراق سمع ، برنامه ریزی و هدایت حملات مبتنی بر مهندسی اجتماعی با بررسی Caller ID و در نهایت از کار انداختن سرویس فوق باشند .
فعالیت هائی که مستلزم استفاده از حجم بالائی از منابع شبکه است ، نظیر دریافت فایل های حجیم ، بازی های online ، استفاده از محتویات چندرسانه ای ( صوت و تصویر ) ، می تواند سرویس VoIP را تحت تاثیر قرار دهد .
در زمان استفاده از فن آوری VoIP ممکن با مسائل دیگری که در ارتباط با روتینگ تلفن بر روی اتصال broadband اینترنت است نیز برخورد نمائیم . برخلاف خطوط تلفن سنتی ، که امکان استفاده از آنان حتی در صوت قطع برق وجود دارد ، سرویس VoIP در چنین مواردی غیرقابل استفاده می گردد و ممکن است مسائل خاصی را برای سیستم های امنیتی منازل و یا دستیابی به شماره تلفن های اضطراری به دنبال داشته باشد .
نحوه حفاطت
در زمان استفاده از سرویس فوق لازم است به موارد زیر توجه گردد :
بهنگام نگه داشتن نرم افزارها : در صورتی که تولید کنندگان نرم افزار برای سیستم عامل دستگاه مورد نظر نسخه های بهنگام شده ای را ارائه داده اند ، می بایست در اولین فرصت نسبت به نصب آنان اقدام گردد . نسخه های بهنگام شده ممکن است فرآیند بهنگام سازی را در سطح Firmware انجام دهند . با بهنگام سازی نرم افزارهای موجود ، پیشگیری لازم در خصوص برخی حملات برنامه ریزی شده با هدف بهره گیری از نقاط آسیب پذیر انجام خواهد شد .
استفاده و بهنگام سازی نرم افزارهای آنتی ویروس : برنامه های ضد ویروس قادر به تشخیص و حفاظت کامپیوتر شما در مقابل ویروس های شناخته شده می باشند. با توجه به این واقعیت که مهاجمان به صورت مستمر اقدام به نوشتن ویروس های جدید می نمایند ، لازم است که این نوع نرم افزارها همواره بهنگام باشند .
استفاده از گزینه ها و تنظمیات امنیتی : برخی از ارائه دهندگان سرویس VoIP ، امکان رمزنگاری اطلاعات را نیز به عنوان یک سرویس دیگر در اختیار مشتریان خود قرار می دهند . در صورت وجود نگرانی در خصوص تعرض به حریم خصوصی خود ، می توان از این ویژگی و سایر گزینه های موجود در این رابطه استفاده نمود .
نصب و یا فعال نمودن یک فایروال : فایروال ها با بررسی بسته های اطلاعاتی می توانند یک سطح حفاظتی مناسب در خصوص فیلتر نمودن برخی کدهای مخرب جهت ورود به سیستم شما را انجام دهند . برخی از سیستم های عامل به همراه یک فایروال ارائه می گردند. در چنین مواردی لازم است از فعال بودن آنان اطمینان حاصل نمود .
بررسی تنظیمات امنیتی : هم کامپیوتر شما و هم تجهیزات و نرم افزارهای ارائه شده جهت استفاده از سرویس VoIP ، امکانات و گزینه های متفاوتی را در اختیار شما قرار می دهند . فعال نمودن برخی گزینه ها ممکن است ضریب آسیب پذیری شما را در مقابل حملات افزایش دهد . بنابراین لازم است گزینه های غیرضروری را غیرفعال نمود . پیشنهاد می گردد تنظیمات امنیتی به دقت بررسی گردد و صرفا" گزینه هائی انتخاب شود که ضمن تامین اهداف عملیاتی ، باعث افزایش ضریب آسیب پذیری شما نگردد .
منبع:srco.ir
ارتباطات یکی از نیازهای حیاتی بشریت است و انسان همواره به دنبال ابداع فن آورهائی بوده است که بتواند با استفاده از آنان با سایر همنوعان خود ارتباط برقرار نماید . در گذشته ای نه چندان دور که انسان استفاده از اینترنت را تجربه نکرده بود ، ارتباطات محاوره ای صرفا" از طریق تلفن و به کمک خطوط PSTN ( برگرفته از Public Switched Telephone Network ) ، انجام می گردید . در سیستم فوق ، سیگنال های صوتی آنالوگ با استفاده از کابل های مسی حمل و مبادله داده خصوصا" در مسافت های طولانی گرانقیمت و ارتباطات دوسویه ویدیوئی رویائی بیش نبود ( در آن زمان صرفا" از تلویزیون استفاده می گردید که به عنوان یک رسانه دوسویه محسوب نمی گردد ).
در سالیان اخیر ما شاهد اتفاقات جالبی بوده ایم که هر یک به سهم خود تاثیری غیرقابل انکار در حیات بشریت داشته اند . ابداع کامپیوترهای شخصی ، فن آوری های جدید ارتباطی نظیر تلفن های سلولی و نهایتا" اینترنت نمونه هائی در این زمینه می باشند که باعث شده است انسان بتواند با استفاده از سرویس های جدیدی نظیر نامه الکترونیکی ، چت و مواردی دیگر با سایر افراد ارتباط برقرار نماید .
در حال حاضر می توانیم نظاره گر یک انقلاب واقعی در عرصه ارتباطات باشیم . هر شخص با استفاده از کامپیوتر و اینترنت می تواند با سایر افراد مورد علاقه خود ارتباط برقرار نموده ، داده ئی را مبادله و یا از طریق امکانات نرم افزاری موجود با یکدیگر گفتگو نمایند . ما نمی دانیم دقیقا" در آینده چه اتفاقی خواهد افتاد ولی این را می دانیم که کامپیوتر دارای نقشی محوری و اساسی در این رابطه خواهد بود . اینترنت با سرعت بالا در همه جا استفاده خواهد شد و مردم با یکدیگر به صورت صوتی و تصویری ارتباط برقرار خواهند نمود .
به هرحال ، رشد بی سابقه اینترنت در سالیان اخیر این نوید را می دهد که بتوان از زیرساخت موجود به عنوان یک گزینه مطلوب به منظور ارتباطات استفاده نمود .
VoIP چیست ؟
VoIP ( برگرفته از Voice over internet protocol ) که با نام IP تلفنی نیز از آن یاد می شود ، امکان استفاده از اینترنت به منظور مکالمات تلفنی را فراهم می نماید . در مقابل استفاده از خطوط تلفن سنتی ، VoIP از فن آوری دیجیتال استفاده می نماید و نیازمند یک اتصال broadband نظیر DSL است . هم اینک شرکت های متعددی سرویس فوق را در اختیار علاقه مندان قرار می دهند .
در واقع ، با استفاده از فن آوری VoIP صدای انسان توسط بسته های اطلاعاتی IP و از طریق اینترنت ارسال می گردد . VoIP می تواند به منظور تامین خواسته فوق از سخت افزارهای شتاب دهنده استفاده نماید و یا از آن در یک محیط مبتنی بر کامپیوترهای شخصی استفاده گردد .
VoIP چگونه کار می کند ؟
در گذشته ای نه چندان دور ، پیشگامان عرصه های علمی به این نتیجه رسیدند که می توان یک سیگنال را به صورت دیجیتال و در یک مسافت طولانی ارسال نمود . بدین منظور می بایست قبل از ارسال سیگنال ، آن را با استفاده از یک مبدل آنالوگ به دیجیتال(ADC) ، دیجیتال و سپس ارسال و در نقطه پایانی انتقال،با استفاده از یک مبدل دیجیتال به آنالوگ(DAC) مجددا" آن را به آنالوگ تبدیل نمود .
فن آوری VoIP نظیر آنچه اشاره گردید کار می کند . در ابتدا ، صدای دیجیتال شده در بسته های اطلاعاتی قرار می گیرد و پس از ارسال در مقصد مجددا" به صوت تبدیل می گردد. با ذخیره اطلاعات به فرمت دیجیتال می توان بر روی آنان کنترل بهتری را اعمال نمود . مثلا" می توان آنان را فشرده ، مسیر آنان را تعیین و یا آنان را به یک فرمت جدید دیگر تبدیل نمود .
شبکه های مبتنی بر پروتکل TCP/IP از بسته های اطلاعاتی IP تشکیل می گردند که شامل یک هدر ( برای کنترل ارتباطات ) و یک paylaod به منظور مبادله داده می باشند . فن آوری VoIP از بسته های اطلاعاتی IP به منظور حرکت در شبکه و رسیدن به مقصد نهائی استفاده می نماید .
Voice (source) - > ADC - - - Internet - - - DAC - > Voice (dest) |
مزایای استفاده از VoIP نسبت به PSTN
در زمان استفاده از خطوط PSTN ، کاربران عملا" هزینه زمان استفاده شده توسط شرکتی که مدیریت خط PSTN را برعهده دارد ، پرداخت می نمایند و هر اندازه که بیشتر با تلفن صحبت نمایند هزینه بیشتری را نیز می بایست پرداخت نمایند. علاوه بر این ، نمی توان بطور همزمان با بیش از یک شخص گفتگو نمود .
در فن آوری VoIP می توان هر زمان و با هر شخص گفتگو نمود . کافی است که در آن مقطع زمانی سایر افرادی که شما می خواهید با آنان گفتگو نمائید نیز به اینترنت متصل شده باشند . مکالمه برقرار شده تا زمان دلخواه ( مستقل از هزینه های مربوطه ) می تواند ادامه یابد. علاوه بر این ، می توان در یک زمان با چندین نفر گفتگو نمود . در زمان گفتگو با سایر افراد و بطور همزمان می توان با آنان داده ئی ( نظیر تصاویر ، نمودارها و تصاویر ویدیوئی ) را نیز مبادله نمود .
چرا تاکنون از این فن آوری در ابعاد گسترده ای استفاده نشده است ؟
در این بخش لازم است به برخی مسائل حاصل از ائتلاف بین معماری VoIP و اینترنت اشاره گردد. مبادله داده صوتی می بایست به صورت بلادرنگ و بدون توقف انجام گردد و این موضوع با معماری نامتجانس اینترنت که ممکن است از تعدادی روتر ( ماشین هائی که مسیریابی بسته های اطلاعاتی را انجام می دهند ) به منظور مسیریابی بسته های اطلاعاتی استفاده نماید، همخوانی نداشته و می تواند باعث بروز مسائل خاصی نظیر افزایش زمان RTT ( برگرفته Round Trip Time ) گردد . بنابراین ، می بایست با اعمال تغییرات لازم و بکارگیری فن آوری های دیگر ، زمینه استفاده موثر از فن آوری VoIP را فراهم نمود .
نحوه ایجاد یک اتصال VoIP
برای ایجاد یک ارتباط مبتنی بر VoIP ، می بایست مراحل زیر را دنبال نمود ( تمامی مراحل می بایست به صورت بلادرنگ انجام گردد).
تبدیل سیگنال آنالوگ به دیجیتال : تبدیل سیگنال صوتی آنالوگ به سیگنال دیجیتال ( مجموعه ای از صفر و یک ) توسط یک مبدل آنالوگ به دیجیتال ( ADC )
فشرده سازی سیگنال دیجیتال : پس از تبدیل سیگنال صوتی به دیجیتال ، بیت های موجود می بایست بر اساس یک فرمت مناسب فشرده تا آماده ارسال گردند . در این رابطه از پروتکل های متعددی استفاده می گردد . PCM و استاندارد ITU-T G.711 نمونه هائی در این زمینه می باشند .
استفاده از یک پروتکل بلادرنگ : در این مرحله ، بسته های صوتی در بسته های اطلاعاتی و با استفاده از یک پروتکل بلادرنگ ( عموما" RTP بر روی UDP ) قرار می گیرند.
استفاده از یک پروتکل سیگنالینگ : در این مرحله لازم است از یک پروتکل سیگنالینگ به منظور فراخوانی کاربر استفاده گردد . پروتکل ITU-T H323 نمونه ای دراین زمینه می باشد .
تبدیل سیگنال دیجیتال به آنالوگ : در سمت گیرنده ، می بایست بسته های اطلاعاتی از یکدیگر مجزاء ، داده ها استخراج و به سیگنال های صوتی آنالوگ تبدیل و در نهایت برای کارت صدا و یا تلفن ارسال گردند .
منبع:srco.ir
چوپانی مشغول چراندن گله گوسفندان خود در یک مرغزار دور افتاده بود. ناگهان سر و کله ی یک اتومبیل جدید کروکی از میان گرد و غبار جاده های خاکی پیدا شد. راننده ی آن اتومبیل که یک مرد جوان بسیار شیک پوش، با لباس های مارک دار سرش را از پنجره اتومبیل
بیرون آورد و پرسید: اگر من به تو بگویم که دقیقا چند راس گوسفند داری، یکی از آنها را به من خواهی داد؟
چوپان نگاهی به جوان تازه به دوران رسیده و نگاهی به رمه اش که به آرامی در حال چریدن بود، انداخت و با وقار خاصی جواب مثبت داد.
جوان، ماشین خود را در گوشه ای پارک کرد و کامپیوتر Notebook خود را به سرعت از ماشین بیرون آورد، آن را به یک تلفن راه دور وصل کرد، روی اینترنت وارد صفحه ی NASA شد، جایی که می توانست سیستم جستجوی ماهواره ای (GPS) را فعال کند. منطقه ی چراگاه را مشخص کرد، یک بانک اطلاعاتی با 60 صفحه ی کاربرگ Excel به وجود آورد و فرمول پیچیده ی عملیاتی را وارد کامپیوتر کرد. بالاخره 150 صفحه ی اطلاعات خروجی سیستم را توسط یک چاپگر مینیاتوری همراهش چاپ کرد و آنگاه در حالی که آنها را به چوپان می داد، گفت: شما در اینجا دقیقا 1586 گوسفند داری.
چوپان گفت: درست است. حالا همان طور که قبلا توافق کردیم، می توانی یکی از گوسفندها را ببری.
آنگاه به نظاره ی مرد جوان که مشغول انتخاب کردن و قرار دادن آن گوسفند در داخل اتومبیلش بود، پرداخت. وقتی کار انتخاب آن مرد تمام شد، چوپان رو به او کرد و گفت: اگر من دقیقا به تو بگویم که چه کاره هستی، گوسفند مرا پس خواهی داد؟
مرد جوان پاسخ داد: آری! چرا که نه؟
چوپان گفت: تو یک مشاور هستی.
مرد جوان گفت: راست می گویی، اما به من بگو که این را از کجا حدس زدی؟
چوپان پاسخ داد: کار ساده ای است. بدون اینکه کسی از تو خواسته باشد، به اینجا آمدی. برای پاسخ دادن به سوالی که خود من جواب آن را از قبل می دانستم، مزد خواستی. مضافا اینکه هیچ چیز راجع به کسب و کار من نمی دانی، چون به جای گوسفند، سگ مرا برداشتی!
در یک شبکه کامپیوتری سرویس ها و خدمات متعددی از طریق سرویس دهندگان مختلف در اختیار سرویس گیرندگان قرار می گیرد . اختصاص پویای اطلاعات مربوط به آدرس دهی IP توسط سرویس دهنده DHCP ( برگرفته از Dynamic Host Configuration Protocol ) ، نمونه ای در این زمینه است .
DHCP ، پس از پروتکل BOOTP مطرح و مهمترین هدف آن تامین اطلاعات مورد نیاز یک ایستگاه و یا سایر دستگاه های شبکه ای در ارتباط با پروتکل TCP/IP است . بدین منظور از سه روش متفاوت استفاده می گردد :
اختصاص اتوماتیک : در این روش سرویس دهنده DHCP یک آدرس دائم را به یک سرویس گیرنده نسبت می دهد .
اختصاص پویا : متداولترین روش استفاده از سرویس دهنده DHCP در یک شبکه می باشد که بر اساس آن سرویس دهنده یک آدرس را به صورت پویا در اختیار سرویس گیرنده قرار می دهد . آدرس نسبت داده شده به سرویس گیرنده بر اساس مدت زمان مشخص شده توسط سرویس دهنده DHCP تعیین می گردد ( محدود و یا نامحدود )
اختصاص دستی : در این روش که معمولا" توسط مدیران شبکه استفاده می گردد ، یکی از آدرس های موجود در بانک اطلاعاتی سرویس دهنده DHCP به صورت دستی به یک سرویس گیرنده و یا سرویس دهنده خاص نسبت داده می شود ( Reservations) .
در صورتی که پیکربندی پروتکل TCP/IP بر روی یک کامپیوتر بگونه ای انجام شده است که کامپیوتر و یا دستگاه شبکه ای مورد نظر را ملزم به استفاده از خدمات سرویس دهنده DHCP می نماید ( تنظیمات انجام شده در صفحه Properties پروتکل TCP/IP ) ولی در عمل سرویس دهنده وجود نداشته باشد و یا سرویس گیرندگان قادر به برقراری ارتباط با آن نباشند و یا برای سرویس دهنده DHCP مشکل خاصی ایجاد شده باشد ، تکلیف سرویس گیرندگان و متقاضیان استفاده از خدمات سرویس دهنده DHCP چیست ؟
در چنین مواردی سرویس گیرندگانی که بر روی آنان یکی از نسخه های ویندوز ( به جزء ویندوز NT ) نصب شده است ، می توانند از APIPA ( برگرفته از Automatic Private IP Addressing ) استفاده نمایند . با استفاده از سرویس فوق که صرفا" در شبکه های کوچک قابل استفاده خواهد بود ( حداکثر 25 دستگاه موجود در شبکه ) ، هر یک از سرویس گیرندگان می توانند به صورت تصادفی یک آدرس IP خصوصی را بر اساس مشخصات جدول زیر به خود نسبت دهند .
آدرس رزو شده توسط APIPA |
169.254.0.1 TO 169.254.255.254 |
Subnet Mask |
255 . 255 . 0 . 0 |
و اما چند نکته در ارتباط با روش آدرس دهی APIPA :
زمانی که یک سرویس گیرنده پاسخ مناسبی را از سرویس دهنده DHCP دریافت ننماید ، پس از مدت زمان کوتاهی یک آدرس تصادفی را از شبکه دریافت می نماید .
با توجه به این که سرویس گیرنده به صورت کاملا" تصادفی یک آدرس IP را انتخاب می نماید ، همواره این احتمال وجود خواهد داشت که یک کامپیوتر آدرسی را انتخاب نماید که قبلا" توسط کامپیوتر دیگری استفاده شده باشد . برای حل این مشکل ، پس از انتخاب یک آدرس IP توسط سرویس گیرنده ، یک بسته اطلاعاتی broadcast شامل آدرس IP توسط سرویس گیرنده در شبکه ارسال و بر اساس پاسخ دریافتی ، در خصوص نگهداری و یا آزادسازی آدرس IP تصمیم گیری می گردد.
اطلاعات ارائه شده توسط APIPA ، یک آدرس IP و یک Subnet mask می باشد و سایر اطلاعلاتی که عموما" توسط سرویس دهنده DHCP ارائه می گردد را شامل نمی شود . مثلا" با استفاده از APIPA نمی توان آدرس gateway پیش فرض را در اختیار سرویس گیرندگان قرار داد . بنابراین مبادله اطلاعات محدود به کامپیوترهای موجود در یک شبکه محلی کوچک می گردد که تماما" دارای فضای آدرس دهی شبکه 0 . 0 . 254 . 169 می باشند . در صورت نیاز می بایست سایر اطلاعات لازم در ارتباط با پیکربندی پروتکل TCP/IP به صورت دستی مشخص گردد.
سرویس گیرندگانی که از APIPA استفاده می نمایند به صورت ادواری و در بازه های زمانی پنج دقیقه ، شبکه را به منظور وجود یک سرویس دهنده DHCP بررسی می نمایند . در صورتی که سرویس دهنده DHCP در دسترس قرار بگیرد ، سرویس گیرنده یک درخواست را برای وی ارسال و اطلاعات مربوط به پیکربندی TCP/IP را از آن دریافت می نماید .
پتانسیل استفاده از APIPA به صورت پیش فرض بر روی تمامی نسخه های ویندوز فعال می باشد . برای غیرفعال نمودن آن می بایست تنظمیات ریجستری را تغییر داد:
- اجرای برنامه Regedit
- یافتن کلید زیر بر اساس نام در نظر گرفته شده برای کارت شبکه :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces |
- ایجاد یک DWORD Value ( نام آن IPAutoconfigurationEnabled و مقدار آن صفر در نظر گرفته شود )
- در صورتی بر روی کامپیوتر چندین آداپتور موجود است ، می بایست مراحل فوق برای هر یک از آنان تکرار گردد
منبع :دانستنیهای کامپیوتر،الکترونیک ومخابرات