Ako zabezpečiť FreeBSD pomocou brány PF Firewall

Ako zabezpečiť FreeBSD pomocou brány PF Firewall

Tento tutoriál vám ukáže, ako chrániť váš server FreeBSD pomocou brány firewall OpenBSD PF. Budeme predpokladať, že máte čistú inštaláciu FreeBSD nasadenú Vultrom bez pridaných používateľov. Okrem konfigurácie Firewallu urobíme niekoľko ďalších vecí, ktoré tiež posilnia bezpečnosť nášho servera FreeBSD. Pred konfiguráciou firewallu nainštalujeme niektoré balíky, pretože predvolená inštalácia FreeBSD prichádza s minimálnou sadou nástrojov a balíkov (čo je správne), aby sme si uľahčili prácu.

Predvolený shell vo FreeBSD je /bin/sh. Toto je základný shell bez funkcií automatického dopĺňania. Použijeme niečo lepšie. Nainštalujeme zsh.

Najprv nainštalujte tieto balíčky:

# 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 je lsprogram z Linuxu. Chceme mať rovnaký lspríkaz v Linuxe a FreeBSD.

Pridajte normálneho užívateľa do systému: (nahraďte john svojim užívateľským menom a nezabudnite pridať užívateľa do skupiny kolies)

# 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!

Vytvorte konfiguračný súbor zsh:

# ee /home/your-username/.zshrc

Skopírujte to do svojho súboru .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

Spustite tento príkaz: (nahraďte Jána svojím užívateľským menom)

chown john:john /home/john/.zshrc

Teraz sa prihláste na server FreeBSD pomocou svojho používateľského mena a zmeňte predvolené heslo používateľa root:

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

Nepotrebujeme sendmail. Zastavte a zakážte túto službu:

<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.

Ďalej zmeníme náš súbor rc.conf, aby vyzeral prirodzenejšie:

# ee /etc/rc.conf

Zmeňte ho, aby vyzeral takto:

#----------- 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"

Upraviť /etc/hostssúbor:

# ee /etc/hosts

Pridajte svoju IP adresu a názov hostiteľa:

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

Nastaviť časové pásmo:

# bsdconfig

Kedykoľvek je to možné, zakážte vzdialený prístup pre používateľa root. Väčšina útokov na SSH sa pokúsi o prístup cez účet root. Vždy sa pripojte pomocou svojho používateľského mena a potom suku rootu. Iba používatelia zo wheelskupiny môžu surootovať. Preto sme pridali nášho používateľa do skupiny kolies.

Zakázať prihlásenie root:

# ee /etc/ssh/sshd_config

Odkomentujte tento riadok:

PermitRootLogin no

Reštartovať:

# reboot

Po dokončení reštartu sa v konzole Vultr zobrazí správa podobná tejto:

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

Preto musíme hodiny korigovať ručne. Postupujte podľa týchto príkazov, najprv surootujte:

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

Teraz nakonfigurujeme firewall. OpenBSD PF je súčasťou jadra FreeBSD, takže nemusíte inštalovať žiadne balíčky.

Pomocou eeeditora vytvorte súbor /etc/firewall:

# ee /etc/firewall

Vložte toto: (nahraďte všetky IP adresy svojimi)

#######################################################################
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

Vytvorte /etc/trustedsúbor. Do tohto súboru vložíme IP adresy, ktorým „dôverujeme“.

# ee /etc/trusted

Pridajte nejaké IP adresy:

# Hosting
1.2.0.0/16

# My friends
1.2.4.0/24

Teraz nejaké vysvetlenie. Nevyžiadané porty a nevyžiadané IP adresy sú len niektoré porty/IP, ktoré nechceme vidieť v protokoloch. Urobili sme to podľa tohto pravidla:

# ---- 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

Toto sú len predvolené nastavenia a nemusíte sa o to starať:

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

Toto pravidlo blokuje odchádzajúce SMTP prenosy z vášho servera (čo je predvolené nastavenie na Vultr).

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

Ibaže bruteforcerszvyšok je celkom priamočiary.

# ---- 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 len hovorí: Povoliť z <dôveryhodných> IP na port 22, ale z jednej zdrojovej IP je možné vytvoriť iba 10 súbežných pripojení. Ak je viac ako 10, zablokujte túto IP a vložte ju do tabuľky bruteforcers. To isté platí pre pravidlo 20/60. To znamená maximálne 20 spojení za 60 sekúnd.

Povoliť firewall:

# ee /etc/rc.conf

Odkomentujte tieto riadky:

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

Reštartovať:

# reboot 

Ak ste urobili všetko správne, budete sa môcť prihlásiť a firewall bude povolený. Nemusíte reštartovať zakaždým, keď zmeníte /etc/firewallsúbor. Urob:

# /etc/rc.d/pf reload

Zistite, kto sa pokúša pripojiť k vášmu serveru v reálnom čase:

# tcpdump -n -e -ttt -i pflog0

Zobraziť históriu:

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

Pozrite sa, či máte niekoho v tabuľke bruteforcers:

# pfctl -t bruteforcers -T show

