تنظیمات firewall در centos (دستورات مهم و کاربردی)

تنظیمات firewall در centos (دستورات مهم و کاربردی)
تنظیمات firewall در centos (دستورات مهم و کاربردی)
آخرین بروزرسانی: ۱۹ آذر ۱۴۰۴

در سیستم‌عامل CentOS 6، یکی از مهم‌ترین بخش‌های امنیت شبکه، تنظیم و مدیریت فایروال (Firewall) است. فایروال به عنوان یک سد امنیتی بین شبکه داخلی و اینترنت عمل کرده و وظیفه کنترل و فیلتر کردن ترافیک ورودی و خروجی را بر عهده دارد.

در CentOS 6، از ابزار iptables برای پیکربندی قوانین فایروال استفاده می‌شود که با تعریف مجموعه‌ای از ruleها، امکان کنترل دقیق بر بسته‌های داده فراهم می‌گردد.

آشنایی با نحوه تنظیم و مدیریت iptables برای ایمن‌سازی سرور ضروری است و نقش مهمی در حفظ عملکرد پایدار و امنیت اطلاعات در محیط‌های شبکه‌ای دارد. از این رو در ادامه آموزش فایروال centos را ارائه می‌دهیم.

فایروال سنتوس چیست و چگونه کار می_کند؟

فایروال سنتوس چیست و چگونه کار می‌کند؟

فایروال (Firewall) در CentOS یک ابزار امنیتی حیاتی است که وظیفه اصلی آن کنترل و فیلتر کردن ترافیک ورودی و خروجی شبکه می­باشد. در واقع، فایروال همانند یک محافظ بین سیستم و سایر شبکه‌ها مانند اینترنت قرار می‌گیرد تا از ورود داده‌ها و درخواست‌های غیرمجاز جلوگیری کند.

عملکرد فایروال بر پایه مجموعه‌ای از قواعد (Rules) و زنجیره‌ها (Chains) تنظیم می‌شود و هر بسته داده‌ای که به سیستم وارد یا از آن خارج می‌شود، بر اساس این قواعد بررسی می‌گردد.

فایروال در CentOS معمولا دارای سه زنجیره اصلی با نام‌های INPUT، OUTPUT و FORWARD است که هر کدام برای نوع خاصی از ترافیک به کار می‌روند. به کمک این ساختار، مدیر سیستم می‌تواند به ‌صورت دقیق مشخص کند چه نوع ارتباطاتی مجاز هستند و کدام باید فیلتر شوند.

ناحیه Zone فایروال چیست؟

در سیستم‌های مبتنی بر CentOS که از ابزار پیشرفته‌تر firewalld استفاده می‌کنند، ناحیه (Zone) یک مفهوم اساسی برای مدیریت سطح اعتماد (Trust Level) به ترافیک شبکه است.

ناحیه در واقع یک فضای منطقی می­باشد که مجموعه‌ای از قوانین فایروال را در خود جای می‌دهد و این قوانین به رابط‌های شبکه (Network Interfaces) یا محدوده‌های آدرس IP خاصی اختصاص داده می‌شوند. این امکان به شما اجازه می‌دهد تا با اختصاص دادن یک رابط به یک ناحیه خاص، قوانین امنیتی متفاوتی را برای هر کدام تعریف کنید.

مهم ترین کارکرد Zone چیست؟

اصلی‌ترین کارکرد Zone ساده‌سازی مدیریت امنیت است. به جای نوشتن قوانین پیچیده برای هر پورت و پروتکل، شما یک سطح اعتماد کلی تعریف می‌کنید (مثلا ناحیه trusted که همه چیز را می‌پذیرد یا ناحیه drop که همه چیز را رد می‌کند). firewalld بر اساس این ناحیه‌ها تصمیم می‌گیرد که ترافیک ورودی (Ingress) و خروجی (Egress) چگونه باید مدیریت شوند.

برای مثال، در یک سرور، کارت شبکه مربوط به اینترنت در ناحیه public قرار می‌گیرد که فقط سرویس‌های ضروری مانند SSH را می‌پذیرد، در حالی که کارت شبکه داخلی در ناحیه internal قرار می‌گیرد که ممکن است اجازه دسترسی به سرویس‌های بیشتری را بدهد. این ساختار مبتنی بر ناحیه، امکان ایجاد تنظیمات پیچیده و قابل تفکیک امنیتی را به سادگی فراهم می‌کند.

