چگونه می توان FreeBSD را با PF Firewall ایمن کرد

این آموزش نحوه محافظت از سرور FreeBSD خود را با استفاده از فایروال OpenBSD PF نشان می دهد. فرض خواهیم کرد که شما یک نصب FreeBSD تمیز دارید که توسط Vultr مستقر شده است و کاربر دیگری اضافه نشده است. ما علاوه بر پیکربندی فایروال کارهای دیگری نیز انجام خواهیم داد که امنیت سرور FreeBSD ما را نیز سخت می کند. قبل از پیکربندی فایروال ، ما برخی از بسته ها را نصب خواهیم کرد زیرا نصب پیش فرض FreeBSD با حداقل ابزار و بسته ها (که صحیح است) همراه است ، تا کار را برای ما راحت تر کند.

پوسته پیش فرض در FreeBSD است /bin/sh. این یک پوسته اساسی است که عملکردی کامل ندارد. ما از چیزی بهتر استفاده خواهیم کرد. ما نصب zshخواهیم کرد

ابتدا این بسته ها را نصب کنید:

# pkg install zsh gnuls
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y
Bootstrapping pkg from pkg+http://pkg.FreeBSD.org/freebsd:10:x86:64/latest, please wait...
...

GNULS lsبرنامه ای از لینوکس است. ما فقط می خواهیم همان lsدستور را در لینوکس و FreeBSD داشته باشیم.

کاربر عادی را به سیستم اضافه کنید: (جان را با نام کاربری خود جایگزین کنید و فراموش نکنید که کاربر را به گروه چرخ اضافه کنید)

# adduser
Username: john
Full name: John Doe
Uid (Leave empty for default): 
Login group [john]: 
Login group is john. Invite john into other groups? []: wheel
Login class [default]: 
Shell (sh csh tcsh zsh rzsh nologin) [sh]: zsh
Home directory [/home/john]: 
Home directory permissions (Leave empty for default): 
Use password-based authentication? [yes]: 
Use an empty password? (yes/no) [no]: 
Use a random password? (yes/no) [no]: 
Enter password: 
Enter password again: 
Lock out the account after creation? [no]: 
Username   : john
Password   : *****
Full Name  : John Doe
Uid        : 1001
Class      : 
Groups     : john wheel
Home       : /home/john
Home Mode  : 
Shell      : /usr/local/bin/zsh
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (john) to the user database.
Add another user? (yes/no): no
Goodbye!

ایجاد پرونده پیکربندی zsh:

# ee /home/your-username/.zshrc

این را در پرونده .zshrc خود کپی کنید:

PS1="<%U%m%u>$[%B%1~%b]%(#.#.$) "

bindkey -e
alias su='su -m'
alias du='du -h -d0'
alias df='df -h'
alias l=less
alias ll='gnuls --color=always -l'
alias ls='gnuls --color=always'
alias pkg_ver='pkg version -v -l "<" | > upgrade'

export EDITOR=ee

autoload -U colors && colors
autoload -U promptinit && promptinit
autoload -U compinit && compinit

# History settings
SAVEHIST=1000
HISTSIZE=1000
HISTFILE=~/.history
setopt histignoredups appendhistory

این دستور را اجرا کنید: (جان را با نام کاربری خود جایگزین کنید)

chown john:john /home/john/.zshrc

اکنون با نام کاربری خود به سرور FreeBSD وارد شوید و رمز اصلی پیش فرض root را تغییر دهید:

<vultr>[~]$ su
Password:
<vultr>[~]# passwd 
Changing local password for root
New Password:
Retype New Password:
<vultr>[~]# 

ما به sendmail احتیاج نداریم توقف و غیرفعال کردن این سرویس:

<vultr>[~]# /etc/rc.d/sendmail stop
Stopping sendmail.
Waiting for PIDS: 7843.
sendmail_submit not running? (check /var/run/sendmail.pid).
Stopping sendmail_msp_queue.
Waiting for PIDS: 7846.

در مرحله بعد ، ما فایل rc.conf خود را تغییر خواهیم داد تا طبیعی تر به نظر برسد:

# ee /etc/rc.conf

آن را تغییر دهید تا مانند این باشد:

#----------- NETWORKING ------------------------------------------------#
hostname="ceph.domain1.com" # replace ceph.domain1.com with your domain
ifconfig_vtnet0="dhcp"
static_routes=linklocal
route_linklocal="-net 169.254.0.0/16 -interface vtnet0"

