Iptables فایروال پیش فرض سیستم Linux می‌باشد، از قدرت بالایی بهره‌برداری می‌کند که پایداری بسیاری دارد که قبل از آن به اسم IPchange بود. با قدرتمند کردن و اضافه کردن بعضی از دستورات به Iptables تبدیل شد.


طریقه کار iptables: وقتی به Linux ما کانکشنی برقرار شد یا اینکه کانکشن خروجی دیگری از سیستم عامل Linux به محیط بیرون بخواهد برقرار شود این کانکشن با لیست دستورات iptables بررسی شده و با توجه به پالیسی نوشته شده در فایروال اجازه ورود یا خروج پاکت را خواهد داد و همچنین لازم به ذکر است کلی دستورات به صورت خطی بررسی شده اگر کانکشن با یکی از آن‌ها مطابقت داشت آن دستور در مورد آن کانکشن برقرار خواهد شد اگر به هیچ کدام از دستورات نوشته شده مطابقت نداشت از دستورات پیش فرض نوشته شده در iptables تبعیت خواهد کرد.


Iptables tables and chains: هسته Linux با استفاده از امکانات Netfilter به فیلتر کردن بسته، می‌پردازد و اجازه می‌دهد بعضی از بسته‌ها با استفاده از پسورد وارد شود و دیگر بسته اجازه وارد شدن نداشته باشند که هسته آن از Linux درست شده که در آن پنج جدول از پیش طراحی شده که شامل:


Filter: این جدول به طور پیش فرض برای مدیریت بسته‌های شبکه است.

NAT: برای تغییر بسته برای یک اتصال جدید کاربرد دارد مثلاً تبدیل IP اینترنت به IP شبکه داخلی و برعکس مورد استفاده قرار می‌گیرد.

Mangle: برای تغییر و مارک‌دار کردن انواع خاصی از بسته با توجه به پالیسی نوشته شده به کار می‌رود.

Raw: عمدتاً برای پیکربندی معافیت در طول ردیابی اتصال در ترکیب با هدف NOTRACK است.

Security: برای کنترل دسترسی اجباری قوانین شبکه مورد استفاده قرار می‌گیرد.

Filter table: جدول‌های فیلتر شامل:

Input chain: کلیه بسته‌های ورودی به سیستم عامل.

Output chain: کلیه بسته‌های خروجی از سیستم عامل.

Forward chain: کلیه بسته‌هایی که از طریق این سیستم عامل بخواهد ارسال شود.

NAT table: جدول نت

Pre-routing: بسته‌های شبکه را زمانی که آن‌ها می‌رسند تغییر می‌دهد و معمولاً برای destination network مورد استفاده قرار می‌گیرد.

Output: تغییر می‌دهد بسته‌های تولید شده در شبکه داخلی قبل از این که خارج شود.

Post-routing: تغییر می‌دهد بسته‌ها را قبل از این که از شبکه خارج شوند.

Mangle table: جدول‌های منگل

Input: بسته‌های شبکه را برای میزبان تغییر می‌دهد (مارک‌دار می‌کند)

Output: بسته‌های تولید شده از شبکه را قبل از فرستادن تغییر می‌دهد (مارک‌دار می‌کند)

Forward: تغییر می‌دهد (مارک‌دار می‌کند) پاکت‌های شبکه که می‌خواهد روت شود به نقطه دیگر

Pre-routing: تغییر می‌دهد (مارک‌دار می‌کند) پاکت‌های شبکه را قبل از این که روت شوند.

Post-routing: تغییر می‌دهد (مارک‌دار می‌کند) پاکت‌های شبکه را بعد از این که روت شوند.

Raw table: جدول‌های raw

Output: اجرا پاکت‌های که در شبکه داخلی تولید شده اند قبل از این که خارج شوند.

Pre-routing: اجرای بسته‌های ورودی قبل از این که خارج شوند.

Security table: جدول‌های Security

Input: اجرا روی پاکت‌های که به شبکه وارد می‌شوند.

Output: اجرا روی پاکت‌های که از شبکه خارج می‌شوند.

Forward: اجرا روی پاکت‌های که از شبکه می‌خواهند روت شوند به جای دیگری