A to je všetko. Úspešne ste implementovali PF firewall na serveri FreeBSD!

Tags: #BSD

How to Install Tiny Tiny RSS Reader on a FreeBSD 11 FAMP VPS

How to Install Tiny Tiny RSS Reader on a FreeBSD 11 FAMP VPS

Using a Different System? Tiny Tiny RSS Reader is a free and open source self-hosted web-based news feed (RSS/Atom) reader and aggregator, designed to allo

Ako nainštalovať Wiki.js na FreeBSD 11

Ako nainštalovať Wiki.js na FreeBSD 11

Používate iný systém? Wiki.js je bezplatná a open source moderná wiki aplikácia postavená na Node.js, MongoDB, Git a Markdown. Zdrojový kód Wiki.js je verejný

Ako nainštalovať Pagekit 1.0 CMS na FreeBSD 11 FAMP VPS

Ako nainštalovať Pagekit 1.0 CMS na FreeBSD 11 FAMP VPS

Používate iný systém? Pagekit 1.0 CMS je krásny, modulárny, rozšíriteľný a ľahký, bezplatný a open source systém na správu obsahu (CMS) s

Ako nainštalovať MODX Revolution na FreeBSD 11 FAMP VPS

Ako nainštalovať MODX Revolution na FreeBSD 11 FAMP VPS

Používate iný systém? MODX Revolution je rýchly, flexibilný, škálovateľný, open source podnikový systém správy obsahu (CMS) napísaný v PHP. To i

Nastavenie OpenBSD 5.5 64-bit

Nastavenie OpenBSD 5.5 64-bit

Tento článok vás prevedie nastavením OpenBSD 5.5 (64-bit) na KVM s Vultr VPS. Krok 1. Prihláste sa do ovládacieho panela Vultr. Krok 2. Kliknite na DEPLOY

Ako nainštalovať osTicket na FreeBSD 12

Ako nainštalovať osTicket na FreeBSD 12

Používate iný systém? osTicket je open-source systém podpory zákazníkov. Zdrojový kód osTicket je verejne hosťovaný na Github. V tomto návode

Ako nainštalovať Flarum Forum na FreeBSD 12

Ako nainštalovať Flarum Forum na FreeBSD 12

Používate iný systém? Flarum je bezplatný a otvorený softvér fóra novej generácie, vďaka ktorému je online diskusia zábavná. Zdrojový kód Flarum je hostovaný o

Ako povoliť TLS 1.3 v Nginx na FreeBSD 12

Ako povoliť TLS 1.3 v Nginx na FreeBSD 12

Používate iný systém? TLS 1.3 je verzia protokolu Transport Layer Security (TLS), ktorý bol publikovaný v roku 2018 ako navrhovaný štandard v RFC 8446.

Nainštalujte WordPress na OpenBSD 6.2

Nainštalujte WordPress na OpenBSD 6.2

Úvod WordPress je dominantný redakčný systém na internete. Poháňa všetko od blogov až po zložité webové stránky s dynamickým obsahom

Ako nainštalovať Subrion 4.1 CMS na FreeBSD 11 FAMP VPS

Ako nainštalovať Subrion 4.1 CMS na FreeBSD 11 FAMP VPS

Používate iný systém? Subrion 4.1 CMS je výkonný a flexibilný open source systém na správu obsahu (CMS), ktorý prináša intuitívny a prehľadný obsah

Ako nakonfigurovať DJBDNS na FreeBSD

Ako nakonfigurovať DJBDNS na FreeBSD

Tento tutoriál vám ukáže, ako nakonfigurovať službu DNS, ktorá sa ľahko udržiava, ľahko konfiguruje a je vo všeobecnosti bezpečnejšia ako klasický BIN

Ako nainštalovať zásobník Nginx, MySQL a PHP (FEMP) na FreeBSD 12.0

Ako nainštalovať zásobník Nginx, MySQL a PHP (FEMP) na FreeBSD 12.0

Zásobník FEMP, ktorý je porovnateľný so zásobníkom LEMP v systéme Linux, je kolekcia softvéru s otvoreným zdrojovým kódom, ktorý sa zvyčajne inštaluje spoločne, aby umožnil FreeBS.

Inštalácia MongoDB na FreeBSD 10

Inštalácia MongoDB na FreeBSD 10

MongoDB je prvotriedna databáza NoSQL, ktorá sa často používa v novších webových aplikáciách. Poskytuje vysokovýkonné dotazy, zdieľanie a replikáciu

Ako nainštalovať Monicu na FreeBSD 12

Ako nainštalovať Monicu na FreeBSD 12

