تور لحظه آخری
امروز : پنجشنبه ، 14 تیر 1403    احادیث و روایات:  امام علی (ع):حق، شمشير بُرَّنده اى است بر ضد اهل باطل.
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

تبلیغات متنی

اتاق فرار

خرید ووچر پرفکت مانی

تریدینگ ویو

کاشت ابرو

لمینت دندان

ونداد کولر

صرافی ارکی چنج

صرافی rkchange

دانلود سریال سووشون

دانلود فیلم

ناب مووی

رسانه حرف تو - مقایسه و اشتراک تجربه خرید

سرور اختصاصی ایران

تور دبی

دزدگیر منزل

تشریفات روناک

اجاره سند در شیراز

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

پیچ و مهره

طراحی کاتالوگ فوری

دانلود کتاب صوتی

تعمیرات مک بوک

Future Innovate Tech

آموزشگاه آرایشگری مردانه شفیع رسالت

پی جو مشاغل برتر شیراز

قیمت فرش

آموزش کیک پزی در تهران

لوله بازکنی تهران

میز جلو مبلی

هتل 5 ستاره شیراز

آراد برندینگ

رنگ استخری

سایبان ماشین

قالیشویی در تهران

مبل استیل

بهترین وکیل تهران

شرکت حسابداری

نظرسنجی انتخابات 1403

استعداد تحلیلی

کی شاپ

خرید دانه قهوه

دانلود رمان

وکیل کرج

آمپول بیوتین بپانتین

پرس برک

بهترین پکیج کنکور

خرید تیشرت مردانه

خرید نشادر

خرید یخچال خارجی

وکیل تبریز

اجاره سند

وام لوازم خانگی

نتایج انتخابات ریاست جمهوری

خرید سی پی ارزان

خرید ابزار دقیق

بهترین جراح بینی خانم

تاثیر رنگ لباس بر تعاملات انسانی

خرید ریبون

 






آمار وبسایت

 تعداد کل بازدیدها : 1804558639




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

امنيت با قانون


