مراحل توصیه شده برای راه‌اندازی سرورهای جدید FreeBSD 12.0

هنگام راه‌اندازی یک سرور جدید FreeBSD 12.0، چندین مرحله اختیاری وجود دارد که می‌توانید از آنها برای قرار دادن سرور خود در وضعیت مناسب‌تری استفاده کنید. در این راهنما، برخی از متداول‌ترین نمونه‌های انجام این کار شرح داده خواهد شد.

یک فایروال ساده و آسان برای پیکربندی پیشنهاد می‌کنیم که اکثر ترافیک‌ها را مسدود می‌کند. همچنین از اینکه منطقه زمانی سرور شما به طور دقیق موقعیت مکانی آن را منعکس کند، اطمینان حاصل خواهیم کرد. به منظور دقیق نگاه داشتن زمان سرور، یک نظرسنجی NTP ترتیب داده‌ایم. در نهایت، نحوه افزودن فضای اضافی swap به سرور شما را نشان خواهیم‌داد.

قبل از شروع این راهنما، شما باید وارد به سیستم شده و محیط shell را به روشی که می‌پسندید، پیکربندی کنید. نحوه‌ی انجام این کار در این راهنما توضیح داده شده‌است.

نحوه‌ی پیکربندی یک فایروال ساده IPFW

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

FreeBSD سه فایروال جداگانه را پشتیبانی و شامل می‌شود که pf، ipfw و ipfilter نامیده می‌شوند. در این راهنما از ipfw به عنوان فایروال استفاده خواهیم‌کرد. ipfw یک فایروال امن است که به عنوان بخشی از FreeBSD نوشته و نگهداری می‌شود.

پیکربندی فایروال اصلی

تقریبا تمام پیکربندی‌ها در فایل /etc/rc.conf انجام می‌شوند. برای تغییر پیکربندی از دستور sysrc استفاده می‌شود که به کاربران امکان تغییر پیکربندی به صورت امن را در /etc/rc.conf می‌دهد. در این فایل، تعدادی خط‌های مختلف برای فعال کردن و کنترل نحوه‌ی عملکرد فایروال ipfw  اضافه و برای این کار، با دستورهای اصلی شروع خواهید کرد. برای شروع، دستور زیر را وارد کنید:

$ sudo sysrc firewall_enable="YES"

هر بار که شما sysrc را برای تغییر پیکربندی خود استفاده می‌کنید، خروجی را با نشان دادن تغییرات به صورت زیر مشاهده خواهید کرد:

Output
firewall_enable: NO -> YES

همانطور که ممکن است انتظار داشته باشید، اولین دستور فایروال ipfw را فعال می‌کند، به صورت خودکار در boot آن را آغاز کرده و به آن اجازه‌ی شروع با دستورهای معمول service را می‌دهد.

حال عبارت زیر را تایپ کنید:

$ sudo sysrc firewall_quiet="YES"

این امر به ipfw دستور می‌دهد که هنگام انجام اقدامات، چیزی از استاندارد خارج نکند. این امر ممکن است مانند یک موضوع ترجیحی به نظر برسد، اما در واقع بر عملکرد فایروال تاثیر می‌گذارد.

این دو عامل برای اهمیت این گزینه با هم ترکیب شده‌اند. اولین مورد این است که، اسکریپت پیکربندی فایروال در محیط shell فعلی اجرا می‌شود، نه به عنوان یک وظیفه پس‌زمینه و دومین مورد این می‌باشد که وقتی دستور ipfw یک اسکریپت پیکربندی را بدون flag “quiet” می‌خواند، به نوبه خود هر خط را می‎‌خواند و از آن خارج می‌شود تا به حالت استاندارد برسد و هنگامی که از یک خط خارج می‌شود، بلافاصله عمل مرتبط را انجام می‌دهد.                            

اغلب فایل‌های پیکربندی فایروال، برای شروع تازه، قوانین فعلی در بالای اسکریپت را flush می‌کنند. اگر فایروال ipfw مانند اینجا بدون هیچ flag، quiet ظاهر شود، بلافاصله همه قوانین را flush کرده و به خط مشی پیش فرض خود باز می‌گردد، که معمولا تمام اتصالات را قطع می‌کند. اگر فایروال را بر روی SSH پیکربندی می‌کنید، این امر ممکن است اتصال را قطع کند، shell فعلی session را ببندد و شما را در خارج از سرور قفل کند. Flag quiet به فایروال این اجازه را می‌دهد که قوانین را به صورت مجموعه، به جای اجرای هر یک به طور جداگانه، پردازش کند.

