مفهوم فايروال ها براي مبتديان
مفهوم فايروال ها براي مبتديان
در واقع بسته هاي فراواني (بطور مجاز و غيرمجاز) از هر PC متصل به شبکه عبور مي کنند. در اغلب موارد، عبور اين بسته ها بصورت کاملاً نامرئي انجام مي شود و به همين دليل کاربران حتي از وجود آنها مطلع نخواهند شد. سپس مردم از ما مي پرسند آيا ابزارهايي وجود دارند که بطور خودکار از دسترسي هاي غير مجاز جلوگيري نمايند. باز هم پاسخ ما اين است که: خير. پيش از آنکه بسته ها وارد PC ما شوند، نمي توانيم تشخيص دهيم که از نوع خوب هستند يا بد.
با اينحال ابزارهايي وجود دارند که مي توانيم از آنها براي نظارت بر بسته هاي ورودي و خروجي استفاده کرده و سپس تصميم بگيريم که آيا بايستي آنها را پيش از رسيدن به مقصد نهائي شان حذف نمائيم يا خير. اين همان جائي است که فايروال ها وارد ميدان مي شوند، اولين سيستم ضد نفوذ واقعي براي شبکه ها و PCهاي ما.
خبر خوب اين است که شما مي توانيد از يک فايروال ارزان قيمت استفاده کنيد، اما خبر بد اين است که هيچ فايروال Plug-and-Play در بازار وجود ندارد که بدون دخالت صحيح شما بتواند واقعاً از کامپيوترتان محافظت نمايد. اين بدان معني است که شما پيش از انجام هر کاري با فايروال خود بايد مباني اداره بسته هاي شبکه را درک کنيد.
شما در اين مقاله ابتدا مطالبي را درباره ي مباني شبکه سازي اترنت خواهيد آموخت که گسترده ترين فناوري انتقال امروزي به حساب مي آيد. سپس، ما به شما نشان خواهيم داد که چگونه فايروال شخصي خودتان را با iptables ايجاد نمائيد و نهايتاً چگونه آن را با Nmap آزمايش کنيد.
پشته TCP/IP
- لايه 1: لايه ي Physical که بيت هاي واحد را از طريق خطوط فيزيکي (کابل ها و اينترفيس هاي شبکه) انتقال مي دهد.
- لايه 2: لايه ي Data Link ناميده مي شود و در زمينه ي انتقال بسته ها از طريق شبکه هاي Multi-hop (روترها) تخصص دارد.
- لايه 3: لايه ي Network است و مبتني بر Internet Protocol(IP) مي باشد. اين لايه مسئوليت تحويل بسته هاي داده از يک کامپيوتر مبدأ به يک سيستم مقصد بر روي شبکه را بر عهده دارد.
- لايه 4: لايه ي Transport ناميده مي شود و مسئوليت نگهداري يک جريان داده پيوسته مابين دو سيستم را برعهده دارد. اين لايه احتمالاً سيستم هايي را براي انتقال مجدد بسته هاي مفقود شده و تصحيح خطا در بر مي گيرد. لايه ي 4 مبتني بر دو پروتکل است:
- لايه 5: لايه ي Application ناميده مي شود و حاوي برنامه هايي است که از طريق يک شبکه مبتني بر پروتکل هاي TCP/IP با يکديگر ارتباط برقرار مي کنند (مرورگرهاي وب، سرورها و کلاينت هاي FTP، eMailها و نظاير آنها).
شکل [1]، جريان داده ي منطقي مابين دو PC متصل شده از طريق يک شبکه را نشان مي دهد، البته بطور ايده آل با اين فرض که تنها يک جهش (hop) مابين آنها وجود دارد. در اين مورد، Alice داده هايي را براي Bob ارسال مي کند.
فايروال ها در لايه هاي Network و Transport پشته TCP/IP قرار مي گيرند و با مسدود نمودن بسته هاي غيرمجاز سر و کار دارند. همانطور که مي توانيد ببينيد، بسته ها قبلاً در سطح پشته وارد PC شده اند، اما هنوز به مقصد خود در لايه ي Application نرسيده اند. بنابراين، اگر بخواهيد تصميم بگيريد که کدام بسته ها مي توانند (يا نمي توانند) عبور کنند، بايستي نظارت بر ترافيک را در لايه اي پائين تر از لايه ي Application انجام داده و ترافيک را همانطور که توسط فايروال ديده مي شود، در نظر بگيريد.
آناتومي يک بسته ي داده
امروزه TCP پر مصرف ترين پروتکل است، عليرغم آنکه يکي از ناامن ترين پروتکل ها نيز به حساب مي آيد. در واقع اين پروتکل فاقد ويژگي هاي زير است:
- محرمانگي: يک بسته داده براي ديگران قابل مشاهده خواهد بود.
- يکپارچگي: يک بسته داده مي تواند توسط ديگران دستکاري شود.
- سنديت: يک بسته داده مي تواند توسط طرف هاي ثالث ارسال گردد، حتي اگر ظاهراً به نظر برسد که از مبدأ قابل اعتمادي ارسال شده است.
همانطور که در شکل [2] نشان داده شده است، يک نشست ارتباطي TCP مي تواند با يک مکانيزم Handshake سه مسيره برقرار گردد:
- Bob با يک تصديق (acknowledgment) درخواست Alice را مي پذيرد و در عين حال درخواست هماهنگ سازي خودش را ارسال مي نمايد.
- Alice با يک تصديق به درخواست Bob پاسخ مي دهد و نهايتاً ارتباط برقرار مي شود.
اطلاعات TCP در قسمت جلويي بسته هاي داده Alice و Bob اعمال مي گردند و به همين دليل تحت عنوان TCP Header شناخته مي شوند. يک هدر مي تواند بصورت يک توالي از فيلدهايي نشان داده شده که حاوي اطلاعات مختلفي هستند. بنابراين، يک بسته ي TCP همانند يک توالي از بيت هاي اطلاعاتي که يک توالي از بيت هاي داده در ادامه ي آنها قرار گرفته اند، به نظر خواهد رسيد.
مهمترين بيت هاي اطلاعاتي که در اينجا مورد نظر ما هستند، عبارتند از:
- درگاه مبدأ TCP: يک فيلد 16 بيتي که نشان مي دهد بسته ها از کدام درگاه هاي منطقي آمده اند (2 به توان 16 يا 65536 درگاه)
- درگاه مقصد TCP: يک فيلد 16 بيتي که نشان مي دهد بسته ها به کدام درگاه هاي منطقي مي روند (2 به توان 16 يا 65536 درگاه)
- بيت هاي کنترلي: يک فيلد 8 بيتي که نشان مي دهد بسته TCP به کدام بخش از نشست تعلق دارد.
هر درگاه، يک کانال ارتباطي منطقي مابين دو سيستم است، بصورتي که شما مي توانيد چند نشست TCP موازي را مابين نرم افزارهاي کاربردي متفاوت بر روي يک ماشين واحد برقرار نمائيد. براي مثال، يک ماشين سرور مي تواند بطور همزمان يک سرور وب را بر روي درگاه استاندارد 80 و يک سرور FTP را بر روي درگاه استاندارد 21 اجرا کند. از سوي ديگر، يک ماشين کلاينت مي تواند از کلاينت ها بطور همزمان براي ارتباطات وب و FTP استفاده نمايد که درگاه هاي مورد استفاده آنها بطور ديناميک تخصيص مي يابند (بطور کلي بيش از 1023 درگاه)
بيت هاي کنترلي، Flagهاي باينري هستند که بر حسب فعال يا غيرفعال بودن وضعيت خود مي توانند 1 يا 0 باشند. اين بيت ها عبارتند از:
- URG: نشان مي دهد که بسته بايد سريعاً تحويل داده شود
- ACK: نشان مي دهد که تصديق يک بسته ي قبلي در طول يک انتقال دريافت شده است.
-PSH: به پشته مي گويد که بجاي انتظار براي بسته هاي بيشتر، داده ها را بلافاصله انتقال دهد.
- RST: نشان مي دهد که ارتباط بخاطر يک خطا يا وقفه بايد ريست شود.
-SYN: يک درخواست هماهنگ سازي براي آغاز يک نشست TCP جديد را مشخص مي کند.
- FIN: نشان مي دهد که هيچ بسته ي ديگري براي انتقال وجود ندارد و به همين دليل ارتباط مي تواند بسته شود.
- CWR: نشان مي دهد که صف بسته هاي خروجي بخاطر يک تراکم ترافيک، کند شده است.
- ECE: نشان مي دهد که ارتباط بخاطر تراکم ترافيک دچار مشکل گرديده است.
شکل [3] يک مثال از تبادل بسته هاي داده در طول يک نشست Handshake سه مسيره را نشان مي دهد.
تعداد فيلدها در يک هدر UDP کمتر از تعداد آنها در هدر TCP است و ما براي مقاصد اين مقاله مي توانيم تنها فيلدهاي درگاه مبدأ و مقصد را در نظر بگيريم که دو فيلد 16 بيتي بوده و مي توانند حداکثر تا 65536 درگاه منطقي را آدرس دهي نمايند.
بسته ي TCP يا UDP (داده ها بعلاوه اطلاعات) غالباً به لايه ي Network فرستاده مي شود تا پردازش هاي آدرس دهي بر روي آن انجام گيرد. متداول ترين پروتکل شبکه اي که امروزه مورد استفاده قرار مي گيرد، پروتکل IPv4 است که مبتني بر آدرس دهي 32 بيتي مي باشد و به بيش از 4 ميليارد آدرس امکان مي دهد که بر روي يک شبکه واحد به همزيستي بپردازند. در آينده ي نزديک، IPv4 با IPv6 جايگزين خواهد شد، يک فيلد آدرس 128 بيتي که گذشته از ويژگي هاي جديد خود، تعداد فوق العاده بالائي از آدرس ها را پوشش خواهد داد.
پس از دريافت بسته از لايه ي Transport، لايه ي IP به نوبه ي خود يک هدر جديد را ايجاد مي نمايد که به قسمت جلويي بسته ي TCP/UDP افزوده خواهد شد.
بنابراين، بسته ي IP نهائي شامل اين مؤلفه ها خواهد بود: يک توالي از بيت ها براي هدر IP بعلاوه يک توالي از بيتها براي هدر TCP/IP بعلاوه يک توالي از بيت ها که حاوي داده ها هستند.
در ميان فيلدهاي متعدد هدر IP، موارد زير از اهميت خاصي برخوردارند:
- آدرس IP مبدأ که حاوي آدرس IP ماشين مبدأ مي باشد.
- آدرس IP مقصد که حاوي آدرس IP ماشين هدف مي باشد.
- پروتکل که پروتکل مورد استفاده ي لايه ي Transport(TCP) يا UDP را مشخص مي کند.
يک آدرس IP با 4 عدد 8 بيتي بيان مي گردد که با نقطه هايي از يکديگر جدا شده اند و هريک از آنها در قالب يک عدد دسيمال نشان داده مي شوند که مي تواند ارزشي مابين 0 ( هر 8 بيت معادل صفر) تا 255 (هر 8 بيت معادل 1) داشته باشد. بنابراين، از نظر تئوري تمام آدرس هاي مابين 0.0.0.0 تا 255.255.255.255 مي توانند آدرس هاي IP معتبر باشند، اما بعضي از کلاس ها (yz.192..168 و xyz، 176.16.yz.10) براي شبکه هاي خصوصي در نظر گرفته شده اند و نمي توانند به آدرس هاي عمومي اختصاص يابند. هر آدرس IP حاوي يک بخش نشان دهنده آدرس شبکه و يک بخش نشان دهنده ي آدرس ميزبان مي باشد. Subnet Mask يک عدد باينري (و همچنين 32 بيتي) است که به ما امکان مي دهد بدانيم کدام بخش از يک آدرس IP به يک آدرس شبکه (با تعيين تمام بيت ها بصورت 1) و کدام بخش به يک آدرس ميزبان (با تعيين تمام بيت ها بصورت 0) اشاره دارند. بنابراين، يک آدرس IP نظير 192.168.0.105 با يک Subnet Mask بصورت 255.255.255.0 به آدرس شبکه ي 192.168.0 و آدرس ميزبان 105 (يک PC منفرد) اشاره مي کند. غالباً براي هدفگيري يک شبکه ي کامل، از نشانه گذاري Classless Inter-Domain Routing(CIDR) در قالب زير استفاده مي شود:
>تعداد بيت هاي مساوي 1 در Subnet Mask<IP/<
براي مثال مي توان به 24/192.168.0.0 اشاره کرد.
ICMP يک پروتکل IP مهم ديگر است که براي انتقال اطلاعات کنترلي بر روي يک شبکه (نظير يوتيليتي Ping) مورد استفاده قرار مي گيرد. اين پروتکل داراي همان هدر يک بسته ي IP است که Flag پروتکل آن با ارزش 1 و فيلد نوع ICMP با ارزشي متناسب با نوع پيام تنظيم گرديده.
مقادير متداول براي نوع ICMP عبارتند از:
- 0 (Echo Reply): اين ارزش براي پاسخ به يک درخواست Ping مورد استفاده قرار مي گيرد.
- 3 (Destination Unreacable): هنگاميکه امکان تحويل يک بسته ي IP به مقصد مورد نظر وجود ندارد (براي مثال، روتر نمي تواند مسيري را براي هدايت بسته پيدا کند) از اين ارزش استفاده مي شود.
- 8 (Echo): اين ارزش براي ارسال يک درخواست Ping جهت مشخص کردن اين موضوع که آيا سيستم فعال است يا خير، مورد استفاده قرار مي گيرد.
از تئوري تا عمل
براي مثال، يک پنجره ترمينال را باز کرده و فرمان زير را تايپ کنيد:
netstat-na
- Protocol: به شما مي گويد که هر اتصال از پروتکل TCP استفاده مي کند يا UDP.
- Local Address: اينترفيس هاي شبکه ي PC شما از جمله ي Loopback و همچنين درگاه هاي منطقي که اتصال در آنها برقرار شده است. توجه داشته باشيد که بسياري از سرويس ها براي عملکرد صحيح به اينترفيس Loopback نياز دارند.
- External Address: آدرس خارجي که اينترفيس هاي شبکه ي شما به آنها متصل شده اند و همچنين درگاه هاي خارجي منطقي. در اين مورد باز هم اينترفيس Loopback مي تواند مورد استفاده قرار گيرد.
- Status: وضعيت اتصال را در لحظه ي اجراي netstat بيان مي کند. بنابراين شما مي توانيد اتصال هاي برقرار شده (ESTABLISHED)، هماهنگ سازي هاي SYN-SENT(TCP)، پايان يک نشست FIN-SENT(TCP)، اتصالات بسته شده ي Listening، (CLOSE-WAIT) سرور (LISTENING) و نظاير آنها را داشته باشيد.
براي مثال، اگر مي خواهيد تمام سرويس هايي که بر روي بعضي از درگاه هاي ماشين ويندوز شما در حال Listening هستند را بشناسيد، فرمان زير را وارد کنيد:
netstat-nao| find«LISTENING»
همچنين اگر مي خواهيد اطلاعات بيشتري بدست بياوريد، از فرمان زير استفاده نمائيد:
netstat-naob
در لينوکس، شما مي توانيد همين اطلاعات را با استفاده از فرمان زير بدست آوريد:
$ netstat-nap
$ lsof-i
TCPdump به شما امکان مي دهد تا کل جريان بسته هاي داده اي که از/به کامپيوترتان منتقل مي شوند را با سطح بالايي از جزئيات (هدرها و داده هاي متن آشکار) تجزيه و تحليل کنيد. اين يک ابزار فوق العاده براي تنظيم دقيق قواعد فايروال به حساب مي آيد. به اين ترتيب، مثلاً اگر بخواهيد تمام بسته هاي TCP ضبط شده توسط اينترفيس شبکه ي خود eth0 را مشاهده کنيد، کافي است فرمان زير را در يک پوسته ي لينوکس (بعنوان root) تايپ نمائيد:
tcpdump -n-i eth0#
نتيجه مي تواند واقعاً غافلگير کننده باشد. شما متوجه خواهيد شد که يک جريان کم و بيش پيوسته از بسته ها در حال عبور از کامپيوترتان هستند، حتي اگر تنها چند برنامه در حال اجرا بر روي آن باشند.
در شکل [5]، يک اتصال Handshake سه مسيره آناليز شده مابين ماشين محلي ما و سرور Google را نشان مي دهد.
در نظر داشته باشيد که هر چيزي از اينترفيس هاي شما عبور مي کند، قابل استراق سمع است و براي نمايش فقدان مطلق محرمانگي در يک بسته ي TCP، تلاش کنيد يک نشست MSN را باز کرده و سپس تمام بسته هاي خود را با فرمان زير استراق سمع نمائيد:
tcpdump-Xx-s 500 -n-i eth0 #
دست بکار شويد
يک فايروال اساساً به دلايل زير براي مسدود نمودن بسته هاي ناخواسته مورد استفاده قرار مي گيرد:
- مخفي کردن يک PC يا يک شبکه در برابر اسکن درگاه و نگاشت شبکه
- مسدود کردن تلاش هاي غير مجاز براي دسترسي
- مسدود کردن وضعيت نامطلوب ترافيک که مي تواند باعث ناپايداري گردد براي اين آزمايش، شما بايد يک آزمايشگاه کوچک را با تنها دو PC که با استفاده از يک LAN به هم متصل شده اند، راه اندازي کنيد. در صورتي که ترجيح مي دهيد، همچنين مي توانيد از يک ماشين مجازي براي اين منظور استفاده نمائيد. يکي از ماشين ها بايد يک PC لينوکس باشد که با يک فايروال Open Source عالي توکار همراه است: iptables. اين يک فايروال Plug- and- Play (نظير بسياري از روترهاي ISP) نيست و به شما امکان مي دهد تا کنترل کاملي بر تمام ترافيکي که به کامپيوتر شما وارد و يا از آن خارج مي شود، داشته باشيد. ماشين ديگر تنها براي ارسال بسته ها به فايروال مورد استفاده قرار خواهد گرفت.
يک پنجره ي ترمينال را بر روي ماشين لينوکس باز کرده و سپس فرمان زير را براي بررسي خط مشي هاي پيش فرض فايروال اجرا نمائيد:
# iptables - list
Chain INPUT (policy ACCEPT)
Chain FORWARD (policy ACCEPT)
Chain OUTPUT(policy ACCEPT)
اين بدان معني است که فايروال شما بطور پيش فرض تمام بسته ها را مي پذيرد. فعلاً فقط به ياد داشته باشيد که اين سه زنجيره چه هستند:
- INPUT: تمام بسته هاي ورودي به PC شما.
- FORWARD: تمام بسته هايي که از PC شما عبور مي کنند، اما براي ميزبان ديگري بر روي شبکه ارسال شده اند.
- OUTPUT: تمام بسته هايي که از PC شما خارج مي شوند.
ما در اين مقاله نمي توانيم بررسي عميقي از iptables را ارائه کنيم، ولي تلاش خواهيم نمود تا توضيح دهيم که چگونه مي توانيد قواعدي با کاربردهاي موردي را براي نيازهاي فايروالي خودتان ايجاد کنيد. اولين کاري که بايد انجام دهيد، مسدود نمودن تمام بسته هاي ورودي است. شما مي توانيد اين کار را تنها با تغيير خط مشي پيش فرض براي زنجيره ي INPUT به DROP با استفاده از گزينه -p در فرمان زير انجام دهيد:
# iptables -P INPUT DROP
درنتيجه، اگر بخواهيد Pingهاي ورودي را مسدود نموده اما Pingهاي خروجي را آزاد بگذاريد، بايد يک قاعده ي فايروال را بنويسيد که تمام بسته هاي ICMP ورودي از نوع echo- request را مسدود کند اما تمام بسته هاي ICMP ورودي از نوع echo-reply را بپذيرد. شما مي توانيد اين کار را تنها با فرمان زير انجام دهيد:
# iptables -A INPUT -p icmp --icmptype echo-reply -j ACCEPT
خوب، ماشين لينوکس شما اکنون بخوبي PC ديگر را در شبکه تان Ping مي کند، اما تلاش شما براي Ping نمودن Google با شکست مواجه خواهد شد، چرا؟ با مسدود کردن تمام بسته هاي ورودي به استثناء echo-reply، شما قادر به دريافت پاسخ از سرور DNS نخواهيد بود. هنگاميکه شما Google را Ping مي کنيد، ابتدا ماشين شما از سرور DNS مي خواهد تا دامنه Google را بصورت يک آدرس IP ترجمه نمايد. بعبارت ديگر، PC شما يک بسته ي UDP را به سرور DNS فرستاده و از آن مي پرسد که: آدرس IP متناظر با www.google.com چيست؟ سرور DNS نيز با بسته ديگري پاسخ داده و مي گويد: www.google.com داراي آدرس IP معادل 74.125.43.147 است. اگر با دريافت بسته هاي UDP از يک سرور DNS موافقت نکرده باشيد، هرگز نخواهيد توانست Google را Ping نمائيد. براي اينکار بايد قاعده جديد زير را اضافه کنيد:
# iptables -A INPUT -p udp --sport domain -j ACCEPT
# iptables -A INPUT -p udp -s 194.20.8.1 -- sport domain -j ACCEPT
# iptables -- list - line- numbers
# iptables -D INPUT 2
بنابراين، فايروال شما به يک قاعده ي جديد نياز دارد که به شما اجازه گردش بر روي وب را بدهد. با اين فرض که شما نياز داريد تنها بر روي درگاه 80 به سرور متصل شويد (در يک سناريوي واقعي، شما بايد درگاه هاي ديگري را نيز باز کنيد)، قاعده ي جديد مي تواند بصورت زير باشد:
# iptables -A INPUT -p tcp --sport 80 -j ACCEPT
بنابراين، قاعده ي فوق الذکر را با اين قاعده ي جديد جايگزين نمائيد:
# iptables -A INPUT -p tcp --sport 80 -m state --state RELATED, ESTABLISHED -j ACCEPT
اين يک قاعده ي واقعاً مهم است زيرا به شما امکان مي دهد تا بسياري از تکنيک هاي اسکن درگاه را مسدود کنيد که تلاش مي کنند با ارسال بسته هاي ACK بدون انجام يک اتصال Handshake سه مسيره، يک فايروال را دور بزنند.
شما با اين قواعد مي توانيد Pingهاي منظم و گردش در وب را با سطح امنيتي خوبي انجام دهيد. از اينجا به بعد شما بايد قواعد جديد را براساس نيازهاي خودتان اضافه کنيد. شما مي توانيد بسته هاي خروجي را با هدف مسدود نمودن هرگونه فعاليت بدي که از داخل آغاز شده است، محدود کنيد. براي مثال اگر بخواهيد تمام بسته هاي خروجي اتصالات Telnet (يک پروتکل واقعاً ناامن) را مسدود کنيد، مي توانيد قاعده اي مثل اين را بنويسيد:
# iptables -A OUTPUT -p tcp --dport telnet -j DROP
# iptables -A FORWARD -s 192.168.0.0/24 -d 192.168.1.0/24 -i eth0 -o eth1 -j ACCEPT
# iptables -A INPUT -j LOG -logprefix-»myLogInput»
هنگاميکه ثبت وقايع، يک پيشوند را نيز اضافه کنيد تا به آساني بتوانيد پيام هاي log را در جداول syslog فيلترگذاري کنيد. براي مثال اگر مي خواهيد تمام بسته هاي مسدود شده از زنجيره ي INPUT را نمايش دهيد، فرمان زير را تايپ کنيد:
# cat /var/log/syslog | grep:«myLogInput»
# iptables-save > /etc/sysconfig/iptables
# chkonfig iptables on
ساختن يک فايروال SOHO بعنوان يک تمرين
همانطور که مشاهده مي کنيد، دو PC دريک LAN از طريق يک روتر- سوئيچ تأمين شده توسط يک ISP به اينترنت متصل شده اند. بر روي PC1 يک سرور SSH و يک سرور VNC نصب شده است تا امکان دسترسي از راه دور به PC را در اختيار کاربر بگذارد. روتر به يک فايروال توکار Stateless مجهز است و به همين دليل شبکه داخلي بيش از حد در معرض تلاش هاي خارجي براي دسترسي غيرمجاز قرار مي گيرد.
وظيفه ي شما اين است که يک فايروال لينوکس را با iptables پيکربندي نمائيد تا از LAN داخلي در برابر دسترسي هاي خارجي محافظت کنيد، البته تنها به استثناء PC مجاز راه دور (همانطور که در شکل [7] نشان داده شده است).
فرض کنيد که درگاه ها و آدرس هاي IP مورد استفاده ما عبارتند از:
- آدرس IP روتر: 192.168.1.1
- آدرس IP اينترفيس eth0:192.168.1.2
- آدرس IP اينترفيس eht1:192.168.0.100
- آدرس PC1:192.168.0.1 IP
- آدرس PC2:192.168.0.2 IP
- درگاه سرور SSH فايروال: 222
- درگاه سرور VNC بر روي PC1:5901
تلاش کنيد نحوه پيکربندي فايروال را خودتان مشخص نمائيد، اما اگر به کمک نياز داريد، ليست [1] تذکراتي را براي اسکريپت پيکربندي شما ارائه مي کند:
فهرست [1]: اسکريپت iptables براي يک فايروال SOHO ابتدايي.
آزمايش نهائي
دور زدن فايروال الزاماً به معناي امکان ورود و دسترسي به شبکه نيست. تنها سرقت اطلاعات سيستم نيز براي مثبت بودن آزمايش کافي خواهد بود و اين بدان معني است که فايروال شما به آساني دور زده مي شود.
اگر اسکن درگاه تشخيص دهد که سيستم شما روشن است و يک يا چند درگاه باز بر روي آن وجود دارند، به معناي آن خواهد بود که شما بايد بعضي از قواعد فايروال خود را براي پنهان سازي بهتر اين اطلاعات اصلاح کنيد.
براي کشف اين که آيا ماشين روشن است يا خير، مي توانيد يکي از سه تکنيک زير را بکار بگيريد:
1- Ping کردن (اما ممکن است فايروال هنوز بسته هاي ICMP را فيلتر گذاري نمايد، بنابراين پاسخي دريافت نخواهيد کرد)
2- ارسال يک بسته ي TCP به درگاهي که قرار است باز باشد. اگر اين کار يک SYN-ACK را برگرداند، مشخص مي شود که ماشين روشن است.
3- ارسال يک بسته ي UDP به درگاهي که قرار است بسته باشد. اگر اين کار يک ICMP Port Unreachable را برگرداند، مشخص مي شود ماشين روشن است.
اجازه بدهيد ببينيم که Nmap چگونه مي تواند با تکنيک هاي بالا به ما کمک کند. براي ارسال يک Ping مي توانيد از فرمان زير استفاده نمائيد:
;$ nmap -sP <target>
$ nmap -PS222,5901<target>
همچنين، استفاده از يک بسته ي ACK را نيز آزمايش کنيد و درگاه 80 را در نظر بگيريد که معمولاً قرار است باز باشد:
$ nmap -PA80 <target>
حالا يک اسکن درگاه UDP را براي درگاهي که از بسته بودن آن اطلاع داريد، انجام دهيد. براي مثال:
# nmap -sU -p12345 <target>
حالا شما مي توانيد Nmap را وادار نمائيد تا فرض کند که ميزبان روشن است (با استفاده از گزينه PN-). بنابراين، شما مي توانيد هر نوع اسکن درگاه را بر روي درگاه هاي باز شناخته شده انجام داده و با فيلدهاي TCP flag بازي کنيد.
به اين ترتيب، مثلاً براي برقراري يک Handshake سه مسيره از يک اتصال TCP استفاده کنيد:
$ nmap -sT -PN -p 222,5901<target>
# nmap -sS -PN -p 222,5901 <target>
# nmap -sA -PN -p222,5901 <target>
# nmap -sV -O<target>
Nmap داراي ويژگي هاي فراوان ديگري است که شما مي توانيد از طريق مستندات آنلاين با نحوه استفاده از آنها آشنا شويد. توصيه مي کنيم وقت بيشتري را صرف بهره گيري از اين ابزار نمائيد.
IPCop: روش آسان
ساير سرويس هاي مفيدي که مي توانيد پس از نصب IPCop فعال نمائيد، عبارتند از:
- DHCP Client/Server
-Dynamic DNS
- HTTP/FTP Proxy (squid)
- IDS (snort)
- Log local or remote
- NTP Server/Client
-IPsec
شما مي توانيد تا 4 اينترفيس را فعال کنيد: شبکه داخلي، شبکه خارجي، DMZ و شبکه داخلي براي WiFi. به نظر مي رسد که اين ابزار بخوبي برروي سخت افزارهاي قديمي کار مي کند، حتي اگر نتوانيد از تمام سرويس هاي آن بر روي ماشين هايي با RAM پائين استفاده نمائيد. ما آن را بر روي يک PC قديمي با 64 مگابايت حافظه RAM نصب کرديم و توانستيم تنها با فعال کردن فايروال و SSH بخوبي از آن استفاده نمائيم.
شما مي توانيد بسته توزيع و مستندات راهنماي آن را از www.ipcop.org بارگذاري کنيد.
منبع:ماهنامه ي کامپيوتري بزرگراه رايانه، شماره ي 131.
/ج
{{Fullname}} {{Creationdate}}
{{Body}}