Iptables command: قوانین و دستورهای موجود در iptables

A- برای افزودن دستور به انتهای یک زنجیره از جدول قوانین استفاده می‌شود.

D- برای حذف دستور از مکان خاصی از زنجیره جدول قوانین استفاده می‌شود.

N- برای ایجاد زنجیر جدید مورد استفاده قرار می‌گیرد که می‌توان به آن یک اسم اختصاصی بدهیم.

E- برای تغییر اسم زیر شاخه ساخته شده به کار می‌رود.

X- برای پاک کردن زیر شاخه تولید شده به کار می‌رود.

F- برای پاک کردن قوانین مورد استفاده قرار می‌گیرد.

I- برای وارد کردن دستوری خاص به یک سطر از یک زیر شاخه

L- لیست کلیه دستورات یک زیر شاخه را لیست خواهد کرد.

P- برای تغییر پالیسی دیفالت استفاده می‌شود.

R- جایگزین کردن دستوری به جای دستور قبلی در یک زیر شاخه

Z- برای صفر کردن کلیه کانترهای داخل فایروال

Iptables parameter options

p- برای مشخص کردن نوع پروتکل مورد استفاده قرار می‌گیرد.

s- یا source – برای مشخص کردن شماره ip مبدأ مورد استفاده قرار می‌گیرد.

d- یا destination – برای مشخص کردن شماره ip مقصد مورد استفاده قرار می‌گیرد.

i- یا in-interface – برای مشخص کردن کارت شبکه ورودی مورد استفاده قرار می‌گیرد.

o- یا out-interface – برای مشخص کردن کارت شبکه خروجی مورد استفاده قرار می‌گیرد.

j- مشخص کردن نحوه برخورد با بسته مورد استفاده قرار می‌گیرد. این سوئیچ به معنی jump بوده و به موارد DROP ، LOG ، ACCو REJECT اشاره می‌کند.

m- برای مشخص کردن ماژول مورد استفاده قرار می‌گیرد.

c- این دستور شمارنده‌های داخل فایروال را فعال می‌کند که در طول وارد کردن یا اجرا کردن یا جایگزین کردن می‌باشد.
[!] این دستور در ابتدای پارامترهای فوق دستور را به صورت منفی اجرا خواهد کرد.

Saving rules

iptables-save > /etc/iptables.rules برای پشتیبان‌گیری تنظیمات مورد استفاده قرار می‌گیرد.

post-down iptables-save > /etc/iptables.rules برای پشتیبان‌گیری تنظیمات قبل از هر خاموش شدن سیستم مورد استفاده قرار می‌گیرد.

iptables-restore < /etc/iptables.rules برای بازیابی تنظیمات مورد استفاده قرار می‌گیرد.


مهم‌ترین و پر کاربردترین دستورات و تنظیمات iptables:

پاک کردن تمام تنظیمات جاری

Iptables -F

ایجاد تنظیمات عمومی و مسدود کردن همه دسترسی‌ها

iptables -P INPUT DROP

iptables -P FORWARD DROP

iptables -P OUTPUT DROP

مسدود کردن یک ip خاص

iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP

باز کردن پورت SSH برای تمامی ارتباطات ورودی

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

باز کردن پورت ssh برای یک ip یا رنج ip خاص

iptables -A INPUT -i eth0 -p tcp -s xxx.xxx.xxx.xxx/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A INPUT -i eth0 -p tcp -s xxx.xxx.xxx.xxx --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

باز کردن پورت http

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

باز کردن پورت https

iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

باز کردن چند پورت بصورت یکجا

iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT

باز کردن پورت برای ارتباط خروجی ssh

iptables -A OUTPUT -o eth0 -p tcp -d 192.168.101.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

باز کردن پورت https برای ارتباطات خروجی

iptables -A OUTPUT -o eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

ایجاد امکان ping از داخل به خارج

iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT

iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

ایجاد امکان ping از خارج به داخل

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

ایجاد امکان دسترسی loopback

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

ایجاد امکان دسترسی به شبکه خارجی eth1 از شبکه داخلی eth0

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

باز کردن دسترسی خروجی پورت dns

iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT

iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT

ذخیره تغییرات iptables

service iptables save



منبع: VOIPIRAN