تنظیمات firewall در centos

در ادامه قصد داریم شما را با دستورات لازم برای تنظیمات فایروال در centos آشنا کنیم.

دستور مشاهده وضعیت iptables

برای مشاهده رول‌ها و قوانینی که در حال حاضر در جدول‌های فعال iptables وجود دارند، از دستور ساده و بنیادی iptables -L استفاده می‌شود. این دستور، تمام زنجیره‌ها (Chains) و رول‌های تعریف ‌شده در هر زنجیره را فهرست می‌کند که نمای کلی از سیاست امنیتی فعلی اعمال‌شده روی سیستم را به شما نشان می‌دهد.

مشاهده قوانین فعال

برای مشاهده جزئیات بیشتر مانند تعداد بسته‌هایی که با هر قانون تطابق داشته‌اند، می‌توان از گزینه‌های تکمیلی مانند -v (Verbose) و -n (Numeric) به صورت iptables -nvL بهره برد تا خروجی کامل‌تری به دست آید.

آموزش باز و بسته کردن پورت در CentOS

در این بخش از تنظیمات فایروال در سنت او اس، می‌خواهیم به باز و بسته کردن یک پورت خاص در لینوکس بپردازیم.

دستور باز کردن پورت

برای باز کردن پورت در centos مانند پورت 80 (HTTP) به صورت دائمی در ناحیه پیش‌فرض (معمولا public)، باید سرویس مربوطه یا شماره پورت را به Zone فعال اضافه نمایید. اگر از نام سرویس استفاده می‌کنید، دستور به شکل زیر است:

sudo firewall-cmd --zone=public --add-service=http --permanent

sudo firewall-cmd --reload

اگر بخواهید پورت را مستقیما بر اساس شماره باز کنید (مثلا پورت 80 برای TCP)، دستور به این صورت خواهد بود:

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent

sudo firewall-cmd --reload

استفاده از --permanent تغییرات را ذخیره می‌کند و firewall-cmd --reload اطمینان می‌دهد که قوانین بلافاصله اعمال شوند.

دستور بستن پورت‌ها

برای بستن یک پورت یا سرویسی که قبلا باز شده است، از دستور remove-service یا remove-port استفاده می‌شود. به عنوان مثال برای حذف دسترسی به پورت 80/tcp باید از دستور زیر استفاده کنید:

sudo firewall-cmd --zone=public --remove-port=80/tcp --permanent

sudo firewall-cmd --reload

این عملیات به طور موثری ترافیک ورودی به پورت را در آن Zone مسدود می‌کند، مگر اینکه قوانین دیگری (مانند قوانین مربوط به trusted Zone) بر آن غلبه کنند.

اجازه دسترسی به محدوده IP

برای محدود کردن دسترسی به یک سرویس یا پورت خاص تنها از یک محدوده آدرس IP مشخص، باید از مفهوم Source در firewalld استفاده نمایید. به جای باز کردن کامل پورت برای همه، شما یک قانون جدید با محدودیت منبع (Source) تعریف می‌کنید. به عنوان مثال، برای اجازه دسترسی به پورت 22 (SSH) فقط از محدوده شبکه 192.168.1.0/24:

sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol=tcp port=22 accept' --permanent

sudo firewall-cmd --reload

این قانون پیشرفته (Rich Rule) اطمینان می‌دهد که تنها ترافیک SSH از محدوده IP مشخص شده مجاز است. در حالی که سایر آدرس‌ها توسط قوانین پیش‌فرض Zone مسدود می‌شوند.

مدیریت Rule ها در iptables

مدیریت قوانین در ابزار سنتی iptables مستلزم درک دقیق زنجیره‌ها (Chains) و ترتیب اجرای رول‌ها است. برخلاف firewalld که یک لایه مدیریتی سطح بالاتر ارائه می‌دهد، کار با iptables مستقیما روی هسته فایروال انجام می‌شود و دقت در دستورات برای جلوگیری از قطع شدن اتصال بسیار حیاتی است.

افزودن Rule جدید

برای افزودن یک قانون جدید به جدول و زنجیره مورد نظر در iptables، از دستور داخل کادر استفاده می‌شود.

iptables -A (Append) یا iptables -I (Insert)

