So sichern Sie FreeBSD mit der PF Firewall

Dieses Tutorial zeigt Ihnen, wie Sie Ihren FreeBSD-Server mithilfe der OpenBSD PF-Firewall schützen. Wir gehen davon aus, dass Sie eine saubere FreeBSD-Installation von Vultr ohne hinzugefügte Benutzer haben. Neben der Firewall-Konfiguration werden wir noch einige andere Dinge tun, die auch die Sicherheit unseres FreeBSD-Servers erhöhen. Vor der Firewall-Konfiguration werden einige Pakete installiert, da die Standard-FreeBSD-Installation nur einen minimalen Satz von Tools und Paketen enthält (was korrekt ist), um uns die Arbeit zu erleichtern.

Die Standard-Shell in FreeBSD ist /bin/sh. Dies ist eine grundlegende Shell ohne automatische Vervollständigungsfunktionen. Wir werden etwas besseres verwenden. Wir werden installieren zsh.

Installieren Sie zunächst diese 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 ist das lsProgramm von Linux. Wir wollen nur den gleichen lsBefehl in Linux und FreeBSD haben.

Fügen Sie dem System einen normalen Benutzer hinzu: (Ersetzen Sie John durch Ihren Benutzernamen und vergessen Sie nicht, einen Benutzer zur Radgruppe hinzuzufügen.)

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

Erstellen Sie eine zsh-Konfigurationsdatei:

# ee /home/your-username/.zshrc

Kopieren Sie dies in Ihre .zshrc-Datei:

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

Führen Sie diesen Befehl aus: (Ersetzen Sie John durch Ihren Benutzernamen)

chown john:john /home/john/.zshrc

Melden Sie sich jetzt mit Ihrem Benutzernamen beim FreeBSD-Server an und ändern Sie das Standard-Root-Passwort:

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

Wir brauchen keine Sendmail. Beenden und deaktivieren Sie diesen Dienst:

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

Als nächstes werden wir unsere rc.conf-Datei so ändern, dass sie natürlicher aussieht:

# ee /etc/rc.conf

Ändern Sie es so, dass es so aussieht:

#----------- 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/hostsDatei bearbeiten :

# ee /etc/hosts

Fügen Sie Ihre IP-Adresse und Ihren Hostnamen hinzu:

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

Zeitzone einstellen:

# bsdconfig

Deaktivieren Sie nach Möglichkeit den Remotezugriff für den Root-Benutzer. Die meisten Angriffe auf SSH versuchen, über das Root-Benutzerkonto darauf zuzugreifen. Verbinde dich immer mit deinem Benutzernamen und dann sumit root. Nur Benutzer aus der wheelGruppe können surooten. Deshalb haben wir unseren Benutzer zur Radgruppe hinzugefügt.

Root-Login deaktivieren:

# ee /etc/ssh/sshd_config

Kommentieren Sie diese Zeile aus:

PermitRootLogin no

Neustart:

# reboot

Nach Abschluss des Neustarts wird in der Vultr-Konsole eine Meldung wie die folgende angezeigt:

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

Deshalb müssen wir die Uhr manuell korrigieren. Befolgen Sie diese Befehle, um zuerst suzu rooten:

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

Jetzt konfigurieren wir die Firewall. OpenBSD PF ist im FreeBSD-Kernel enthalten, sodass Sie keine Pakete installieren müssen.

eeErstellen Sie mit dem Editor eine Datei /etc/firewall:

# ee /etc/firewall

Fügen Sie Folgendes ein: (Ersetzen Sie alle IP-Adressen durch Ihre)

#######################################################################
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/trustedDatei erstellen . In diese Datei werden IPs eingefügt, denen wir "vertrauen".

# ee /etc/trusted

Fügen Sie einige IPs hinzu:

# Hosting
1.2.0.0/16

# My friends
1.2.4.0/24

Nun eine Erklärung. Junk-Ports und Junk-IPs sind nur einige Ports / IPs, die wir nicht in Protokollen sehen möchten. Wir haben dies mit dieser Regel getan:

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

Dies sind nur Standardeinstellungen, und Sie müssen sich darüber keine Sorgen machen:

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

