Kako zavarovati FreeBSD s požarnim zidom PF

Kako zavarovati FreeBSD s požarnim zidom PF

Ta vadnica vam bo pokazala, kako zaščitite svoj strežnik FreeBSD s požarnim zidom OpenBSD PF. Predvidevamo, da imate čisto namestitev FreeBSD, ki jo je namestil Vultr, brez dodanih uporabnikov. Poleg konfiguracije požarnega zidu bomo naredili še nekaj drugih stvari, ki bodo okrepile tudi varnost našega strežnika FreeBSD. Pred konfiguracijo požarnega zidu bomo namestili nekaj paketov, saj je privzeta namestitev FreeBSD opremljena z minimalnim naborom orodij in paketov (kar je pravilno), da nam olajša delo.

Privzeta lupina v FreeBSD je /bin/sh. To je osnovna lupina brez funkcij samodokončanja. Uporabili bomo nekaj boljšega. Namestili bomo zsh.

Najprej namestite te pakete:

# 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 iz Linuxa. Želimo le imeti enak lsukaz v Linuxu in FreeBSD.

Dodajte običajnega uporabnika v sistem: (zamenjajte john s svojim uporabniškim imenom in ne pozabite dodati uporabnika v skupino koles)

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

Ustvarite konfiguracijsko datoteko zsh:

# ee /home/your-username/.zshrc

Kopirajte to v svojo datoteko .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

Zaženite ta ukaz: (zamenjajte john s svojim uporabniškim imenom)

chown john:john /home/john/.zshrc

Zdaj se prijavite v strežnik FreeBSD s svojim uporabniškim imenom in spremenite privzeto root geslo:

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

Ne potrebujemo sendmaila. Ustavite in onemogočite to storitev:

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

Nato bomo spremenili našo datoteko rc.conf, da bo videti bolj naravno:

# ee /etc/rc.conf

Spremenite, da bo videti takole:

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

Uredi /etc/hostsdatoteko:

# ee /etc/hosts

Dodajte svoj IP naslov in ime gostitelja:

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

Nastavi časovni pas:

# bsdconfig

Kadar koli lahko, onemogočite oddaljeni dostop za root uporabnika. Večina napadov na SSH bo poskušala dostopati prek uporabniškega računa root. Vedno se povežite s svojim uporabniškim imenom in nato suz root. Samo uporabniki iz wheelskupine lahko surootajo. Zato smo v skupino koles dodali našega uporabnika.

Onemogoči root prijavo:

# ee /etc/ssh/sshd_config

Odkomentiraj to vrstico:

PermitRootLogin no

Ponovni zagon:

# reboot

Ko se vnovični zagon konča, boste v konzoli Vultr videli takšno sporočilo:

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

Zato moramo uro popravljati ročno. Sledite tem ukazom, najprej suza root:

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

Zdaj bomo konfigurirali požarni zid. OpenBSD PF je vključen v jedro FreeBSD, tako da vam ni treba namestiti nobenih paketov.

Z eeurejevalnikom ustvarite datoteko /etc/firewall:

# ee /etc/firewall