#--------- SERVICES BSD LOCAL ----------------------------------------#
sshd_enable="YES"
ntpd_enable="YES"

#pf_enable="YES"
#pf_rules="/etc/firewall"
#pf_flags=""
#pflog_enable="YES"              
#pflog_logfile="/var/log/pflog"  
#pflog_flags=""    

sendmail_enable="NONE"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

ویرایش /etc/hostsپرونده:

# ee /etc/hosts

آدرس IP و نام میزبان خود را اضافه کنید:

::1                     localhost localhost.ceph ceph
127.0.0.1               localhost localhost.ceph ceph
108.61.178.110          ceph.domain1.com       ceph

تنظیم منطقه زمانی:

# bsdconfig

هر زمان که می توانید ، دسترسی از راه دور را برای کاربر اصلی غیرفعال کنید. بیشتر حملات به SSH سعی خواهد کرد از طریق حساب کاربر root دسترسی داشته باشید. همیشه با نام کاربری خود ارتباط برقرار کرده و سپس suبه ریشه آن بپردازید. فقط کاربران wheelگروه می توانند suریشه یابی کنند. به همین دلیل کاربر خود را به گروه چرخ اضافه کردیم.

غیرفعال کردن ورود به سیستم ریشه:

# ee /etc/ssh/sshd_config

لغو پاسخ این خط:

PermitRootLogin no

راه اندازی مجدد:

# reboot

پس از اتمام راه اندازی مجدد ، پیامی مانند این را در کنسول Vultr مشاهده خواهید کرد:

time correction of 3600 seconds exceeds sanity limit (1000); set clock manually to
correct UTC time.

به همین دلیل باید ساعت را به صورت دستی اصلاح کنیم. ابتدا از این دستورات پیروی کنید su:

$ su
Password:
# ntpdate 0.europe.pool.ntp.org

حال می خواهیم دیوار آتش را پیکربندی کنیم. OpenBSD PF در هسته FreeBSD گنجانده شده است ، بنابراین نیازی به نصب هیچ بسته ای نیست.

با eeویرایشگر ، پرونده را ایجاد کنید /etc/firewall:

# ee /etc/firewall

این را وارد کنید: (آدرسهای IP را جایگزین آدرس خود کنید)

#######################################################################
me="vtnet0"                
table <bruteforcers> persist    
table <trusted> persist file "/etc/trusted"
icmp_types = "echoreq"          
junk_ports="{ 135,137,138,139,445,68,67,3222 }"
junk_ip="224.0.0.0/4"           

set loginterface vtnet0           
scrub on vtnet0 reassemble tcp no-df random-id

# ---- First rule obligatory "Pass all on loopback"
pass quick on lo0 all           

# ---- Block junk logs
block quick proto { tcp, udp } from any to $junk_ip 
block quick proto { tcp, udp } from any to any port $junk_ports

# ---- Second rule "Block all in and pass all out"
block in log all                
pass out all keep state         

############### FIREWALL ###############################################
# ---- Allow all traffic from my Home
pass quick proto {tcp, udp} from 1.2.3.4 to $me keep state

# ---- block SMTP out 
block quick proto tcp from $me to any port 25

# ---- Allow incoming Web traffic
pass quick proto tcp from any to $me port { 80, 443 } flags S/SA keep state

# ---- Allow my team member SSH access 
pass quick proto tcp from 1.2.3.5 to $me port ssh flags S/SA keep state

# ---- Block bruteforcers
block log quick from <bruteforcers>

# ---- Allow SSH from trusted sources, but block bruteforcers
pass quick proto tcp from <trusted> to $me port ssh \
flags S/SA keep state \
(max-src-conn 10, max-src-conn-rate 20/60, \
overload <bruteforcers> flush global)

# ---- Allow ICMP 
pass in inet proto icmp all icmp-type $icmp_types keep state
pass out inet proto icmp all icmp-type $icmp_types keep state

ایجاد /etc/trustedپرونده در این پرونده ، IP هایی را که "به آنها اعتماد داریم" قرار خواهیم داد.

# ee /etc/trusted

مقداری IP اضافه کنید:

# Hosting
1.2.0.0/16

# My friends
1.2.4.0/24

حالا برخی توضیحات. پورت های ناخواسته و IP های ناخواسته فقط برخی از درگاه ها / IP ها هستند که ما نمی خواهیم آنها را در سیاهههای مربوط ببینیم. ما این کار را با این قانون انجام داده ایم:

# ---- Block junk logs
block quick proto { tcp, udp } from any to $junk_ip 
block quick proto { tcp, udp } from any to any port $junk_ports