Používate iný systém? Monica je open source systém riadenia osobných vzťahov. Predstavte si to ako CRM (populárny nástroj používaný predajnými tímami v th

OpenBSD ako riešenie elektronického obchodu s PrestaShop a Apache

OpenBSD ako riešenie elektronického obchodu s PrestaShop a Apache

Úvod Tento tutoriál demonštruje OpenBSD ako riešenie pre elektronický obchod využívajúce PrestaShop a Apache. Vyžaduje sa Apache, pretože PrestaShop má zložité UR

Inštalácia Fork CMS na FreeBSD 12

Inštalácia Fork CMS na FreeBSD 12

Používate iný systém? Fork je open source CMS napísaný v PHP. Zdrojový kód Forks je hostený na GitHub. Táto príručka vám ukáže, ako nainštalovať Fork CM

Ako nainštalovať Directus 6.4 CMS na FreeBSD 11 FAMP VPS

Ako nainštalovať Directus 6.4 CMS na FreeBSD 11 FAMP VPS

Používate iný systém? Directus 6.4 CMS je výkonný a flexibilný, bezplatný a open source systém správy obsahu bez hlavy (CMS), ktorý poskytuje vývojárom

Zvýšenie bezpečnosti pre FreeBSD pomocou IPFW a SSHGuard

Zvýšenie bezpečnosti pre FreeBSD pomocou IPFW a SSHGuard

Servery VPS sú často cieľom útočníkov. Bežný typ útoku sa objavuje v systémových protokoloch ako stovky neoprávnených pokusov o prihlásenie cez ssh. Nastavenie

Nastavte httpd v OpenBSD

Nastavte httpd v OpenBSD

Úvod OpenBSD 5.6 predstavilo nového démona s názvom httpd, ktorý podporuje CGI (cez FastCGI) a TLS. Na inštaláciu nového http nie je potrebná žiadna ďalšia práca

Nastavte iRedMail na FreeBSD 10

Nastavte iRedMail na FreeBSD 10

Tento tutoriál vám ukáže, ako nainštalovať groupware iRedMail na novú inštaláciu FreeBSD 10. Mali by ste použiť server s aspoň jedným gigabajtom o

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Umelá inteligencia nie je v budúcnosti, je tu priamo v súčasnosti V tomto blogu si prečítajte, ako aplikácie umelej inteligencie ovplyvnili rôzne sektory.

Útoky DDOS: Stručný prehľad

Útoky DDOS: Stručný prehľad

Ste aj vy obeťou DDOS útokov a máte zmätok ohľadom metód prevencie? Ak chcete vyriešiť svoje otázky, prečítajte si tento článok.

Zaujímalo vás niekedy, ako hackeri zarábajú peniaze?

Zaujímalo vás niekedy, ako hackeri zarábajú peniaze?

Možno ste už počuli, že hackeri zarábajú veľa peňazí, ale premýšľali ste niekedy nad tým, ako môžu zarábať také peniaze? poďme diskutovať.

Revolučné vynálezy od spoločnosti Google, ktoré vám uľahčia život.

Revolučné vynálezy od spoločnosti Google, ktoré vám uľahčia život.

Chcete vidieť revolučné vynálezy od Google a ako tieto vynálezy zmenili život každého dnešného človeka? Potom si prečítajte na blogu a pozrite si vynálezy spoločnosti Google.

Piatok Essential: Čo sa stalo s autami poháňanými AI?

Piatok Essential: Čo sa stalo s autami poháňanými AI?

Koncept samoriadených áut vyraziť na cesty s pomocou umelej inteligencie je snom, ktorý máme už nejaký čas. Ale napriek niekoľkým prísľubom ich nikde nevidno. Prečítajte si tento blog a dozviete sa viac…

Technologická singularita: vzdialená budúcnosť ľudskej civilizácie?

Technologická singularita: vzdialená budúcnosť ľudskej civilizácie?

Ako sa veda vyvíja rýchlym tempom a preberá veľa nášho úsilia, zvyšuje sa aj riziko, že sa vystavíme nevysvetliteľnej singularite. Prečítajte si, čo pre nás môže znamenať singularita.

Vývoj ukladania dát – Infografika

Vývoj ukladania dát – Infografika

Spôsoby ukladania údajov sa môžu vyvíjať už od zrodu údajov. Tento blog sa zaoberá vývojom ukladania údajov na základe infografiky.

Funkcionality vrstiev referenčnej architektúry veľkých dát

Funkcionality vrstiev referenčnej architektúry veľkých dát

Prečítajte si blog, aby ste čo najjednoduchším spôsobom spoznali rôzne vrstvy architektúry veľkých dát a ich funkcie.

6 úžasných výhod toho, že máme v živote inteligentné domáce zariadenia

6 úžasných výhod toho, že máme v živote inteligentné domáce zariadenia

V tomto digitálnom svete sa inteligentné domáce zariadenia stali kľúčovou súčasťou života. Tu je niekoľko úžasných výhod inteligentných domácich zariadení o tom, ako robia náš život, ktorý stojí za to žiť, a ktorý zjednodušujú.

Aktualizácia doplnku macOS Catalina 10.15.4 spôsobuje viac problémov, ako ich rieši

Aktualizácia doplnku macOS Catalina 10.15.4 spôsobuje viac problémov, ako ich rieši

Spoločnosť Apple nedávno vydala doplnkovú aktualizáciu macOS Catalina 10.15.4 na opravu problémov, ale zdá sa, že táto aktualizácia spôsobuje ďalšie problémy, ktoré vedú k blokovaniu počítačov Mac. Prečítajte si tento článok a dozviete sa viac