آموزش iptables فایروال لینوکس + دستورات کاربردی و تنظیمات : فایروال ها نقش مهمی در تامین امنیت سیستم ها و شبکه های لینوکسی ایفا میکنند. آنها با کنترل و مدیریت ترافیک شبکه های ورودی و خروجی بر اساس مجموعه ای از قوانین مانند یک محافظ امنیتی بین شبکه داخلی و خارجی عمل میکنند. مجموعه ای از قوانین فایروال تنها اجازه می دهد تا اتصالات و درخواست های مجاز از فایروال عبور کرده و آنهایی که تعریف نشده اند یا غیرمجاز تعریف شده اند مسدود می شوند . ده ها فایروال متن باز در دسترس مدیران شبکه ها و سیستم های لینوکسی قرار دارد که از آن جمله می توان به Iptables , IpCop Shorewall , UFW , Vuurmuur , pfSense , IPFire , SmoothWall , Endian و CSF اشاره کرد که در این مجال به بررسیiptables می پردازیم.
Iptables چیست؟
Iptables یا Netfilter محبوب ترین و پر استفاده ترین فایروال لینوکسی مبتنی بر خط فرمان است. iptables خط اول دفاعی سرورهای لینوکس است و بسیاری از مدیران سرورها از آن برای کانفیگ و ایجاد تنظیمات در سرورهای لینوکس استفاده میکنند. iptables بسته ها را درون پشته شبکه در داخل هسته لینوکس فیلتر میکند. iptables معمولا header هر بسته را بررسی می کند و به محتوای بسته اهمیتی نمی دهد بنابراین از سرعت بسیار زیادی برخوردار است و معمولا تاثیر چندانی در کاهش سرعت پاسخگویی سیستم ندارد، iptables همچنین قادر است یک رشته را درون بسته ها جستجو کند، البته این کار تاحدودی باعث کاهش سرعت سیستم خواهد شد.
iptables امکانات زیادی در اختیار یک مدیر سرور می دهد ، بوسیله iptables میتوان پکت ها را بر اساس پروتکل مورد استفاده در ارتباط ، شماره ip گیرنده و فرستنده ، شماره پورت مورد در ارتباط ، مک آدرس و آدرس فیزیکی سیستم ها ، دامنه ای از آدرس های ip ، زمان برقراری ارتباط ، بخش های مختلفی از بسته ها و تنظیمات IPSec ، طول بسته ها ، انتخاب تصادفی بسته ها ، انتخاب n امین بسته ، کاربر یا گروه ارسال کننده بسته ، پردازش ارسال کننده بسته ، بخش های TOS و TTL هدر ip و تعداد ارتباطات در یک بازه زمانی را کنترل و فیلتر کرد.
توسط iptables شما می توانید با توجه به نیاز های خود به ایجاد،حذف یا ویرایش قوانین فیلتر کردن بسته ها بپردازید و حتی میتوانید مجموعه قوانین جاری را بصورت لیست مشاهده کنید . iptables قابلیت انعطاف پذیری بالایی دارد و میتوان با استفاده از آن نتایج کار آن را بر اساس هر قانون مشاهده یا ویرایش کرد. iptables همچنین از قابلیت پشتیبان گیری و بازیابی قوانین با استفاده از فایل ها برخوردار است و از Load balancing نیز پشتیبانی می کند.
قوانین iptable بسته به نوع کاربرد در جداول filter table ، nat tableوmangling table و در زنجیر(chain)هایی از دستورات دسته بندی می شوند. وظیفه filter table سیاست گذاری و دادن مجوز برای ورود و خروج بسته های TCP/IP به سیستم است. این جدول شامل سه زنجیر INPUT برای ترافیک ورودی به سیستم ، OUTPUT برای ترافیک خروجی از سیستم و FORWARD برای ترافیک فوروارد شده از سیستم است.
وظیفه nat table سیاست گذاری و دادن مجوز عملیات routing است و قوانین مربوط به تغییر آدرس IP و یا پورت در جدول nat قرار می گیرند. این جدول شامل سه زنجیر PREROUTING برای شبکه مقصد در ترافیک ورودی به سیستم ، POSTROUTING برای شبکه مبدا ترافیک خروجی از سیستم و OUTPUT است.
از جدول mangle می توان برای مارک دار کردن بسته ها و عملیات بررسی بسته ها قبل از ورود به جداول بالاتر استفاده کرد . کلیه اعمال پیشرفته مربوط به دستکاری فیلدهای header در بسته های ارسالی در شبکه توسط قوانین موجود در این جدول صورت می گیرد.
سوئیچ ها و دستورات iptable
-
A- برای افزودن دستور به انتهای یک زنجیره از جدول قوانین استفاده می شود.
-
I- برای افزودن به مکان خاصی از زنجیره جدول قوانین استفاده می شود.
-
D- برای حذف دستور از مکان خاصی از زنجیره جدول قوانین استفاده می شود.
-
R- برای جایگزین کردن دستور جاری یا یک دستور در مکان خاصی از زنجیره جدول قوانین استفاده می شود.
-
p- برای مشخص کردن نوع پروتکل مورد استفاده قرار میگیرد.
-
t- برای مشخص کردن جدول مورد استفاده قرار میگیرد.
-
s- یا source– برای مشخص کردن شماره ip مبدا مورد استفاده قرار میگیرد.
-
d- یا destination– برای مشخص کردن شماره ip مقصد مورد استفاده قرار میگیرد.
-
i- یا in-interface– برای مشخص کردن کارت شبکه ورودی مورد استفاده قرار میگیرد.
-
o- یا out-interface– برای مشخص کردن کارت شبکه خروجی مورد استفاده قرار میگیرد.
-
sport– برای مشخص کردن شماره پورت مبدا مورد استفاده قرار میگیرد.
-
dport– برای مشحص کردن شماره پورت مقصد مورد استفاده قرار میگیرد.
-
L- برای لیست کردن قوانین موجود در یک زنجیر مورد استفاده قرار میگیرد.
-
N- برای ایجاد زنجیر جدید مورد استفاده قرار میگیرد.
-
X- برای حذف یک زنجیر مورد استفاده قرار میگیرد.
-
F- برای پاک کردن قوانین مورد استفاده قرار میگیرد.
-
j- مشخص کردن نحوه برخورد با بسته مورد استفاده قرار میگیرد. این سویچ به معنی jump بوده و به موارد DROP ، LOG ، ACCEPT و REJECT اشاره می کند. در اینجا تفاوتی که بین DROP و REJECT وجود دارد و آ ن این است که در DROP برای فرستنده پیامی مبنی بر حذف بسته ارسال نمیکند ولی در REJECT به فرستنده یک بسته عدم پذیرش ترافیک ارسال خواهد شد.
-
iptables-save > /etc/iptables.rules برای پشتیبان گیری تنظیمات مورد استفاده قرار میگیرد.
-
post-down iptables-save > /etc/iptables.rules برای پشتیبان گیری تنظیمات قبل از هر خاموش شدن سیستم مورد استفاده قرار میگیرد.
-
iptables-restore < /etc/iptables.rules برای بازیابی تنظیمات مورد استفاده قرار میگیرد.
-
m- برای مشخص کردن ماژول مورد استفاده قرار می گیرد.
-
m mac –mac-source- برای مشخص کردن مک آدرس مبدا مورد استفاده قرار می گیرد.
بطور مثال دستور زیر پورت ۲۲ را باز می کند:
۱
|
iptables –A OUTPUT –o eth0 –p tcp —sport 22 –m state —state ESTABLISHED –j ACCEPT
|
مهم ترین و پرکاربردترین دستورات و تنظیمات 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 —dport 22 –m state —state NEW,ESTABLISHED –j ACCEPT
iptables –A INPUT –i eth0 –p tcp —sport 22 –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
|
بدون دیدگاه