اینها فقط پیش فرض است و نیازی به نگرانی در مورد آن نیست:

icmp_types = "echoreq"                                            
set loginterface vtnet0           
scrub on vtnet0 reassemble tcp no-df random-id
pass quick on lo0 all
block in log all                
pass out all keep state

این قانون ترافیک SMTP خروجی از سرور شما را مسدود می کند (که پیش فرض Vultr است).

# ---- block SMTP out 
block quick proto tcp from $me to any port 25

به جز bruteforcersبقیه کاملاً مستقیم رو به جلو است.

# ---- Allow SSH from trusted sources, but block bruteforcers
pass quick proto tcp from <trusted> to $me port ssh \
flags S/SA keep state \
(max-src-conn 10, max-src-conn-rate 20/60, \
overload <bruteforcers> flush global)

Bruteforcers فقط می گوید: اجازه دهید از IP های <trusted> به پورت 22 اما فقط 10 اتصال همزمان از یک منبع IP امکان پذیر است. اگر بیش از 10 است ، این IP را مسدود کرده و آن را در bruteforcers جدول قرار دهید. همین قانون در مورد قانون 20/60 نیز صدق می کند. یعنی حداکثر 20 اتصال در 60 ثانیه.

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

# ee /etc/rc.conf

لغو این خطوط:

pf_enable="YES"
pf_rules="/etc/firewall"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
pflog_flags=""

راه اندازی مجدد:

# reboot 

اگر همه کارها را درست انجام داده باشید ، می توانید وارد سیستم شوید و فایروال فعال می شود. لازم نیست هر بار که /etc/firewallفایل را تغییر دهید ، مجدداً راه اندازی مجدد کنید. فقط انجام دهید:

# /etc/rc.d/pf reload

ببینید چه کسی سعی دارد در زمان واقعی به سرور شما متصل شود:

# tcpdump -n -e -ttt -i pflog0

نمایش تاریخ:

# tcpdump -n -e -ttt -r /var/log/pflog

ببینید شخصی در جدول بروکرها دارید:

# pfctl -t bruteforcers -T show

و همین است شما فایروال PF را با موفقیت در سرور FreeBSD پیاده سازی کرده اید!


Tags: #BSD

Leave a Comment

نحوه نصب انجمن NodeBB در FreeBSD 12

نحوه نصب انجمن NodeBB در FreeBSD 12

با استفاده از یک سیستم متفاوت؟ NodeBB یک نرم افزار انجمن مبتنی بر Node.js است. از سوکت های وب برای تعامل فوری و اعلامیه های زمان واقعی استفاده می کند. NodeB

از rezv.conf از DHCP در FreeBSD 10 محافظت کنید

از rezv.conf از DHCP در FreeBSD 10 محافظت کنید

اگر رأی دهنده خود را اجرا می کنید ، یا مایل به استفاده از یک ارائه دهنده شخص ثالث هستید ، ممکن است متوجه شوید که پرونده /etc/resolv.conf شما توسط DHCP رونویسی می شود

نحوه نصب X-Cart 5 در FreeBSD 12

نحوه نصب X-Cart 5 در FreeBSD 12

با استفاده از یک سیستم متفاوت؟ X-Cart یک پلتفرم تجارت الکترونیک با منبع آزاد بسیار انعطاف پذیر است که دارای چندین ویژگی و ادغام است. کد منبع X-Cart میزبان است

WordPress را در OpenBSD 6.2 نصب کنید

WordPress را در OpenBSD 6.2 نصب کنید

مقدمه WordPress سیستم مدیریت محتوای غالب در اینترنت است. این قدرت همه چیز را از بلاگ ها گرفته تا وب سایت های پیچیده و دارای محتوای پویا انجام می دهد

OpenBSD به عنوان یک راه حل تجارت الکترونیکی با PrestaShop و Apache

OpenBSD به عنوان یک راه حل تجارت الکترونیکی با PrestaShop و Apache

مقدمه این آموزش OpenBSD را به عنوان یک راه حل تجارت الکترونیکی با استفاده از PrestaShop و Apache نشان می دهد. Apache لازم است زیرا PrestaShop دارای UR پیچیده است

نحوه نصب Anchor CMS در FreeBSD 11 FAMP VPS

نحوه نصب Anchor CMS در FreeBSD 11 FAMP VPS

با استفاده از یک سیستم متفاوت؟ Anchor CMS یک سیستم مدیریت محتوا (CMS) بسیار ساده و بسیار سبک ، بسیار آزاد و آزاد است.