واضح آرشیو وب فارسی:راسخون:
امنيت با قانون
امنيت با قانون   نويسنده: عليرضا ساده صيقلان   Iptables نرم افزاري است که از طريق دستورات خط فرمان، فيلتر کردن بسته هاي شبکه ( Packet Filtering)، ترجمه آدرس شبکه( NAT) و ساير عمليات مرتبط با بسته ها را انجام مي دهد. در يک جمله مي توان گفت، Iptables يک فايروال قدرتمند را براي شما روي هسته لينوکس راه اندازي مي کند. Iptables توسط پلتفرم Netfilters توسعه و منتشر مي يابد که جد آن نرم افزار Ipchain است. Iptables مجموعه اي از زنجيرها(Chain)و قوانين (Rules) است که اين دو با يکديگر خواسته هاي شما را به انجام مي رسانند. در نگاه اول شايد کار با Iptables و حفظ دستورات و پارامترهاي آن برايتان سخت و خشک باشد و نااميد شويد، اما اگر مفاهيم اوليه کار اين نرم افزار را بياموزيد، تمام فايروال هاي گرافيکي با جلوه هاي بسيار زيبا و گزينه هاي ساده را دور خواهيد ريخت. در اين مقاله نخست سعي مي کنيم ساختار و مفاهيم Iptables را مرور کنيم و در ادامه به سراغ راه اندازي، پيکربندي و پياده سازي چند سناريو برويم. Iptables را نمي توان در يک مقاله گنجاند و همه نکات ريز و درشت آن را بررسي کرد. اميدواريم که اين مقاله شروعي براي آزموش و آشنايي با اين نرم افزار باشد. اصطلاح ها   نخست سراغ اصطلاح هايي مي رويم که در اين مقاله زياد استفاده شده اند: Packet: اطلاعات ب€راي انتقال در شبکه هاي TCP/IP OSI به بسته هايي مستقل تبديل مي شوند و در مقصد با ادغام اين بسته ها، اطلاعات اوليه ساخته شده و در اختيار سيستم قرار مي گيرند. حتي براي ارسال يک پيغام يا آدرس در شبکه از بسته ها استفاده مي شود. اين که شما در کدام لايه شبکه هستيد، واحد و فرمت بسته ها تغيير مي کند. براي نمونه، در لايه دوم واحد بسته ها فريم و در لايه سوم بسته است. بنابراين در شبکه، شما با بسته ها مواجه هستيد و بايد بتوانيد بسته هاي ورودي و خروجي را کنترل و مديريت کنيد. NAT( Network Address Translation): به معناي ترجمه آدرس شبکه و استانداردي براي تخصيص و ترجمه آدرس هاي IP عمومي و خصوصي براي کلاينت هاي داخل شبکه يا ارتباطات خارج از شبکه است. NAT مي تواند يک سخت افزار يا نرم افزار نصب شده روي سخت افزار باشد. براي نمونه، NAT مشخص مي کند آدرس هاي IP دريافت شده، از يک سخت افزار داخل شبکه است يا خارج از شبکه. Mangling: دستکاري و تغيير فرم بسته را به اصطلاح Mangling مي نامند. براي نمونه، هسته لينوکس مي تواند فيلدهايي از بسته را دستکاري و تغيير دهد. Rule: هر فايروال مجموعه اي از قوانين است. هر قانون مشخص مي کند روي بسته هاي شبکه چه اتفاقي بايد رخ دهد. براي نمونه، حذف بسته هاي ارسالي از آدرس 92.40.10.05 يک قانون يا Rule است. نمونه ديگر تغيير آدرس مقصد بسته هاي ارسالي از آدرس 192.158.00.10 يک قانون تعريف شده براي فايروال است. هر فايروال داراي يک سري قوانين از پيش تعريف شده است و قوانين ديگر را بايد کاربر تعريف کند. Chain: زنجيرها مجموعه اي از Ruleها يا قوانين هستند. براي نمونه، قانون حذف بسته ها از يک آدرس مشخص با قانون تغيير آدرس مقصد بسته ها در کنار يکديگر يک زنجيره را تشکيل مي دهند. مزيت زنجيرها اين است که مي توان چندين قانون را يکجا به بسته ها اعمال کرد. Table: جداول مجموعه اي از زنجيرها هستند. زنجيرهايي را که در يک دسته قرار مي گيرند، درون يک جدول تعريف مي کنند. اين طبقه بندي ها باعث سهولت کار کاربران و بالا رفتن سرعت مي شوند.
امنيت با قانون
ساختار Iptables   Iptables چيزي جز مجموعه اي از جداول و زنجيرها نيست. هر زنجير نيز شامل چندين قانون است. به طور پيش فرض سه جدول به نام هاي Filter، NAT و Mangle تعريف شده اند. در ادامه، کار جدول ها و زنجيرهاي تعريف شده روي آن ها را مرور مي کنيم. در پايان نيز کاربرد جدول ها و زنجيرها آورده شده است: جدول Filter: تمام قوانين و زنجيرهايي که به نوعي کار حذف يا عبور بسته را انجام مي دهند در اين جدول قرار مي گيرند. براي نمونه، قانون حذف بسته ها از آدرس 92.40.10.05 در اين جدول است. زنجيرهاي Input، Forward و Output در اين جدول قرار دارند. جدول NAT: شامل تمام قوانين و زنجيرهايي است که کار ترجمه يا تغيير آدرس ها را بر عهده دارند. براي نمونه، قانون تغيير آدرس 23.10.10.9 به آدرس 80.90.90.00 در اين جدول قرار مي گيرد. زنجيرهاي Prepouting و postrouting در اين جدول قرار دارند. جدول Mangle: قانون ها و زنجيرهاي پيشرفته مربوط به تغيير و دستکاري سرآيند( Header) بسته ها در اين جدول طبقه بندي مي شوند. تفاوت جدول NAT و Mangle در اين است که در NAT فقط آدرس ها تغيير يا دستکاري مي شوند، اما در Mangle فيلدهاي ديگر سرآيند بسته ها دستکاري مي شوند. زنجيرهاي Prerouting، Input و Output در اين جدول قرار دارند.
امنيت با قانون
فعال / غير فعال کردن Iptables   براي راه اندازي يا متوقف کردن Iptables مي توانيد از دستورات زير استفاده کنيد. البته بايد يادآوري کرد که Iptables هيچ گاه غير فعال نمي شود، اما مي توان آن را متوقف کرد: chkconfig Iptables on: تأييد پيکربندي Iptables Service Iptables start: راه اندازي سرويس Iptables Service Iptables restart: ريستارت سرويس Iptables Service Iptables stop: توقف سرويس Iptables فايل پيکربندي Iptables   فايل پيکربندي پيش فرض Iptables توزيع هاي RHEL، CentOS و Fedora در مسير etc/sysconfig/Iptables/ قرار دارد. براي ديدن قوانين پيش فرض از اين دستور استفاده مي کنيم: Iptables --line-numbers -n -L نمونه اي از خروجي اين دستور در تصوير 1 نشان داده شده است. سناريوي بلوک آدرس IP   با دستکاري آدرس هاي IP شروع مي کنيم. فرض کنيد مي خواهيم تمام بسته هايي را که از آدرس 200.200.200.1 مي آيد، بلوک کنيم. پارامتر s براي مشخص کردن آدرس مبدأ IP يا اسم DNS به کار مي رود. پس براي رجوع به ترافيکي که از اين آدرس مي آيد، دستور زير را به کار مي بريم: 200.200.200.1 Iptables -s# اما اين دستور مشخص نمي کند که چه بلايي سر بسته هايي با اين آدرس بياورد. پارامتر j مشخص مي کند که قرار است چه اتفاقي براي بسته بيفتد. در حقيقت، اين پارامتر نوع Action را مشخص مي کند. Actionهاي مرسوم سه تا هستند: DROP، DENY و ACCEPT. ACCEPT مجوز عبور بسته را صادر مي کند. DENY يک پيام برگشت حاوي مضمون « اين کامپيوتر کانکشن ها را نمي پذيرد»، ارسال مي کند. DROP هم بسته را به طور کامل Ignore مي کند: Iptables -s 200.200.200.1 -j DROP# هنوز دستورمان کامل نشده و سيستم آن را نمي فهمد. بايد قانون جديد تعريف شده را زير مجموعه يک زنجير قرار دهيم. پارامتر A اين قانون را به آخر هر زنجير که مشخص کنيد، اضافه مي کند. از آنجا که بسته ورودي است، آن را زير مجموعه زنجير Input قرار مي دهيم. بنابراين کل دستور به اين شکل خواهد بود: Iptables -A INPUT -s 200.200.200.1 -j# DROP از آنجا که مي خواهيم قانون هاي مختلف را تست کنيم، بهتر است سوييچ I (بزرگ) را براي Insert و عدد يک را براي ديدن نتايج قانون ها به کار ببريم. يعني عدد يک به قانون بالاترين اولويت را مي دهد. بنابراين به جاي دستور بالا، دستور زير را امتحان کنيد: Iptables -I INPUT 1 200.200.200.1 -j# DROP براي ديدن قانوني که تعريف کرديد، حتماً از دستوري استفاده کنيد که در آغاز مقاله براي مشاهده قانون ها گفته شد. اين دستور هر بسته اي را که از آدرس 200.200.200.1 دريافت شود، رد مي کند. نکته مهمي که در رابطه با پارامترهاي Iptables بايد مد نظر قرار دهيد، اين است که ترتيب پارامترها مهم نيست. براي نمونه، هدفمان از قراردادن DROP در آخر دستور اين بود که نتيجه کارمان را در آخر دستور قرار دهيم. اگر مي خواهيم خروجي سيستم يا شبکه با آدرس خاصي ارتباط برقرار نکند، کافي است در دستور بالا زنجير INPUT را به زنجير OUTPUT تغيير دهيم. سناريوي بلوک کردن سرويس Telnet   پورت 23 متعلق به Telnet است. در دستوري که خواهيد ديد، مي توانيد از کلمه Telnet به جاي به کار بردن شماره پورت آن استفاده کنيد. Telnet مانند بيشتر سرويس ها روي TCP اجرا مي شود. در حقيقت، Telnet يک پروتکل است که روي يک پروتکل بزرگ تر به نام TCP به کار مي رود. با سوييچ p پروتکل را مشخص مي کنيم. مي توانيم از سوييچ destination-port-- استفاده مي کنيم. بنابراين دستور به اين صورت مي شود: Iptables -I INPUT 1 -s 200.200.200.1 -p# tcp --destination-port telnet -j DROP نکته:براي ذخيره قانون مورد نظرتان از دستور زير استفاده کنيد: Iptables-save > /etc/sysconfig/Iptables# نکته: براي مشخص کردن يک محدوده (scope) از آدرس هاي IP، مي توانيد از فرمت آدرس W.X.Y.0/24 استفاده کنيد. براي نمونه در مثال 200.200.200.0/24، cider notation(/24) مشخص کننده subnetmask يعني 255.255.255.001 و محدوده آدرس هاي IP از 200.200.200.001 تا 200.200.200.254 است.
امنيت با قانون
سناريوي اينترنت   حالا وقت آن رسيده تا يک ماهي بزرگ تر بگيريم! فرض کنيد، يک شبکه محلي و يک اتصال اينترنت داريم. کارت شبکه eth0 و اتصال اينترنت PPP0 است. سناريوي ما اين است که مي خواهيم به Telnet اجازه دهيم به عنوان يک سرويس در شبکه عمل کند، اما در اينترنت اجرا نشود. يک راه ساده براي انجام اين سناريو وجود دارد. مي توانيم از پارامتر i براي تعيين interface ورودي و از پارامتر o براي interface خروجي استفاده کنيم. مي توانيد روي زنجير Output آن را بلوک کنيد، اما ترجيح مي دهيم آن را در زنجير Input بلوک کنيم تا Telnet daemon حتي يک درخواست را هم نبيند. بنابراين از پارامتر i استفاده مي کنيم. قانون ما به اين صورت خواهد بود: Iptables -I INPUT 1 -p tcp --dport telnet -i# ppp0 -j DROP سناريوي بلوک ترافيک ورودي   بياييد کمي پيشرفته تر کار کنيم. مي دانيم که بسته ها از يک پروتکل خاص استفاده مي کند و اگر آن پروتکل TCP باشد، به طور طبيعي از يک پورت مشخص استفاده مي کند. حالا ممکن است مجبور شويم فقط پورت هاي ترافيک ورودي را ببنديم. به ياد داشته باشيد، پس از گفت و گوي کامپيوترمان با کامپيوتر ديگر( تبادل ارتباط)، کامپيوتر مقابل بايد پاسخ دهد. اگر تمام پورت هاي ورودي را ببنديم، به طور عملي اتصال را بدون استفاده کرده ايم و براي بيشتر برنامه هاي غير سرويسيNon-Service) نمي توانيم پيش بيني کنيم که روي چه پورتي در ارتباط خواهند بود. هنوز يک راه وجود دارد. هر وقت دو کامپيوتر در حال صحبت تحت TCP هستند، آن اتصال نخست بايد initialize يا مقدار دهي اوليه شود. اين وظيفه Packet syn است. Packet syn است که به ديگر کامپيوترها مي گويد که آماده صحبت است. حالا فقط کامپيوتر، درخواست سرويس يک Packet syn را مي فرستد. بنابراين اگر فقط بسته هاي syn ورودي را بلوک کنيم، کامپيوترهاي ديگر را از باز کردن سرويس ها روي کامپيوترمان متوقف ساخته ايم، در حالي که ارتباط کامپيوتر ما برقرار است. تقريباً کامپيوترمان را مجبور مي کند که هر چيزي را Ignore کرده، قبل از اين که با آن صحبت کند. بعد از مشخص کردن پروتکل TCP، پارامتر مورد نظر براي اين کار syn است. بنابراين براي اين که قانون را مجبور کنيم تمام اتصالات ورودي را فقط روي اينترنت بلوک کند، از اين دستور استفاده مي کنيم: Iptables -I INPUT 1 -i ppp0 -p tcp# sync -j DROP-- سناريوي باز کردن پورت   اگر بخواهيم پورتي مانند پورت 80 (HTTP) را باز بگذاريم، يک راه ساده وجود دارد: تمام بسته هاي sync را روي تمام پورت ها غير از 80 بلوک کنيم: Iptables -I INPUT 1 -i ppp0 -p tcp# syn -dport ! 80 -j DROP-- تنها يک نکته باقي مي ماند و آن هم تغيير سياست زنجيرها است. زنجيرهاي INPUT و OUTPUT معمولاً به صورت پيش فرض روي ACCEPT، FORWARD و DENY قرار مي گيرند. اگر بخواهيم از اين کامپيوتر به عنوان يک روتر استفاده کنيم، ممکن است بخواهيم سياست مربوط به زنجير FORWARD را روي ACCEPT قرار دهيم. چگونه؟ فقط کافي است از پارامتر P ( P بزرگ ) استفاده کرده و پس از آن نام زنجير مورد نظر و در نهايت سياست جديد را تعيين مي کنيم. براي تغيير زنجير FORWARD به ACCEPT دستور زير را وارد مي کنيم: Iptables -P FORWARD ACCEPT# روش هاي ديگر دستکاري قوانين   پارامتر A يک قانون را به آخر فهرست اضافه ( Append) مي کند. اگر بخواهيم يک قانون را قبل از پايان زنجير قرار دهيم از پارامتر I استفاده مي کنيم. اين پارامتر، قانون را در يک موقعيت عددي قرار مي دهد. براي نمونه، اگر بخواهيم قانون را بالاي زنجير INPUT قرار دهيم، از I INPUT 1- استفاده مي کنيم. البته بايد ادامه دستور را اضافه کنيم. مي توانيد عدد يک را با هر عدد ديگري براي قرار دادن قانون در موقعيت مورد نظر جايگزين کنيد. اگر بخواهيم قانون را با قانوني که قبلاً وجود داشته، جايگزين کنيم از پارامتر R براي جايگزين کردن، استفاده مي کنيم. فرمت R مشابه I است، با اين تفاوت که پارامتر R، قانون مورد نظر را حذف و قانون جديد را جايگزين آن مي کند. براي حذف يک قانون، از پارامتر D استفاده کنيد. براي اين کار مي توانيد از يک عدد براي قانون استفاده کنيد يا اين که کل قانون را تايپ و در نهايت از اين پارامتر استفاده کنيد. راه اول عاقلانه تر و ساده تر است. دو پارامتر مهم ديگر نيز وجود دارد: L که تمام قانون هايي را که تاکنون تنظيم کرده ايم، فهرست مي کند. اين هنگامي مفيد است که فراموش کرديم کجا قرار داريم. پارامتر F يک زنجير مشخص را فلاش مي کند. در حقيقت، اين پارامتر تمام قانون هايي را که در زنجير قرار دارد، حذف مي کند. در اين حالت اگر زنجير خاصي را مشخص نکنيد، همه چيز را فلاش مي کند. همان طور که مشاهده کرديد، کار زياد سختي نبود. اين ها مفاهيم پايه Iptables بود. اين مفاهيم به شما کمک مي کنند يک فايروال محدود و جمع و جور راه بياندازيد و در ادامه با به دست آوردن تجارب بيشتر به راه اندازي يک فايروال قدرتمند اقدام کنيد. همچنين مي توانيد از صفحات راهنماي Iptables به خصوص هنگام فراموش کردن پارامترهاي آن استفاده کنيد. منبع:عصر شبکه، شماره 104. /ج  





این صفحه را در گوگل محبوب کنید

[ارسال شده از: راسخون]
[مشاهده در: www.rasekhoon.net]
[تعداد بازديد از اين مطلب: 803]

bt

اضافه شدن مطلب/حذف مطلب







-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن