Как да защитите FreeBSD с PF защитна стена

Как да защитите FreeBSD с PF защитна стена

Този урок ще ви покаже как да защитите вашия 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програмата от Linux. Просто искаме да имаме същата lsкоманда в Linux и FreeBSD.

Добавете нормален потребител към системата: (заменете john с вашето потребителско име и не забравяйте да добавите потребител към групата на колелата)

# 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

Изпълнете тази команда: (заменете john с вашето потребителско име)

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

Винаги, когато можете, деактивирайте отдалечения достъп за root потребителя. Повечето атаки срещу SSH ще се опитат да осъществят достъп през root потребителския акаунт. Винаги се свързвайте с вашето потребителско име и след това suс root. Само потребители от wheelгрупата могат suда руутват. Ето защо добавихме нашия потребител към групата на колелата.

Деактивирайте влизането в root:

# 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да получите root:

$ 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 адреси към порт 22, но само 10 едновременни връзки могат да бъдат направени от един IP източник. Ако е повече от 10, блокирайте този IP и го поставете в таблицата bruteforcer. Същото важи и за правилото 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

Вижте дали имате някой в ​​масата на bruteforcer:

# pfctl -t bruteforcers -T show

И това е. Вие успешно внедрихте PF защитна стена на FreeBSD сървър!

Tags: #BSD

Как да инсталирате Tiny Tiny RSS Reader на FreeBSD 11 FAMP VPS

Как да инсталирате Tiny Tiny RSS Reader на FreeBSD 11 FAMP VPS

Използване на различна система? Tiny Tiny RSS Reader е безплатен четец и агрегатор с отворен код, самостоятелно хостван уеб базиран новинарски канал (RSS/Atom), предназначен да

Как да инсталирате Wiki.js на FreeBSD 11

Как да инсталирате Wiki.js на FreeBSD 11

Използване на различна система? Wiki.js е безплатно и модерно уики приложение с отворен код, изградено на Node.js, MongoDB, Git и Markdown. Изходният код на Wiki.js е публичен

Как да инсталирате Pagekit 1.0 CMS на FreeBSD 11 FAMP VPS

Как да инсталирате Pagekit 1.0 CMS на FreeBSD 11 FAMP VPS

Използване на различна система? Pagekit 1.0 CMS е красива, модулна, разширяема и лека, безплатна система за управление на съдържанието (CMS) с отворен код с

Как да инсталирате MODX Revolution на FreeBSD 11 FAMP VPS

Как да инсталирате MODX Revolution на FreeBSD 11 FAMP VPS

Използване на различна система? MODX Revolution е бърза, гъвкава, мащабируема система за управление на съдържанието (CMS) от корпоративен клас, написана на PHP. То и

Настройка на OpenBSD 5.5 64-битов

Настройка на OpenBSD 5.5 64-битов

Тази статия ви превежда през настройката на OpenBSD 5.5 (64-битов) на KVM с Vultr VPS. Стъпка 1. Влезте в контролния панел на Vultr. Стъпка 2. Щракнете върху РАЗГРАЖДАНЕ

Как да инсталирате osTicket на FreeBSD 12

Как да инсталирате osTicket на FreeBSD 12

Използване на различна система? osTicket е система за билети за поддръжка на клиенти с отворен код. Изходният код на osTicket се хоства публично на Github. В този урок

Как да инсталирате Flarum Forum на FreeBSD 12

Как да инсталирате Flarum Forum на FreeBSD 12

Използване на различна система? Flarum е безплатен софтуер за форуми от следващо поколение с отворен код, който прави онлайн дискусията забавна. Изходният код на Flarum се хоства o

Как да активирате TLS 1.3 в Nginx на FreeBSD 12

Как да активирате TLS 1.3 в Nginx на FreeBSD 12

Използване на различна система? TLS 1.3 е версия на протокола за сигурност на транспортния слой (TLS), който беше публикуван през 2018 г. като предложен стандарт в RFC 8446

Инсталирайте WordPress на OpenBSD 6.2

Инсталирайте WordPress на OpenBSD 6.2

Въведение WordPress е доминиращата система за управление на съдържанието в интернет. Той захранва всичко от блогове до сложни уебсайтове с динамично съдържание

Как да инсталирате Subrion 4.1 CMS на FreeBSD 11 FAMP VPS