نحوه نصب Tiny Tiny RSS Reader در FreeBSD 11 FAMP VPS

نحوه نصب Tiny Tiny RSS Reader در FreeBSD 11 FAMP VPS

با استفاده از یک سیستم متفاوت؟ Tiny Tiny RSS Reader خواننده و جمع کننده منبع خبری وب مبتنی بر منبع آزاد (RSS / Atom) رایگان و منبع باز است که به منظور پخش

نحوه نصب WonderCMS در FreeBSD 12

نحوه نصب WonderCMS در FreeBSD 12

با استفاده از یک سیستم متفاوت؟ WonderCMS یک فایل CMS با منبع آزاد ، سریع و کوچک است که به زبان PHP نوشته شده است. کد منبع WonderCMS در Github میزبانی شده است. این راهنما است

نحوه نصب Pagekit 1.0 CMS در FreeBSD 11 FAMP VPS

نحوه نصب Pagekit 1.0 CMS در FreeBSD 11 FAMP VPS

با استفاده از یک سیستم متفاوت؟ Pagekit 1.0 CMS یک سیستم زیبا و مدولار زیبا ، مدولار ، قابل تمدید و سبک ، آزاد و منبع باز منبع آزاد (CMS) با

نحوه فعال سازی TLS 1.3 در Apache در FreeBSD 12

نحوه فعال سازی TLS 1.3 در Apache در FreeBSD 12

با استفاده از یک سیستم متفاوت؟ TLS 1.3 نسخه ای از پروتکل Transport Layer Security (TLS) است که در سال 2018 به عنوان یک استاندارد پیشنهادی در RFC 8446 منتشر شد

iRedMail را در FreeBSD 10 تنظیم کنید

iRedMail را در FreeBSD 10 تنظیم کنید

در این آموزش نحوه نصب گروهی iRedMail بر روی نصب جدید FreeBSD به شما نشان داده می شود. شما باید از سرورهایی با حداقل یک گیگابایت o استفاده کنید

نحوه نصب Dolibarr در FreeBSD 12

نحوه نصب Dolibarr در FreeBSD 12

با استفاده از یک سیستم متفاوت؟ Dolibarr یک برنامه ریزی منبع باز شرکت (ERP) و مدیریت ارتباط با مشتری (CRM) برای مشاغل است. دلیبار

نحوه نصب Paste 2.1 در FreeBSD 11 FAMP VPS

نحوه نصب Paste 2.1 در FreeBSD 11 FAMP VPS

با استفاده از یک سیستم متفاوت؟ Paste 2.1 یک برنامه pastebin ساده و انعطاف پذیر ، رایگان و منبع باز برای ذخیره کد ، متن و موارد دیگر است. این ابتکار عمل بود

Swap File را در FreeBSD 10 ایجاد کنید

Swap File را در FreeBSD 10 ایجاد کنید

خارج از جعبه ، سرورهای Vultr FreeBSD به گونه ای تنظیم نشده اند که فضای swap را در خود جای دهند. اگر قصد شما برای یک نمونه ابر یکبار مصرف است ، احتمالاً شما اصلاً نیکوکار نیستید

MariaDB را در OpenBSD 6 پیکربندی کنید

MariaDB را در OpenBSD 6 پیکربندی کنید

در این مقاله ، Ill به شما نشان می دهد که چگونه MariaDB را در OpenBSD 6 نصب کنید و پیکربندی کنید تا در دسترس یک وب سرور قرار گرفته (Apache یا Nginx) باشد. شما als

نحوه نصب پشته Apache ، MySQL و PHP (FAMP) در FreeBSD 12.0

نحوه نصب پشته Apache ، MySQL و PHP (FAMP) در FreeBSD 12.0

مقدمه یک پشته FAMP ، که قابل مقایسه با یک پشته LAMP در لینوکس است ، مجموعه ای از نرم افزارهای منبع باز است که به طور معمول در کنار هم نصب می شود.

نحوه نصب DokuWiki در FreeBSD 12

نحوه نصب DokuWiki در FreeBSD 12

با استفاده از یک سیستم متفاوت؟ DokuWiki یک برنامه ویکی منبع باز است که به زبان پی اچ پی نوشته شده است و به پایگاه داده نیاز ندارد. این داده ها را در پرونده های متنی ذخیره می کند. DokuWik

راه اندازی بستر نشر حرفه ای Ghost در OpenBSD 6

