فهرست مندرجات
طریقه کانفیگ فایروال با ufw
ufw ، یک چیزی شبیه فایروال iptables است که روند پیکربندی فایروال را بسیار ساده کرده. در حالی که iptables ابزاری محکم و انعطاف پذیر است ، یادگیری نحوه استفاده از آن برای پیکربندی صحیح فایروال ، برای مبتدیان دشوار است. اگر به دنبال شروع به کار در تأمین امنیت شبکه خود هستید و مطمئن نیستید از کدام ابزاری استفاده کنید ، ufw ممکن است انتخاب مناسبی برای شما باشد.
مرحله 1 - استفاده از IPv6 با UFW (اختیاری)
این آموزش با IPv4 نوشته شده است ، اما میتوانید برای وژن ۶ هم آنرا فعال کنید ، و بدون مشکل در IPv6 نیز کار خواهد کرد.اگر IPv6 برای شما فعال هست ، اطمینان حاصل کنید که ufw برای پشتیبانی از IPv6 تنظیم شده است تا بتواند علاوه بر IPv4 ، قوانین فایروال را برای IPv6 نیز مدیریت کند. برای این کار ، پیکربندی ufw را با vim یا هر ویرایشگر مورد علاقه خود باز کنید.
sudo vim /etc/default/ufw
خطی که عبارت IPV6
را پیدا کرده و جلوی آن کلمه yes
را بنویسید. همانند شکل زیر
... IPV6=yes ...
ذخیره کنید و فایل را ببندید. حال ، هنگامی که UFW فعال است ، تمام قوانین IPv4 و IPv6 را اعمال میکند.
مرحله 2 - تنظیم سیاست های پیش فرض
اگر تازه با دیوار آتش شروع کرده اید ، اولین قوانینی که باید تعریف کنید خط مشی های پیش فرض شما هستند. این قوانین نحوه کنترل ترافیک را که صریحاً با سایر قوانین مطابقت ندارد ، کنترل می کنند. به طور پیش فرض ، ufw قرار است تمام اتصالات ورودی را انکار کند و به همه اتصالات خروجی اجازه می دهد. این بدان معناست هیچ کسی از خارج به سیستم شما دسترسی ندارد ، در حالی که هر برنامه ای در سیستم شما قادر به دستیابی به دنیای خارج خواهد بود.
بیایید قوانین ufw شما را به حالت پیش فرض برگردانیم. برای تنظیم پیش فرض های استفاده شده توسط ufw ، از این دستورات استفاده کنید:
sudo ufw default deny incoming sudo ufw default allow outgoing
مرحله 3 - مجاز کردن اتصالات SSH (اختیاری)
اگر اکنون دیوار آتش ufw را فعال کنیم ، تمام اتصالات ورودی را انکار می کند. این بدان معناست که اگر بخواهیم این دیوارآتش را بر روی سرور فعال بکنیم ، باید قوانینی را ایجاد کنیم که صریحاً اجازه ورود به سیستمهای ورودی قانونی کند - برای مثال اتصالات SSH
یا HTTP
. اگر از سرور ابری استفاده می کنید ، احتمالاً می خواهید به اتصالات SSH اجازه ورود دهید تا بتوانید به سرور خود وصل و مدیریت کنید.
برای پیکربندی سرور خود برای وصل شدن به SSH ، می توانید از این دستور استفاده کنید:
sudo ufw allow ssh
این قوانین به کلیه اتصالات در پورت 22 اجازه وصل شدن را میدهد. ufw می داند SSH و تعدادی دیگر از اسامی سرویس به چه معناست زیرا در پرونده / etc / service
به عنوان سرویس ذکر شده اند.
با این وجود ، ما در واقع می توانیم با مشخص کردن پورت به جای نام سرویس ، قانون معادل آن را بنویسیم. به عنوان مثال ، این دستور مانند دستور فوق کار می کند:
sudo ufw allow 22
اگر SSH خود را برای استفاده از درگاه دیگری پیکربندی کرده اید ، باید پورت مناسب را مشخص کنید. به عنوان مثال ، اگر سرور SSH شما درگاه 2222 را گوش می دهد ، می توانید از این دستور برای اتصال به آن درگاه استفاده کنید:
sudo ufw allow 2222
اکنون فایروال شما پیکربندی شده است تا بتواند اتصالات SSH ورودی داشته باشد.
مرحله 4 - فعال کردن UFW
برای فعال کردن ufw ، از این دستور استفاده کنید:
sudo ufw enable
شما یک اخطار دریافت خواهید کرد که می گوید این فرمان ممکن است اتصالات SSH موجود را مختل کند. ما قبلاً یک قانون فایروال تنظیم کرده ایم که اتصالات SSH را امکان پذیر می سازد ،پس با Y پاسخ دهید.
فایروال اکنون فعال است. برای دیدن دستورالعمل های تنظیم شده ، می توانید دستور زیر را استفاده کنید:
sudo ufw status verbose
مرحله 5 - اجازه به سایر اتصالات (اختیاری)
در این مرحله ، شما باید به سایر اتصالات مورد نیاز خود برای پاسخگویی اجازه دهید. ارتباطاتی که شما باید به آنها اجازه دهید بستگی به نیازهای خاص شما دارد. خوشبختانه ، شما می دانید چگونه می توانید قوانینی را بنویسید که اتصالات را بر اساس نام یا پورت سرویس امکان پذیر می سازد. ما قبلاً این کار را برای SSH در پورت 22 انجام دادیم. بقیه این آموزش نحوه استفاده از ufw را با جزئیات بیشتر ، مانند اجازه یا انکار انواع مختلف اتصالات ، ارائه می دهد.
- HTTP در پورت 80 ، همان چیزی است که در سرورهای وب رمز نشده استفاده می شود
sudo ufw allow http یا sudo ufw allow 80
- HTTPS در پورت 443 ، همان چیزی است که در سرورهای وب رمزگذاری شده استفاده می شود
sudo ufw allow https یا sudo ufw allow 443
- FTP در پورت 21 ، که برای انتقال پرونده های رمز نشده استفاده می شود (که بهتر است از آن استفاده نکنید)
sudo ufw allow ftp یا sudo ufw allow 21/tcp
به غیر از مشخص کردن درگاه یا سرویس شناخته شده ، راه های دیگری برای اجازه سایر اتصالات وجود دارد.
محدوده پورت خاص
شما می توانید محدوده پورت را برای ufw مشخص کنید. برخی از برنامه ها به جای یک پورت واحد از پورت های مختلف استفاده می کنند.
به عنوان مثال ، برای اجازه دادن به اتصالات X11 ، که از پورت های 6000-6007
استفاده می کنند ، از این دستورات استفاده کنید:
sudo ufw allow 6000:6007/tcp sudo ufw allow 6000:6007/udp
هنگام مشخص کردن محدوده پورت برای ufw ، باید پروتکل (tcp یا udp) را مشخص کنید که قوانین باید روی آن اعمال شود. ما قبلاً به این موضوع اشاره نکرده ایم زیرا مشخص نکردن پروتکل به هر دو پروتکل اجازه دسترسی می دهد بصورت پیش فرض
آدرس های IP خاص
هنگام کار با ufw ، می توانید آدرس IP را نیز مشخص کنید. به عنوان مثال ، اگر می خواهید از یک آدرس IP خاص مانند آدرس IP محل کار یا خانه با شماره 15.15.15.51
اجازه دسترسی دهید ، باید آدرس IP را مشخص کنید:
sudo ufw allow from 15.15.15.51
همچنین می توانید پورت خاصی را تعیین کنید که آدرس IP مجاز به آن باشد. به عنوان مثال ، اگر می خواهید به 15.15.15.51
اجازه اتصال به پورت 22 (SSH) را بدهید ، از این دستور استفاده کنید:
sudo ufw allow from 15.15.15.51 to any port 22
زیرمجموعه ها(Subnets)
اگر می خواهید به یک زیر شبکه از آدرس های IP اجازه دهید ، می توانید با استفاده از نماد / برای مشخص کردن یک netmask این کار را انجام دهید. به عنوان مثال ، اگر می خواهید تمام آدرس های IP از 15.15.15.1
تا 15.15.15.254
را مجاز کنید ، می توانید از این دستور استفاده کنید:
sudo ufw allow from 15.15.15.0/24
به همین ترتیب ، شما همچنین می توانید پورت مقصد را نیز تعیین کنید که زیر شبکه 15.15.15.0/24 اجازه اتصال به آن را داشته باشد. باز هم ، ما از پورت 22 (SSH) به عنوان نمونه استفاده خواهیم کرد:
sudo ufw allow from 15.15.15.0/24 to any port 22
نمونه هایی از استفاده از این قوانین رو مینونید در لینکهای زیر ببینید
اتصال به یک کارت شبکه خاص
اگر می خواهید یک قانون فایروال ایجاد کنید که فقط مربوط به یک کارت شبکه خاص مرتبط باشد ، می توانید با مشخص کردن «allow in on» و نام کارت شبکه این کار را انجام دهید.
ممکن است بخواهید قبل از ادامه کار ، رابط های شبکه خود را جستجو کنید. برای انجام این کار ، از این دستور استفاده کنید:
ip addr
خروجی دستور بالا
... 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state ... 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default ...
خروجی بالا نشانگر نام های کارت شبکه است. به طور معمول چیزی شبیه زیر نامیده میشود eth0
یا eth1
بنابراین ، اگر سیستم شما یک کارت شبکه عمومی به نام eth0 دارد ، می توانید با این دستور ترافیک HTTP (پورت 80) را به آن متصل کنید:
sudo ufw allow in on eth0 to any port 80
با انجام این کار به سیستم شما امکان می دهد درخواستهای HTTP را از طریق eth0 دریافت کند.
یا اگر می خواهید سرور پایگاه داده MySQL (پورت 3306) شما را به عنوان مثال در کارت شبکه خصوصی eth1 گوش دهد ، می توانید از این دستور استفاده کنید:
sudo ufw allow in on eth1 to any port 3306
این به سرورهای دیگر در شبکه خصوصی شما اجازه می دهد تا به پایگاه داده MySQL شما متصل شوند.
مرحله 6 - انکار اتصالات
اگر خط مشی پیش فرض اتصال های ورودی را تغییر نداده اید ، ufw پیکربندی شده است تا تمام اتصالات ورودی را انکار کند. با این وجود ، گاهی اوقات شما می خواهید ارتباطات خاص را بر اساس آدرس IP منکر کنید ، شاید به این دلیل که می دانید سرور شما از آنجا مورد حمله قرار می گیرد. همچنین ، اگر می خواهید خط مشی ورودی پیش فرض خود را تغییر دهید(که اصلا توصیه نمیشود) ، لازم است که قوانین را برای هرگونه خدمات یا آدرسهای IP که نمی خواهید مجوزهای مربوطه آنها را ایجاد کنید.
برای نوشتن قوانین انکار ، می توانید از دستورات گفته شده در بالا استفاده کنید. به عنوان مثال ، برای انکار اتصالات HTTP ، می توانید از این دستور استفاده کنید:
sudo ufw deny http
یا اگر می خواهید تمام اتصالات را از 15.15.15.51 رد کنید ، می توانید از این دستور استفاده کنید:
sudo ufw deny from 15.15.15.51
مرحله 7 - حذف قوانین
دانستن چگونگی حذف قوانین فایروال به همان اندازه مهم است که بدانید چگونه می توانید آنها را ایجاد کنید. دو روش مختلف وجود دارد:
- بر اساس شماره قانون
- قانون واقعی (شبیه به نحوه تعیین قوانین هنگام ایجاد)
اگر با ufw تازه وارد هستید ، با روش حذف با شماره قانون شروع خواهیم کرد زیرا ساده تر از نوشتن قوانین واقعی برای حذف است.
توسط شماره قانون
اگر از شماره قانون برای حذف قوانین فایروال استفاده می کنید ، اولین کاری که می خواهید انجام دهید این است که لیستی از قوانین فایروال خود را تهیه کنید. دستور وضعیت ufw گزینه ای برای نمایش شماره ها در کنار هر قانون است ، همانطور که در اینجا نشان داده شده است:
sudo ufw status numbered
خروجی دستور بالا
Status: active To Action From -- ------ ---- [ 1] 22 ALLOW IN 15.15.15.0/24 [ 2] 80 ALLOW IN Anywhere
اگر تصمیم بگیریم که قانون 2 را حذف کنیم ، که امکان دسترسی به پورت 80 (HTTP)
را فراهم می کند ، می توانیم آن را در یک فرمان حذف ufw مانند این موارد مشخص کنیم:
sudo ufw delete 2
از شما تاییدیه دریافت و سپس قانون 2 را حذف میکند
طبق قانون
گزینه جایگزین برای شماره ها ، تعیین قانون واقعی برای حذف است. به عنوان مثال ، اگر می خواهید قانون http را حذف کنید ، می توانید آن را به صورت زیر بنویسید:
sudo ufw delete allow http
شما همچنین می توانید به جای نام خدمات ، قانون را با شماره پورت 80 مشخص کنید:
sudo ufw delete allow 80
در صورت استفاده از IPv4 و IPv6 قانون برای هر دو حذف می شود.
مرحله 8 - بررسی وضعیت و قوانین UFW
در هر زمان ، می توانید وضعیت ufw را با این دستور بررسی کنید:
sudo ufw status verbose
اگر ufw غیرفعال باشد ، که به طور پیش فرض است ، چنین چیزی را مشاهده خواهید کرد:
Output Status: inactive
اگر ufw فعال باشد ، که در مرحله ۴ آنرا بررسی کردیم ، خروجی می گوید که فعال است و قوانینی را که تنظیم شده است لیست می کند. به عنوان مثال ، اگر فایروال تنظیم شود تا اتصالات SSH (پورت 22) را از هر مکانی امکان پذیر کند ، ممکن است خروجی چیزی شبیه به این باشد:
Output Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22/tcp ALLOW IN Anywhere
مرحله 9 - غیرفعال کردن یا تنظیم مجدد UFW (اختیاری)
اگر تصمیم دارید یا نمی خواهید از ufw استفاده کنید ، می توانید با این دستور آن را غیرفعال کنید:
sudo ufw disable
هر قانونی که با ufw ایجاد کرده باشید دیگر فعال نخواهد بود. اگر لازم است بعداً آن را فعال کنید ، همیشه می توانید مرحله ۴ را انجام دهید
اگر قبلاً قوانین ufw را پیکربندی کرده اید اما تصمیم دارید تنظیمات را دوباره انجام دهید می توانید از دستور تنظیم مجدد استفاده کنید:
sudo ufw reset
با این کار ufw غیرفعال می شود و قوانینی را که قبلاً تعریف شده بودند حذف می کند. — phoenix 2019/09/30 20:22