نرم افزار گنو/لینوکس

آموزش کاربردی iptables

نوشته شده توسط اروند طباطبایی

در پست های قبل از فایروال ها بسیار گفتیم و IPTables یکی از معروف و محبوب‌ترین فایروال ها در لینوکس است را معرفی کردیم. در این پست با تعدادی مثال، بیشتر و کاربردی‌تر با آن آشنا خواهید شد.

نمایش وضعیت فایروال
دستور زیر وضعیت فایروالتان را به شما نشان خواهد داد:

# iptables -L -n -v

نمونه خروجی:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

اگر خروجی بالا را در سیستم خود دریافت کردید یعنی فایروالتان غیر فعال است یا اگر بخواهیم درست تر بگوییم، فایروالتان کار خاصی انجام نمی دهد. اگر فعال باشد و کار خاصی کند خروجی خاص تری را نشان خواهد داد، مثل خروجی زیر:

Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
۰ ۰ DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
۳۹۴ ۴۳۵۸۶ ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
۹۳ ۱۷۲۹۲ ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0
۱ ۱۴۲ ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
۰ ۰ ACCEPT all -- br0 br0 0.0.0.0/0 0.0.0.0/0
۰ ۰ DROP all -- * * 0.0.0.0/0 0.0.0.0/0 state INVALID
۰ ۰ TCPMSS tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU
۰ ۰ ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
۰ ۰ wanin all -- vlan2 * 0.0.0.0/0 0.0.0.0/0
۰ ۰ wanout all -- * vlan2 0.0.0.0/0 0.0.0.0/0
۰ ۰ ACCEPT all -- br0 * 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 425 packets, 113K bytes)
pkts bytes target prot opt in out source destination
Chain wanin (1 references)
pkts bytes target prot opt in out source destination
Chain wanout (1 references)
pkts bytes target prot opt in out source destination

در دستوری که وارد کردیم از سه آپشن استفاده شده است.
L : نمایش لیست rule ها
v- : نمایش اطلاعات و جزئیات بیشتر
-n : این آپشن با عدم استفاده از DNS باعث افزایش سرعت اجرای دستور می‌شود و همچنین پورت و ip ها را به صورت عددی نشان می دهد.
اگر می‌خواهید جزئیات را فقط برای یک chain خاص ببینید نام آن را در دستور بنویسید و برای نمایش شماره خطوط آپشن –line-numbers را اضافه کنید.

# iptables -L INPUT -n -v
# iptables -L OUTPUT -n -v –line-numbers

برای کنترل IPTables و انجام عملیات های شروع، شروع مجدد و از کار اننداختن آن دستورات زیر را می‌توانید اجرا کنید:

# service iptables stop
# service iptables start
# service iptables restart

آپشن F- برای حذف rule ها، آپشن -X برای حذف Chain و آپشن t- برای انتخاب جدول(nat یا mangle) بکار می روند. آپشن P- هم در اینجا مقدار policy (رفتار IPTables در برابر یک پکیج) را مشخص می کند.

# iptables -F
# iptables -X
# iptables -t nat -F
# iptables -t nat -X
# iptables -t mangle -F
# iptables -t mangle -X
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEPT

از آپشن D- می‌توانید برای حذف یک rule استفاده کنید. Rule مورد نظر را می‌توانید با شماره ای که –line-numbers در کنار آن نشان می‌دهد، مشخص کنید. یا اینکه کل rule را در مقابل آن بنویسید.

# iptables -D INPUT 4
# iptables -D INPUT -s 202.54.1.1 -j DROP

برای اضافه کردن یک rule باید از I- استفاده کنید. دستور زیر یک rule را بین rule های شماره ۱ و ۲ قرار می دهد:

# iptables -I INPUT 2 -s 202.54.1.2 -j DROP

می‌توانید از rule هایی که نوشته‌اید بکاپ تهیه کنید، دستور زیر از آن‌ها بکاپ می گید و در فایل مشخص شده ذخیره می کند:

# iptables-save > /root/my.active.firewall.rules

برای باز گردانی(restore) فایل بکاپ اینگونه عمل کنید:

# iptables-restore < /root/my.active.firewall.rules

اگر می‌خواهید یک آی پی خاص یا یک رنج آی پی را بلاک کنید راه حل این است:

# iptables -A INPUT -s 1.2.3.4 -j DROP
# iptables -A INPUT -s 192.168.0.0/24 -j DROP

آپشن s- آی پی مورد نظر و j- رفتاری که باید با آن شود را مشخص می کند. DROP باعث بلاک شدن آن می شود. ( در این مثال شما می‌توانید به آن آی پی اطلاعات بفرستید ولی قادر به دریافت اطلاعات از آن نیستید چون فقط روی INPUT کار کرده ایم.)

با دستورات زیر پورت هشتاد TCP سیستم خود را بسته ایم و هیچ سرویسی نمی‌تواند روی آن کار کند. دقت کنید که در مثال دوم از آپشن -i استفاده شده که می‌تواند یکی اینترفیس را مشخص کند تا این بسته شدن پورت فقط روی آن اتفاق بیفتد.

# iptables -A INPUT -p tcp --dport 80 -j DROP
# iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP

حال پورت و آی پی را با هم ادغام می کنیم. دستور زیر پورت ۸۰ را به روی آی پی ۱٫۲٫۳٫۴ می بندد.

# iptables -A INPUT -p tcp -s 1.2.3.4 --dport 80 -j DROP

درباره نویسنده

اروند طباطبایی

بنیانگذار دیجی اسپارک: اولین مرجع تخصصی امبدد سیستم به زبان فارسی / کارشناس سئو و تولید محتوا

هرچه می آموزم میبینم که خیلی کم آموختم. علاقه به رباتیک و تکنولوژی دارم. امیدوارم بتونم دانشی را که آموخته‌ام، به روش‌های مختلفی به کاربران علاقمند منتقل کنم.

تبادل نظر و رفع عیب با ثبت دیدگاه