پس از وارد کردن این دو خط، می‌توانید پیکربندی رفتار فایروال را شروع کنید. حال “workstation” را به عنوان فایروال پیکربندی انتخاب کنید.

$ sudo sysrc firewall_type="workstation"

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

 فایل /etc/rc.conf   همچنین به شما این امکان را می‌دهد که سرویس‌هایی که می‌خواهید مشتریان به آنها دسترسی داشته باشند را با استفاده از firewall_myservices   و firewall_allowservices   سفارشی کنید.

دستور زیر را برای باز کردن پورت‌هایی که باید بر روی سرور شما قابل دسترسی باشند، اجرا کنید. از جمله پورت 22  برای اتصال SSH و پورت 80 سرور وب رایج HTTP . اگر از SSL در سرور وب خود استفاده می‌کنید، حتما پورت 443   را اضافه کنید:

$ sudo sysrc firewall_myservices="22/tcp 80/tcp 443/tcp"

گزینه‌ی firewall_myservices   بر روی لیستی از سرویس‌ها یا پورت‌های TCP، که با فضاها از هم جدا شده‌اند و باید بر روی سرور شما قابل دسترسی باشند، تنظیم شده‌است

نکته: شما همچنین می‌توانید سرویس‌ها را با نام استفاده کنید. سرویس‌هایی که FreeBSD با نام می‌شناسد، در فایل /etc/services   ذکر شده‌است. به عنوان مثال، شما می‌توانید دستور قبلی را به صورت زیر تغییر دهید:

$ firewall_myservices="ssh http https"

این دستور همان نتایج را دربر دارد.

گزینه‌ی firewall_allowservices  مواردی را که باید برای دسترسی به خدمات ارائه شده، مجاز باشند را لیست می‌کند. بنابراین به شما این امکان را می‌دهد که دسترسی به سرویس‌های باز خود را (از firewall_myservices ) به ماشین‌ها یا شبکه‌های خاص محدود کنید. به عنوان مثال، اگر بخواهید یک ماشین  host محتوای وب برای یک شبکه‌ی شرکت داخلی باشد، این امر می‌تواند مفید واقع شود. کلمه کلید “any”  به این معنی است که هر IP می‌تواند به این سرویس‌ها دسترسی پیدا کرده و آنها را کاملا عمومی کند:

$ sudo sysrc firewall_allowservices="any"

گزینه‌ی firewall_logdeny  به ipfw  فرمان می‌دهد که تمام تلاش‌های رد شده اتصال را در فایلی قرار گرفته در /var/log/security  ثبت کند. برای آزمایش این مورد، دستور زیر را تایپ کنید:

$ sudo sysrc firewall_logdeny="YES"

برای چک کردن تغییراتی که در پیکربندی فایروال اعمال کرده‌اید، دستور زیر را اجرا کنید:

$ grep 'firewall' /etc/rc.conf

بخشی از فایل /etc/rc.conf  به صورت زیر خواهد بود:

Output
firewall_enable="YES"
firewall_quiet="YES"
firewall_type="workstation"
firewall_myservices="22 80 443"
firewall_allowservices="any"
firewall_logdeny="YES"

به یاد داشته باشید، گزینه‌ی firewall_myservices  را برای ارجاع به سرویس‌های مورد نظر خود برای استفاده‌ی کاربران، تنظیم کنید.

مجاز بودن اتصالات UDP (اختیاری)

پورت‌ها و خدمات لیست‌شده در گزینه‌ی firewall_myservices  در فایل /etc/rc.conf  امکان دسترسی به اتصالات TCP را فراهم می‌کنند.  اگر سرویس‌های دیگری در اختیار دارید که مایل به استفاده آنها از UDP هستید، باید فایل /etc/rc.firewall  را ویرایش کنید:

$ sudo vi /etc/rc.firewall

شما فایروال خود را برای استفاده فایروال نوع “workstation”  تنظیم کرده‌اید، پس به دنبال بخشی به شکل زیر باشید:

/etc/rc.firewall

. . .
	
[Ww][Oo][Rr][Kk][Ss][Tt][Aa][Tt][Ii][Oo][Nn])