Как да инсталирате Subrion 4.1 CMS на FreeBSD 11 FAMP VPS

Използване на различна система? Subrion 4.1 CMS е мощна и гъвкава система за управление на съдържанието (CMS) с отворен код, която носи интуитивно и ясно съдържание

Как да конфигурирате DJBDNS на FreeBSD

Как да конфигурирате DJBDNS на FreeBSD

Този урок ще ви покаже как да конфигурирате DNS услуга, която е лесна за поддръжка, лесна за конфигуриране и която като цяло е по-сигурна от класическия BIN

Как да инсталирате стека Nginx, MySQL и PHP (FEMP) на FreeBSD 12.0

Как да инсталирате стека Nginx, MySQL и PHP (FEMP) на FreeBSD 12.0

FEMP стек, който е сравним с LEMP стек в Linux, е колекция от софтуер с отворен код, който обикновено се инсталира заедно, за да даде възможност на FreeBS

Инсталиране на MongoDB на FreeBSD 10

Инсталиране на MongoDB на FreeBSD 10

MongoDB е NoSQL база данни от световна класа, която често се използва в по-новите уеб приложения. Той осигурява заявки с висока производителност, разделяне и репликация

Как да инсталирате Monica на FreeBSD 12

Как да инсталирате Monica на FreeBSD 12

Използване на различна система? Monica е система за управление на лични взаимоотношения с отворен код. Мислете за него като за CRM (популярен инструмент, използван от търговските екипи в th

OpenBSD като решение за електронна търговия с PrestaShop и Apache

OpenBSD като решение за електронна търговия с PrestaShop и Apache

Въведение Този урок демонстрира OpenBSD като решение за електронна търговия, използващо PrestaShop и Apache. Apache е необходим, тъй като PrestaShop има сложен UR

Инсталиране на Fork CMS на FreeBSD 12

Инсталиране на Fork CMS на FreeBSD 12

Използване на различна система? Fork е CMS с отворен код, написан на PHP. Изходният код на Forks се хоства на GitHub. Това ръководство ще ви покаже как да инсталирате Fork CM

Как да инсталирате Directus 6.4 CMS на FreeBSD 11 FAMP VPS

Как да инсталирате Directus 6.4 CMS на FreeBSD 11 FAMP VPS

Използване на различна система? Directus 6.4 CMS е мощна и гъвкава, безплатна и с отворен код Headless Content Management System (CMS), която предоставя на разработчиците

Повишаване на сигурността за FreeBSD с помощта на IPFW и SSHGuard

Повишаване на сигурността за FreeBSD с помощта на IPFW и SSHGuard

VPS сървърите често са насочени от натрапници. Често срещан тип атака се появява в системните регистрационни файлове като стотици неоторизирани опити за влизане в ssh. Настройвам

Настройте httpd в OpenBSD

Настройте httpd в OpenBSD

Въведение OpenBSD 5.6 въведе нов демон, наречен httpd, който поддържа CGI (чрез FastCGI) и TLS. Не е необходима допълнителна работа за инсталиране на новия http

Настройте iRedMail на FreeBSD 10

Настройте iRedMail на FreeBSD 10

Този урок ще ви покаже как да инсталирате груповия софтуер iRedMail на нова инсталация на FreeBSD 10. Трябва да използвате сървър с поне един гигабайт o

Възходът на машините: Реални приложения на AI

Възходът на машините: Реални приложения на AI

Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.

DDOS атаки: кратък преглед

DDOS атаки: кратък преглед

Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.

Чудили ли сте се как хакерите печелят пари?

Чудили ли сте се как хакерите печелят пари?

Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.

Революционни изобретения на Google, които ще улеснят живота ви.

Революционни изобретения на Google, които ще улеснят живота ви.

Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Тъй като науката се развива с бързи темпове, поемайки много от нашите усилия, рискът да се подложим на необяснима сингулярност също нараства. Прочетете какво може да означава сингулярността за нас.

Еволюция на съхранението на данни – инфографика

Еволюция на съхранението на данни – инфографика

Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.

Функционалности на референтните архитектурни слоеве за големи данни

Функционалности на референтните архитектурни слоеве за големи данни

Прочетете блога, за да разберете различни слоеве в архитектурата на големи данни и техните функционалности по най-простия начин.

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече