آشنایی با IPTABLES بخش چهارم(1280 مجموع کلمات موجود در متن) (8189 بار مطالعه شده است) آشنایی
با iptables
بخش
چهارم
ساختن
ruleها
در
طول این بخش با طریقهی
ساخـتن ruleها
آشنا میشوید.
یک
rule را
میتوان مجموعه دستوراتی
در نظر گرفت که به firewall
میگویند
تا چگونه به بستهها و
اتصالات یک زنجیرهی
خاص مجوز دهد.
مبانی
همــانطور
که قبلا توضیح دادیم، یــک rule
عبارتی
است کـه کرنل برای پی بردن به اینکه با یک
بسته چه باید بکند به آن نــگاه میکند.
اگر
تمام ضوابط(match)
درست
بود، آنگاه دستــورات target
را
اجــرا میکند.
نــحوهی
استفــاده از دستور iptables
به
صورت زیر است:
iptables
[-t table] command [match] [target/jump]
بــا
استفاده از انتخاب t-
جــدول
مورد نظر را انتخاب میکنیم.
در
مــورد جــدول در قسمت یک توضیحات کـافی
داده شده است.
اگــر
هیچ جدولی در این قســـمت مـعیــن نــگردد،
به طــور پـیـش فـرض از جدول Filter
استفاده
میشود.
سپس
command را
مشخص میکنیم.
با
استفاده از این قسمت به iptables
میگــوییـم
که با این rule
چه
باید بکند.
به
عنوان مثال میتوان یک
rule را
اضافه، حذف و یا جایگزین کرد.
انواع
دستورات مختلف در ادامه تشریح خواهد شد.
match
بخشی
است که برای مشخص کردن خصوصیات خاص یک
بسته که آن را از بقیه مجزا میکند،
به کرنل فرستاده میشود.
به
طور مثال بستههای مربوط
به یک شبکهی خاص یا بسته
هایی که از پروتکل خاصی استفاده میکنند
و غیره .
در
جلسهی بعد در مورد
matchها
بیشتر توضیح خواهیم داد.
در
نهایت هدف بسته را مشخص میکـنیم.
در
صــورتی کــه تمام ضوابط مطابقت داشته
باشند، به کرنل میگوییم
که با بستهی مورد نظر
چه باید بکند.
برای
مثال میتوانیم بسته را
drop کنیم
یــا بــه جای دیگری بفرستیم یا به جدول
دیگری ارسال کنیم.
دستورات
در
این قسمت تمام دستورات ممکن را پوشش خواهیم
داد.
Command
|
-A,
--append
|
Example
|
iptables
-A INPUT ...
|
Explanation
|
با
استفاده از این دستور میتوانید
یک rule
را
به انتهای یک زنجیره بچسبانید.
البته
این را باید در نظر بگیرید که ruleهــا
از بــالا بــه پایـیـن بررسی میشوند
و اولین rule
که
مطابقت داشته باشد اعمال میشود.
|
Command
|
-D,
--delete
|
Example
|
iptables
-D INPUT --dport 80 -j DROP, iptables -D INPUT 1
|
Explanation
|
بـا
استفاده از این دستور میتوانید
یک rule
را
از زنجیره حذف کنید.
این
کار به دو طریق انجــام میشود؛
میتوان rule
مورد
نظر را عینا وارد کرد و یا اینکه شماره
rule را
به کار برد.
Rule ها
از بالا به پایین شـمــاره گــذاری
میشــوند.
در
مورد روش اول باید دقت داشته باشید که
rule مورد
نظر را درست وارد کنید، در غــیــر این
صورت امکان دارد که rule
دیگری
را از زنجیره حذف کنید.
|
Command
|
-R,
--replace
|
Example
|
iptables
-R INPUT 1 -s 192.168.0.1 -j DROP
|
Explanation
|
بــا
اســتفاده از ایــن دستــور میتوانید
یک rule
را
با rule
دیگری
جایگزین کنید.
این
کار مشابه حذف یک rule
از
زنجیره میباشد.
|
Command
|
-I,
--insert
|
Example
|
iptables
-I INPUT 1 --dport 80 -j ACCEPT
|
Explanation
|
بـا
استفاده از دستور Insert
میتوانید
تا یک rule
را
در مکان خاصی اضافه کنید.
در
این مورد هم باید تقدم ruleها
را در نظر داشته باشید.
|
Command
|
-L,
--list
|
Example
|
iptables
-L INPUT
|
Explanation
|
با
استفاده از ایــن دستــور میتوانـیـد
کــل ruleهای
یـک زنجیره را لیست بگیرید.
توجه
داشته باشید که اگر نام جدول را ذکر
نکنید، به طور پیــش فـرض از جدول filter
لیست
خواهد گرفت.
خروجی
این دستور تحت تاثیر انتخاب های مختلف
دیگر از جمله n-
و
v-
می
باشد.
|
Command
|
-F,
--flush
|
Example
|
iptables
-F INPUT
|
Explanation
|
دستور
F-
بــرای
پــاک کــردن تـمــام ruleهای
یــک زنجــیره یا جدول و یا تمام iptables
استفاده
میشود.
این
دستور معادل پاک کردن تمام rule
ها
به صورت تک تک است.
|
Command
|
-Z,
--zero
|
Example
|
iptables
-Z INPUT
|
Explanation
|
ایــن
دستور به برنامه میگوید
تا تمام شمارندههای
یک زنجیره یا تمام آنها را پاک کند.
اگر
شما انتــخــاب v-
را
بــه هــمراه دســتور L-
به
کار برید، میتوانید
شمارندهها
را در ابتدای هر فیلد مشاهده کنید.
اگـر
دستور L-
و
Z-
را
به همراه هم استفاده کنید، ابتدا تمام
ruleها
را برای شما لیست کرده و شمارندههای
آنها را صفر میکند.
|
Command
|
-N,
--new-chain
|
Example
|
iptables
-N allowed
|
Explanation
|
با
اســتفــاده از این دستور شما میتوانید
زنجیرههای
مخصوص را در جداول مشخصی تهیه کنید.
در
مثال بالا زنجیرهی
allowed
را
در جـــدول filter
سـاختهایم.
توجه
داشته باشید که دو زنجیرهی
هم نام نباید وجود داشته باشد.
|
Command
|
-X,
--delete-chain
|
Example
|
iptables
-X allowed
|
Explanation
|
با
استفاده از ایــن دستــور میتوانید
یــک زنجیره را از یک جدول پاک کنید.
برای
این کار نباید rule
وجود
داشته باشد تا به این زنجیره اشاره کند.
اگــر
ایــن دستــور بــدون هیچ انتخابی
انجام شــود، تمــام زنجیرههای
جدول را به جز آنهاییکه مخصوص خود
جـــدول هستند، پاک خواهد شد.
|
Command
|
-P,
--policy
|
Example
|
iptables
-P INPUT DROP
|
Explanation
|
با
استفاده از این دستــور میتوانید
به کرنل بگویید که برای یک زنجیره، هدف
یا policy
مخصوصی
را به صورت پیش فرض در نـظــر بـگیرد.
تمام
بسته هایی که با هیچ کدام از ruleهای
موجود در زنجیره match
نشوند
مجبــور خـواهند بود که از این policy
استفاده
کنند.
Policyهای
مجاز برای این قسمت DROP
و
ACCEPT
هستند.
|
Command
|
-E,
--rename-chain
|
Example
|
iptables
-E allowed disallowed
|
Explanation
|
بــا
استفاده از ایــن دستـور شما میتوانید
تا نام یک زنجیره را تغییر دهید.
همانطور
که می بینید در مثال بالا زنـجــیــرهی
allowed به
disallowed
تغییر
نام یافته است.
دقت
داشته باشید ایــن عمـل در عملکرد اصلی
جدول هیچ تاثیری نخواهد داشت و فقط یک
کار تزئینی محسوب میشود.
|
بـه
غیر از مواردی که میخواهید
از help داخلی
iptables
استفاده
کنید یا اینکه نسخهی
iptables را
به دست آورید، باید همیشه یــک دستور
کــامل را وارد کنید.برای
یافتن شمارهی نسخهی
iptables باید
از انتخاب v-
و
برای استفاده از help
داخلی
iptables باید
از انتخاب h-
استفاده
کنید.
اکنون
میخواهیم گزینههایی
را که بــر دستــورات iptables
تاثــیـر
دارند را برایتان توضیح دهیم.
دقت
داشته باشید که در اینــجا فـقط با
انتخابهایی آشنا میشوید
که بر روی دستورات تاثیر دارند و انتخابهای
مربوط به matchها
و targetها
را بعدا تشریح خواهیم کرد.
گزینهها
Option
|
-v,
--verbose
|
Commands
used with
|
--list,
--append, --insert, --delete, --replace
|
Explanation
|
این
دســتــور خروجــی های بیشتــری را
بــه شـمـا میدهـد
و اساسا با دستورlist--
استفاده
میشود.
اگر
این انتخاب را با list--
استفاده
کنید، آدرس رابــط، rule
options و
ماسـکهای
TOS
را
نشان میدهد.
همچنین
شمارندههای
بستهها
و بایــتها
را نیز برای هر rule
نشـان
میدهد.
اگر
با سایر دستـورات به کار برده شود، به
شما میگوید
که rule
چگونه
تفسیر شده است و اینکه به درستی درج شده
است یا خیر و ...
|
Option
|
-x,
--exact
|
Commands
used with
|
--list
|
Explanation
|
از
این انتخاب برای بسط دادن اعداد استفاده
میشود.
خروجی
دستورlist--
با
انتخاب –v
بــرای
نمایش شمــارندهها
از نشانههای
K،
M
و
G
استفاده
میکند.
با
استفاده از این انتخاب ما میتوانیم
نمایی کامل از اعداد را داشته بــاشـیم.
البـتـه
تـوجــه داشتــه باشید که این انتخاب
تنها با دستورlist--
به
کار میرود.
|
Option
|
-n,
--numeric
|
Commands
used with
|
--list
|
Explanation
|
ایــن
دستــور بــه iptables
میگــوید
کــه مقادیر عددی را نمایش دهد.
آدرسهای
IP و
شماره پورتها به جای
اینکه با نام میزبان و نــام شبــکه یا
نام application
نشان
داده شوند با اعداد نمایش داده میشوند.
|
Option
|
--line-numbers
|
Commands
used with
|
--list
|
Explanation
|
با
استفاده از ایـن انتخاب به همراه دستور
list--
میتوانیم
لیستی از ruleها
به همراه شمارهی
هر کــدام در اختیار داشتــه باشیـم.
با
استفاده از این کار به راحتی شمارهی
هر rule
را
مییابیم.
|
Option
|
-c,
--set-counters
|
Commands
used with
|
--insert,
--append, --replace
|
Explanation
|
این
انتخاب هنگام ساختن و یا تغییر دادن یک
rule
به
کـــار بــرده میشـود.
همچنین
با استفاده از این بسته میتوانیم
شمارندههای
بستهها
و بایتها
را مقدار اولیــه دهیم.
ترکیب
این دستور به شکل set-counters
20 4000 -- میتواند
باشد که شمــارنده بستهها
را به 20
و
شمارنده بایت را به 4000
تنظیم
میکند.
|
Option
|
--modprobe
|
Commands
used with
|
All
|
Explanation
|
با
استفاده از این دستور میتوان
بــه iptables
گفــت
کــه کــدام module
بایــد
هنــگام وارسی moduleها
استفـاده شود یا به کرنل اضافه شود.
از
این انتخاب برای زمانی که لازم است تا
برنامه بــداند در زمانی که module
بار
نشده است چه باید بکند، میتوان
استفاده کرد.
|
PDF Version
مترجم:
ایرج
هدایتی shotorbaan@yahoo.co.uk منبع
:
http://iptables-tutorial.frozentux.net/iptables-tutorial.html
|