سلام
جایی مهمان بودم و به اینترنت دسترسی نداشتم! دیشب هم بد از مدتها ی چیزایی از IPtable یاد گرفته بودم! این بود که دیدم امروز بیکار ام! از فرصت استفاده کردم و چیزایی رو که یاد
گرفته بودم رو مستند کردم! البته نیاز با ویرایش داره! که بعد از امتحانات کزایی ! حتما انجام میدم!
*************************
برای فعال کردن PortForwarding بایستی در فایل پیکربندی ی etc/sysctl.conf آن ها را از حالت کامنت خارج نمود. و با دستور ذیل تغییرات را بارگذاری کرد.
$ sysctl -p
بارگزاری ی مجدد پارامترهای کرنل
iptable -F
خالی کردن تنظیمات از کاشه
iptable --list | -L
لیست تنظبمات موجود
iptable -A INPUT -s 10.2.3.4 -p TCP -dport 21 -j DROP
بلوکه کردن امکان برقراری ارتباط از مبدای خاص به شماره پورتی داخلی
همچنین صف PortForwarding به صورت پیشفرض DROP می باشد که با دستور ذیل فعال می شود.
iptables --table filter --append FORWARD --jump ACCEPT
شرح IP Table
برای مدیریت بسته ها توسط سیستم نیاز به اندکی مقدمه می باشد.
نخست بایست بدانیم که هر بسته ای که وارد سیستم می گردد، با توجه می شرایط و مقادیر مبدا و مقصد اش با قوانین ای روبرو می شود.
در هسته چند جدول مدیریت ای برای مدیریت بر بسته ها موجود می باشد که به شرح ذیل می باشند:
filter (Default Table)
nat
mangle
raw
اولین جدول که پیشفرض نیز می باشد برای مدیریت و فیلتر کردن بسته های ورودی و خروجی می باشد. و برای اعمال قوانین مدیریتی از چند صف برای آن استفاده می شود.
بسته های ورودی وارد صف IPNUT میگردد پ بسته هایی که توسط سیستم به صورت محلی و برای ارسال به روی شبکه آماده شده اند به صف OUTPUT وارد می شوند. همچنین بسته هایی که در محل تولید نشده اند و مقصد آن ها نیز سیستم نمی باشد(یعنی از یک کارت واسط شبکه وارد شده اند و با توسط به سرآیند بسته ها بایستی از کارتی دیگر خارج شوند) به صف FORWARD سپرده خواهند شد.
حال به نحوه ی تعریف قوانین برای مدیریت و بسته ها دقت کنید!
نکته:: قوانین هر صف به ترتیب بر بسته ها اعمال می شوند و اولین قانونی که با شرایط بسته مطابق نماید بر آن عمال می شود.
ترتیب اعمال پارامتر ها در هر قانون اهمیتی نداشته و قابل جابجایی می باشد.
چند عمل پر کاربرد بر روی بسته ها DROP | ACCEPT | QUEUE | RETURN می باشد.
حال به تعریف قانون خواهیم پرداخت
iptable --table filter --append INPUT --source 10.0.0.2 --jump DROP
این فانون به صف ورودی از جدول فیلتر اضافه می شود و بسته های ورودی از مبدا معینی رو که با شماره ی شبکه ی آن معین شده است را مسدود می کند.
iptable --table filter --append INPUT --source 10.0.0.2 --distination-port 21 --jump DROP
این فانون به صف ورودی از جدول اضافه اعمال می شود و بسته های ورودی از مبدا معینی رو که با شماره ی شبکه ی آن معین شده است و هدف آن پورت بیست و یک بر روی سیستم محلی می باشد را مسدود می کند.
iptable --table filter --append INPUT --source 10.0.0.2 --protocol TCP --distination-port 21 --jump DROP
این فانون به صف ورودی از جدول اضافه اعمال می شود و بسته های ورودی از مبدا معینی رو که با شماره ی شبکه ی آن معین شده است و هدف آن پورت بیست و یک بر روی سیستم محلی می باشد را مسدود می کند. البته این قانون فقط بر روی بسته های پروتکل TCP اعمال می گردد.
خب دیگه حوصله ندارم! یکمی پارامتر ها رو می نویسم براتون
--append برای اضافه کردن یک قانون به انتهای یک صف
--delete برای حذف یک قانون از یک صف که بایستی شماره ی قانون مورد نظر در آن صف نیز ارسال شود
--insert که یک قانون رو با یک صف اضافه می کند! اما در ترتیب عددی که به آن داده میشود
--replace یک قانون را در یک صف جایگزین می نماید که شماره ی قانون قبلی نیز بایستی ارسال گردد
از سوئیچ jump نیز برای تعیین عمل مورد نظر استفاده می شود.
--jump DROP بسته را به زمین میزند! یعنی هیچ پاسخی به آن نمی دهد
--jump ACCEPT اجازه ی ورود به بسته را می دهد
--jump RETRUN سخت بود! نفهمیدم
حال دسته از پارامتر های متنوع را مطرح می کنیم.
--protocol TCP | UDP برای تعیین نوع پروتکل مورد بررسی از
--source address/Mask تعیین آدرس شبکه ی سیستم و یا یک شبکه
--distination address/Mask تعیین آدرس شبکه ی سیستم و یا یک شبکه
--source-port پورت مبدا بسته
--distination-port پورت مقصد بسته