Hoe FreeBSD te beveiligen met PF Firewall

Deze tutorial laat u zien hoe u uw FreeBSD-server kunt beschermen met OpenBSD PF firewall. We gaan ervan uit dat u een schone FreeBSD-installatie hebt geïmplementeerd door Vultr zonder dat gebruikers zijn toegevoegd. We zullen naast Firewall-configuratie nog een aantal andere dingen doen, die ook de beveiliging van onze FreeBSD-server zullen verbeteren. Vóór de firewallconfiguratie zullen we enkele pakketten installeren aangezien de standaard FreeBSD-installatie wordt geleverd met een minimale set tools en pakketten (wat correct is), om het ons gemakkelijker te maken om te werken.

De standaardshell in FreeBSD is /bin/sh. Dit is een basishell zonder auto-complete functies. We zullen iets beters gebruiken. We zullen installeren zsh.

Installeer eerst deze pakketten:

# 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 is het lsprogramma van Linux. We willen gewoon dezelfde lsopdracht hebben in Linux en FreeBSD.

Voeg een normale gebruiker toe aan het systeem: (vervang john door je gebruikersnaam en vergeet niet om gebruiker toe te voegen aan de wielgroep)

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

Maak een zsh-configuratiebestand aan:

# ee /home/your-username/.zshrc

Kopieer dit naar uw .zshrc-bestand:

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

Voer deze opdracht uit: (vervang John door uw gebruikersnaam)

chown john:john /home/john/.zshrc

Log nu in op de FreeBSD-server met uw gebruikersnaam en wijzig het standaard root-wachtwoord:

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

We hebben geen sendmail nodig. Stop en schakel deze service uit:

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

Vervolgens zullen we ons rc.conf-bestand wijzigen om er natuurlijker uit te zien:

# ee /etc/rc.conf

Verander het om er zo uit te zien:

#----------- 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/hostsBestand bewerken :

# ee /etc/hosts

Voeg uw IP-adres en hostnaam toe:

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

Tijdzone instellen:

# bsdconfig

Schakel indien mogelijk externe toegang voor de rootgebruiker uit. De meeste aanvallen op SSH zullen proberen toegang te krijgen via het root-gebruikersaccount. Maak altijd verbinding met uw gebruikersnaam en vervolgens sumet rooten. Alleen gebruikers uit de wheelgroep kunnen surooten. Daarom hebben we onze gebruiker toegevoegd aan de wielgroep.

Schakel root-login uit:

# ee /etc/ssh/sshd_config

Geef commentaar op deze regel:

PermitRootLogin no

Herstart:

# reboot

Nadat het opnieuw opstarten is voltooid, ziet u een bericht als dit in de Vultr-console:

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

Daarom moeten we de klok handmatig corrigeren. Volg deze opdrachten, eerst suom te rooten:

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

Nu gaan we de firewall configureren. OpenBSD PF is opgenomen in de FreeBSD-kernel, dus u hoeft geen pakketten te installeren.

eeMaak met de editor een bestand /etc/firewall:

# ee /etc/firewall

Voeg dit in: (vervang alle IP-adressen door die van u)

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

Maak een /etc/trustedbestand. In dit bestand zullen we IP's plaatsen die we "vertrouwen".

# ee /etc/trusted

Voeg enkele IP's toe:

# Hosting
1.2.0.0/16

# My friends
1.2.4.0/24

Nu wat uitleg. Ongewenste poorten en ongewenste IP's zijn slechts enkele poorten / IP's die we niet in logboeken willen zien. We hebben dit gedaan met deze regel:

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

Dit zijn slechts standaardinstellingen en u hoeft zich daar geen zorgen over te maken:

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

Deze regel blokkeert uitgaand SMTP-verkeer van uw server (wat de standaard is op Vultr).

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

Behalve dat bruteforcersde rest vrij rechttoe rechtaan is.

# ---- 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 zegt gewoon: Sta toe van <vertrouwde> IP's naar poort 22, maar er kunnen slechts 10 gelijktijdige verbindingen worden gemaakt vanaf één bron-IP. Als het meer dan 10 is, blokkeer dan dit IP-adres en zet het in de tabel bruteforcers. Hetzelfde geldt voor de 20/60 regel. Het betekent een maximum van 20 verbindingen in 60 seconden.

Firewall aanzetten:

# ee /etc/rc.conf

Maak commentaar op deze regels:

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

Herstart:

# reboot 

Als je alles goed hebt gedaan, kun je inloggen en wordt de firewall ingeschakeld. U hoeft niet elke keer dat u het /etc/firewallbestand wijzigt opnieuw op te starten . Gewoon doen:

# /etc/rc.d/pf reload

Zie in realtime wie er verbinding probeert te maken met uw server:

# tcpdump -n -e -ttt -i pflog0

Toon geschiedenis:

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

Kijk of je iemand in de tabel met bruteforcers hebt:

# pfctl -t bruteforcers -T show

En dat is het. U heeft de PF-firewall met succes op de FreeBSD-server geïmplementeerd!


Tags: #BSD

Leave a Comment

Hoe Blacklistd op FreeBSD 11.1 te installeren

Hoe Blacklistd op FreeBSD 11.1 te installeren

Inleiding Elke service die is verbonden met internet is een potentieel doelwit voor brute-force-aanvallen of ongerechtvaardigde toegang. Er zijn tools zoals fail2ba

Hoe Neos CMS op FreeBSD 12 te installeren

Hoe Neos CMS op FreeBSD 12 te installeren

Gebruikt u een ander systeem? Neos is een Content Application Platform met een CMS en een applicatieframework als kern. Deze gids laat u zien hoe u kunt installeren

Stel OpenBSD 5.6 in met volledige schijfversleuteling

Stel OpenBSD 5.6 in met volledige schijfversleuteling

Deze tutorial laat je zien hoe je OpenBSD 5.6 instelt met een volledig gecodeerde schijf op je Vultr VPS. Een opmerking over het versleutelingsgedeelte: de meeste datacenters rond th

Sudo gebruiken op Debian, CentOS en FreeBSD

Sudo gebruiken op Debian, CentOS en FreeBSD

Het gebruik van een sudo-gebruiker om toegang te krijgen tot een server en opdrachten uit te voeren op rootniveau is een veel voorkomende praktijk onder Linux en Unix-systeembeheerder. Het gebruik van een sud

OsTicket installeren op FreeBSD 12

OsTicket installeren op FreeBSD 12

Gebruikt u een ander systeem? osTicket is een open source ticketingsysteem voor klantenondersteuning. De broncode van osTicket wordt openbaar gehost op Github. In deze tutorial

Installeer Varnish 5 With Nginx op FreeBSD 11

Installeer Varnish 5 With Nginx op FreeBSD 11

Varnish is een open source cacheserver die inhoud van een webserver opslaat. Het wordt geïnstalleerd voor een webserver zoals Apache of Nginx. De cachin

Osclass installeren op FreeBSD 12

Osclass installeren op FreeBSD 12

Gebruikt u een ander systeem? Osclass is een open source-project waarmee u eenvoudig een geclassificeerde site kunt maken zonder enige technische kennis. Het is sourc

Hoe X-Cart 5 op FreeBSD 12 te installeren

Hoe X-Cart 5 op FreeBSD 12 te installeren

Gebruikt u een ander systeem? X-Cart is een uiterst flexibel open-source e-commerceplatform met tal van functies en integraties. X-Cart broncode is hoste

Hoe Omeka Classic 2.4 CMS op een FreeBSD 11 FAMP VPS te installeren

Hoe Omeka Classic 2.4 CMS op een FreeBSD 11 FAMP VPS te installeren

Gebruikt u een ander systeem? Omeka Classic 2.4 CMS is een gratis en open source digitaal publicatieplatform en Content Management System (CMS) voor het delen van digita

Wiki.js installeren op FreeBSD 11

Wiki.js installeren op FreeBSD 11

Gebruikt u een ander systeem? Wiki.js is een gratis en open source, moderne wiki-app gebouwd op Node.js, MongoDB, Git en Markdown. De broncode van Wiki.js is openbaar

Directus 6.4 CMS installeren op een FreeBSD 11 FAMP VPS

Directus 6.4 CMS installeren op een FreeBSD 11 FAMP VPS

Gebruikt u een ander systeem? Directus 6.4 CMS is een krachtig en flexibel, gratis en open source Headless Content Management System (CMS) dat ontwikkelaars voorziet

Eenvoudige mailserver met Postfix, Dovecot en Sieve op FreeBSD 10

Eenvoudige mailserver met Postfix, Dovecot en Sieve op FreeBSD 10

Deze tutorial laat je zien hoe je een eenvoudige mailserver op FreeBSD 10 kunt krijgen, met Postfix als MTA, Dovecot als MDA en Sieve voor het sorteren van mail - over een hele

Uw eigen mailserver bouwen met FreeBSD 11

Uw eigen mailserver bouwen met FreeBSD 11

Het runnen van uw eigen e-mailserver kan behoorlijk lonend zijn. U bent de baas over uw gegevens. Het geeft u ook meer flexibiliteit met uw bezorgopties. Echter

Creëer een wisselbestand op FreeBSD 10

Creëer een wisselbestand op FreeBSD 10

Standaard zijn Vultr FreeBSD-servers niet geconfigureerd om swapruimte op te nemen. Als u van plan bent een wegwerp-cloudinstantie te gebruiken, hoeft u dat waarschijnlijk niet te doen

