از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
Ubuntu Iptables: چگونه با استفاده از iptables ترافیک شبکه را کنترل کنیم؟
سرفصلهای مطلب
“…آ ابزار یونیکس فضای کاربر که به مدیران سیستم این امکان را می دهد تا قوانین فیلترینگ بسته IP را که توسط ماژول فیلتر شبکه Kernel پیاده سازی شده اند، پیکربندی کنند. Iptable ها به عنوان یک فایروال با استفاده از قوانین فیلترینگ بسته عمل می کنند روی معیارهای مختلفی مانند آدرس IP، پورت و پروتکل ها.
این راهنما روش پیکربندی و استفاده از قوانین iptables را مورد بحث قرار خواهد داد روی یک سیستم اوبونتو برای ایمن سازی شبکه شما چه یک کاربر مبتدی لینوکس یا یک مدیر سیستم با تجربه، از این راهنما، و به هر طریقی، چیزهای مفیدی در مورد iptables یاد خواهید گرفت.
Iptable ها از قبل نصب شده اند روی اوبونتو و اکثر توزیع های مبتنی بر دبیان. اوبونتو همچنین فایروال GUFW را بسته بندی می کند، یک جایگزین گرافیکی که می توانید برای کار با iptables استفاده کنید.
توجه داشته باشید: برای استفاده و پیکربندی iptables، شما نیاز دارید sudo امتیازات روی سیستم شما می توانید در مورد آن بیشتر بدانید sudo از آموزش زیر
اکنون که میدانید Iptables چیست، بیایید وارد آن شویم!
چگونه از iptables برای مدیریت ترافیک IPv4 استفاده کنیم؟
برای استفاده از Iptables برای شبکه IPv4 و مدیریت ترافیک، باید موارد زیر را بدانید:
فرمان Iptables
Iptables مجموعه ای از گزینه ها را ارائه می دهد که به شما امکان می دهد قوانین iptables خود را سفارشی و تنظیم کنید. اجازه دهید برخی از این پارامترها را مورد بحث قرار دهیم و ببینیم آنها چه کاری انجام می دهند.
توجه داشته باشید: شما می توانید مجموعه ای از قوانین را پیکربندی کنید که یک زیرمجموعه خاص را که به عنوان زنجیره iptables شناخته می شود، مدیریت می کند.
پارامترهای Iptables
قبل از شروع به ایجاد و پیکربندی قوانین iptables، اجازه دهید ابتدا اصول iptables، مانند نحو کلی و آرگومان های پیش فرض را درک کنیم.
دستور زیر را در نظر بگیرید:
دستور بالا به iptable ها می گوید که یک قانون در زنجیره ایجاد کنند. این قانون تمام بسته ها را از آدرس IP 192.168.0.24 حذف می کند.
برای درک بهتر دستور را خط به خط بررسی می کنیم.
- اولین دستور iptables iptables را فراخوانی می کند command-line سودمندی
- آرگومان بعدی -I است که برای درج استفاده می شود. آرگومان درج یک قانون در ابتدای زنجیره iptables اضافه می کند و بنابراین اولویت بالاتری به آن اختصاص می یابد. برای اضافه کردن یک قانون به یک عدد خاص در زنجیره، از آرگومان -I و سپس عددی که قانون باید در آن تخصیص یابد استفاده کنید.
- آرگومان -s به تعیین منبع کمک می کند. از این رو، از آرگومان -s به دنبال آدرس IP استفاده می کنیم.
- پارامتر -j با iptables پرش به یک هدف خاص را مشخص می کند. این گزینه عملکردی را که Iptables باید پس از وجود بسته منطبق انجام دهد را تنظیم می کند. Iptables به طور پیش فرض چهار هدف اصلی را ارائه می دهد که عبارتند از: ACCEPT، DROP، LOG و REJECT.
Iptables مجموعه ای از پارامترها را ارائه می دهد که می توانید از آنها برای پیکربندی قوانین مختلف استفاده کنید. پارامترهای مختلفی که می توانید برای پیکربندی قوانین iptables استفاده کنید عبارتند از:
پارامتر قانون Iptables | شرح |
---|---|
-s – منبع | منبع را مشخص کنید که می تواند آدرس، نام میزبان یا نام شبکه باشد. |
-p -پروتکل | پروتکل اتصال را مشخص می کند. به عنوان مثال، TCP، UDP و غیره. |
-d – مقصد | مقصد را مشخص می کند که می تواند آدرس، نام شبکه یا نام میزبان باشد. |
-j – پرش | مجموعه اقدامات iptables باید پس از یافتن یک بسته انجام دهد. |
-o – خارج از رابط | رابطی را تنظیم می کند که iptable از طریق آن بسته را ارسال می کند. |
-i -in-interface | رابط مورد استفاده برای ایجاد بسته های شبکه را تنظیم می کند. |
-c –مجموعه شمارنده | به مدیر اجازه می دهد تا شمارنده بایت و بسته را برای یک قانون مشخص تنظیم کند. |
-g – زنجیره ای | پارامتر مشخص می کند که پردازش باید در زنجیره کاربر پس از بازگشت ادامه یابد. |
-f -قطعه | به iptables میگوید که این قانون را فقط در قسمتهای دوم و بعدی بستههای تکه تکه شده اعمال کند. |
گزینه های Iptables
دستور iptables طیف وسیعی از گزینه ها را پشتیبانی می کند. برخی از موارد رایج عبارتند از:
گزینه | شرح |
---|---|
-A – ضمیمه | یک قانون را به انتهای یک زنجیره مشخص اضافه می کند |
-D – حذف کنید | یک قانون را از زنجیره مشخص شده حذف می کند |
-F – فلاش | همه قوانین را یکی یکی حذف می کند |
-L – لیست | تمام قوانین را در زنجیره مشخص شده نشان می دهد |
-I -درج | یک قانون را در زنجیره مشخص شده درج می کند (به عنوان یک عدد ارسال می شود، زمانی که عدد مشخصی وجود ندارد، قانون در بالا اضافه می شود) |
-C – بررسی کنید | جستارهایی برای تطبیق یک قانون؛ الزام در یک قانون مشخص |
-v – پرحرف | هنگامی که با پارامتر -L استفاده می شود جزئیات بیشتری را نمایش می دهد |
-N -new-chain |
یک زنجیره جدید تعریف شده توسط کاربر اضافه می کند |
-X –delete-chain |
یک زنجیره خاص تعریف شده توسط کاربر را حذف می کند |
جداول Iptables
هسته لینوکس دارای جداول پیش فرض است که مجموعه ای از قوانین مرتبط را در خود جای داده است. این جداول پیشفرض دارای مجموعهای از زنجیرههای پیشفرض هستند، اما کاربران میتوانند با افزودن قوانین تعریفشده توسط کاربر، قوانین را سفارشی کنند.
توجه داشته باشید: جداول پیش فرض به شدت وابسته خواهند بود روی پیکربندی هسته شما و ماژول های نصب شده.
در اینجا جداول پیش فرض iptables آمده است:
1: جداول فیلتر
جدول فیلتر یک جدول پیش فرض است که شامل زنجیره هایی است که برای فیلتر کردن بسته های شبکه استفاده می شود. برخی از زنجیره های پیش فرض در این جدول عبارتند از:
زنجیر | شرح |
---|---|
ورودی | Iptable ها از این زنجیره برای هر بسته ورودی به سیستم استفاده می کنند، یعنی بسته هایی که به سوکت های شبکه محلی می روند. |
خروجی | Iptable ها از زنجیره خروجی برای بسته های تولید شده محلی استفاده می کنند، یعنی بسته هایی که از سیستم خارج می شوند. |
رو به جلو | این زنجیره همان چیزی است که Iptables برای بسته هایی که از طریق سیستم هدایت یا ارسال می شوند، استفاده می کنند. |
2: جداول NAT
NAT یا Network Address Table یک دستگاه مسیریابی است که برای تغییر آدرس های IP منبع و هدف در یک بسته شبکه استفاده می شود. کاربرد اصلی جدول NAT اتصال دو شبکه در یک محدوده آدرس خصوصی با شبکه عمومی است.
NAT برای پشتیبانی از پوشاندن آدرسهای IP واقعی توسعه داده شده است، و اجازه میدهد محدوده آدرس IP خصوصی از دسترسی به شبکه بیرونی باشد. این به محافظت از جزئیات مربوط به شبکههای داخلی در برابر افشای شبکههای عمومی کمک میکند.
جدول NAT زمانی استفاده می شود که یک بسته یک اتصال جدید را آغاز کند.
Iptable ها یک جدول پیش فرض برای آدرس دهی NAT دارند. این میز دارای سه زنجیره اصلی است:
زنجیر | شرح |
---|---|
پیش پروتینگ | اجازه می دهد تا اطلاعات بسته را قبل از رسیدن به زنجیره INPUT تغییر دهید – برای بسته های ورودی استفاده می شود |
خروجی | برای بسته های ایجاد شده به صورت محلی، یعنی قبل از اینکه مسیریابی شبکه رخ دهد، رزرو شده است |
پس از استراوتینگ | اجازه می دهد تا بسته های خروجی را تغییر دهید – بسته هایی که از زنجیره OUTPUT خارج می شوند |
نمودار زیر نمای کلی سطح بالایی از این موضوع را نشان می دهد process.
از دستور زیر برای مشاهده جداول مسیریابی NAT خود استفاده کنید.
3: میزهای منگل
جدول mangle عمدتا برای اصلاحات ویژه بسته ها استفاده می شود. به زبان ساده، برای اصلاح هدرهای IP یک بسته شبکه استفاده می شود. اصلاح بسته ها می تواند شامل تغییر مقدار TTL بسته، تغییر پرش های معتبر شبکه برای یک بسته و غیره باشد.
جدول شامل زنجیره های پیش فرض زیر است:
زنجیر | شرح |
---|---|
پیش پروتینگ | برای بسته های دریافتی رزرو شده است |
پس از استراوتینگ | برای بسته های خروجی استفاده می شود |
ورودی | برای بسته هایی که مستقیماً به سرور وارد می شوند استفاده می شود |
خروجی | برای بسته های محلی استفاده می شود |
رو به جلو | برای بسته های مسیریابی شده از طریق سیستم رزرو شده است |
4: جداول خام
هدف اصلی جدول خام پیکربندی استثناها برای بسته هایی است که قرار نیست توسط سیستم ردیابی مدیریت شوند. جدول خام یک علامت NOTRACK تعیین می کند روی بسته ها، باعث می شود که ویژگی conntrack بسته را نادیده بگیرد.
Conntrack یک ویژگی شبکهسازی هسته لینوکس است که به هسته لینوکس اجازه میدهد تمام اتصالات شبکه را ردیابی کند و هسته را قادر میسازد بستههایی را که یک جریان شبکه را تشکیل میدهند شناسایی کند.
میز خام دو زنجیره اصلی دارد:
زنجیر | شرح |
---|---|
پیش پروتینگ | برای بسته های دریافت شده توسط رابط های شبکه رزرو شده است |
خروجی | برای بسته هایی که توسط فرآیندهای محلی آغاز شده اند رزرو شده است |
5: جدول امنیتی
کاربرد اصلی این جدول، تنظیم مکانیزم امنیتی داخلی ارتقاء امنیت برای لینوکس (SELinux) است که علامت گذاری می کند روی بسته ها علامت امنیتی می تواند در هر اتصال یا بسته اعمال شود.
برای قوانین کنترل دسترسی اجباری استفاده می شود و دومین جدولی است که بعد از جدول فیلتر به آن دسترسی پیدا می شود. این زنجیره های پیش فرض زیر را ارائه می دهد:
زنجیر | شرح |
---|---|
ورودی | برای بسته های ورودی به سیستم رزرو شده است |
خروجی | برای بسته های محلی ایجاد شده استفاده می شود |
رو به جلو | برای بسته های مسیریابی از طریق سیستم استفاده می شود |
با نگاهی به Iptable های پیش فرض، اجازه دهید یک گام جلوتر برویم و روش کار با قوانین iptables را مورد بحث قرار دهیم.
چگونه با قوانین iptables کار کنیم؟
قوانین Iptables به ترتیب صعودی اعمال می شوند. این بدان معناست که قانون اول در یک مجموعه خاص ابتدا اعمال می شود، پس از آن قانون دوم، سپس سوم و غیره اعمال می شود روی، تا آخرین.
به دلیل این تابع، iptables از اضافه کردن قوانین به مجموعه با استفاده از پارامتر -A جلوگیری می کند. برای افزودن به بالای لیست باید از -I و سپس عدد یا خالی کردن آن استفاده کنید.
نمایش Iptables
برای مشاهده iptables خود، از دستور iptables -L -v برای IPv4 و ip6tables -L -v برای IPv6 استفاده کنید.
درج قوانین
برای درج قوانین در یک مجموعه، باید آنها را به ترتیب دقیق و با رعایت قوانین استفاده شده توسط همان زنجیره قرار دهید. می توانید لیست قوانین iptables خود را با دستور همانطور که در بالا توضیح داده شد مشاهده کنید:
به عنوان مثال، برای درج قاعدهای که به اتصالات ورودی به پورت 9001 از طریق TCP اجازه میدهد، باید شماره قانون را در زنجیره INPUT مشخص کنیم که قوانین ترافیک وب را رعایت میکند.
هنگامی که iptable های فعلی را مشاهده کردید، باید قانون جدید را در مجموعه مشاهده کنید.
جایگزینی قوانین
عملکرد جایگزینی به طور مشابه برای درج کار می کند، با این حال، از دستور iptables -R استفاده می کند. به عنوان مثال، برای اصلاح قانون بالا و تنظیم پورت 9001 برای انکار، ما:
حذف یک قانون
برای حذف یک قانون، شماره قانون را پاس می کنیم. به عنوان مثال، برای حذف قانون بالا، می توانیم به صورت زیر مشخص کنیم:
در اکثر توزیعهای لینوکس، iptableها برای IPv4 و IPv6 خالی هستند. بنابراین، اگر هیچ قانون جدیدی اضافه نکرده باشید، خروجی مشابه تصویر زیر دریافت خواهید کرد. این خطرناک است زیرا به این معنی است که سیستم به تمام ترافیک ورودی، خروجی و مسیریابی اجازه می دهد.
بیایید روش پیکربندی iptables را بررسی کنیم:
چگونه iptables را پیکربندی کنیم؟
راه های زیادی برای پیکربندی قوانین iptables وجود دارد. این بخش از مثال هایی استفاده می کند تا روش تنظیم قوانین با استفاده از آدرس های IP و پورت ها را به شما نشان دهد.
مسدود کردن و اجازه دادن به ترافیک توسط بنادر
می توانید از یک پورت خاص برای مسدود کردن یا اجازه دادن به تمام ترافیک استفاده کنید روی یک رابط شبکه به مثال های زیر توجه کنید:
دستورات بالا اجازه تردد را می دهند روی پورت 1001 TCP روی رابط wlan0
این دستور برعکس دستور بالا را انجام می دهد زیرا تمام ترافیک را مسدود می کند روی پورت 1001 روی wlan0.
در اینجا یک بازرسی دقیق از دستور است:
- آرگومان اول (-A) یک قانون جدید در انتهای زنجیره جدول اضافه می کند.
- آرگومان INPUT قانون مشخص شده را به جدول اضافه می کند.
- آرگومان DROP عمل را به ترتیب ACCEPT و DROP تنظیم می کند. این بدان معنی است که هنگامی که یک بسته مطابقت پیدا می کند، حذف می شود.
- -p پروتکلی مانند TCP را مشخص می کند و اجازه ترافیک را می دهد روی پروتکل های دیگر برای تصویب
- –destination-port قاعده ای را برای پذیرش یا حذف تمام ترافیک مقصد پورت 1001 تنظیم می کند.
- -i
به iptable ها می گوید که این قانون را برای ترافیکی که می آیند اعمال کنند روی رابط wlan0
توجه داشته باشید: Iptable ها نام مستعار رابط شبکه را درک نمی کنند. بنابراین، در سیستمی با بیش از یک رابط مجازی، باید آدرس مقصد را به صورت دستی و صریح تعریف کنید.
مثلا:
لیست سفید و لیست سیاه آدرس های IP
شما می توانید قوانین فایروال را با استفاده از iptables ایجاد کنید. یک مثال با توقف تمام ترافیک و اجازه دادن به ترافیک شبکه فقط از آدرس های IP صریح است.
مثال:
iptables -آ ورودی -من اینجا -m اظهار نظر –اظهار نظر “Allow Loopback Connections” -j تایید کنید
iptables -آ ورودی -پ icmp -m اظهار نظر –اظهار نظر «اجازه دهید پینگ کار کند مانند انتظار می رود” -j
تایید کنید
iptables -آ ورودی -s 192.168.0.0 -j تایید کنید
iptables -پ افت ورودی
iptables -پ سقوط به جلو
خط اول یک قانون را تنظیم می کند که به همه آدرس های IP منبع در زیرشبکه 192.168.0.1/24 اجازه می دهد. همچنین می توانید از CIDR یا آدرس های IP فردی استفاده کنید. در دستور زیر، این قانون را تنظیم می کنیم که به تمام ترافیک متصل به اتصالات موجود اجازه دهد. در دستورات نهایی، یک خط مشی برای INPUT و FORWARD تعیین کردیم تا همه را حذف کنند.
استفاده از iptables روی IPv6
دستور Iptables فقط کار می کند روی IPv4. برای استفاده از iptables روی IPv6، باید از دستور ip6tables استفاده کنید. Ip6tables از جداول خام، فیلتر، امنیتی و انحرافی استفاده می کند. سینتکس کلی ip6tables مشابه iptables است و همچنین از گزینه های مشابه iptables مانند افزودن، حذف و غیره پشتیبانی می کند.
برای اطلاعات بیشتر از صفحات راهنمای ip6tables استفاده کنید.
نمونه ای از قوانین iptables برای امنیت شبکه
ایجاد قوانین فایروال مناسب به طور عمده بستگی دارد روی سرویس در حال اجرا روی یک سیستم و پورت های در حال استفاده با این حال، در اینجا چند قانون اساسی پیکربندی شبکه وجود دارد که می توانید برای ایمن سازی سیستم خود از آنها استفاده کنید:
1: ترافیک رابط Loopback را مجاز کنید و تمام حلقههای بازگشتی که از سایر رابطها میآیند را رد کنید
iptables -آ ورودی ! -من اینجا -s 127.0.0.0 -j رد کنید (جدول های ip6 نیز قابل اجرا هستند)
2: تمام درخواست های پینگ را رد کنید
3: اتصالات SSH را مجاز کنید
اینها نمونه ای از دستورات هستند که می توانید از آنها برای ایمن سازی سیستم خود استفاده کنید. با این حال، پیکربندی به شدت بستگی دارد روی چه چیزی یا چه کسی می خواهید به خدمات مختلف دسترسی داشته باشید.
احتیاط: اگر ترجیح میدهید IPv6 را به طور کامل غیرفعال کنید، مطمئن شوید که خط را از کامنت بردارید زیرا این کار باعث کند شدن بهروزرسانی میشود process:
به این دلیل که مدیر بسته APT به دلیل بهروزرسانی apt-get، دامنه آینهای را در IPv6 حل میکند.
چگونه قوانین iptables را مستقر کنیم؟
برای استقرار iptable های خود روی اوبونتو یا سایر سیستمهای مبتنی بر دبیان، با ایجاد دو فایل ip4 و ip6 برای آدرسهای IP مربوطه خود شروع میکنند.
در هر یک از فایلها، قوانینی را که میخواهید در فایلهای مربوطه اعمال کنید، اضافه کنید – قوانین IPv4 به فایل ip4 و قوانین IPv6 به فایل ip6.
بعد، ما نیاز داریم import قوانین با استفاده از دستور:
سپس، با استفاده از دستور می توانید بررسی کنید که آیا قوانین اعمال شده اند:
راهنمای سریع iptables-persistent
اوبونتو، و توزیعهای رایج مبتنی بر دبیان، دارای یک بسته پایدار برای iptables است که به شما امکان میدهد قوانین فایروال خود را به راحتی پس از راهاندازی مجدد اعمال کنید. این بسته فایل هایی را ارائه می دهد که می توانید از آنها برای تنظیم قوانین برای IPv4 یا IPv6 استفاده کنید و می توانند به طور خودکار در هنگام بوت اعمال شوند.
همچنین می توانید از قوانین فایروال با استفاده از UFW یا GUFW استفاده کنید. برای یادگیری روش استفاده از UFW، آموزش زیر را در نظر بگیرید.
چگونه iptables-persistent را نصب کنیم؟
مطمئن شوید که iptables-persistent را نصب کرده اید روی سیستم شما از dpkg برای بررسی اینکه آیا بسته را نصب کرده اید استفاده کنید.
اگر نه، از دستور زیر استفاده کنید:
دو بار از شما خواسته می شود که هر دو قوانین IPv4 و IPv6 فعلی خود را ذخیره کنید. کلیک روی بله برای ذخیره هر دو قانون.
کلیک روی بله برای ذخیره IPv6.
همانطور که در تصویر زیر نشان داده شده است، پس از اتمام نصب، بررسی کنید که زیر شاخه iptables را دارید.
اکنون می توانید از rules.v4 و rules.v6 برای اضافه کردن قوانین iptables استفاده کنید، و آنها به طور خودکار توسط iptables-persistent اعمال می شوند. فایل ها فایل های متنی ساده ای هستند که به راحتی می توانید با استفاده از هر ویرایشگر متنی دلخواه خود آنها را ویرایش کنید.
نتیجه
در این آموزش به اصول اولیه iptables پرداخته ایم. شروع کار با iptables، دستورات اولیه، جداول iptables پیش فرض و پارامترها.
با توجه به آنچه آموخته اید، باید در موقعیتی باشید که از iptables برای ایجاد قوانین فایروال استفاده کنید که به ایمن سازی سیستم شما کمک می کند.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1403-01-03 13:54:05