دستور -A قانون را به انتهای زنجیره اضافه می‌کند، در حالی که -I امکان درج قانون در یک موقعیت مشخص (مثلا ردیف اول) را فراهم می‌سازد که اغلب برای قوانین امنیتی حیاتی توصیه می‌شود تا قبل از اجرای رول‌های عمومی‌تر بررسی شوند. برای مثال، افزودن یک قانون برای پذیرش ترافیک از یک آدرس IP خاص به زنجیره INPUT به شکل زیر خواهد بود:

iptables -I INPUT -s 192.168.1.100 -j ACCEPT.

حذف Rule

حذف قوانین در iptables می‌تواند به دو روش اصلی با ارجاع به شماره خط یا با استفاده از خود قانون اصلی انجام شود. روش ارجاع به شماره خط با دستور زیر لیست رول‌ها را به همراه شماره نشان می‌دهد:

iptables -L --line-numbers

سپس می‌توانید با استفاده از دستور زیر  قانون مورد نظر را حذف کنید. به عنوان مثال، حذف قانون در سطر پنجم زنجیره INPUT به صورت iptables -D INPUT 5 انجام می‌شود.

iptables -D [CHAIN] [LINE_NUMBER]

ویرایش قوانین موجود

به طور مستقیم، دستور مشخصی برای “ویرایش” یک رول در iptables وجود ندارد در عوض، ویرایش قوانین با ترکیب عملیات حذف و افزودن شبیه‌سازی می‌شود.

این کار با استفاده از دستور iptables -R (Replace) انجام می‌پذیرد که یک قانون موجود در یک خط مشخص را با قانون جدید جایگزین می‌کند. برای مثال، اگر می‌خواهید قانون سطر سوم زنجیره FORWARD را به طور کامل با یک قانون جدید تغییر دهید، از دستور زیر استفاده کنید:

iptables -R FORWARD 3 -p tcp --dport 443 -j ACCEPT

ذخیره و فعال‌سازی دائمی تنظیمات فایروال

ذخیره‌ سازی و فعال ‌سازی دائمی تنظیمات فایروال در centos، یکی از مراحل حیاتی پس از اعمال هرگونه تغییر در قوانین است، زیرا دستورات مستقیم iptables یا firewalld تنها روی حافظه فعال (RAM) اعمال می‌شوند و با ریبوت شدن سیستم از بین می‌روند. برای اطمینان از ماندگاری تنظیمات امنیتی در بلندمدت، نیاز به استفاده از ابزارهای خاصی است که این قوانین را در فایل‌های پیکربندی سیستمی ذخیره کنند.

ذخیره قوانین iptables

برای ذخیره قوانین فعال شده در iptables به صورت دائمی، روش کار بسته به توزیع لینوکس و ابزارهای نصب شده متفاوت است. در بسیاری از توزیع‌های قدیمی‌تر یا سفارشی، از بسته iptables-persistent استفاده می‌شد که با اجرای دستور زیر تنظیمات جاری را در مسیر مشخصی ذخیره می‌کند که هنگام بوت مجدد، توسط سرویس مربوطه بارگذاری می‌شوند:

sudo service netfilter-persistent save

یا در توزیع‌های جدیدتر، استفاده از ابزارهای سیستمی مانند:

iptables-save > /etc/sysconfig/iptables

فعال‌سازی پس از ریبوت

فعال‌سازی مجدد قوانین پس از ریبوت مستقیما به نحوه ذخیره‌سازی آن‌ها بستگی دارد، اگر از ابزارهای مدرن مانند firewalld استفاده شده باشد، به دلیل وجود گزینه --permanent، قوانین به طور خودکار در سرویس فعال‌سازی مجدد می‌شوند و نیازی به اقدام دستی نیست.

در سیستم‌هایی که از فایل‌های خام ذخیره‌سازی شده مانند /etc/sysconfig/iptables استفاده می‌کنند، باید اطمینان حاصل شود که سرویس مربوطه (مانند iptables یا netfilter-persistent) در سیستم systemd فعال و در حال اجرا باشد تا در ابتدای هر بوت، محتوای فایل پیکربندی را بخواند و قوانین را اعمال کند.

بلاک کردن آی‌پی و جلوگیری از حملات در سنت او اس

