فایروال PF به زبان ساده

مقدمه 

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

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

امیدوارم که این مطالب بتواند به شما در جهت راه اندازی این سیستم کمکی کرده باشد.

برای درک بهتری از سیستم عامل OpenBSD به مقاله موجود در همین سایت مراجعه کنید .

اولین قدم: فعال کردن pf

قبل از شروع به هر کاری با pf باید مطمن شوید که pf وجود دارد و آیا راه اندازی شده است یا نه که البته به سیستم عاملی که شما از خانواده BSD انتخاب کرده اید برای راه اندازی و به کارگیری pf بسیار مرتبط است. در ادامه راه اندازی و فعال سازی pf  در سه سیستم عامل OpenBSD ،NetBSD و FreeBSD مورد بررسی قرار می گیرد.

فرمان اصلی این برنامه به نام pfctl نیاز به سطح دسترسی کاربر اصلی یا همان root دارد، در ادامه این سری از مطالب برای مشخص کردن این سطح از دسترسی از فرمان sudo استفاده می شود. اگر شما با این فرمان کار نکرده اید باید از اینجا شروع کنید. این برنامه در OpenBSD به صورت پیش فرض قرار گرفته است ولی در سایر سیستم عامل ها نیاز به نصب دارد که به مقالات نصب برنامه برای دریافت اطلاعات بیشتر مراجعه کنید.

فعال سازی و غیر فعال کردن

  •  برای غیرفعال کردن برنامه pf کافی است که فرمان pfctl را با سوئیچ  d اجرا کنید و بعد از اجرا این فرمان همه ترافیک ها می توانند جابجا شوند.
  •  برای فعال کردن pf باز هم از فرمان pfctl استفاده می شود و اگر قصد دارید رول های دیگری که در فایل دیگری وجود دارد را بارگذاری کنید باید این فرمان را به صورت زیر اجرا کنید:

sudo pfctl -ef /etc/pf.conf$

در این فرمان سوئیچ e برنامه را فعال کردن و با استفاده از سوئیچ f می توانید مسیر فایل مورد نظر را مشخص کنید.

راه اندازی pf در OpenBSD:

 تا قبل از ورژن ۴٫۶ از این سیستم عامل، شما نیازی به فعال کردن این فایروال نداشتید و به صورت خودکار با یک پیکربندی ساده pf راه اندازی شده است. اگر شما در زمان راه اندازی شدن این ورژن ها  دقت کرده باشید پیغام های راه اندازی نمایش داده می شود. در صورت عدم مشاهده پیغام ها در زمان راه اندازی از فرمان های زیر برای چک کردن راه اندازی pf استفاده کنید:


sudo pfctl -e$

حال اگر pf راه اندازی شده باشد پیغام زیر را مشاهده می کنید:


pfctl: pf already enable



اگر پیغام بالا مشاهد نشد و پیغام زیر نمایش داده شد نشان می دهد که برنامه راه اندازی نشده است و با فرمانی که شما اجرا کردید راه اندازی شده:

pf enable

برای این منظور که با راه اندازی سیستم شما pf هم به صورت خودکار توسط سیستم عامل راه اندازی شود باید در فایل پیکربندی اصلی این سیستم عامل به نام etc/rc.conf.local خط زیر را اضافه کنید:

pf= YES    #enable PF



در فایل پیش فرض پیکربندی pf مواردی در نظر گرفته شده است که البته شاید نباید در این بخش مورد بررسی قرار گیرد ولی برای آشنایی شما دوستان لازم است و به دلیل این که این بخش فقط در سیستم عامل OpenBSD در نظر گرفته شده، در این بخش بیان می شود.

در تمام سیستم عامل ها کارت شبکه ای وجود دارد به نام loopback که از آن در بعضی از موارد برای تست کردن صحت عملکرد TCP/IP برروی سیستم عامل استفاده می شود و در بعضی از موارد هم برنامه های خاص هم از آن استفاده می کنند، این کارت شبکه مجازی بوده و ترافیک آن به دنیای بیرون از شبکه شما ارسال نمی شود و از داخل شبکه ها به آن دسترسی وجود ندارد. pf همه ترافیک هایی را که از کارت های شبکه سیستم شما ارسال و دریافت می شود را مورد بررسی قرار می دهد. ترافیک کارت شبکه loopback هم از این قاعده مثتسنی نیست. برای رهاسازی سیستم از بار اضافی در خط اول با استفاده از عبارت set skip on lo، کارت شبکه loopback از بررسی خارج می شود.

در خط دیگری به صورت پیش فرض pf از دریافت و ارسال ترافیک هایی که مربوط به برنامه های x11  می شود جلوگیری می کند. اگر ارتباط گرافیکی از راه دور را در نظر دارید این بخش را غیر فعال کنید.

نکته:  برای غیر فعال کردن خطوطی که در این فایل به آنها نیازی ندارید باید علامت # را به اول آن خط اضافه کنید. این قاعده کلی همه فایل های پیکریندی سیستم عامل های یونیکسی و لینوکسی است. به اصطلاح خطوطی که با علامت # شروع می شوند توضیحات اضافی هستند و در بعضی از موارد خطوط پیشنهادی از طرف تیم ارائه دهنده سرویس هستند که فقط کافی است شما آن علامت را پاک کنید و دوباره فایل پیکربندی را بارگذاری کنید.

در بعضی از موارد هم شما قصد دارید که فایلی غیر از فایل اصلی در زمان راه اندازی سیستم بارگذاری شود یعنی فایل پیش فرض etc/pf.conf بارگذاری نشود. برای انجام دادن این عمل کافی است که در فایل rc.local خط pf_rules را اضافه کنید و مسیر فایل جدید را بعد از علامت = مشخص کنید.

در برخی از موارد زمانی که شما فایل پیکربندی اشتباهی را بارگذاری کنید ساختار rc برای شما رول هایی را بار گذاری می کند که این امکان را به شما می دهد تا بتوانید از طریق ssh از راه دور وارد سیستم شوید و خطاهای ایجاد شده را برطرف کنید، البته همیشه به این نکته هم توجه داشته باشید برای سیستم هایی که از راه دور با آنها در ارتباط هستید،  ترافیک پورت مخصوص ssh توانایی عبور کردن را داشته باشد.