راه اندازی بستر نشر حرفه ای Ghost در OpenBSD 6

Ghost جدیدترین و بزرگترین راهپیمایی وردپرس برای رقیب است. توسعه موضوع سریع و آسان برای یادگیری است زیرا توسعه دهندگان Ghost تصمیم گرفتند از هر دو استفاده کنند

نحوه نصب آلبوم عکس Lychee 3.1 در یک FAMP VPS FreeBSD 11

نحوه نصب آلبوم عکس Lychee 3.1 در یک FAMP VPS FreeBSD 11

با استفاده از یک سیستم متفاوت؟ Lychee 3.1 Photo Album ابزاری ساده و انعطاف پذیر ، رایگان و منبع باز منبع آزاد است که روی یک سرور VPS اجرا می شود. نصب می کند

تغییر اندازه استخر ZFS Storage در FreeBSD / TrueOS

تغییر اندازه استخر ZFS Storage در FreeBSD / TrueOS

هنگام به روزرسانی نمونه VPS در Vultr ، یک سیستم پرونده لینوکس به صورت خودکار تغییر اندازه می یابد. هنگام اجرای FreeBSD با سیستم پرونده پیشرفته ZFS ، برخی از کتابچه های راهنمای کاربر را نگران می کنید

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

نحوه نصب بستر سبد خرید LiteCart در اوبونتو 16.04

LiteCart یک بستر سبد خرید آزاد و منبع باز است که به زبان های PHP ، jQuery و HTML 5 نوشته شده است. این نرم افزار ساده ، سبک و با کاربرد آسان است.

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

نحوه نصب Anchor CMS بر روی یک VPS Fedora 26 LAMP

با استفاده از یک سیستم متفاوت؟ Anchor CMS یک سیستم مدیریت محتوا (CMS) بسیار ساده و بسیار سبک ، بسیار آزاد و آزاد است.

اشتراک NFS را در Debian تنظیم کنید

اشتراک NFS را در Debian تنظیم کنید

NFS یک سیستم فایل مبتنی بر شبکه است که به رایانه ها اجازه می دهد تا از طریق شبکه رایانه ای به فایلها دسترسی پیدا کنند. این راهنما توضیح می دهد که چگونه می توانید پوشه ها را روی NF قرار دهید

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

نحوه بروزرسانی CentOS 7 ، Ubuntu 16.04 و Debian 8

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

نحوه نصب Matomo Analytics در Fedora 28

نحوه نصب Matomo Analytics در Fedora 28

با استفاده از یک سیستم متفاوت؟ Matomo (سابقا پیویک) یک بستر تحلیلی منبع باز است ، یک جایگزین باز برای Google Analytics. منبع Matomo میزبان o

یک سرور TeamTalk را در لینوکس تنظیم کنید

یک سرور TeamTalk را در لینوکس تنظیم کنید

TeamTalk یک سیستم کنفرانس است که به کاربران امکان می دهد مکالمات صوتی / تصویری با کیفیت بالا ، چت متنی ، انتقال فایل ها و صفحه های به اشتراک بگذارند. من

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

با استفاده از کلید SSH خود برای ورود به کاربران غیر ریشه استفاده کنید

Vultr یک ویژگی را فراهم می کند که به شما امکان می دهد با ایجاد یک نمونه جدید ، کلیدهای SSH را از قبل نصب کنید. این اجازه می دهد تا به کاربر root دسترسی داشته باشید ، با این حال ، th

نحوه نصب انجمن NodeBB در FreeBSD 12

نحوه نصب انجمن NodeBB در FreeBSD 12

با استفاده از یک سیستم متفاوت؟ NodeBB یک نرم افزار انجمن مبتنی بر Node.js است. از سوکت های وب برای تعامل فوری و اعلامیه های زمان واقعی استفاده می کند. NodeB

نصب و راه اندازی ZNC در اوبونتو

نصب و راه اندازی ZNC در اوبونتو

ZNC یک پیشرانه پیشرفته شبکه IRC است که تمام وقت بهم متصل می شود تا مشتری IRC بتواند بدون از دست دادن جلسه گپ قطع یا وصل شود.

نحوه نصب Ranger Terminal File Manager در لینوکس

نحوه نصب Ranger Terminal File Manager در لینوکس

رنجر یک مدیر فایل مبتنی بر خط فرمان است که دارای کلیدهای اتصال VI است. این برنامه یک رابط لعنتی مینیمالیستی و زیبا با نمای سلسله مراتب فهرست ارائه می دهد