امنیت سرور در برابر تهدیدات خارجی به ویژه حملات Brute-Force و اسکن پورت‌ها یا حملات DDoS، نیازمند مدیریت دقیق دسترسی‌ها از طریق فایروال است. در محیط CentOS، استفاده از firewalld به عنوان واسطی بر nftables یا گاهی استفاده مستقیم از iptables، ابزارهای کارآمدی برای مقابله با آدرس‌های مخرب فراهم می‌کند.

بلاک IP خاص

برای مسدود کردن یک آدرس IP خاص به صورت دائمی در firewalld، بهترین روش استفاده از ویژگی Rich Rules است که امکان اعمال قوانین دقیق‌تر را فراهم می‌آورد. شما می‌توانید یک قانون تعریف کنید که هر ترافیک ورودی از آن آدرس خاص را به طور صریح رد (REJECT یا DROP) نماید که این قانون باید با استفاده از دستور تعریف شود:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="X.X.X.X" drop'

و پس از آن سرویس فایروال با دستور داخل کادر به‌روزرسانی شود:

firewall-cmd --reload

بلاک رنج IP

مسدود کردن یک رنج کامل از آدرس‌های IP (مثلا کل یک زیرشبکه) برای دفاع در برابر حملات هماهنگ با استفاده از فرمت CIDR در firewalld امکان‌پذیر است.

مشابه بلاک کردن یک IP تکی، شما می‌توانید آدرس مبدا را با استفاده از فرمت /mask مشخص کنید، به طوری که کد زیر تمام ترافیک ورودی از کل رنج 10.0.0.0 را مسدود کند و این تغییر نیز نیازمند اجرای مجدد سرویس فایروال است:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" drop'

 جلوگیری از حملات SSH

برای محافظت از سرویس SSH (پورت 22) در برابر حملات جستجوی نام کاربری و رمز عبور (Brute-Force)، بهترین راهکار استفاده از قابلیت Zone Limiting یا Rich Rules در firewalld است.

به جای مسدود کردن کامل یک IP، می‌توان یک محدودیت نرخ (Rate Limiting) تعریف کرد که اگر یک منبع خاص در یک بازه زمانی مشخص، بیش از حد مجاز تلاش برای اتصال انجام داد، به طور خودکار توسط فایروال مسدود شود که این کار معمولا با استفاده از fail2ban که با firewalld یکپارچه می‌شود یا نوشتن یک Rich Rule پیچیده‌تر انجام می‌پذیرد.

جلوگیری از حملات Brute Force

جلوگیری از حملات Brute Force که به صورت خودکار با حدس زدن رمز عبور انجام می‌شود، معمولا با استفاده از ابزاری مانند fail2ban (که اغلب همراه با firewalld یا iptables کار می‌کند) محقق می‌شود.

این ابزار فایل‌های لاگ سرویس SSH (معمولا /var/log/secure) را نظارت می‌کند و اگر یک آدرس IP در یک بازه زمانی کوتاه به تعداد مشخصی بار (مثلا 5 بار) در ورود ناموفق ثبت شود، آن IP را به طور موقت یا دائم به لیست سیاه فایروال (مثلا با افزودن یک قانون DROP به iptables یا firewalld) اضافه می‌کند.

ثبت گزارش لاگ‌ها

ثبت گزارش‌های دقیق (Logging) از فعالیت‌های فایروال و تلاش‌های ورود به SSH، جزء اساسی فرآیند ممیزی امنیتی و تحلیل پس از وقوع حادثه (Forensics) است؛ تمام تلاش‌های موفق و ناموفق برای اتصال SSH و همچنین هر قانونی که توسط فایروال اعمال یا رد می‌شود، باید در فایل‌های سیستمی مربوطه (مانند /var/log/secure برای SSH و /var/log/firewalld یا لاگ‌های مرتبط با iptables) ثبت شوند تا در صورت بروز نفوذ، بتوان منشأ، زمان و روش حمله را ردیابی کرد.

تنظیمات firewall در سنت او اس

اهمیت پیکربندی صحیح Firewall در CentOS 6

تنظیمات فایروال در CentOS نقش اساسی در ایمن‌سازی سرور و مدیریت دقیق ترافیک ورودی و خروجی دارد. با استفاده از ابزارهایی مانند firewalld و مفاهیمی همچون زون‌ها، سرویس‌ها و قوانین سفارشی، مدیر سرور می‌تواند کنترل کاملی بر مسیرهای ارتباطی ایجاد کند و تنها دسترسی‌های ضروری را مجاز نگه دارد.

