در مبحث iptables شما با مفاهیم کلی و دستورات و کامند های آن و جدول های مختلف و همچنین زیر شاخه های آن آشنا می شوید.
IPTables فایروال پیش فرض سیستم لینوکس می باشد، از قدرت بالایی بهره برداری میکند که پایداری بسیاری دارد که قبل از آن به اسم IPchange بود. با قدرتمند کردن و اضافه کردن بعضی از دستورات به IPTables تبدیل شد.
طریقه کار iptables
وقتی به لینوکس ما کانکشنی برقرار شد یا اینکه کانکشن خروجی دیگری از سیستم عامل لینوکس به محیط بیرون بخواهد برقرار شود این کانکشن با لیست دستورات iptables بررسی شده و با توجه به پالیسی نوشته شده در فایروال اجازه ورود یا خروج پاکت راخواهد داد و همچنین لازم به ذکر است کلی دستورات به صورت خطی بررسی شده اگر کانکشن با یکی از آنها مطابقت داشت آن دستور در مورد آن کانکشن برقرار خواهد شد اگر به هیچ کدام از دستورات نوشته شده مطابقت نداشت از دستورات پیشفرض نوشته شده در iptable طبعیت خواهد کرد
Iptables tables and chains
هسته لینوکس با استفاده از امکانات Netfilter به فیلتر کردن بسته، می پردازد و اجازه میدهد بعضی از بسته ها با استفاده از پسورد وارد شود و دیگر بسته اجازه وارد شدن نداشته باشند
که هسته آن از لینوکس درست شده که در آن پنج جدول از پیش طراحی شده که شامل:
Filter: این جدول به طور پیش فرض برای مدیریت بسته های شبکه است
NAT: برای تغییر بسته برای یک اتصال جدید کاربرد دارد مثلا تبدیل ای پی اینترنت به ای پی شبکه داخلی و برعکس مورد استفاده قرار میگیرد
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 اجرا روی پاکت های که از شبکه خارج می Mشوند
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 ، ACCEPT و 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