Diese Regel blockiert ausgehenden SMTP-Verkehr von Ihrem Server (dies ist die Standardeinstellung bei Vultr).

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

Nur dass bruteforcersder Rest ziemlich einfach ist.

# ---- 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 sagt nur: Erlaube von <vertrauenswürdigen> IPs zu Port 22, aber es können nur 10 gleichzeitige Verbindungen von einer Quell-IP hergestellt werden. Wenn es mehr als 10 ist, blockieren Sie diese IP und legen Sie sie in Tabelle Bruteforcers. Gleiches gilt für die 20/60-Regel. Dies bedeutet maximal 20 Verbindungen in 60 Sekunden.

Firewall aktivieren:

# ee /etc/rc.conf

Kommentieren Sie diese Zeilen aus:

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

Neustart:

# reboot 

Wenn Sie alles richtig gemacht haben, können Sie sich anmelden und die Firewall wird aktiviert. Sie müssen nicht jedes Mal neu starten, wenn Sie die /etc/firewallDatei ändern . Mach einfach:

# /etc/rc.d/pf reload

Sehen Sie in Echtzeit, wer versucht, eine Verbindung zu Ihrem Server herzustellen:

# tcpdump -n -e -ttt -i pflog0

Zeige die Geschichte:

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

Sehen Sie, ob Sie jemanden in der Bruteforcer-Tabelle haben:

# pfctl -t bruteforcers -T show

Und das ist es. Sie haben die PF-Firewall erfolgreich auf dem FreeBSD-Server implementiert!


Tags: #BSD

Leave a Comment

So installieren Sie Blacklistd unter FreeBSD 11.1

So installieren Sie Blacklistd unter FreeBSD 11.1

Einführung Jeder Dienst, der mit dem Internet verbunden ist, ist ein potenzielles Ziel für Brute-Force-Angriffe oder ungerechtfertigten Zugriff. Es gibt Tools wie fail2ba

So installieren Sie Osclass unter FreeBSD 12

So installieren Sie Osclass unter FreeBSD 12

Verwenden Sie ein anderes System? Osclass ist ein Open Source-Projekt, mit dem Sie auf einfache Weise eine klassifizierte Site ohne technisches Wissen erstellen können. Seine Quelle

So installieren Sie Couch CMS 2.0 auf einem FreeBSD 11 FAMP VPS

So installieren Sie Couch CMS 2.0 auf einem FreeBSD 11 FAMP VPS

Verwenden Sie ein anderes System? Couch CMS ist ein einfaches und flexibles, kostenloses und Open-Source-Content-Management-System (CMS), mit dem Webdesigner entwerfen können

So installieren Sie Lychee 3.1 Photo Album auf einem FreeBSD 11 FAMP VPS

So installieren Sie Lychee 3.1 Photo Album auf einem FreeBSD 11 FAMP VPS

Verwenden Sie ein anderes System? Lychee 3.1 Photo Album ist ein einfaches und flexibles, kostenloses Open-Source-Tool zur Fotoverwaltung, das auf einem VPS-Server ausgeführt wird. Es wird installiert

Installieren von Fork CMS unter FreeBSD 12

Installieren von Fork CMS unter FreeBSD 12

Verwenden Sie ein anderes System? Fork ist ein Open-Source-CMS, das in PHP geschrieben wurde. Der Forks-Quellcode wird auf GitHub gehostet. Diese Anleitung zeigt Ihnen, wie Sie Fork CM installieren

Erstellen Sie eine Auslagerungsdatei unter FreeBSD 10

Erstellen Sie eine Auslagerungsdatei unter FreeBSD 10

Vultr FreeBSD-Server sind standardmäßig nicht so konfiguriert, dass sie Swap Space enthalten. Wenn Sie eine Einweg-Cloud-Instanz beabsichtigen, brauchen Sie diese wahrscheinlich nicht

So ändern Sie die Größe einer Festplatte in FreeBSD

So ändern Sie die Größe einer Festplatte in FreeBSD

Das FreeBSD-Betriebssystem verwendet UFS (Unix File System) für sein Root-Partitions-Dateisystem. sonst bekannt als freebsd-ufs Im Falle eines Upgrades