. . .

بخشی در این بلوک وجود دارد که به پردازش مقادیر firewall_allowservices  و firewall_myservices  اختصاص داده شده‌است که شبیه به مورد زیر خواهد بود:

/etc/rc.firewall

for i in ${firewall_allowservices} ; do
  for j in ${firewall_myservices} ; do
    ${fwcmd} add pass tcp from $i to me $j
  done
done	

پس از این بخش، می‌توانید هر سرویس یا پورتی را که باید بسته‌های UDP را بپذیرد، با وارد کردن خطوط زیر، اضافه کنید:

${fwcmd} add pass udp from any to me port_num

در vi  دکمه i را فشار دهید تا به حالت INSERT بروید و محتوای خود را اضافه کنید، سپس با فشردن ESC فایل را ذخیره کرده و ببندید، :wq را تایپ کرده و ENTER  را فشار دهید. در مثال قبلی، می‌توانید کلید “any”  را برای مجاز شدن ارتباط برای تمام کاربران یا برای تغییر آن به یک محدوده مشخص شبکه یا آدرس IP رها کنید. Port_num  باید با شماره پورت یا نام سرویس مورد نظر برای دسترسی به UDP جایگزین شود. به عنوان مثال، اگر سرور DNS را اجرا می‌کنید ، ممکن است بخواهید یک خط شبیه به مورد زیر داشته باشید:

for i in ${firewall_allowservices} ; do
  for j in ${firewall_myservices} ; do
    ${fwcmd} add pass tcp from $i to me $j
  done
done

${fwcmd} add pass udp from 192.168.2.0/24 to me 53

این امر به هر کاربری در محدوده شبکه 192.168.2.0/24  امکان دسترسی به سرور DNS که در پورت استاندارد 53  کار می‌کند را می‌دهد. توجه داشته باشید که در این مثال، شما می‌خواهید این پورت را برای اتصالات TCP باز کنید، به این دلیل که در سرورهای DNS برای پاسخ‌های طولانی استفاده می‌شود.

پس از اتمام، فایل را ذخیره کرده و ببندید.

شروع کردن فایروال

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

$ sudo service ipfw start

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

علاوه بر این، شما می‌خواهید که محدودیتی را برای تعداد دفعات ناموفق log in یا ورود به سیستم در هر آدرس IP، اعمال کنید. این امر از پر شدن ثبت وقایع توسط یک کاربر ثابت و مداوم جلوگیری می‌کند. شما می‌توانید این کار را در فایل /etc/sysctl.conf  انجام دهید.

$ sudo vi /etc/sysctl.conf

در انتهای خط، می‌توانید ورود به سیستم خود را به “5”  با اضافه کردن خط زیر، محدود کنید:

/etc/sysctl.conf
...

net.inet.ip.fw.verbose_limit=5

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

برای اجرای همین امر برای session فعال فعلی خود بدون restart کردن، می‌توانید دستور sysctl  را به شکل زیر اجرا کنید:

$ sudo sysctl net.inet.ip.fw.verbose_limit=5

این دستور باید بلافاصله محدودیت این boot را عملی کند.

نحوه‌ی تنظیم منطقه زمانی برای سرور

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

FreeBSD با یک ابزار مبتنی بر منو به نام tzsetup  برای پیکربندی منطقه زمانی همراه است. برای تنظیم منطقه زمانی برای سرور خود، دستور زیر را با مجوز sudo  اجرا کنید:

$ sudo tzsetup

ابتدا از شما خواسته می‌شود منطقه جهانی که سرور شما در آن قرار دارد را انتخاب کنید:

در مرحله بعدی باید یک منطقه فرعی یا کشور را انتخاب کنید:

نکته: برای هدایت این منوها، باید از کلیدهایPage Up  و page Down  استفاده کنید. اگر این کلیدها بر روی صفحه کلید شما موجود نیستند، می‌توانید از کلیدهای FN  + down  + up  استفاده کنید.

در نهایت، منطقه زمانی مشخص که برای سرور شما مناسب است را انتخاب کنید.

انتخاب منطقه زمانی را که براساس انتخاب‌های شما نمایش داده شده‌است را تایید کنید.

در این مرحله، منطقه زمانی سرور شما باید با انتخاب‌هایی که اتخاذ کردید، همخوانی داشته باشد.

