تمام سیستم عامل های مبتنی بر هسته لینوکس دارای یک فایروال داخلی است که ترافیک ورودی و خروجی را براساس قوانین تعیین شده توسط کاربر یا پلتفرم نظارت و فیلتر می کند. در توزیع CentOS 7 به طور پیش فرض، این تابع با استفاده از ابزار iptables انجام می شود، در ارتباط با فایروال ساخته شده در netfilter. گاهی اوقات یک مدیر سیستم یا مدیر شبکه باید عملیات این مولفه را با نوشتن قوانین مناسب سفارشی کند. در مقاله امروز ما می خواهیم درباره اصول اولیه پیکربندی iptables در سیستم عامل فوق صحبت کنیم.
محتوا
ابزار خود را بلافاصله پس از تکمیل نصب CentOS 7 در دسترس است، اما علاوه بر این شما نیاز به نصب برخی از خدمات، که ما در مورد بعد از آن بحث خواهیم کرد. در این پلت فرم، یک ابزار ساخته شده دیگر وجود دارد که عملکرد فایروال نامیده می شود FirewallD. برای جلوگیری از تعارضات در طول کار بیشتر، توصیه می شود این جزء را غیرفعال کنید. برای دستورالعمل های دقیق در این موضوع، مطالب دیگر ما را در لینک زیر مشاهده کنید.
جزئیات بیشتر: فایروال را در CentOS 7 غیرفعال کنید
همانطور که می دانید، سیستم می تواند IPv4 و IPv6 را استفاده کند. امروز ما بر روی مثال IPv4 تمرکز میکنیم، اما اگر میخواهید پروتکل دیگری را پیکربندی کنید، باید از ip6tables به جای دستور iptables در کنسول استفاده کنید.
اول از همه، اضافه کردن اجزای اضافی از ابزار مورد نظر امروز به سیستم. آنها در تنظیم قوانین و پارامترهای دیگر کمک خواهند کرد. بارگیری از مخزن رسمی انجام می شود، بنابراین زمان زیادی را صرف نمی کند.
sudo yum install iptables-services
مسئول نصب sudo yum install iptables-services
. آن را وارد کنید و Enter را فشار دهید. sudo iptables --version
. در حال حاضر سیستم عامل به طور کامل برای پیکربندی بیشتر فایروال از طریق ابزار iptables آماده است. ما پیشنهاد می کنیم با پیکربندی اقلام آشنا شوید، با شروع مدیریت خدمات.
مدیریت حالت iptables عملیات مورد نیاز است در مواردی که شما نیاز به بررسی اثر قوانین خاص و یا به سادگی مجددا مجدد جزء. این کار با استفاده از دستورات ساخته شده انجام می شود.
sudo service iptables stop
و دکمه Enter را فشار دهید تا خدمات را متوقف کند. sudo service iptables start
. چنین راه اندازی مجدد، شروع یا متوقف کردن ابزار در هر زمانی در دسترس است، به یاد داشته باشید که تنها زمانی که تقاضا است، مقدار بازگشتی را نشان می دهد.
همانطور که قبلا ذکر شد، فایروال توسط دستی یا به طور خودکار قوانین را مدیریت می کند. به عنوان مثال، برخی از برنامه های اضافی ممکن است با تغییر برخی از خط مشی ها به ابزار دسترسی پیدا کنند. با این حال، اکثر این اقدامات هنوز به صورت دستی انجام می شود. لیستی از تمام قوانین جاری در دستور sudo iptables -L
در دسترس است.
در نتیجه نمایش داده می شود اطلاعات در سه زنجیره: "INPUT" ، "خروجی" و "FORWARD" - به ترتیب، ورودی، خروجی و رو به جلو.
با تایپ sudo iptables -S
می توانید وضعیت تمام زنجیرها را تعیین کنید.
اگر قواعدی را که می بینید به شما تعلق ندارند، آنها به سادگی حذف می شوند. کل لیست پاک شده است مانند: sudo iptables -F
. پس از فعال سازی، قوانین کاملا برای همه سه مدار حذف خواهند شد.
هنگامی که لازم است فقط از یک زنجیره ای سیاست ها را تحت تاثیر قرار دهیم، یک استدلال اضافی به خط اضافه می شود:
sudo iptables -F INPUT
sudo iptables -F OUTPUT
sudo iptables -F FORWARD
عدم وجود کلیه قوانین به این معنی است که در حال حاضر هیچ تنظیمات فیلتر کردن ترافیک به هیچ یک از طرفین اعمال نمی شود. بعد، مدیر سیستم قبلا پارامترهای جدید را با استفاده از همان کنسول، فرمان و استدلال های مختلف تنظیم می کند.
هر مدار به طور جداگانه برای دریافت یا مسدود کردن ترافیک پیکربندی شده است. با تنظیم یک مقدار خاص، می توانید اطمینان حاصل کنید که، برای مثال، تمام ترافیک ورودی مسدود خواهد شد. برای این کار، دستور باید sudo iptables --policy INPUT DROP
، در صورتی که INPUT نام مدار است، و DROP مقدار بازنشانی است.
دقیقا برای پارامترهای دیگر برای مدارهای دیگر تنظیم شده است، مثلا sudo iptables --policy OUTPUT DROP
. اگر لازم است برای تعیین مقدار برای دریافت ترافیک، DROP sudo iptables --policy INPUT ACCEPT
تغییر یافته است و sudo iptables --policy INPUT ACCEPT
.
همانطور که می دانید، تمام برنامه ها و پروتکل های شبکه از طریق یک پورت خاص کار می کنند. با مسدود کردن یا اجازه دادن به آدرس های خاص، می توانید دسترسی به تمام اهداف شبکه را کنترل کنید. بیایید با استفاده از مثال 80، حمل و نقل بندر را تحلیل کنیم. در "ترمینال" کافی است که دستور sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
را وارد کنید sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
، where -A علاوه بر یک قانون جدید، INPUT یک نشان مدار است، -P یک تعریف پروتکل است، در این مورد TCP و -portport port destination است.
دستور دقیق مشابه برای پورت 22 ، که توسط سرویس SSH استفاده می شود، به کار می رود: sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
.
برای متوقف کردن پورت مشخص شده، یک رشته از دقیقا همان نوع استفاده می شود، فقط در پایان ACCEPT به DROP تغییر می کند. نتیجه، به عنوان مثال، sudo iptables -A INPUT -p tcp --dport 2450 -j DROP
.
همه این قوانین در فایل پیکربندی ذخیره می شوند و شما می توانید آنها را در هر زمان مشاهده کنید. به خاطر داشته باشید، این کار از طریق sudo iptables -L
. اگر آدرس IP شبکه باید با پورت حل شود، خط کمی اصلاح می شود - پس از TPC ، -s و آدرس خود اضافه می شوند. sudo iptables -A INPUT -p tcp -s 12.12.12.12/32 --dport 22 -j ACCEPT
، جایی که 12.12.12.12/32 آدرس IP مورد نیاز است.
مسدود کردن بر اساس یک اصل اتفاق می افتد، در پایان مقدار ACCEPT به DROP تغییر می کند . سپس معلوم می شود، برای مثال sudo iptables -A INPUT -p tcp -s 12.12.12.0/24 --dport 22 -j DROP
.
ICMP (پروتکل کنترل پیام اینترنت) یک پروتکل است که بخشی از TCP / IP است و برای ارسال پیام های خطا و شرایط اضطراری هنگام کار با ترافیک استفاده می شود. به عنوان مثال، زمانی که سرور درخواست شده در دسترس نیست، این ابزار عملکردهای سرویس را انجام می دهد. ابزار iptables به شما این امکان را می دهد که از طریق یک فایروال آن را مسدود کنید و می توانید این کار را با دستور sudo iptables -A OUTPUT -p icmp --icmp-type 8 -j DROP
. این درخواست ها از سوی شما و سرور شما را مسدود خواهد کرد.
درخواست های ورودی کمی متفاوت است مسدود شده است. سپس شما باید sudo iptables -I INPUT -p icmp --icmp-type 8 -j DROP
را وارد کنید sudo iptables -I INPUT -p icmp --icmp-type 8 -j DROP
. پس از فعال شدن این قوانین، سرور به درخواست های ping پاسخ نخواهد داد.
گاهی اوقات سرورها به حملات DDoS یا دیگر اقدامات غیرمجاز توسط مزاحمان مربوط می شوند. پیکربندی مناسب فایروال به شما این امکان را می دهد که از این نوع هک ها محافظت کنید. برای شروع، توصیه می کنیم تنظیمات زیر را انجام دهید:
iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/minute --limit-burst 100 -j ACCEPT
، where --limit 20 / minute محدودیت فرکانس نتایج مثبت است. شما می توانید واحد اندازه گیری خود را به عنوان مثال، /second, /minute, /hour, /day
. - Limit -burst number - محدودیت تعداد بسته هایی که باید منتقل شوند. تمام مقادیر به صورت جداگانه بر اساس تنظیمات مدیر تنظیم می شوند. sudo iptables -N block-scan
وارد کنید. sudo iptables -A block-scan -p tcp —tcp-flags SYN,ACK,FIN,RST -m limit —limit 1/s -j RETURN
مشخص کنید sudo iptables -A block-scan -p tcp —tcp-flags SYN,ACK,FIN,RST -m limit —limit 1/s -j RETURN
. sudo iptables -A block-scan -j DROP
. عبارت block-scan در این موارد نام مدار مورد استفاده است. تنظیمات نمایش داده شده امروز تنها مبنای کار در ابزار مدیریت فایروال هستند. در اسناد رسمی این ابزار، شما توضیحی از تمام استدلال ها و گزینه های موجود را خواهید یافت و قادر خواهید بود فایروال را به طور خاص برای درخواست های خود پیکربندی کنید. در بالا، قوانین ایمنی استاندارد مورد استفاده قرار می گیرند که اغلب مورد استفاده قرار می گیرند و در اغلب موارد مورد نیاز است.