نصب مودم در لينوكس
فرض كنيد لينوكس رو بعد از چند بار امتحان و خراب كاری اين بار درست و كامل نصب كرديد...و همه چی داره خوب كار می كنه ... الان حسابی به خودتون مفتخريد اما به محض اينكه قصد داريد با اينترنت كار كنيد دچار افسردگی روحی تصويری می شيد.چرا؟ خوب چون لينوكس مودم سيستم شما رو نشناخته، دقيقا می دونم اولش كلی حالتون گرفته ميشه اما بعد كه كمی تو اينترنت جستجو كرديد با پديده ای به نام LinModem يا WinModem مواجه می شويد.
شايد اين رو بدونيد كه خيلی از مودم های داخلی ( Internal ) كه در بازار هست به علت صرفه جويی در قيمت ،قسمتی از كارهای خودشون رو به صورت نرم افزاری و با تكيه بر قدرت سيستم عامل انجام میهند.اين هم مشخص هست كه بدون تعارف بيشترين سيستم عاملی كه از طرف كاربران استفاده می شود ويندوز است.پس سازندگان عمده سخت افزار ها معمولا به همراه قطعه توليدی خود درايور آن قطعه را برای سيستم عامل ويندوز ارائه می دهند.
در مورد قطعات حرفه ای تر مثل كارت های شبكه با كيفيت و مودم های مرغوب معمولا داريور مربوط برای سيستم عامل های ديگر مانند لينوكس و يونيكس نيز ارائه می شود.اما در مورد ساير قطعات شايد سازنده ها به خودشون زحمت تهيه داريورهای مختلف رو نمی دهند.
يكی از مزيت های سيستم های كدباز (Open Source) اين هستش كه به علت مشخص بودن منابع توسعه دهندگان بسياری در سرتاسر جهان برای اون تلاش می كنند.يكی از همين تلاش ها ايجاد درايور مورد نياز برای قطعات مختلف از جمله مودم ها می باشد.
بيشترين مشكلی كه من بعد از نصب لينوكس ها ديدم ( كه خودم هم همين مشكل رو داشتم ) نشناختن مودم از طرف لينوكس می باشد.سايت های مختلفی به جمع كردن اطلاعت مودم ها و درايورهای اون ها برای لينوكس وجود دارد كه من تجربه خودم در استفاده از اون ها رو كمی توضيح میدم.
اولين قدم سايت Linmodems هستش.شما در اين سايت فهرست كاملی از كارهايی رو كه بايد انجام بديد پيدا می كنيد.
برای كار با اين سايت ها با چند اصطلاح مواجه می شويد كه :
Winmodem تركيبی است از سخت افزار كه به عنوان چيپست شناخته می شود به همراه نرم افزاری كه برای سيستم عامل ويندوز تهيه شده است.
Linmodem نوعی از Winmodem است كه به كمك نرم افزاری ديگر می تواند تحت سيستم عامل لينوكس كار كند.
LTModem خانوادهای بزرگ از Winmodem ها هستند كه تحت چيپست های Lucent ( Aegere ) كار میكنند.
شما برای اينكه كار خود را به خوبی انجام دهيد نياز داريد اطلاعاتی در مورد سيستم خود داشته باشيد :
از چه ويرايشی از لينوكس (distribution ) استفاده میكنيد؟ از چه نسخه ای از كرنل در لينوكس خود استفاده می كنيد و سيستم شما بر پايه چه شاختاری می باشد.برای دانستن اين مطالب در خط فرمان لينوكس (Shell) از فرمان # uname –a استفاده كنيد.
همچنين نياز به اطلاعاتی در مورد مودم خود داريد كه اگر از نوع PCI است می توانيد با استفاده از ابزار PCItree اطلاعات لازم را بدست آوريد.
برای استفاده از اين نرم افزار بعد از دانلود آن با استفاده از فرامين pt_userg.htm از آن استفاده كنيد.
حال با استفاده از اطلاعاتی كه بدست آورديد امكان دارد بتوانيد در سايت Winmodems are not modems اطلاعات مربوط را بدست آوريد.
☼☼☼ حالا اين رو داشته باش :
اين روش سخت كار بود كه شما بايد اطلاعات را تك تك پيدا كنيد تا تازه امكان داشته باشه كه مودم خودتون رو نصب كنيد.به جای اين كارها می تونيد از يك Shell Script آماده كه واقعا به دردم خورد استفاده كنيد،اين ابزار scanModem نام دارد كه برای مودم های PCI فايل Installer مربوط رو تشخيص می دهد و شما سپس به سادگی می توانيد از آن استفاده كنيد.
بعد از دانلود كردن scanModem و اجرای آن به وسيله فرمان #sh scanModem گزارشی برای شما نمايش داده می شود كه در آن فايل های توصيه شده برای مودم شما معرفی شده اند.
بعد از اجرای اين برنامه چند فايل ديگر به نام های ModemData.txt* در محل اجرا ساخته می شوند كه شامل اطلاعات كاملی از سيستم شما می باشد.
اگر اين روش به شما كمكی نكرد بايد از همان روش هايی كه در بالا اشاره كردم استفاده كنيد،بعد از پيدا كردن فايل مربوط با استفاده از اين راهنما linmodem HOWTO كار را ادامه دهيد.
من از همين روش برای نصب مودم خودم كه از نوع Genius و مدل GM56PCI-L3 هست بر روی Mandrake 9.0 و كرنل 2.4.19 با ساختار i686 ( AMD Athlon XP 1800+) به وسيله نسخه rpm زير استفاده كردم.
ltmodem-kv_2.4.19_16mdk-8.26a9-1.i586.rpm
اين نسخه پيشنهادی scanModem بود كه به راحتی كار كرد.
يك بار ديگه سايت هايی كه می تونيد درايور رو از اونجا پيدا كنيد ويا كمك بگيريد ليست می كنم:
[External Link Removed for Guests]
Linmodems support page [External Link Removed for Guests]
PCI Vendor and Device Lists [External Link Removed for Guests]
در اين وب سايت می توانيد با استفاده از Vendor ID كه می توان با استفاده از نرم افزار PCItree آن را بدست آورد اطلاعات لازم را پيدا كنيد.
Linux winmodem pages [External Link Removed for Guests]
در اينجا احتمالا می تونيد مودم خودتون رو از هر نوعی كه باشد پيدا كنيد.
Linmodem-Howto En ya On
Lucent/Agere modem resources (LTModem Drivers for Linux )
Conexant drivers for Linux
Linmodems First Steps Beginner's Guide
Linmodem Resources
Identifying Your Modem Chipset
PCItree
Lucent DSP winmodem tracking page
آنچه در مورد Linux بايد بدانيم
مدیران انجمن: Mahdi Mahdavi, MASTER, شوراي نظارت

- پست: 542
- تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
- سپاسهای ارسالی: 112 بار
- سپاسهای دریافتی: 369 بار
- تماس:

