آشنایی با IPTABLES بخش پنجم(1268 مجموع کلمات موجود در متن) (8835 بار مطالعه شده است) آشنایی
با iptables
بخش
پنجم
iptables matches
Matchها
شرایط خاصی را در داخل بسته تعیین میکنند
که باید یا درست باشد یا غلط.
یک
rule میتوانند
حاوی چندین Match
باشد.
مثلا
ما میخواهیم بستههایی
را تطبیــق دهیم کـــه از یک آدرس IP
خاصی
در شبکه و از port
خاصی
به بـــالا آمده باشد.
اگر
هر کدام از matchهای
یـک rule
نادرست
باشد، آن rule
اشتباه
بوده و rule
بعدی
تست میشود تا زمانی که
تمام matchهای
یک rule با
بستهی مورد نظر مطابقت
کند.
در
اینجا matchها
را به پنج دسته تقسیم میکنیم:
۱)
Generic Matchها
که در تمام ruleها
میتوانند استفاده شوند.
۲)
TCP Matchها
که تنها به بستههای
TCPاعمال
میشوند.
۳)
UDP Matchها
که به بستههای UDP
اعمال
میشوند.
۴)
ICMP Matchها
که تنها برای بستههای
ICMP اعمال
میشوند.
۵)
Matchهای
مخصوص مانند state،
owner،
limit و
غیره.
Generic
Matches
Match
|
-p,
--protocol
|
مثال
|
#
iptables -A INPUT -p tcp
|
توضیح
|
این
match برای
چــک کردن پروتکلهای
معـــین مثــل TCP
،UDP
و
ICMP
استــفــاده
میشود.
این
پروتکلها بــایــد
در فــایــل /etc/protocols/
مشخـص
شده باشند.
همچنین
به جای ذکر نام پروتکل میتوان
از یک عدد صحیح به جـــای آن نیز استفاده
کرد.
مثلا
ICMP با
عدد ۱، TCP
با
عدد ۶ و UDP
بــا
عدد ۱۷.
در
نهـــایت میتـــوانیم
از کلمهی کلیدی ALL
برای
پروتکل های ICMP
،TCP
و
UDP نیز
استفاده کرد که برای آن عدد صفر را
در نظر گرفتهاند.
|
Match
|
-s,
--src, --source
|
مثال
|
#
iptables -A INPUT -s 192.168.1.1
|
توضیح
|
این
match به
آدرس IP
مبدا
مربوط میشود.
شکل
اصـلی آن برای تطبیق آدرس IP
تنها
مانند مثال بالا مورد استفاده قرار
میگیـــرد.
همچنـــین
میتوانیم از شــکل
آدرس IP
و
ماسک شبکه استفاده کنیم.
برای
ایـــن کــار هم میتوانیم
ماسک شبکه را به صورت عمومی و هم به صورت
شکل CIDR
نشان
دهیم.
مثـلا
255.255.255.0/192.168.0.0
را
بـــه صــورت 24/192.168.0.0
نشـــان
دهــیــم.
همجنین
میتوانیم از علامت
!
برای
معکوی کردن match
ها
استفاده کرد.
|
Match
|
-d,
--dst, --destination
|
مثال
|
#
iptables -A INPUT -d 192.168.1.1
|
توضیح
|
این
match برای
تطبیق بستهها بر
پایهی آدرس IP
مقصد
استفاده میشود.
|
Match
|
-i,
--in-interface
|
مثال
|
#
iptables -A INPUT -i eth0
|
توضیح
|
این
match برای
رابطی که بسته از طریق آن وارد شده است
استفاده میشود.
توجه
شود که این انتخاب تنها برای زنجیرههای
INPUT
،FORWARD
و
PREROUTING
قــــانونی
محسوب میشود.
در
صورت استفاده از زنجیرههای
دیگر با یک پیغام error
مواجه
میشوید.
|
Match
|
-o,
--out-interface
|
مثال
|
#
iptables -A FORWARD -o eth0
|
توضیح
|
این
match برای
تــطابق بستههایی
کــــه از رابط خـاصی قصد خروج دارند،
استفاده میشوند.
این
match برای
زنجیرههای OUTPUT
،FORWARD
و
POSTROUTING
استفاده
میشود.
|
Match
|
-f,
--fragment
|
مثال
|
#
iptables -A INPUT -f
|
توضیح
|
این
match برای
تطابق قسمتهای دوم
و سوم یک بستهی پراکنده
استفاده میشود.
هدف
از این کار آن است که هیچ راهی برای
تعیین شماره پورت های مبدا و مقصد،
انواع ICMP
و
چیزهای دیگر در بستههای
پراکنده وجود ندارد.
همچنین
این بستهها برای
حملههای ترکیبی
استفاده میشوند.
|
TCP matches
این بخش
matchهایی
را تشـــریح میکند که
بـــه طور انحصاری برای جریان های TCP
مورد
استفاده قرار میگیرد.
برای
استفاده از این matchها
باید گزینه p
tcp- را
حتما در سمت چپ matchهای
مخصوص پروتکل در خط دستور ذکر کنید.
Match
|
--sport,
--source-port
|
مثال
|
#
iptables -A INPUT -p tcp --sport 22
|
توضیح
|
برای
تطبیق بستههای مبنی
بر شماره پورت مبدا اســتفاده میشود.
این
match
همچنین
میتواند از نام سرویس
به جای شماره پورت استفاده کند.
اگر
شمــاره نام سرویس را مشخص کنید، نام
آن باید در فایل etc/services/
ذکر
شده باشد تــــا iptables
بتواند
شماره پورت را بیابد.
البته
اگر شماره پورت را ذکر کنید، rule
شما
سریعتر load
میشــــود.
در
ضمن با استفاده از این match
میتوانید
برای تطبیق محدودهای
از IPها
استفاده کنید.
بــــرای
مثال sport
22:80 شـــماره
پورتهــای بــیــن ۲۲ تــا ۸۰ را شامل
میشــــود و source-port
:80 شماره
پورتهای بین ۰ تا ۸۰.
|
Match
|
--dport,
--destination-port
|
مثال
|
#
iptables -A INPUT -p tcp --dport 22
|
توضیح
|
این
match برای
تطابق بستههای TCP
مطابق
پورت مقصد استفاده میشود.
|
Match
|
--tcp-flags
|
مثال
|
#
iptables -p tcp --tcp-flags SYN,FIN,ACK SYN
|
توضیح
|
این
match برای
تطابق TCP
flag در
بستهها استــــفاده
میشود.
match ابتـــدا
لیستی از flagها
را برای مقایسه میگیرد،
سپـــس لیستی از flagهایی
را کـــه باید 1
باشند
را برمیدارد.
محتویات
این لیست ها(مانند
مثال)
بایــد
به وسیلهی کاما از
هم جدا شوند.
matchها
پـرچم های SYN،
ACK،
FIN،
RST،
URG و
PSH را
میشناسند و کلمات
ALL و
NONE را
نیز میشناسند.
tcp-flags ALL NONE-- بدین
معـناست که تمام پرچم های TCP
را
چک کرده و اگر هیچ کدام set
نشده
باشند عمل تطبیق را انجام دهد.
|
Match
|
--syn
|
مثال
|
#
iptables -p tcp --syn
|
توضیح
|
این
match از
ipchains به
یادگـــار مانده است.
ایــــن
match زمانی
عمـل تطبیق را انجام میدهد
که بیت SYN
ست
شده باشد و بیت های ACK
و
RST ست
نشده باشند.
|
Match
|
--tcp-option
|
مثال
|
#
iptables -p tcp --tcp-option 16
|
توضیح
|
ایـــن
Match
بـــرای
بستههای مبنی بر TCP
option تطبیق
داده میشود.
tcp option بخش
مخصوصی از سرآیند TCP
میباشد.
این
بـــخـــش شامل ۳ فیلد متفاوت میباشد.
اولین
فیلد ۸ بیت طــول دارد و به ما
میگوید
کدام Option
در
این جریان به کار رفـــته است، فیلد
دوم نیز با طول ۸ بیت به ما میگوید
که طول فیلد Option
چقدر
است.
|
UDP matches
Match
|
--sport,
--source-port
|
مثال
|
#
iptables -A INPUT -p udp --sport 53
|
توضیح
|
این
match برای
تطابق بستهها مبنی
بــر پورت منبع UDP
آنها
استفاده میشود.
این
match هم
پورتهای تنها و هم محدودهای
از پورتها را پشتیبانی میکند.
|
Match
|
--dport,
--destination-port
|
مثال
|
#
iptables -A INPUT -p udp --dport 53
|
توضیح
|
این
match هم
مشابه بالایی کار میکند.
|
ICMP matches
بستههای
ICMP از
انواع بدون اتصال هستند، اما عمــر آنـهـا
نسبت بـه بستههای UDP
کمتر
است.
این
بستهها معمولا بــرای
گـــزارش خطا و پیگیری اتصالات و مشــابه
اینها مورد استفاده قرار میگیرند.
ICMP پروتکلی
وابسته به IP
نیست،
بلکه پروتکلی است که پروتکل IP
را
تکمیل میکند و بــرای
گـــزارش خطاها مورد استفاده میگیرد.
سرآیند
این بستهها نسبت به
بستههای IP
کوچکتر
است، اما در بعضی موارد بـــا آن تفاوت
دارد.
مهمتــرین
خصوصیت آن این است که به ما میگوید
بسته مربوط به چیست.
برای
این بسهها تنها یک match
وجود
دارد که در زیر تشریح میشود:
Match
|
--icmp-type
|
مثال
|
#
iptables -A INPUT -p icmp --icmp-type 8
|
توضیح
|
این
match برای
تشخـــیص نوع ICMP
به
کار میرود.
نــــوع
ICMP هم
به وسیلهی شمارهی
عددی شان و هم به وسیلهی
نامشان قابل شناسایی هستند.
مقادیــــر
عـددی در RFC
792 مشخص
شدهاند.
برای
گرفتن لیست کامل نام و مقدار دستور
iptables
--protocol icmp --help را
اجرا کنید.
|
Explicit matches
این دستهاز
matchها
آنهایی هستند که باید صریحا توسط m-
یا
match-- به
کـار بــرده شـــونــد.
بعضی
از این matchها
مخصوص پروتکلها و بعضی
دیگر ممـکن است که ربطی به پروتکلها
نداشــته باشد.
این
قبیل match
ها
میتواند از نوع NEW
یا
ESTABLISHED یا
RELATED باشنـد.
بعضی
دیگر هم ممکن است بـــرای تســــت کـردن
یـــا اهداف آزمایشی و یا تنها برای نشان
دادن آنچه که iptables
بــــا
آن همخوانی دارد به کــــار روند.
بــه
همیـــن دلیـــل از پـرداختن به آنها در
اینجا خودداری میکنیم.
برای
یافتن لیست کاملی از این
matchها
میتوانید به [۱]
مراجعه
کنید.
PDF Version
مترجم:
ایرج
هدایتی shotorbaan@yahoo.co.uk منبع
:
http://iptables-tutorial.frozentux.net/iptables-tutorial.html
[1]
http://iptables-tutorial.frozentux.net/iptables-tutorial.html#EXPLICITMATCHES
|