Configurarea Firewall-ului (pf) pe FreeBSD 13.2 cu blocaj automat pentru IP-uri suspecte

 

Acest ghid explică modul de configurare a PF Firewall pe FreeBSD 13.2 pentru a bloca automat adresele IP suspecte (de exemplu, brute force SSH). În plus, include un script Perl care gestionează listele dinamice de IP-uri blocate.


Pasul 0: Instalarea Perl (dacă nu există)

Pe FreeBSD 13.2, Perl nu este instalat implicit. Îl putem instala astfel:

pkg install perl5
perl -v

Pasul 1: Activarea Firewall-ului PF

Editați fișierul /etc/rc.conf și adăugați următoarele linii:

pf_enable="YES"
pf_rules="/etc/pf.conf"
pf_flags=""
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
pflog_flags=""

Pasul 2: Configurarea regulilor PF

Creați sau editați fișierul /etc/pf.conf și adăugați următoarele reguli:

block in all
pass in quick on lo0
pass out quick on lo0

table <blocaj> persist file "/var/db/lista"

block quick from <blocaj>

# Permit conexiuni esențiale, portul 227 este cel utilizat de HostRIX, se poate schimba in 22 sau cel utilizat de dvs.
pass in quick on vtnet0 proto tcp from any to any port 227 keep state
pass in quick on vtnet0 proto tcp from any to any port 80 keep state
pass in quick on vtnet0 proto tcp from any to any port 3690 keep state

pass out all keep state
⚠️ Înlocuiți vtnet0 cu interfața de rețea activă pe serverul dvs. (ex: em0, re0).

Pasul 3: Crearea listei de IP-uri blocate

Executați următoarele comenzi pentru a crea fișierul listă și a-i seta permisiunile:

touch /var/db/lista
chmod 644 /var/db/lista

Pasul 4: Scriptul de blocaj (Blocaj)

Creați scriptul /sbin/Blocaj:

nano /sbin/Blocaj

Introduceți conținutul următor:

#!/usr/bin/perl

use strict;

my @assholes = ();

open (IN, "/var/log/auth.log");
while (<IN>) {
    if ($_ =~ /Invalid user.*from ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/) {
        push(@assholes, $1);
    }
    if ($_ =~ /Did not receive identification string from ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/) {
        push(@assholes, $1);
    }
}
close (IN);

@assholes = sort {lc($a) cmp lc($b)} @assholes;

my @allowedIPs = ();
open (IN, "/var/db/allowed-ips");
while (<IN>) {
    if ($_ =~ /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) {
        push(@allowedIPs, $_);
    }
}
close (IN);

chop(@allowedIPs);

my $tmp = "";
foreach my $asshole (@assholes) {
    if ($asshole eq $tmp) {
        $asshole = "";
    } else {
        if ($asshole =~ /127\.0\.0\.1/) { $asshole = ""; }
        if ($asshole =~ /192\.168\.[0-9]+\.[0-9]+/) { $asshole = ""; }
        foreach my $allowedIP (@allowedIPs) {
            if ($asshole =~ /$allowedIP/) {
                $asshole = "";
            }
        }
        $tmp = $asshole;
    }
}

@assholes = sort {lc($b) cmp lc($a)} @assholes;

my $popCount = 0;
foreach my $asshole (reverse @assholes) {
    if ($asshole eq "") {
        $popCount++;
    }
}

for (my $i = 0; $i < $popCount; $i++) {
    pop (@assholes);
}

my $list = "";
foreach my $asshole (@assholes) {
    $list = $list . $asshole . " ";
}

exec "/sbin/pfctl -t blocaj -T add $list";

Setați permisiunile corecte:

chmod 751 /sbin/Blocaj

Pasul 5: Integrarea cu syslog

Editați fișierul /etc/syslog.conf și adăugați linia:

auth.info;authpriv.info    | exec /usr/bin/perl /sbin/Blocaj

Rezultat

De acum, serverul dvs. FreeBSD 13.2 va bloca automat IP-urile externe suspecte detectate în loguri și le va adăuga în lista PF Firewall.

Sugestii suplimentare:
  • Păstrați o listă de IP-uri permise în fișierul /var/db/allowed-ips.
  • Monitorizați logurile firewall-ului cu:
    tcpdump -n -e -ttt -i pflog0
  • 0 משתמשים שמצאו מאמר זה מועיל
?האם התשובה שקיבלתם הייתה מועילה

מאמרים קשורים

Serverfiles Metin2009

Au fost adăugate următoarele :-Max Lv 105-4 Pagini inventare-Vezi drop mob-Vezi drop...

HostRIX Serverfile Installer v2

Panou de Instalare HostRIX Serverfile Installer v2 Acest panou de instalare oferă utilizatorilor...

Resetare parola mysql 5.6

Mai jos aveti toate comenzile ce ne trebuiesc la schimbarea parolei mysql. 1. Oprim serverul...

Conectare SSH

Introducere Acest ghid explică cum să te conectezi prin SSH la un server Metin2 folosind portul...