- پست: 542
- تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
- سپاسهای ارسالی: 112 بار
- سپاسهای دریافتی: 369 بار
- تماس:
نرم افزارهاي لينوكس
PeaZip
برنامه ای کامل برای کار با انواع فایل های فشرده ( Zip , RAR , 7Z و ... )
PeaZip free archiver is a portable, open source archiving and compression utility, featuring strong encryption and file split/join tools. PeaZip is cross platform software, it runs on Windows 9x, 2000, XP, Vista and on Linux and supports handling of many archive and compression formats:
Full support (read and write):
7Z, 7Z-sfx, BZip2/TBZ2, GZip/TGZ, LPAQ, PAQ, PEA, QUAD, split, TAR, UPX, ZIP.
Open, browse, extract, test: ACE, ARJ, CAB, CHM, COMPOUND (MSI, DOC, XSL, PPT), CPIO, ISO, Java(JAR, EAR, WAR), Linux (DEB, PET/PUP, RPM, SLP), LHA/LZH, NSIS, OOo, PAK/PK3/PK4, RAR, WIM, XPI, Z/TZ.
لینک دانلود نسخه 1.9.2
Ubuntu & Debian
کد:
[External Link Removed for Guests]
RPM
کد:
[External Link Removed for Guests]
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
istanbul برای فیلم برداری از محیط دسکتاپ های kde , xfce و Gnome است. البته اگر از KDE استفاده می کنید
کد:
[External Link Removed for Guests]بسته های زیر از پیش نیاز های این برنامه است که قبلا باید نصب شود:
کد:
GStreamer 0.10
Gst-plugins-base 0.10
PyGTK 2.6
Gnome Python Extras >= 2.11.3
Gst-python 0.10
python-xlib
لینک دانلود :
Fedora 6
کد:
[External Link Removed for Guests]
Fedora 7
کد:
[External Link Removed for Guests]
Ubuntu & Debian
کد:
[External Link Removed for Guests]
openSUSE 10.2
کد:
[External Link Removed for Guests]
PeaZip
برنامه ای کامل برای کار با انواع فایل های فشرده ( Zip , RAR , 7Z و ... )
PeaZip free archiver is a portable, open source archiving and compression utility, featuring strong encryption and file split/join tools. PeaZip is cross platform software, it runs on Windows 9x, 2000, XP, Vista and on Linux and supports handling of many archive and compression formats:
Full support (read and write):
7Z, 7Z-sfx, BZip2/TBZ2, GZip/TGZ, LPAQ, PAQ, PEA, QUAD, split, TAR, UPX, ZIP.
Open, browse, extract, test: ACE, ARJ, CAB, CHM, COMPOUND (MSI, DOC, XSL, PPT), CPIO, ISO, Java(JAR, EAR, WAR), Linux (DEB, PET/PUP, RPM, SLP), LHA/LZH, NSIS, OOo, PAK/PK3/PK4, RAR, WIM, XPI, Z/TZ.
لینک دانلود نسخه 1.9.2
Ubuntu & Debian
کد:
[External Link Removed for Guests]
RPM
کد:
[External Link Removed for Guests]
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
istanbul برای فیلم برداری از محیط دسکتاپ های kde , xfce و Gnome است. البته اگر از KDE استفاده می کنید
کد:
[External Link Removed for Guests]بسته های زیر از پیش نیاز های این برنامه است که قبلا باید نصب شود:
کد:
GStreamer 0.10
Gst-plugins-base 0.10
PyGTK 2.6
Gnome Python Extras >= 2.11.3
Gst-python 0.10
python-xlib
لینک دانلود :
Fedora 6
کد:
[External Link Removed for Guests]
Fedora 7
کد:
[External Link Removed for Guests]
Ubuntu & Debian
کد:
[External Link Removed for Guests]
openSUSE 10.2
کد:
[External Link Removed for Guests]
برای هر چیز زکاتی است و زکات علم نشر دادن آن است.
الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.
الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.

- پست: 542
- تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
- سپاسهای ارسالی: 112 بار
- سپاسهای دریافتی: 369 بار
- تماس:
اوبونتو ۷.۰۴ با نام مستعار Feisty Fawn «آهوی چابک» منتشر شد !اوبونتو یک سیستم عامل کاملاً آزاد و رایگان بر اساس گنو/لینوکس٬ همراه با پشتیبانی در سطح جامعه کاربران و خدمات تجاری و حرفهای است. اوبونتو توسط اجتماع بزرگی از کاربران و توسعه دهندگان در سراسر دنیا توسعه داده میشود و ما از شما نیز دعوت مینمائیم تا به این اجتماع بپیوندید!اجتماع اوبونتو بر اساس ایدههای فلسفه اوبونتو که میگوید: نرمافزار باید آزاد و رایگان در اختیار عموم باشد٬ همچنین ابزارهای نرمافزاری مختلف میبایست به صورت سفارشی و به زبان محلی کاربران در اختیارشان باشند و کاربران مجاز باشند نرمافزار را بر اساس نیازهای خود سفارشی نموده و استفاده نمایند٬ شکل گرفته است.
این آزادیها موجب شدهاند٬ اوبونتو اساساً با نرم افزارهای سنتی خصوصی متفاوت باشد. نه تنها ابزارها و نرمافزارهای مورد نیازتان رایگان هستند٬ بلکه شما مجاز خواهید بود نرمافزارها را مطابق نیازتان و بگونهای که مایلید سفارشی نموده و استفاده نمائید.
اوبونتو برای استفاده به عنوان رومیزی و کارگزار (سرور) مناسب است. نسخه فعلی اوبونتو از معماریهای سخت افزاری مختلف شامل انواع PC های Intel x86 و 64bit و همچنین ماشینهای UltraSPARC T1 شرکت SUN و PowerPC شرکت Apple پشتیبانی میکند.
اوبونتو دارای بیش از ۱۶۰۰۰ بسته نرمافزاری است و هسته اصلی آن بر روی یک سیدی عرضه میشود. اوبونتو دارای انواع ابزارهای نرمافزاری از نرمافزارهای کاتب و صفحه گستردهٔ اداری تا کارگزارهای اینترنتی و ابزارهای مناسب برنامهنویسی است.
Kubuntu چیست؟
توزیعی از لینوکس مبتنی بر اوبونتو با این تفاوت که برای محیط رومیزی پیش فرض آن به جای Gnome از ، KDE استفاده شده است .
Edubuntu چیست؟
توزیعی از لینوکس مبتنی بر اوبونتو با هدف آموزشی و استفاده در لابراتورها به همراه برنامه های آموزشی و دانشگاهی .
Xubuntu چیست؟
توزیعی از لینوکس مبتنی بر اوبونتو با این تفاوت که برای محیط رومیزی پیش فرض آن به جای Gnome از ،Xfce استفاده شده است
تمام نسخه هاي Ubuntu كه در زير با آنها روبرو هستيد با فرمت ISO ميباشد لذا براي استفاده از آن بايد آنها را بر روي يك سي دي رايت كرده و يا از درايور هاي مجازي مانند DemoTools و يا CloneCD استفاده كنيد .
کدهای دانلود:
نسخه 64 بيت معمولي براي پردازنده هاي AMD - حجم 967 مگابايت
[External Link Removed for Guests]
نسخه 32 بيت معمولي براي پردازنده هاي Intel - حجم 692 مگابايت
[External Link Removed for Guests]
نسخه 64 بيت سرور براي پردازنده هاي AMD - حجم 488 مگابايت
[External Link Removed for Guests]
نسخه 32 بيت سرور براي پردازنده هاي Intel - حجم 474 مگابايت
[External Link Removed for Guests]
نسخه های بیشتر
[External Link Removed for Guests]
برای هر چیز زکاتی است و زکات علم نشر دادن آن است.
الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.
الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.

- پست: 542
- تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
- سپاسهای ارسالی: 112 بار
- سپاسهای دریافتی: 369 بار
- تماس:
تجربه سيستم عامل لينوكس با Slax Linux 6.0 RC3
اينهم سيستم عامل زيبا و سريع لينوکس اسلکس که نيازي به نصب نداشته و قابل اجرا از روي CD و يا USB مي باشد.اين سيستم عامل بر پايه Slackware Linux ساخته شده و از سيستم فايل يکسان که تحت عنوان unionfs شناخته مي شود ، بهره مي برد. در تعريف از اين سيتم عامل آمده که : کافي است که همينقدر تصور نماييد که مي توانيد از آن در مدرسه ؛ خانه ؛ محل کار استفاده نماييد؛ آنهم تنها با استفاده از يک CD.
شما فقط باید فایل iso رو روی سی دی رایت کنید و از این سیستم عامل لذت ببرید.
حجم 198 مگابایت
ftp://ftp.slax.org/SLAX-6.x/rc3/slax-6.0.0rc3.iso
برای هر چیز زکاتی است و زکات علم نشر دادن آن است.
الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.
الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.