So installieren Sie Matomo Analytics unter FreeBSD 11

So installieren Sie Matomo Analytics unter FreeBSD 11

Verwenden Sie ein anderes System? Matomo (ehemals Piwik) ist eine Open Source-Analyseplattform, eine offene Alternative zu Google Analytics. Matomo Quelle wird gehostet o

So aktivieren Sie TLS 1.3 in Nginx unter FreeBSD 12

So aktivieren Sie TLS 1.3 in Nginx unter FreeBSD 12

Verwenden Sie ein anderes System? TLS 1.3 ist eine Version des TLS-Protokolls (Transport Layer Security), das 2018 als vorgeschlagener Standard in RFC 8446 veröffentlicht wurde

So installieren Sie Backdrop CMS auf einem FreeBSD 11 FAMP VPS

So installieren Sie Backdrop CMS auf einem FreeBSD 11 FAMP VPS

Verwenden Sie ein anderes System? Hintergrund CMS 1.8.0 ist ein einfaches und flexibles, mobilfreundliches, kostenloses und Open Source Content Management System (CMS), das es uns ermöglicht

So installieren Sie ImpressPages CMS 5.0 auf einem FreeBSD 11 FAMP VPS

So installieren Sie ImpressPages CMS 5.0 auf einem FreeBSD 11 FAMP VPS

Verwenden Sie ein anderes System? ImpressPages CMS 5.0 ist ein einfaches und effektives, kostenloses und Open Source, benutzerfreundliches, MVC-basiertes Content Management System (CMS).

Installieren Sie eSpeak unter FreeBSD 12

Installieren Sie eSpeak unter FreeBSD 12

Verwenden Sie ein anderes System? ESpeak kann TTS-Audiodateien (Text-to-Speech) generieren. Diese können aus vielen Gründen nützlich sein, z. B. um Ihr eigenes Turin zu erstellen

So installieren Sie LimeSurvey CE unter FreeBSD 12

So installieren Sie LimeSurvey CE unter FreeBSD 12

Verwenden Sie ein anderes System? LimeSurvey ist eine Open-Source-Umfragesoftware, die in PHP geschrieben wurde. Der LimeSurvey-Quellcode wird auf GitHub gehostet. Diese Anleitung zeigt Ihnen

So installieren Sie Monica unter FreeBSD 12

So installieren Sie Monica unter FreeBSD 12