رعایت اصولی همچون بررسی دوره‌ای قوانین، ثبت و مانیتورینگ ترافیک و محدود کردن پورت‌های حساس، باعث می‌شود زیرساخت در برابر حملات متداول مقاوم‌تر شود و عملکردی پایدار و قابل‌اعتماد برای سرویس‌های حیاتی ارائه دهد.

سوالات متداول

چه نوع حملاتی را فایروال سنتوس می‌تواند متوقف کند؟

فایروال سنتوس قادر است حملات مختلفی از جمله حملات DDoS (توزیع شده از نوع انکار سرویس)، حملات اسکن پورت، نفوذ به سیستم‌ها، و حملات تلاش برای نفوذ به شبکه را متوقف کند.

چگونه فایروال سنتوس تنظیم می‌شود؟

تنظیم فایروال سنتوس شامل تعیین قوانین و قواعد مشخصی است که ترافیک شبکه بر اساس آنها تحت نظر قرار می‌گیرد. این قوانین می‌توانند شامل محدودیت دسترسی به پورت‌ها، فیلترینگ آدرس IP، مسدود کردن ترافیک مشکوک و موارد مشابه باشند. تنظیمات بسته به نیازها و محیط شبکه تغییر می‌کنند.

چگونه فایروال را در CentOS 6 پیکربندی کنیم؟

برای پیکربندی فایروال در CentOS 6، می‌توانید از بسته system-config-firewall-tui استفاده کنید، سپس گزینه Customize را انتخاب کرده و  خدمات مورد نیاز را علامت بزنید و  پورت‌های جدید اضافه کنید، در آخر برای ثبت این تغییرات گزینه ok را بزنید.

چه تفاوتی بین فایروال سنتوس و فایروال سخت ‌افزاری (هاردواری) وجود دارد؟

فایروال سنتوس نرم‌ افزاری است که روی سخت ‌افزار‌های عمومی نصب می‌شود و به عنوان یک لایه نرم‌افزاری در میان میزبان و شبکه قرار می‌گیرد. از طرف دیگر فایروال سخت ‌افزاری به صورت یک دستگاه جداگانه به عنوان یک واحد فیزیکی اجرا می‌شود و به طور مستقل از سیستم‌ها کار می‌کند.

چطور می‌توانیم وضعیت فایروال را در CentOS بررسی کنیم؟

با دستور systemctl status firewalld یا firewall-cmd --state می‌توانید مطمئن شوید فایروال فعال است یا خیر

چگونه یک پورت خاص را در CentOS باز کنیم؟

برای باز کردن یک پورت کافی است دستور firewall-cmd --permanent --add-port=PORT/tcp را اجرا کرده و سپس firewall-cmd --reload بزنید.

تفاوت zoneهای مختلف در firewalld چیست؟

هر Zone مجموعه‌ای از قوانین امنیتی است. به‌ عنوان مثال، zone public امن‌تر است و فقط ترافیک ضروری را اجازه می‌دهد، در حالی که trusted تقریبا همه ترافیک را قبول می‌کند.

چطور یک سرویس مثل HTTP یا SSH را در فایروال فعال کنیم؟

می‌توانید از دستور firewall-cmd --permanent --add-service=http یا --add-service=ssh استفاده کرده و سپس reload کنید.

اگر یک قانون اشتباه اعمال کردیم، چطور آن را حذف کنیم؟

برای حذف قوانین از دستوراتی مثل --remove-port یا --remove-service استفاده کرده و سپس firewall-cmd --reload را اجرا کنید.

چطور لیست قوانین فعال روی فایروال را مشاهده کنیم؟

با دستور firewall-cmd --list-all می‌توانید همه پورت‌ها، سرویس‌ها و تنظیمات فعال در zone فعلی را ببینید.

author
فرزانه یوسفی- نویسنده

من فرزانه یوسفی هستم؛ نویسنده و تولیدکننده محتوای وب. علاقه زیادی به تحقیق و نوشتن دارم و تلاش می‌کنم مطالب کاربردی و به‌روز ارائه کنم تا مطالعه برای خوانندگان لذت‌بخش‌تر و مفیدتر باشد.

13836
A
A