Het formaat van een schijf wijzigen in FreeBSD

Het formaat van een schijf wijzigen in FreeBSD

Het FreeBSD-besturingssysteem gebruikt UFS (Unix File System) als bestandssysteem voor rootpartities; ook wel bekend als freebsd-ufs in het geval van een upgrade

Hoe Flarum Forum op FreeBSD 12 te installeren

Hoe Flarum Forum op FreeBSD 12 te installeren

Gebruikt u een ander systeem? Flarum is een gratis en open source forumsoftware van de volgende generatie die online discussies leuk maakt. De broncode van Flarum wordt gehost o

Configureer MariaDB op OpenBSD 6

Configureer MariaDB op OpenBSD 6

In dit artikel laat Ill zien hoe je MariaDB op OpenBSD 6 installeert en configureert om toegankelijk te zijn voor een gechrooted webserver (Apache of Nginx). Je zult ook

Hoe Craft CMS op FreeBSD 12 te installeren

Hoe Craft CMS op FreeBSD 12 te installeren

Gebruikt u een ander systeem? Introductie Craft CMS is een open source CMS geschreven in PHP. De broncode van Craft CMS wordt gehost op GitHub. Deze gids zal je laten zien

Een eenvoudige website maken op Vultr met OpenBSD en httpd

Een eenvoudige website maken op Vultr met OpenBSD en httpd

Inleiding Het doel van deze gids is om u te laten zien hoe gemakkelijk het is om een ​​homepage voor uw website op Vultr te maken met OpenBSD en httpd. Th creëren

Resize ZFS Storage Pool op FreeBSD / TrueOS

Resize ZFS Storage Pool op FreeBSD / TrueOS

Bij het upgraden van een VPS-exemplaar op Vultr wordt het formaat van een Linux-bestandssysteem automatisch aangepast. Bij het uitvoeren van FreeBSD met het geavanceerde ZFS-bestandssysteem, enige handmatige wor

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Kan AI vechten met toenemend aantal ransomware-aanvallen?

Ransomware-aanvallen nemen toe, maar kan AI helpen het nieuwste computervirus het hoofd te bieden? Is AI het antwoord? Lees hier weten is AI boezem of vloek

ReactOS: is dit de toekomst van Windows?

ReactOS: is dit de toekomst van Windows?

ReactOS, een open source en gratis besturingssysteem is hier met de nieuwste versie. Kan het voldoen aan de behoeften van moderne Windows-gebruikers en Microsoft uitschakelen? Laten we meer te weten komen over deze oude stijl, maar een nieuwere OS-ervaring.

Blijf verbonden via WhatsApp Desktop-app 24 * 7

Blijf verbonden via WhatsApp Desktop-app 24 * 7

WhatsApp heeft eindelijk de Desktop-app voor Mac- en Windows-gebruikers gelanceerd. Nu heb je eenvoudig toegang tot WhatsApp vanuit Windows of Mac. Beschikbaar voor Windows 8+ en Mac OS 10.9+

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Hoe AI procesautomatisering naar een hoger niveau kan tillen?

Lees dit om te weten hoe kunstmatige intelligentie populair wordt onder de kleinschalige bedrijven en hoe het de kansen vergroot om ze te laten groeien en hun concurrenten voorsprong te geven.

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

macOS Catalina 10.15.4 Supplement Update veroorzaakt meer problemen dan het oplost

Onlangs heeft Apple macOS Catalina 10.15.4 uitgebracht, een aanvullende update om problemen op te lossen, maar het lijkt erop dat de update meer problemen veroorzaakt die ertoe leiden dat mac-machines worden gemetseld. Lees dit artikel voor meer informatie

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

13 Commerciële data-extractietools voor big data

Wat is een logboekbestandssysteem en hoe werkt het?

Wat is een logboekbestandssysteem en hoe werkt het?

Onze computer slaat alle gegevens op een georganiseerde manier op, het zogenaamde Journaling-bestandssysteem. Het is een efficiënte methode waarmee de computer bestanden kan zoeken en weergeven zodra u op zoeken drukt.https://wethegeek.com/?p=94116&preview=true

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Technologische singulariteit: een verre toekomst van de menselijke beschaving?

Naarmate de wetenschap zich snel ontwikkelt en veel van onze inspanningen overneemt, nemen ook de risico's toe om onszelf te onderwerpen aan een onverklaarbare singulariteit. Lees, wat singulariteit voor ons kan betekenen.

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

Een inzicht in 26 Big Data-analysetechnieken: deel 1

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

De impact van kunstmatige intelligentie in de gezondheidszorg 2021

AI in de zorg heeft de afgelopen decennia grote sprongen gemaakt. De toekomst van AI in de gezondheidszorg groeit dus nog steeds met de dag.