نحوه‌ی پیکربندی NTP برای حفظ زمان به صورت دقیق

اکنون که منطقه زمانی شما در سرور پیکربندی شده‌است، می‌توانید NTP یا پروتکل زمانی شبکه را راه‌اندازی کنید. این امر به همگام‌سازی زمان سرور شما با دیگران در سراسر جهان کمک می‌کند. این کار برای تعامل مشتری-سرورهای حساس به زمان و همچنین Log in یا ورود به سیستم صحیح، مهم می‌باشد.

بار دیگر، می‌توانید سرویس NTP بر روی سرور خود را با تنظیم فایل /etc/rc.conf  فعال کنید. برای اضافه کردن خط ntpd_enable=”YES”  به فایل، دستور زیر را وارد کنید:

$ sudo sysrc ntpd_enable="YES"

شما همچنین باید یک خط دوم اضافه کنید که همگام‌سازی زمان روی دستگاه شما با سرورهای NTP از راه‌دور در boot را انجام دهد. این امر ضروری است زیرا به سرور شما اجازه می‌دهد تا از حد معمول drift در initialization بالاتر رود. سرور شما به احتمال زیاد خارج از حد محدوده drift در boot خواهد بود زیرا منطقه زمانی شما قبل از شروع اتصال NTP اعمال می‌شود، که زمان سیستم شما را مختل می‌کند:

$ sudo sysrc ntpd_sync_on_start="YES"

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

با تایپ کردن عبارت زیر می‌توانید سرویس ntp  خود را آغاز کنید.

$ sudo service ntpd start

این امر می‌تواند زمان سرور شما را با همزمانی با سرورهای NTP لیست شده در /etc/ntp.confحفظ کند.

نحوه‌ی پیکربندی فضای اضافی swap

اولین کاری که باید انجام دهید این است که بخشی از سیستم فایل را برای فایلی که می‌خواهید برای swap استفاده کنید، اختصاص دهید. می‌توانید از دستور truncate که می‌تواند به سرعت فضا را در fly اختصاص دهد، استفاده کنید.

ما در این آموزش، swapfile را در /swapfile قرار دادیم، اما شما می‌توانید آن را در هر مکان دلخواه دیگری به عنوان مثال /var/swapfile قرار دهید. این فایل فضای اضافی یک گیگابایت را برای فضای swap فراهم می‌کند. شما می‌توانید این مقدار حجم را با تغییر مفدار معین شده، تغییر دهید.

$ sudo truncate -s 1G /swapfile

پس از اختصاص فضای لازم ، دسترسی به فایل را قفل کنید. کاربران عادی نباید به فایل دسترسی داشته باشند:

$ sudo chmod 0600 /swapfile

سپس یک pseudo-device را با فایل خود همراه کنید و آن را برای نصب در boot با تایپ عبارت زیر پیکربندی کنید:

$ echo "md99 none swap sw,file=/swapfile,late 0 0" | sudo tee -a /etc/fstab

این دستور، خطی اضافه می‌کند که شبیه به فایل /etc/fstab می‌باشد.

md99 none swap sw,file=/swapfile,late 0 0

پس از اینکه این خط به فایل /etc/fstab افزوده شد، می‌توانید فایل swap را برای session با تایپ عبارت زیر فعال کنید:

$ sudo swapon -aqL

می‌توانید بار دیگر با دستور swapinfo تایید کنید که فایل swap در حال کار می‌باشد.

$ sudo swapinfo -g

شما می‌توانید دستگاه اضافی مرتبط /dev/md99 با فایل swap را ببینید:

Output
Device          1G-blocks     Used    Avail Capacity
/dev/gpt/swapfs         1        0        1     0%
/dev/md99               1        0        1     0%
Total                   2        0        2     0%
         

این فایل swap به طور خودکار در هر boot قرار گرفته می‌شود.

نتیجه‌گیری:

مراحلی که در این راهنما بیان شده‌است، می‌تواند سرور FreeBSD شما را به حالت آماده‌تری برای تولید برساند. با پیکربندی ملزومات اصلی مانند فایروال، همگام سازی NTP و فضای مناسب مبادله، سرور شما می‌تواند به عنوان پایه خوبی برای نصب و خدمات بعدی مورد استفاده قرار بگیرد.

منبع:

https://www.digitalocean.com/community/tutorials/recommended-steps-for-new-freebsd-12-0-servers