Verwenden Sie ein anderes System? Monica ist ein Open-Source-System für das persönliche Beziehungsmanagement. Stellen Sie sich das als CRM vor (ein beliebtes Tool, das von Verkaufsteams in th verwendet wird

So installieren Sie Automad CMS unter FreeBSD 12

So installieren Sie Automad CMS unter FreeBSD 12

Verwenden Sie ein anderes System? Automad ist ein Open Source File-basiertes Content Management System (CMS) und eine in PHP geschriebene Template Engine. Der Automad-Quellcode i

Auswählen eines Betriebssystems: CentOS, Ubuntu, Debian, FreeBSD, CoreOS oder Windows Server

Auswählen eines Betriebssystems: CentOS, Ubuntu, Debian, FreeBSD, CoreOS oder Windows Server

Dieser Artikel enthält eine kurze Übersicht über die Server-Betriebssysteme, die als Vorlagen für Vultr angeboten werden. CentOS CentOS ist eine Open-Source-Version von RHEL (Re

Radio-Streaming auf FreeBSD 10 mit IceCast und Ices

Radio-Streaming auf FreeBSD 10 mit IceCast und Ices

Im folgenden Tutorial wird erläutert, wie Sie einen IceCast-Radio-Streaming-Server einrichten und Audiodateien (Musik oder Podcasts) auf der FreeBSD-Plattform abspielen. Diese Tutoria

So installieren Sie Omeka Classic 2.4 CMS auf einem FreeBSD 11 FAMP VPS

So installieren Sie Omeka Classic 2.4 CMS auf einem FreeBSD 11 FAMP VPS

Verwenden Sie ein anderes System? Omeka Classic 2.4 CMS ist eine kostenlose Open-Source-Plattform für digitales Publizieren und Content Management System (CMS) für den Austausch von Digita

So installieren Sie WonderCMS unter FreeBSD 12

So installieren Sie WonderCMS unter FreeBSD 12

Verwenden Sie ein anderes System? WonderCMS ist ein Open Source, schnelles und kleines Flatfile-CMS, das in PHP geschrieben wurde. WonderCMS-Quellcode wird auf Github gehostet. Dieser Leitfaden wird

Kann KI mit zunehmender Anzahl von Ransomware-Angriffen kämpfen?

Kann KI mit zunehmender Anzahl von Ransomware-Angriffen kämpfen?

Ransomware-Angriffe nehmen zu, aber kann KI helfen, den neuesten Computervirus zu bekämpfen? Ist KI die Antwort? Lesen Sie hier, ob KI boone oder bane ist

ReactOS: Ist das die Zukunft von Windows?

ReactOS: Ist das die Zukunft von Windows?

ReactOS, ein quelloffenes und kostenloses Betriebssystem, ist hier mit der neuesten Version. Kann es den Anforderungen moderner Windows-Benutzer genügen und Microsoft zu Fall bringen? Lassen Sie uns mehr über dieses alte, aber neuere Betriebssystem erfahren.

Bleiben Sie in Verbindung über die WhatsApp Desktop App 24*7

Bleiben Sie in Verbindung über die WhatsApp Desktop App 24*7

Whatsapp hat endlich die Desktop-App für Mac- und Windows-Benutzer auf den Markt gebracht. Jetzt können Sie ganz einfach von Windows oder Mac auf WhatsApp zugreifen. Verfügbar für Windows 8+ und Mac OS 10.9+

Wie kann KI die Prozessautomatisierung auf die nächste Stufe heben?

Wie kann KI die Prozessautomatisierung auf die nächste Stufe heben?

Lesen Sie dies, um zu erfahren, wie Künstliche Intelligenz bei kleinen Unternehmen beliebt wird und wie sie die Wahrscheinlichkeit erhöht, sie wachsen zu lassen und ihren Konkurrenten einen Vorsprung zu verschaffen.

macOS Catalina 10.15.4 Supplement Update verursacht mehr Probleme als sie zu lösen

macOS Catalina 10.15.4 Supplement Update verursacht mehr Probleme als sie zu lösen

Vor kurzem hat Apple macOS Catalina 10.15.4 als Ergänzungsupdate veröffentlicht, um Probleme zu beheben, aber es scheint, dass das Update mehr Probleme verursacht, die zum Bricking von Mac-Computern führen. Lesen Sie diesen Artikel, um mehr zu erfahren

13 Tools zur kommerziellen Datenextraktion von Big Data

13 Tools zur kommerziellen Datenextraktion von Big Data

13 Tools zur kommerziellen Datenextraktion von Big Data

Was ist ein Journaling-Dateisystem und wie funktioniert es?

Was ist ein Journaling-Dateisystem und wie funktioniert es?

Unser Computer speichert alle Daten in einer organisierten Weise, die als Journaling-Dateisystem bekannt ist. Es ist eine effiziente Methode, die es dem Computer ermöglicht, Dateien zu suchen und anzuzeigen, sobald Sie auf die Suche klicken.https://wethegeek.com/?p=94116&preview=true

Technologische Singularität: Eine ferne Zukunft der menschlichen Zivilisation?

Technologische Singularität: Eine ferne Zukunft der menschlichen Zivilisation?

Da sich die Wissenschaft schnell weiterentwickelt und einen Großteil unserer Bemühungen übernimmt, steigt auch das Risiko, uns einer unerklärlichen Singularität auszusetzen. Lesen Sie, was Singularität für uns bedeuten könnte.

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1

Der Einfluss künstlicher Intelligenz im Gesundheitswesen 2021

Der Einfluss künstlicher Intelligenz im Gesundheitswesen 2021

KI im Gesundheitswesen hat in den letzten Jahrzehnten große Fortschritte gemacht. Somit wächst die Zukunft der KI im Gesundheitswesen immer noch von Tag zu Tag.