Vstavite to: (zamenjajte vse naslove IP s 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

Ustvari /etc/trusteddatoteko. V to datoteko bomo dali IP-je, ki jim "zaupamo".

# ee /etc/trusted

Dodajte nekaj IP-jev:

# Hosting
1.2.0.0/16

# My friends
1.2.4.0/24

Zdaj pa nekaj pojasnil. Neželena vrata in neželeni naslovi so le nekatera vrata/IP-ji, ki jih ne želimo videti v dnevnikih. To smo naredili s tem pravilom:

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

To so samo privzete nastavitve in za to vam ni treba skrbeti:

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

To pravilo blokira odhodni promet SMTP iz vašega strežnika (kar je privzeto na Vultru).

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

Razen bruteforcersostalo je precej naravnost.

# ---- 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 samo pravi: Dovoli od <zaupanja vrednih> IP-jev do vrat 22, vendar je z enega izvornega IP-ja mogoče vzpostaviti samo 10 sočasnih povezav. Če je več kot 10, blokirajte ta IP in ga vstavite v tabele bruteforcer. Enako velja za pravilo 20/60. To pomeni največ 20 povezav v 60 sekundah.

Omogoči požarni zid:

# ee /etc/rc.conf

Odkomentiraj te vrstice:

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

Ponovni zagon:

# reboot 

Če ste vse naredili pravilno, se boste lahko prijavili in požarni zid bo omogočen. Ni vam treba znova zagnati vsakič, ko spremenite /etc/firewalldatoteko. Samo naredi:

# /etc/rc.d/pf reload

Oglejte si, kdo se poskuša povezati z vašim strežnikom v realnem času:

# tcpdump -n -e -ttt -i pflog0

Pokaži zgodovino:

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

Poglejte, če imate koga v mizi bruteforcerjev:

# pfctl -t bruteforcers -T show

In to je to. Uspešno ste implementirali požarni zid PF na strežniku 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

Kako namestiti Wiki.js na FreeBSD 11

Kako namestiti Wiki.js na FreeBSD 11

Uporaba drugega sistema? Wiki.js je brezplačna odprtokodna sodobna wiki aplikacija, zgrajena na Node.js, MongoDB, Git in Markdown. Izvorna koda Wiki.js je javna

Kako namestiti Pagekit 1.0 CMS na FreeBSD 11 FAMP VPS

Kako namestiti Pagekit 1.0 CMS na FreeBSD 11 FAMP VPS

Uporaba drugega sistema? Pagekit 1.0 CMS je lep, modularen, razširljiv in lahek, brezplačen in odprtokoden sistem za upravljanje vsebine (CMS) z

Kako namestiti MODX Revolution na FreeBSD 11 FAMP VPS

Kako namestiti MODX Revolution na FreeBSD 11 FAMP VPS

Uporaba drugega sistema? MODX Revolution je hiter, prilagodljiv, razširljiv, odprtokoden sistem za upravljanje vsebin (CMS) za podjetja, napisan v PHP. To i

Namestitev OpenBSD 5.5 64-bit

Namestitev OpenBSD 5.5 64-bit

Ta članek vas vodi skozi nastavitev OpenBSD 5.5 (64-bit) na KVM z Vultr VPS. 1. korak. Prijavite se v nadzorno ploščo Vultr. 2. korak. Kliknite RAZPOSTAVI

Kako namestiti osTicket na FreeBSD 12

Kako namestiti osTicket na FreeBSD 12

Uporaba drugega sistema? osTicket je odprtokodni sistem za izdajo vstopnic za podporo strankam. Izvorna koda osTicket je javno gostovana na Githubu. V tej vadnici

Kako namestiti Flarum Forum na FreeBSD 12

Kako namestiti Flarum Forum na FreeBSD 12

Uporaba drugega sistema? Flarum je brezplačna in odprtokodna programska oprema za forume naslednje generacije, ki naredi spletno razpravo zabavno. Izvorna koda Flarum gostuje o

Kako omogočiti TLS 1.3 v Nginxu na FreeBSD 12

Kako omogočiti TLS 1.3 v Nginxu na FreeBSD 12

Uporaba drugega sistema? TLS 1.3 je različica protokola Transport Layer Security (TLS), ki je bil objavljen leta 2018 kot predlagani standard v RFC 8446

Namestite WordPress na OpenBSD 6.2

Namestite WordPress na OpenBSD 6.2

Uvod WordPress je prevladujoči sistem za upravljanje vsebin na internetu. Poganja vse, od blogov do zapletenih spletnih mest z dinamično vsebino

Kako namestiti Subrion 4.1 CMS na FreeBSD 11 FAMP VPS

Kako namestiti Subrion 4.1 CMS na FreeBSD 11 FAMP VPS

Uporaba drugega sistema? Subrion 4.1 CMS je zmogljiv in prilagodljiv odprtokodni sistem za upravljanje vsebine (CMS), ki prinaša intuitivno in jasno vsebino.

Kako konfigurirati DJBDNS na FreeBSD

Kako konfigurirati DJBDNS na FreeBSD

Ta vadnica vam bo pokazala, kako konfigurirati storitev DNS, ki je enostavna za vzdrževanje, enostavna za konfiguriranje in ki je na splošno bolj varna kot klasični BIN

Kako namestiti sklad Nginx, MySQL in PHP (FEMP) na FreeBSD 12.0

Kako namestiti sklad Nginx, MySQL in PHP (FEMP) na FreeBSD 12.0

Sklad FEMP, ki je primerljiv s skladom LEMP v Linuxu, je zbirka odprtokodne programske opreme, ki je običajno nameščena skupaj, da omogoči FreeBS

Namestitev MongoDB na FreeBSD 10

Namestitev MongoDB na FreeBSD 10

MongoDB je vrhunska baza podatkov NoSQL, ki se pogosto uporablja v novejših spletnih aplikacijah. Zagotavlja visoko zmogljive poizvedbe, razdeljevanje in podvajanje

Kako namestiti Monico na FreeBSD 12

Kako namestiti Monico na FreeBSD 12

Uporaba drugega sistema? Monica je odprtokodni sistem za upravljanje osebnih odnosov. Pomislite na to kot na CRM (priljubljeno orodje, ki ga uporabljajo prodajne ekipe v th

OpenBSD kot rešitev za e-trgovino s PrestaShop in Apache

OpenBSD kot rešitev za e-trgovino s PrestaShop in Apache

Uvod Ta vadnica prikazuje OpenBSD kot rešitev za e-trgovino z uporabo PrestaShop in Apache. Apache je potreben, ker ima PrestaShop zapleten UR

Namestitev Fork CMS na FreeBSD 12

Namestitev Fork CMS na FreeBSD 12

Uporaba drugega sistema? Fork je odprtokodni CMS, napisan v PHP. Izvorna koda Forks gostuje na GitHubu. Ta priročnik vam bo pokazal, kako namestiti Fork CM

Kako namestiti Directus 6.4 CMS na FreeBSD 11 FAMP VPS

Kako namestiti Directus 6.4 CMS na FreeBSD 11 FAMP VPS

Uporaba drugega sistema? Directus 6.4 CMS je zmogljiv in prilagodljiv, brezplačen in odprtokoden Headless Content Management System (CMS), ki omogoča razvijalcem

Izboljšanje varnosti za FreeBSD z uporabo IPFW in SSHGuard

Izboljšanje varnosti za FreeBSD z uporabo IPFW in SSHGuard

VPS strežniki so pogosto tarča vsiljivcev. Pogosta vrsta napada se prikaže v sistemskih dnevnikih kot na stotine nepooblaščenih poskusov prijave ssh. Postavitev

Nastavite httpd v OpenBSD

Nastavite httpd v OpenBSD

Uvod OpenBSD 5.6 je predstavil nov demon, imenovan httpd, ki podpira CGI (prek FastCGI) in TLS. Za namestitev novega http ni potrebno dodatno delo

Nastavite iRedMail na FreeBSD 10

Nastavite iRedMail na FreeBSD 10

Ta vadnica vam bo pokazala, kako namestiti skupinsko programsko opremo iRedMail na novo namestitev FreeBSD 10. Uporabiti morate strežnik z vsaj enim gigabajtom o

Vzpon strojev: aplikacije AI v resničnem svetu

Vzpon strojev: aplikacije AI v resničnem svetu

Umetna inteligenca ni v prihodnosti, tukaj je prav v sedanjosti. V tem blogu preberite, kako so aplikacije umetne inteligence vplivale na različne sektorje.

DDOS napadi: kratek pregled

DDOS napadi: kratek pregled

Ste tudi vi žrtev DDOS napadov in ste zmedeni glede načinov preprečevanja? Preberite ta članek, če želite rešiti svoja vprašanja.

Ste se kdaj vprašali, kako hekerji zaslužijo denar?

Ste se kdaj vprašali, kako hekerji zaslužijo denar?

Morda ste že slišali, da hekerji zaslužijo veliko denarja, a ste se kdaj vprašali, kako zaslužijo takšen denar? razpravljajmo.

Revolucionarni Googlovi izumi, ki vam bodo olajšali življenje.

Revolucionarni Googlovi izumi, ki vam bodo olajšali življenje.

Ali želite videti revolucionarne izume Googla in kako so ti izumi danes spremenili življenje vsakega človeka? Nato preberite v blogu in si oglejte Googlove izume.

Friday Essential: Kaj se je zgodilo z avtomobili, ki jih poganja umetna inteligenca?

Friday Essential: Kaj se je zgodilo z avtomobili, ki jih poganja umetna inteligenca?

Koncept samovozečih avtomobilov, ki zapeljejo na ceste s pomočjo umetne inteligence, so sanje, ki jih imamo že nekaj časa. A kljub številnim obljubam jih ni nikjer. Preberite ta blog, če želite izvedeti več…

Tehnološka singularnost: oddaljena prihodnost človeške civilizacije?

Tehnološka singularnost: oddaljena prihodnost človeške civilizacije?

Ker se znanost hitro razvija in prevzame veliko naših prizadevanj, se povečuje tudi tveganje, da se podvržemo nerazložljivi singularnosti. Preberite, kaj bi za nas lahko pomenila singularnost.

Razvoj shranjevanja podatkov – Infografika

Razvoj shranjevanja podatkov – Infografika

Metode shranjevanja podatkov so se lahko razvijale od rojstva podatkov. Ta blog pokriva razvoj shranjevanja podatkov na podlagi infografike.

Funkcionalnosti slojev referenčne arhitekture velikih podatkov

Funkcionalnosti slojev referenčne arhitekture velikih podatkov

Preberite blog, če želite na najpreprostejši način spoznati različne plasti v arhitekturi velikih podatkov in njihove funkcionalnosti.

6 neverjetnih prednosti pametnih naprav za dom v našem življenju

6 neverjetnih prednosti pametnih naprav za dom v našem življenju

V tem digitalno vodenem svetu so pametne naprave za dom postale ključni del življenja. Tukaj je nekaj neverjetnih prednosti pametnih naprav za dom o tem, kako naredijo naše življenje vredno življenja in poenostavijo.

Posodobitev dodatka macOS Catalina 10.15.4 povzroča več težav kot jih rešuje

Posodobitev dodatka macOS Catalina 10.15.4 povzroča več težav kot jih rešuje

Pred kratkim je Apple izdal macOS Catalina 10.15.4 dopolnilno posodobitev za odpravo težav, vendar se zdi, da posodobitev povzroča več težav, ki vodijo do opečenja računalnikov Mac. Preberite ta članek, če želite izvedeti več