- پست: 542
- تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
- سپاسهای ارسالی: 112 بار
- سپاسهای دریافتی: 369 بار
- تماس:
EXT2 IFS for Windows NT/2K/XP 0.3
با نصب این درایور میتوانید پارتیشن های لینوکس را در ویندوز ببینید و از فایل هایی که روی آن ذخیره شده است استفاده کنید. این برنامه قادر به خواندن فایل سیستم های EXT2 و EXT3 میباشد.
دانلود:
[External Link Removed for Guests]
[External Link Removed for Guests]
با نصب این درایور میتوانید پارتیشن های لینوکس را در ویندوز ببینید و از فایل هایی که روی آن ذخیره شده است استفاده کنید. این برنامه قادر به خواندن فایل سیستم های EXT2 و EXT3 میباشد.
دانلود:
[External Link Removed for Guests]
[External Link Removed for Guests]
برای هر چیز زکاتی است و زکات علم نشر دادن آن است.
الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.
الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.

- پست: 542
- تاریخ عضویت: شنبه ۱۹ اسفند ۱۳۸۵, ۷:۰۱ ب.ظ
- سپاسهای ارسالی: 112 بار
- سپاسهای دریافتی: 369 بار
- تماس:
ورود ممنوع! آشنايي با دستور iptables در لينوكس
ورود ممنوع! آشنايي با دستور iptables در لينوكس
ترجمه: عرفان نظري
اشاره :
آيا تا به حال به فكر ساختن يك فايروال شخصي افتادهايد؟ در اين مقاله ضمن آشنايي با فايروال درونساز لينوكس، با ايجاد قواعد و پيكربندي آنها نيز آشنا ميشويد. در پايان يك مثال ساده براي تكميل مطالب آوردهام و اميدوارم اين قدم براي شروع آشنايي با فايروال لينوكس باشد. كسي چه ميداند؟ شايد آنقدر ادامه داديد كه در آينده توانستيد يك فايروال Enterprise بسازيد و به جمع توليدكنندگان بزرگ نرمافزار دنيا بپيونديد! آنقدرها هم كه فكر ميكنيد، سخت نيست. انجام اين كار كمي همت ميخواهد. iptables دستوري است كه با آن به هسته لينوكس ميگوييم با ترافيك شبكه چگونه برخورد كند. براي مثال، براي رد IP پكتها، مسيرگرداني آنها، يا انجام Network Address Translation) NAT) ميتوان از اين دستور استفاده كرد. در لينوكسهاي با هسته 3/2 و پايينتر براي پيكربندي قابليت فايروال از دستور ipchains استفاده ميشد، اما براي پيكربندي لينوكسهاي بر پايه كرنل 4/2 (كرنلي كه همه لينوكسهاي حاضر از آن استفاده ميكنند) استفاده از دستور iptables مقدم است. دستور iptables كنترل بهتر و انعطاف بيشتر در پيكربندي قواعد فايروال را به ارمغان ميآورد. قبل از شروع كار براي پيكربندي قواعد (Rules) با دستور iptables بايد با چند عبارت آشنا شويم.
منبع: Firewalls for Dummies
Tables يا جداول
جايي است كه يك فايروال لينوكس براي ذخيرهسازي و نگهداري مجموعه قواعد، از آن استفاده ميكند. جدول اصلي در ميان اين جداول، جدول ف_ * ل*_ ت ر است كه در آن ميتوانيد مجموعهاي از قوانين را براي اعمال به ترافيك ورودي و خروجي وضع كنيد. همچنين اين جدول، جدول پيشفرضي است كه وقتي در خط فرمان جدولي را مشخص نميكنيد، تغييرات آن اعمال ميشود. جدول NAT حاوي قواعدي است كه براي لينوكس معين ميكند چگونهNAT را اجرا كند. جدول Mangle براي مسيريابي پيشرفته پكتها استفاده ميشود و كاربرد ضروري و زيادي ندارد.
Chains يا رشتهها
از عبارت رشته يا Chains براي اشاره به مجموعه قواعدي استفاده ميشود كه لينوكس در حين ف_ * ل*_ ت ر كردن ترافيك شبكه از آنها استفاده ميكند. در اينجا كلاً سه نوع رشته داريم:
رشته ورودي: اين رشته يا زنجيره به كل ترافيك وارده به كامپيوتر فايروال اعمال ميشود.
رشته خروجي: اين زنجيره به كل ترافيك خروجي از كامپيوتر فايروال اعمال ميشود. مثلاً اگر فايروال نياز دارد براي جستوجوي يك نام با سرور DNS ارتباط برقرار كند، بايد زنجيره خروجي را براي اجازه انجام اين كار پيكربندي كنيد.
زنجيره Forward: اين زنجيره به كل ترافيكي كه فايروال لينوكس براي ديگر كامپيوترها فراهم ميكند اعمال ميشود. مثلاً اگر در شبكه ميخواهيد ترافيك از سرويسگيرندهها به اينترنت را توسط فايروال كنترل كنيد، بايد اين زنجيره را پيكربندي نماييد.
دستور
نام
توضيحات
A-
Append
اين دستور قاعدهاي را به انتهاي يک رشته اضافه ميکند.
I-
Insert
اين دستور قاعدهاي را به ابتداي يک رشته اضافه ميکند.
Delete
اين دستور قاعدهاي با شماره مشخص را از رشتهاي حذف ميکند.
[L[chain-
List
اين دستور قواعد موجود در يک زنجيره را فهرست ميکند.
اگر زنجيره را مشخص نکنيد، قواعد همه رشتهها فهرست خواهند شد.
New
اين دستور يک زنجيره جديد ايجاد ميکند.
ميتوانيد زنجيرههاي جديد را با قواعد مجزا تغريف کنيد.
Delete
اين دستور يک رشته ايجاد شده توسط کاربر را حذف ميکند.
[
Flush
اين دستور تمام قواعد موجود در يک زنجيره را حذف ميکند.
اگر زنجيرهاي را مشخص نکنيد، همه قواعد موجود در همه زنجيرهها حذف خواهند شد.
h-
Help
اين دستور تمام دستورات و پارامترهاي iptables را فهرست ميکند.
اگر از h- در پايان يک دستور استفاده کنيد، تمام پارامترهاي ممکن براي آن فهرست ميشود.
جدول1- دستورات معمول iptables
DNAT & SNAT ،Masquerading
اين عبارات بيانكننده فرمهاي مختلف برگردان (ترجمه) آدرس شبكه يا NAT هستند. SNAT آدرس منبع يك پكت را قبل از ارسال آن عوض ميكند و در اكثر مواقع براي مخفي كردن آدرس واقعي سرويسگيرنده در ترافيك خروجي مورد استفاده قرار ميگيرد.
DNAT آدرس مقصد پكتها را قبل از ارسال عوض ميكند و اكثراً در پراكسي سرورهاي مخفي يا transparent استفاده ميشود. Masquerading يك فرم سفارشي از NAT است كه به يك آدرس استاتيك نياز ندارد و براي مواقعي مناسب است كه ميخواهيد شبكه داخلي شما و اجزاي آن از خارج شبكه مخفي شود و در عين حال آدرس IP خارجي شما به صورت ديناميكي عوض ميشود.
دستور
توضيحات
DROP
وقتي يك قاعده، پكتي را به مقصد DROP ميفرستد، بيهيچ پاسخي پكت نابود شده و رد ميگردد.
REJECT
وقتي يك قاعده، پكتي را به مقصد REJECT ميفرستد، پكت نابود ميشود. اما در اين حالت لينوكس يك پيغامICMP به منبع ارسال ميكند و به او ميگويد كه پكت ارسالي رد شده است. با اينكه اين يك رد محترمانه است، اين عمل ميتواند براي مهاجم نشانه آن باشد كه حداقل چيزي در آن طرف وجود دارد! در بيشتر موارد انتخاب امنتر، مقصدDROP است.
ACCEPT
براي پكتهايي كه بايد از فايروال عبور كنند، از اين مقصد ميتوانيد استفاده كنيد. انتخاب اين مقصد به معني آن است كه پكت پذيرفته شده است و به آن اجازه عبور به داخل يا خارج شبكه داده ميشود.
LOG
انتخاب اين مقصد به معني آن است كه اين پكت فقط گزارش خواهد شد و عمل ديگري انجام نخواهد پذيرفت. به عبارت سادهتر، هر پكتي كه به اين مقصد فرستاده شود، ورود آن در LOG فايل سيستم ثبت خواهد شد. براي شناسايي حملات اين يك راهكار مناسب است.
SNAT
اين مقصد فقط در زنجيره مسيريابي پيشرفته جدول NAT استفاده ميشود. استفاده از SNAT باعث ميشود آدرس فرستنده پكت به آنچه شما تعيين ميكنيد تغيير پيدا كند. به خاطر داشته باشيد اين مقصد براي فايروالهايي كاربرد دارد كه از يك IP استاتيك استفاده ميكنند و معمولاً براي پكتهاي خروجي (خارجشونده) مورد استفاده قرار ميگيرد.
DNAT
اين مقصد فقط در زنجيره پيش مسيريابي جدول NAT استفاده ميشود. استفاده از DNAT باعث ميشود تا آدرس گيرنده پكت به آنچه شما تعيين ميكنيد تغيير پيدا كند و معمولاً براي پكتهاي ورودي (وارد شونده) مورد استفاده قرار ميگيرد.
MASQUERADE
اين مقصد وقتي فايروال از آدرس ديناميك استفاده ميكند، مانند NAT روي پكتها عمل مينمايد. اين مقصد فقط در زنجيره مسيريابي پيشرفته جدول NAT قابل استفاده است.
user chain
اين يك مقصد دلخواه است. حروف كج به معناي آن است كه بايد از نام زنجيرهاي كه ساختهايد براي آن استفاده كنيد. ميتوانيد پكت را به چنين زنجيرهاي براي پردازش بيشتر ارسال كنيد. براي مثال، ورود يك پكت با شرايط خاص را ميتوانيد درLOG فايل ثبت نماييد و با ارسال آن به يك زنجيره كه خود ساختهايد، آن را DROP كنيد.
استفاده از دستورات iptables
همه دستورات iptables با يك عبارت مشترك iptables شروع ميشوند و با پارامترهاي ديگر ادامه پيدا ميكنند. براي مجبور كردن لينوكس به اضافه كردن يك قاعده به يكي از زنجيرها يا حذف يكي از اين قواعد، از دستور زير استفاده ميكنيم (پارامترهاي اختياري در كروشه قرار گرفتهاند.)
[iptables[-t table]CMD[chain][filter_match][target
در دستورات iptables بايد موارد زير را مشخص كنيد:
●جدولي را كه دستور بايد به آن اعمال شود [t table-]
● نوع دستور (در اينجا CMD)
● زنجيرهاي كه دستور به آن تعلق خواهد داشت. [chain]
●عباراتي كه مشخص ميكند ف_ * ل*_ ت ر بايد به چه نوع ترافيكي اعمال شود. [filter_ match]
● عبارتي كه به لينوكس ميگويد با پكت بايد چه كار كند [target]
●عنوان مثال، براي اضافه كردن يك قاعده ساده به رشته (chain) ورودي از جدول ف_ * ل*_ ت ر براي رد تمام پكتهاي ICMP بايد از دستور زير استفاده كنيد:
iptables -t filter -A INPUT -p icmp DROP
در اين دستور filter نام جدول مورد نظر، INPUT نام رشتهاي است كه ميخواهيم عمل در آن انجام گيرد، و DROP مقصد مورد نظر ما است. اين دستور به لينوكس ميگويد: اگر رشته ورودي (INPUT) جدول ف_ * ل*_ ت ر، پكتي را كه از پروتكل ICMP استفاده ميكند دريافت كرد، پكت را به مقصد «رد» بفرست! يعني كل ترافيك ICMP را رد و حذف كن.
قبل از اينكه بخواهيد قواعد مورد نظر خود را تعيين كنيد، بايد با دستورات پايه، عبارات متناظر با ف_ * ل*_ ت ر، و مقصدها آشنا شويد. جدول 1 حاوي اين دستورات پايه و توضيحات آنها است.
مقاصد iptables
يك مقصد، جايي است كه يك رشته يا زنجيره، پكت داده را به آنجا ارسال خواهد كرد. البته ميتوانيد اينگونه تصور كنيد كه يك مقصد عملي است كه لينوكس روي پكت داده انجام ميدهد. مقاصد قابل تعريف در دستورات در جدول 2 آمده است.
يك مثال ساده: ساخت يك فايروال لينوكسي!
حالا تمام چيزهايي كه براي ساخت يك فايروال در لينوكس احتياج داريد را در اختيار داريد. ببينيد چقدر ساده است: فايروالي كه ميخواهيم بسازيم، بايد تمام ترافيك خروجي را عبور دهد و كل ترافيك ورودي را با دو استثنا بلوكه نمايد: اجازه ورود به قسمتي از ترافيك ورودي TCP (كه براي ايجاد اتصالات با شبكه خارج مورد نياز است) و ترافيك ورودي UDP در پورت 53.
اجازه عبور ترافيك در پورت 53 از UDP براي اين است كه فرض كردهايم ممكن است فايروال به انجام پرسوجوهاي DNS نياز داشته باشد. توجه كنيد كه ايجاد يك اسكريپت و اجراي آن در شروع اجراي لينوكس بهتر از تايپ دستورات به صورت جداگانه است.
پيش از همه تمام زنجيرهها و محتوياتشان را پاك ميكنيم:
iptables -F
ممكن است يك سري زنجيره ساخت كاربر هم وجود داشته باشد
پس اينها را هم حذف ميكنيم:
iptables -X
حال ميخواهيم به تمام پكتهاي ورودي به رابط (كارت شبكه) eth0 اجازه ورود بدهيم:
iptables-A INOUT-i eth0-j ACCEPT
ممكن است كامپيوتر به پرسوجوهاي DNS نياز داشته باشد.
قاعده زير اين اجازه را به كامپيوتر ميدهد xxx.xxx.xxx.xxx را با آدرس فايروال عوض كنيد:
iptables -A INPUT -p udp -s xxx.xxx.xxx.xxx -sport 53\-j ACCEPT
قبل از رد پكتها بايد آنها را ثبت و گزارش كرد:
iptables -A INPUT -I eth0-jLOG
حال بايد تمام پكتهاي ورودي كه در شرايط بالا صدق نميكنند رد شوند:
iptables -A INPUT -I eth0 -DROP
پس از وارد كردن تمام قواعد در زنجيره ورودي، با استفاده از دستور:
iptables -V -L INPUT
ميتوانيد فهرستي از آنها را مشاهده كنيد. گزينه V- براي نمايش جزئيات استفاده شده است.
تقدم
تقدم قواعدي كه اجرا خواهند شد به iptables مربوط است. به همين دليل در iptables يك دستور مناسب (A-) براي الحاق دستورات به انتهاي زنجيره پردازشي و دستور مناسب ديگري (I-) براي الحاق دستورات به ابتداي زنجيره پردازشي در نظر گرفته شده است. بهتر است قبل از قراردادن قواعد و دستورات در زنجيرهها، آنها را تعيين و تعريف كنيد. در ادامه به صورت اجمالي با طرز عملكرد iptables آشنا ميشويم.
برخلاف ديگر فايروالها، iptables يك دستور ف_ * ل*_ ت ر را اجرا مينمايد و سپس پردازش دستورات را متوقف ميكند تا به اصطلاح يك match ديگر اتفاق بيفتد. يعني شرايط پكت وارده با قواعدي كه تعيين شدهاند به ترتيب از بالا به پايين مقايسه ميشود و اگر پكت مشمول يكي از اين قواعد باشد، دستور مربوطه در آن فرمان روي پكت اجرا خواهد شد.
براي مثال، اگر قاعدهاي را براي رد كردن نوع مشخصي از ترافيك (مثلاً پكتهاي پورت 33 از پروتكل TCP) در نظر گرفتهايد، بهتر است انواع مورد نياز خود را عبور دهيد و سپس قاعدهاي براي رد بقيه (كه غيرضروريند) در نظر بگيريد. يعني آنهايي را تعيين كنيد كه نياز داريد عبور كنند (مثلاً پكتهاي پورت TCP 80 و بقيه ترافيك ورودي را رد كنيد.
توجه كنيد كه قاعده رد همه (بقيه) در انتهاي زنجيره قرار گرفته باشد. در اين صورت اگر لينوكس با پكتي كه بايد عبور داده شود برخورد كند، آن را عبور ميدهد و قاعده رد ديگر به آن اعمال نخواهد شد. اگر به جاي قاعده رد همه را به بالاترين قاعده انتقال دهيد، لينوكس پكت را آزمايش ميكند و اگر با رد همه مواجه شود، آن را رد خواهد كرد و قاعده عبور پكت مورد نياز ما هيچگاه در نظر گرفته نخواهد شد! پس همواره قرار دادن قواعد صادركننده مجوز عبور در موقعيتهاي بالاتر و در انتها قرار دادن آنهايي كه بايد پكتها را رد كنند، را به خاطر داشته باشيد.
براي ايجاد قواعد پيچيده، ميتوانيد زنجيرههايي بسازيد كه پردازش بيشتري روي پكتها انجام ميدهند. عبارات شرطي به دستورات اضافه كنيد يا قواعدي را تعيين كنيد كه بيش از يك شرط براي مقايسه و اعمال روي پكتها دارند. به خاطر داشته باشيد كه وقتي يك پكت به مقصد گزارش فرستاده ميشود، پردازش پايان نمييابد و بعداً ميتوانيد براي رد يا قبول آن تصميمگيري كنيد.
آپشن
توضيحات
(P (protocol-
اين آپشن تعيين ميکند که قاعده روي چه پروتکلي اعمال شود. پارامتر protocol ميتواند udp، TCP يا icmp باشد. البته ميتوانيد نام هر پروتکلي که در etc/protocols/ آورده شده است را به کار ببريد. براي اعمال قاعده به تمام پروتکلها بايد از 0 يا عبارت all استفاده کنيد.
([S (source address[/mask-
از اين سوييچ براي مشخص کردن آدرس فرستنده پکت استفاده ميگردد. پارامتر mask اختياري و نشانگر subnet mask است. در اين جا فقط از يک عدد براي تعداد بيتهاي subnet mask استفاده خواهيد کرد.
براي مثال s 192.168.1.1- به پکتهايي با آدرس 192.168.1.1 اشاره ميکند و s 192.168.1.1/24- مشخص کننده پکتهايي با آدرسي در بازه 192.168.1.1 تا 192.168.1.255 خواهد بود. عدد 24 نشاندهنده آن است که آدرسهاي موردنظر در 24 بيت اول (سه قسمت اول آدرسدهي IP) مشترکند و هشت بيت آخر متغيير خواهند بود.
([d (destination address[/mask-
از اين سوييچ براي مشخص کردن آدرس فرستنده پکت استفاده ميگردد. پارامتر mask در اينجا نيز اختياري و نشانگر subnet mask است. در اين جا فقط از يک عدد براي تعداد بيتهاي subnet mask استفاده خواهيد کرد.
براي مثال d 23.2.4.7- نشانگر پکتي با آدرس مقصد 23.2.4.7 و d 23.0.0.0/8- نشانگر تمام آدرسهاي بين 23.0.0.0 و 23.255.255.255 (يعني آدرسهاي رنج مورد نظر فقط در هشت بيت اول مشترک هستند) است.
(source-port(port--
از اين سوييچ براي مشخص کردن پورت پکتهاي TCP و UDP مورد استفاده قرار ميگيرد. البته چون فقط اين دو پروتکل از پورتها استفاده ميکنند، اين گزينه فقط براي سوييچهاي p TCP- و p udp- قابل استفاده است. با استفاده از کاراکتر دو نقطه ميتوانيد رنجي از پورتها را تعيين کنيد.
p TCP -source-port0:1023- به پکتهاي TCP اشاره ميکند که پورت فرستنده آنها بين صفر تا 1023 باشد.
(destination-port(port--
عملکرد اين گزينه نيز مانند گزينه قبلي است و تنها فرق آن با قبلي اين است که در مورد پورت مقصد پکتها پردازش انجام ميدهند.
(i (interface-
اين گزينه براي مشخص کردن رابط شبکه استفاده ميشود. به اين مثال توجه کنيد: i eth0- به تمام پکتهاي وارده به رابط شبکهاي با نام eth0 (مثلاً يک کارت شبکه يا يک مودم) اشاره ميکند. ميتوانيد با اضافه کردن + به آخر يک عبارت در قسمت نام رابط، به تمام رابطهايي که نامشان با عبارت وارد شده شروع ميشود اشاره کنيد.
(o (interface-
اين گزينه هم مانند مورد قبلي است. البته در مورد پکتهاي خروجي از رابط شبکه عمل ميکند.
syn--
اين گزينه پکتهاي ايجاد اتصال جديد TCP را مشخص ميکند. در مورد پکت SYN بايد دانست که براي ايجاد يک اتصال TCP چند مرحله انجام ميشود: در مرحله اول کامپيوتر درخواست کننده شروع اتصال، يک پکت براي کامپيوتر مقصد ميفرستند و مقصد نيز در صورت موافقت به ايجاد اتصال يک پکت موافقت يا ACK به مبدأ ميفرستد. با اين گزينه ميتوانيد پکت درخواست ايجاد يک اتصال جديد را مشخص نماييد و مثلاً براي پکتهاي ورودي آن را بلوکه کنيد تا از بيرون، داخل شبکه شما قابل دسترس نباشد.
(icmp-type(type--
اين هم يک گزينه وابسته است و فقط بايد با p icmp- مورد استفاده قرار گيرد. مورد استفاده آن هم مشخص کردن نوعي خاص در icmp است. اين هم يک مثال: p icmp-icmp-type source-quench-
!
اين گزينه اختياري نيست و کاربرد آن معکوس کردن شرايط تعيين شده است. به اين مثال توجه کنيد: p 47- يعني پروتکل 47 و p!47- يعني همه پروتکلها جز پروتکل 47
(j (target-
اين يک گزينه قابل انتخاب نيست و براي فرستادن پکت به مقصدي خاص و البته به ندرت مورد استفاده قرار ميگيرد.
جدول3- آپشنهاي قابل استفاده در دستور iptables
شرايط و موارد قابل انتخاب iptables
آپشنها آخرين چيزهايي هستند كه بايد در مورد دستورات iptables بدانيد. آپشنها تعيين ميكنند كه يك دستور چگونه پردازش شود. در اكثر مواقع اين آپشنها شرايطي هستند كه قبل از اعمال يك دستور چك ميشوند. اين عبارات شرطي توسط لينوكس براي تصميمگيري براي اعمال يا ناديده گرفتن يك دستور روي يك پكت مورد استفاده قرار ميگيرد. جدول 3 اين گزينهها را فهرست ميكند
ترجمه: عرفان نظري
اشاره :
آيا تا به حال به فكر ساختن يك فايروال شخصي افتادهايد؟ در اين مقاله ضمن آشنايي با فايروال درونساز لينوكس، با ايجاد قواعد و پيكربندي آنها نيز آشنا ميشويد. در پايان يك مثال ساده براي تكميل مطالب آوردهام و اميدوارم اين قدم براي شروع آشنايي با فايروال لينوكس باشد. كسي چه ميداند؟ شايد آنقدر ادامه داديد كه در آينده توانستيد يك فايروال Enterprise بسازيد و به جمع توليدكنندگان بزرگ نرمافزار دنيا بپيونديد! آنقدرها هم كه فكر ميكنيد، سخت نيست. انجام اين كار كمي همت ميخواهد. iptables دستوري است كه با آن به هسته لينوكس ميگوييم با ترافيك شبكه چگونه برخورد كند. براي مثال، براي رد IP پكتها، مسيرگرداني آنها، يا انجام Network Address Translation) NAT) ميتوان از اين دستور استفاده كرد. در لينوكسهاي با هسته 3/2 و پايينتر براي پيكربندي قابليت فايروال از دستور ipchains استفاده ميشد، اما براي پيكربندي لينوكسهاي بر پايه كرنل 4/2 (كرنلي كه همه لينوكسهاي حاضر از آن استفاده ميكنند) استفاده از دستور iptables مقدم است. دستور iptables كنترل بهتر و انعطاف بيشتر در پيكربندي قواعد فايروال را به ارمغان ميآورد. قبل از شروع كار براي پيكربندي قواعد (Rules) با دستور iptables بايد با چند عبارت آشنا شويم.
منبع: Firewalls for Dummies
Tables يا جداول
جايي است كه يك فايروال لينوكس براي ذخيرهسازي و نگهداري مجموعه قواعد، از آن استفاده ميكند. جدول اصلي در ميان اين جداول، جدول ف_ * ل*_ ت ر است كه در آن ميتوانيد مجموعهاي از قوانين را براي اعمال به ترافيك ورودي و خروجي وضع كنيد. همچنين اين جدول، جدول پيشفرضي است كه وقتي در خط فرمان جدولي را مشخص نميكنيد، تغييرات آن اعمال ميشود. جدول NAT حاوي قواعدي است كه براي لينوكس معين ميكند چگونهNAT را اجرا كند. جدول Mangle براي مسيريابي پيشرفته پكتها استفاده ميشود و كاربرد ضروري و زيادي ندارد.
Chains يا رشتهها
از عبارت رشته يا Chains براي اشاره به مجموعه قواعدي استفاده ميشود كه لينوكس در حين ف_ * ل*_ ت ر كردن ترافيك شبكه از آنها استفاده ميكند. در اينجا كلاً سه نوع رشته داريم:
رشته ورودي: اين رشته يا زنجيره به كل ترافيك وارده به كامپيوتر فايروال اعمال ميشود.
رشته خروجي: اين زنجيره به كل ترافيك خروجي از كامپيوتر فايروال اعمال ميشود. مثلاً اگر فايروال نياز دارد براي جستوجوي يك نام با سرور DNS ارتباط برقرار كند، بايد زنجيره خروجي را براي اجازه انجام اين كار پيكربندي كنيد.
زنجيره Forward: اين زنجيره به كل ترافيكي كه فايروال لينوكس براي ديگر كامپيوترها فراهم ميكند اعمال ميشود. مثلاً اگر در شبكه ميخواهيد ترافيك از سرويسگيرندهها به اينترنت را توسط فايروال كنترل كنيد، بايد اين زنجيره را پيكربندي نماييد.
دستور
نام
توضيحات
A-
Append
اين دستور قاعدهاي را به انتهاي يک رشته اضافه ميکند.
I-
Insert
اين دستور قاعدهاي را به ابتداي يک رشته اضافه ميکند.
Delete
اين دستور قاعدهاي با شماره مشخص را از رشتهاي حذف ميکند.
[L[chain-
List
اين دستور قواعد موجود در يک زنجيره را فهرست ميکند.
اگر زنجيره را مشخص نکنيد، قواعد همه رشتهها فهرست خواهند شد.
New
اين دستور يک زنجيره جديد ايجاد ميکند.
ميتوانيد زنجيرههاي جديد را با قواعد مجزا تغريف کنيد.
Delete
اين دستور يک رشته ايجاد شده توسط کاربر را حذف ميکند.
[
Flush
اين دستور تمام قواعد موجود در يک زنجيره را حذف ميکند.
اگر زنجيرهاي را مشخص نکنيد، همه قواعد موجود در همه زنجيرهها حذف خواهند شد.
h-
Help
اين دستور تمام دستورات و پارامترهاي iptables را فهرست ميکند.
اگر از h- در پايان يک دستور استفاده کنيد، تمام پارامترهاي ممکن براي آن فهرست ميشود.
جدول1- دستورات معمول iptables
DNAT & SNAT ،Masquerading
اين عبارات بيانكننده فرمهاي مختلف برگردان (ترجمه) آدرس شبكه يا NAT هستند. SNAT آدرس منبع يك پكت را قبل از ارسال آن عوض ميكند و در اكثر مواقع براي مخفي كردن آدرس واقعي سرويسگيرنده در ترافيك خروجي مورد استفاده قرار ميگيرد.
DNAT آدرس مقصد پكتها را قبل از ارسال عوض ميكند و اكثراً در پراكسي سرورهاي مخفي يا transparent استفاده ميشود. Masquerading يك فرم سفارشي از NAT است كه به يك آدرس استاتيك نياز ندارد و براي مواقعي مناسب است كه ميخواهيد شبكه داخلي شما و اجزاي آن از خارج شبكه مخفي شود و در عين حال آدرس IP خارجي شما به صورت ديناميكي عوض ميشود.
دستور
توضيحات
DROP
وقتي يك قاعده، پكتي را به مقصد DROP ميفرستد، بيهيچ پاسخي پكت نابود شده و رد ميگردد.
REJECT
وقتي يك قاعده، پكتي را به مقصد REJECT ميفرستد، پكت نابود ميشود. اما در اين حالت لينوكس يك پيغامICMP به منبع ارسال ميكند و به او ميگويد كه پكت ارسالي رد شده است. با اينكه اين يك رد محترمانه است، اين عمل ميتواند براي مهاجم نشانه آن باشد كه حداقل چيزي در آن طرف وجود دارد! در بيشتر موارد انتخاب امنتر، مقصدDROP است.
ACCEPT
براي پكتهايي كه بايد از فايروال عبور كنند، از اين مقصد ميتوانيد استفاده كنيد. انتخاب اين مقصد به معني آن است كه پكت پذيرفته شده است و به آن اجازه عبور به داخل يا خارج شبكه داده ميشود.
LOG
انتخاب اين مقصد به معني آن است كه اين پكت فقط گزارش خواهد شد و عمل ديگري انجام نخواهد پذيرفت. به عبارت سادهتر، هر پكتي كه به اين مقصد فرستاده شود، ورود آن در LOG فايل سيستم ثبت خواهد شد. براي شناسايي حملات اين يك راهكار مناسب است.
SNAT
اين مقصد فقط در زنجيره مسيريابي پيشرفته جدول NAT استفاده ميشود. استفاده از SNAT باعث ميشود آدرس فرستنده پكت به آنچه شما تعيين ميكنيد تغيير پيدا كند. به خاطر داشته باشيد اين مقصد براي فايروالهايي كاربرد دارد كه از يك IP استاتيك استفاده ميكنند و معمولاً براي پكتهاي خروجي (خارجشونده) مورد استفاده قرار ميگيرد.
DNAT
اين مقصد فقط در زنجيره پيش مسيريابي جدول NAT استفاده ميشود. استفاده از DNAT باعث ميشود تا آدرس گيرنده پكت به آنچه شما تعيين ميكنيد تغيير پيدا كند و معمولاً براي پكتهاي ورودي (وارد شونده) مورد استفاده قرار ميگيرد.
MASQUERADE
اين مقصد وقتي فايروال از آدرس ديناميك استفاده ميكند، مانند NAT روي پكتها عمل مينمايد. اين مقصد فقط در زنجيره مسيريابي پيشرفته جدول NAT قابل استفاده است.
user chain
اين يك مقصد دلخواه است. حروف كج به معناي آن است كه بايد از نام زنجيرهاي كه ساختهايد براي آن استفاده كنيد. ميتوانيد پكت را به چنين زنجيرهاي براي پردازش بيشتر ارسال كنيد. براي مثال، ورود يك پكت با شرايط خاص را ميتوانيد درLOG فايل ثبت نماييد و با ارسال آن به يك زنجيره كه خود ساختهايد، آن را DROP كنيد.
استفاده از دستورات iptables
همه دستورات iptables با يك عبارت مشترك iptables شروع ميشوند و با پارامترهاي ديگر ادامه پيدا ميكنند. براي مجبور كردن لينوكس به اضافه كردن يك قاعده به يكي از زنجيرها يا حذف يكي از اين قواعد، از دستور زير استفاده ميكنيم (پارامترهاي اختياري در كروشه قرار گرفتهاند.)
[iptables[-t table]CMD[chain][filter_match][target
در دستورات iptables بايد موارد زير را مشخص كنيد:
●جدولي را كه دستور بايد به آن اعمال شود [t table-]
● نوع دستور (در اينجا CMD)
● زنجيرهاي كه دستور به آن تعلق خواهد داشت. [chain]
●عباراتي كه مشخص ميكند ف_ * ل*_ ت ر بايد به چه نوع ترافيكي اعمال شود. [filter_ match]
● عبارتي كه به لينوكس ميگويد با پكت بايد چه كار كند [target]
●عنوان مثال، براي اضافه كردن يك قاعده ساده به رشته (chain) ورودي از جدول ف_ * ل*_ ت ر براي رد تمام پكتهاي ICMP بايد از دستور زير استفاده كنيد:
iptables -t filter -A INPUT -p icmp DROP
در اين دستور filter نام جدول مورد نظر، INPUT نام رشتهاي است كه ميخواهيم عمل در آن انجام گيرد، و DROP مقصد مورد نظر ما است. اين دستور به لينوكس ميگويد: اگر رشته ورودي (INPUT) جدول ف_ * ل*_ ت ر، پكتي را كه از پروتكل ICMP استفاده ميكند دريافت كرد، پكت را به مقصد «رد» بفرست! يعني كل ترافيك ICMP را رد و حذف كن.
قبل از اينكه بخواهيد قواعد مورد نظر خود را تعيين كنيد، بايد با دستورات پايه، عبارات متناظر با ف_ * ل*_ ت ر، و مقصدها آشنا شويد. جدول 1 حاوي اين دستورات پايه و توضيحات آنها است.
مقاصد iptables
يك مقصد، جايي است كه يك رشته يا زنجيره، پكت داده را به آنجا ارسال خواهد كرد. البته ميتوانيد اينگونه تصور كنيد كه يك مقصد عملي است كه لينوكس روي پكت داده انجام ميدهد. مقاصد قابل تعريف در دستورات در جدول 2 آمده است.
يك مثال ساده: ساخت يك فايروال لينوكسي!
حالا تمام چيزهايي كه براي ساخت يك فايروال در لينوكس احتياج داريد را در اختيار داريد. ببينيد چقدر ساده است: فايروالي كه ميخواهيم بسازيم، بايد تمام ترافيك خروجي را عبور دهد و كل ترافيك ورودي را با دو استثنا بلوكه نمايد: اجازه ورود به قسمتي از ترافيك ورودي TCP (كه براي ايجاد اتصالات با شبكه خارج مورد نياز است) و ترافيك ورودي UDP در پورت 53.
اجازه عبور ترافيك در پورت 53 از UDP براي اين است كه فرض كردهايم ممكن است فايروال به انجام پرسوجوهاي DNS نياز داشته باشد. توجه كنيد كه ايجاد يك اسكريپت و اجراي آن در شروع اجراي لينوكس بهتر از تايپ دستورات به صورت جداگانه است.
پيش از همه تمام زنجيرهها و محتوياتشان را پاك ميكنيم:
iptables -F
ممكن است يك سري زنجيره ساخت كاربر هم وجود داشته باشد
پس اينها را هم حذف ميكنيم:
iptables -X
حال ميخواهيم به تمام پكتهاي ورودي به رابط (كارت شبكه) eth0 اجازه ورود بدهيم:
iptables-A INOUT-i eth0-j ACCEPT
ممكن است كامپيوتر به پرسوجوهاي DNS نياز داشته باشد.
قاعده زير اين اجازه را به كامپيوتر ميدهد xxx.xxx.xxx.xxx را با آدرس فايروال عوض كنيد:
iptables -A INPUT -p udp -s xxx.xxx.xxx.xxx -sport 53\-j ACCEPT
قبل از رد پكتها بايد آنها را ثبت و گزارش كرد:
iptables -A INPUT -I eth0-jLOG
حال بايد تمام پكتهاي ورودي كه در شرايط بالا صدق نميكنند رد شوند:
iptables -A INPUT -I eth0 -DROP
پس از وارد كردن تمام قواعد در زنجيره ورودي، با استفاده از دستور:
iptables -V -L INPUT
ميتوانيد فهرستي از آنها را مشاهده كنيد. گزينه V- براي نمايش جزئيات استفاده شده است.
تقدم
تقدم قواعدي كه اجرا خواهند شد به iptables مربوط است. به همين دليل در iptables يك دستور مناسب (A-) براي الحاق دستورات به انتهاي زنجيره پردازشي و دستور مناسب ديگري (I-) براي الحاق دستورات به ابتداي زنجيره پردازشي در نظر گرفته شده است. بهتر است قبل از قراردادن قواعد و دستورات در زنجيرهها، آنها را تعيين و تعريف كنيد. در ادامه به صورت اجمالي با طرز عملكرد iptables آشنا ميشويم.
برخلاف ديگر فايروالها، iptables يك دستور ف_ * ل*_ ت ر را اجرا مينمايد و سپس پردازش دستورات را متوقف ميكند تا به اصطلاح يك match ديگر اتفاق بيفتد. يعني شرايط پكت وارده با قواعدي كه تعيين شدهاند به ترتيب از بالا به پايين مقايسه ميشود و اگر پكت مشمول يكي از اين قواعد باشد، دستور مربوطه در آن فرمان روي پكت اجرا خواهد شد.
براي مثال، اگر قاعدهاي را براي رد كردن نوع مشخصي از ترافيك (مثلاً پكتهاي پورت 33 از پروتكل TCP) در نظر گرفتهايد، بهتر است انواع مورد نياز خود را عبور دهيد و سپس قاعدهاي براي رد بقيه (كه غيرضروريند) در نظر بگيريد. يعني آنهايي را تعيين كنيد كه نياز داريد عبور كنند (مثلاً پكتهاي پورت TCP 80 و بقيه ترافيك ورودي را رد كنيد.
توجه كنيد كه قاعده رد همه (بقيه) در انتهاي زنجيره قرار گرفته باشد. در اين صورت اگر لينوكس با پكتي كه بايد عبور داده شود برخورد كند، آن را عبور ميدهد و قاعده رد ديگر به آن اعمال نخواهد شد. اگر به جاي قاعده رد همه را به بالاترين قاعده انتقال دهيد، لينوكس پكت را آزمايش ميكند و اگر با رد همه مواجه شود، آن را رد خواهد كرد و قاعده عبور پكت مورد نياز ما هيچگاه در نظر گرفته نخواهد شد! پس همواره قرار دادن قواعد صادركننده مجوز عبور در موقعيتهاي بالاتر و در انتها قرار دادن آنهايي كه بايد پكتها را رد كنند، را به خاطر داشته باشيد.
براي ايجاد قواعد پيچيده، ميتوانيد زنجيرههايي بسازيد كه پردازش بيشتري روي پكتها انجام ميدهند. عبارات شرطي به دستورات اضافه كنيد يا قواعدي را تعيين كنيد كه بيش از يك شرط براي مقايسه و اعمال روي پكتها دارند. به خاطر داشته باشيد كه وقتي يك پكت به مقصد گزارش فرستاده ميشود، پردازش پايان نمييابد و بعداً ميتوانيد براي رد يا قبول آن تصميمگيري كنيد.
آپشن
توضيحات
(P (protocol-
اين آپشن تعيين ميکند که قاعده روي چه پروتکلي اعمال شود. پارامتر protocol ميتواند udp، TCP يا icmp باشد. البته ميتوانيد نام هر پروتکلي که در etc/protocols/ آورده شده است را به کار ببريد. براي اعمال قاعده به تمام پروتکلها بايد از 0 يا عبارت all استفاده کنيد.
([S (source address[/mask-
از اين سوييچ براي مشخص کردن آدرس فرستنده پکت استفاده ميگردد. پارامتر mask اختياري و نشانگر subnet mask است. در اين جا فقط از يک عدد براي تعداد بيتهاي subnet mask استفاده خواهيد کرد.
براي مثال s 192.168.1.1- به پکتهايي با آدرس 192.168.1.1 اشاره ميکند و s 192.168.1.1/24- مشخص کننده پکتهايي با آدرسي در بازه 192.168.1.1 تا 192.168.1.255 خواهد بود. عدد 24 نشاندهنده آن است که آدرسهاي موردنظر در 24 بيت اول (سه قسمت اول آدرسدهي IP) مشترکند و هشت بيت آخر متغيير خواهند بود.
([d (destination address[/mask-
از اين سوييچ براي مشخص کردن آدرس فرستنده پکت استفاده ميگردد. پارامتر mask در اينجا نيز اختياري و نشانگر subnet mask است. در اين جا فقط از يک عدد براي تعداد بيتهاي subnet mask استفاده خواهيد کرد.
براي مثال d 23.2.4.7- نشانگر پکتي با آدرس مقصد 23.2.4.7 و d 23.0.0.0/8- نشانگر تمام آدرسهاي بين 23.0.0.0 و 23.255.255.255 (يعني آدرسهاي رنج مورد نظر فقط در هشت بيت اول مشترک هستند) است.
(source-port(port--
از اين سوييچ براي مشخص کردن پورت پکتهاي TCP و UDP مورد استفاده قرار ميگيرد. البته چون فقط اين دو پروتکل از پورتها استفاده ميکنند، اين گزينه فقط براي سوييچهاي p TCP- و p udp- قابل استفاده است. با استفاده از کاراکتر دو نقطه ميتوانيد رنجي از پورتها را تعيين کنيد.
p TCP -source-port0:1023- به پکتهاي TCP اشاره ميکند که پورت فرستنده آنها بين صفر تا 1023 باشد.
(destination-port(port--
عملکرد اين گزينه نيز مانند گزينه قبلي است و تنها فرق آن با قبلي اين است که در مورد پورت مقصد پکتها پردازش انجام ميدهند.
(i (interface-
اين گزينه براي مشخص کردن رابط شبکه استفاده ميشود. به اين مثال توجه کنيد: i eth0- به تمام پکتهاي وارده به رابط شبکهاي با نام eth0 (مثلاً يک کارت شبکه يا يک مودم) اشاره ميکند. ميتوانيد با اضافه کردن + به آخر يک عبارت در قسمت نام رابط، به تمام رابطهايي که نامشان با عبارت وارد شده شروع ميشود اشاره کنيد.
(o (interface-
اين گزينه هم مانند مورد قبلي است. البته در مورد پکتهاي خروجي از رابط شبکه عمل ميکند.
syn--
اين گزينه پکتهاي ايجاد اتصال جديد TCP را مشخص ميکند. در مورد پکت SYN بايد دانست که براي ايجاد يک اتصال TCP چند مرحله انجام ميشود: در مرحله اول کامپيوتر درخواست کننده شروع اتصال، يک پکت براي کامپيوتر مقصد ميفرستند و مقصد نيز در صورت موافقت به ايجاد اتصال يک پکت موافقت يا ACK به مبدأ ميفرستد. با اين گزينه ميتوانيد پکت درخواست ايجاد يک اتصال جديد را مشخص نماييد و مثلاً براي پکتهاي ورودي آن را بلوکه کنيد تا از بيرون، داخل شبکه شما قابل دسترس نباشد.
(icmp-type(type--
اين هم يک گزينه وابسته است و فقط بايد با p icmp- مورد استفاده قرار گيرد. مورد استفاده آن هم مشخص کردن نوعي خاص در icmp است. اين هم يک مثال: p icmp-icmp-type source-quench-
!
اين گزينه اختياري نيست و کاربرد آن معکوس کردن شرايط تعيين شده است. به اين مثال توجه کنيد: p 47- يعني پروتکل 47 و p!47- يعني همه پروتکلها جز پروتکل 47
(j (target-
اين يک گزينه قابل انتخاب نيست و براي فرستادن پکت به مقصدي خاص و البته به ندرت مورد استفاده قرار ميگيرد.
جدول3- آپشنهاي قابل استفاده در دستور iptables
شرايط و موارد قابل انتخاب iptables
آپشنها آخرين چيزهايي هستند كه بايد در مورد دستورات iptables بدانيد. آپشنها تعيين ميكنند كه يك دستور چگونه پردازش شود. در اكثر مواقع اين آپشنها شرايطي هستند كه قبل از اعمال يك دستور چك ميشوند. اين عبارات شرطي توسط لينوكس براي تصميمگيري براي اعمال يا ناديده گرفتن يك دستور روي يك پكت مورد استفاده قرار ميگيرد. جدول 3 اين گزينهها را فهرست ميكند
برای هر چیز زکاتی است و زکات علم نشر دادن آن است.
الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.
الهی
مرا لیاقت بهشت نیست و طاقت دوزخ نیز ندارم. اکنون تو خود دانی و کرم تو.