Come installare Blacklistd su FreeBSD 11.1
Introduzione Qualsiasi servizio connesso a Internet è un potenziale bersaglio di attacchi di forza bruta o accesso ingiustificato. Esistono strumenti come fail2ba
I server VPS sono spesso presi di mira dagli intrusi. Un tipo comune di attacco viene visualizzato nei registri di sistema come centinaia di tentativi di accesso ssh non autorizzati. L'impostazione di un firewall è molto utile, ma di per sé potrebbe non controllare adeguatamente i tentativi di intrusione.
Questo tutorial mostra come costruire una barriera avanzata contro le intrusioni per FreeBSD usando due programmi, il ipfw
firewall e sshguard
. SSHGuard è un piccolo programma aggiuntivo che monitora i registri di sistema per voci "abusive". Quando i trasgressori tentano di accedere, sshguard
indica ipfw
di bloccare il traffico proveniente dall'indirizzo IP del trasgressore. L'autore del reato viene quindi effettivamente escluso.
Una volta capito come funzionano questi programmi, gestire la protezione del server è piuttosto semplice. Sebbene questa guida sia focalizzata sulla configurazione di FreeBSD, alcune parti si applicano ad altri sistemi operativi e software firewall.
FreeBSD fornisce 3 firewall nella sua impostazione predefinita ( GENERIC
) del kernel, ipfw
, pf
, e ipfilter
. Ognuno ha vantaggi e fan, ma ipfw
è il software firewall nativo di FBSD ed è abbastanza semplice da usare per i nostri scopi. Vale la pena notare che ipfw
fa molte cose come mostra la sua pagina man, tuttavia funzionalità come NAT, traffic shaping, ecc., Non sono necessarie per la tipica situazione VPS. Fortunatamente, le funzionalità di base del firewall soddisfano facilmente i nostri requisiti.
Per avviare il firewall all'avvio, aggiungere quanto segue a /etc/rc.conf
:
firewall_enable="YES"
firewall_script="/usr/local/etc/IPFW.rules"
firewall_logging="YES"
Il service
comando è disponibile per avviare / arrestare manualmente il firewall:
[user@vultr ~]$ sudo service ipfw start
Naturalmente, ipfw
non farà nulla fino a quando non aggiunge regole, spesso da un file, in questo esempio che si trova in /usr/local/etc/IPFW.rules
. Il file delle regole potrebbe infatti trovarsi ovunque o avere un nome, purché corrisponda al parametro "firewall_script". Il file delle regole è descritto in dettaglio di seguito.
sshguard
è disponibile in diversi gusti per l'utilizzo con diversi firewall. Utilizzare l' pkg
utilità per recuperare e installare sshguard-ipfw
:
[user@vultr ~]$ sudo pkg install sshguard-ipfw
Nella maggior parte dei casi è tutto ciò che bisogna fare. La variabile appropriata viene automaticamente inserita in /etc/rc.conf
per l'avvio all'avvio:
sshguard_enable="YES"
Le impostazioni predefinite normalmente funzionano bene. Se sono necessari valori diversi, la sshguard
pagina man fornisce informazioni dettagliate sui parametri:
# sshguard--program defaults, so don't need to be in rc.conf unless assigning different value
# sshguard_pidfile="/var/run/sshguard.pid"
# sshguard_watch_logs="/var/log/auth.log:/var/log/mail"
# sshguard_blacklist="40:/var/db/sshguard/blacklist.db"
# sshguard_safety_thresh="40"
# sshguard_pardon_min_interval="420"
# sshguard_prescribe_interval="1200"
Puoi iniziare sshguard
con la solita service
invocazione:
[user@vultr ~]$ sudo service sshguard start
La parte più difficile è la creazione del set di regole del firewall. ipfw
può utilizzare lo /etc/rc.firewall
script fornito , ma deve essere modificato per adattarsi a SSHGuard, nonché a diversi scenari operativi. Un certo numero di pagine Web e il Manuale di FreeBSD contengono informazioni utili su come farlo. Tuttavia, scrivere un file di regole non è così difficile, inoltre, un set di regole personalizzato può essere più facile da capire e modificare quando necessario.
Una caratteristica importante delle ipfw
regole è che la prima partita vince, il che significa che l'ordine delle regole è importante. In ipfw
, ogni regola è un comando e il file della regola è uno script shell eseguibile. Ciò consente di modificare il set di regole modificando le regole e quindi eseguendo il file delle regole come lo script della shell:
[user@vultr /usr/local/etc]$ sudo ./IPFW.rules
Generalmente, un file di regole definirà una variabile per il ipfw
comando, quindi cancella le regole correnti, emette regole generiche, quindi procede a impostare le regole "out", seguite dalle regole "in". La pagina di manuale di ipfw e altre risorse contengono una grande quantità di informazioni sulla struttura delle regole e le opzioni che sono numerose per non dire altro.
Da quando la versione di sshguard di FreeBSD è stata aggiornata alla versione 1.6.2, il metodo di inserimento delle regole di blocco per i trasgressori è cambiato. Ora gli indirizzi dei trasgressori sono conservati in una tabella ipfw (tabella 22 per essere specifici), anziché essere inseriti nelle regole sopra 55000 come prima.
Fortunatamente, è abbastanza semplice impostare il file delle regole per usare la tabella. È solo una questione di mettere la regola della tabella nel posto giusto e assicurarsi di usare la sintassi corretta quando si scrive la regola.
Quando sshguard
trova un colpevole, inserisce l'indirizzo del colpevole nella sua lista nera e inserisce anche l'indirizzo nella ipfw
tabella in modo da "innescare" la negazione dell'accesso. Questa regola raggiungerà questi scopi:
01000 deny ip from table\(22\) to any
In questo caso è ancora necessario mettere regole che consentano i servizi in entrata al di sopra di 01000. Ad esempio, supponiamo che l'indirizzo 10.20.30.40
sia un trasgressore nella tabella 22 e abbiamo questa regola ipfw:
56420 allow tcp from any to me dst-port 22 in via $vif
Poiché ipfw
incontra la regola 01000 prima della regola 56420 , 10.20.30.40
viene bloccata . Non sarà mai visto dalla regola "consentire 22 in". Se la regola di autorizzazione avesse un numero "normale" come 00420 , il traffico cattivo verrebbe lasciato entrare e non verrà mai bloccato (perché 00420 è inferiore a 01000 e "vince la prima partita").
Una bella caratteristica della versione aggiornata è che ora all'avvio di sshguard tutti gli indirizzi nella lista nera vengono aggiunti alla tabella e sono disponibili per bloccare senza indugio i trasgressori in arrivo. La lista nera è cumulativa e mantenuta tra le sessioni.
A questo punto è probabilmente sensato mostrare un ipfw
set di regole completo modificato per sshguard
. I commenti dovrebbero rendere abbastanza facile seguire la logica delle regole:
#!/bin/sh
# ipfw config/rules
# from FBSD Handbook, rc.firewall, et. al.
# Flush all rules before we begin.
ipfw -q -f flush
# Set rules command prefix
cmd="ipfw -q add "
vif="vtnet0"
# allow all for localhost
$cmd 00010 allow ip from any to any via lo0
# checks stateful rules. If marked as "keep-state" the packet has
# already passed through filters and is "OK" without futher
# rule matching
$cmd 00101 check-state
# allow DNS out
$cmd 00110 allow tcp from me to any dst-port 53 out via $vif setup keep-state
$cmd 00111 allow udp from me to any dst-port 53 out via $vif keep-state
# allow dhclient connection out (port numbers are important)
$cmd 00120 allow udp from me 68 to any dst-port 67 out via $vif keep-state
# allow HTTP HTTPS replies
$cmd 00200 allow tcp from any to any dst-port 80 out via $vif setup keep-state
$cmd 00220 allow tcp from any to any dst-port 443 out via $vif setup keep-state
# allow outbound mail
$cmd 00230 allow tcp from any to any dst-port 25 out via $vif setup keep-state
$cmd 00231 allow tcp from any to any dst-port 465 out via $vif setup keep-state
$cmd 00232 allow tcp from any to any dst-port 587 out via $vif setup keep-state
# allow icmp re: ping, et. al.
# comment this out to disable ping, et.al.
$cmd 00250 allow icmp from any to any out via $vif keep-state
# alllow timeserver out
$cmd 00260 allow tcp from any to any dst-port 37 out via $vif setup keep-state
# allow ntp out
$cmd 00270 allow udp from any to any dst-port 123 out via $vif keep-state
# allow outbound SSH traffic
$cmd 00280 allow tcp from any to any dst-port 22 out via $vif setup keep-state
# otherwise deny outbound packets
# outbound catchall.
$cmd 00299 deny log ip from any to any out via $vif
# inbound rules
# deny inbound traffic to restricted addresses
$cmd 00300 deny ip from 192.168.0.0/16 to any in via $vif
$cmd 00301 deny ip from 172.16.0.0/12 to any in via $vif
$cmd 00302 deny ip from 10.0.0.0/8 to any in via $vif
$cmd 00303 deny ip from 127.0.0.0/8 to any in via $vif
$cmd 00304 deny ip from 0.0.0.0/8 to any in via $vif
$cmd 00305 deny ip from 169.254.0.0/16 to any in via $vif
$cmd 00306 deny ip from 192.0.2.0/24 to any in via $vif
$cmd 00307 deny ip from 204.152.64.0/23 to any in via $vif
$cmd 00308 deny ip from 224.0.0.0/3 to any in via $vif
# deny inbound packets on these ports
# auth 113, netbios (services) 137/138/139, hosts-nameserver 81
$cmd 00315 deny tcp from any to any dst-port 113 in via $vif
$cmd 00320 deny tcp from any to any dst-port 137 in via $vif
$cmd 00321 deny tcp from any to any dst-port 138 in via $vif
$cmd 00322 deny tcp from any to any dst-port 139 in via $vif
$cmd 00323 deny tcp from any to any dst-port 81 in via $vif
# deny partial packets
$cmd 00330 deny ip from any to any frag in via $vif
$cmd 00332 deny tcp from any to any established in via $vif
# allowing icmp re: ping, etc.
$cmd 00310 allow icmp from any to any in via $vif
# allowing inbound mail, dhcp, http, https
$cmd 00350 allow udp from any 53 to me in via $vif
$cmd 00360 allow tcp from any 53 to me in via $vif
$cmd 00370 allow udp from any 67 to me dst-port 68 in via $vif keep-state
$cmd 00400 allow tcp from any to me dst-port 80 in via $vif setup limit src-addr 2
$cmd 00410 allow tcp from any to me dst-port 443 in via $vif setup limit src-addr 2
# SSHguard puts offender addresses in table 22. Set up the table rule
# Please note the '\(22\)' syntax, necessary since it's run as shell command
$cmd 01000 deny ip from table\(22\) to any
# allow inbound ssh, mail. PROTECTED SERVICES: numbered ABOVE sshguard blacklist range
$cmd 56420 allow tcp from any to me dst-port 22 in via $vif setup limit src-addr 2
$cmd 56530 allow tcp from any to any dst-port 25 in via $vif setup keep-state
$cmd 56531 allow tcp from any to any dst-port 465 in via $vif setup keep-state
$cmd 56532 allow tcp from any to any dst-port 587 in via $vif setup keep-state
# deny everything else, and log it
# inbound catchall
$cmd 56599 deny log ip from any to any in via $vif
# ipfw built-in default, don't uncomment
# $cmd 65535 deny ip from any to any
Le esigenze di sistema variano e le diverse scelte di porte da bloccare o sbloccare si riflettono nel set di regole. Una volta terminato /usr/local/etc/IPFW.rules
il set di regole, salvare il file in e avviare i servizi FBSD:
# service ipfw start
# service sshguard start
Il firewall aumentato ora dovrebbe essere in esecuzione! Controllare sshguard
:
[user@vultr ~]$ sudo pgrep -lfa ssh
Se sshguard
è in esecuzione, vengono visualizzati il pid e la riga di comando completa:
720 /usr/local/sbin/sshguard -b 40:/var/db/sshguard/blacklist.db -l /var/log/auth.log -l /var/log/maillog -a 40 -p 420 -s 1200 -w /usr/local/etc/sshguard.whitelist -i /var/run/sshguard.pid
Questo mostra il set di regole del firewall con le statistiche e l'ultima volta che un pacchetto ha rispettato la regola:
[user@vultr ~]$ sudo ipfw -cat list
Dopo ore o giorni, gli indirizzi degli autori di reato vengono aggiunti alla lista nera e anche alla tabella 22. Per visualizzare tutti gli indirizzi nella tabella, utilizzare questo comando:
ipfw table 22 list
Il risultato è stampato come:
10.10.10.118/32 0
10.10.10.72/32 0
...
Come descritto sopra, le connessioni da questi indirizzi non sono consentite. Certo, al primo avvio sshguard
non ci saranno indirizzi nell'elenco, ma col tempo può diventare piuttosto lungo. Un'opzione consiste nel creare regole di blocco separate per gli indirizzi con più voci nella tabella e quindi eliminarle dalla lista nera.
È una buona idea controllare occasionalmente i registri per assicurarsi che le intrusioni siano controllate. In generale, /var/log/auth.log
e /var/log/security
sono informativi. È possibile che emergano lacune o errori nella copertura dei servizi di rete. La modifica del set di regole del firewall in base alle esigenze è una parte normale dell'amministrazione del server.
Nelle precedenti versioni di sshguard, quando il /var/db/sshguard/blacklist.db
file si era ingrandito, poteva impedire sshguard
l'avvio all'avvio del sistema. Rimozione o ridenominazione del file della lista nera consentita sshguard
per l'avvio. Questo problema sembra essere stato risolto nell'ultima versione di sshguard, quindi questa soluzione alternativa non è probabilmente più necessaria.
Assicurati di inserire nella whitelist l'indirizzo IP da cui sei connesso alla sessione SSH. Se ti blocchi accidentalmente, puoi sempre connetterti alla console noVNC in https://my.vultr.com e inserire nella lista bianca il tuo IP.
Riassumendo, usando la combinazione di ipfw
e sshguard
aiuta a mantenere sicuro il tuo sistema FreeBSD e fare il suo lavoro. Ridurre al minimo l'attività intrusiva della rete ha un ulteriore vantaggio: meno "rumore" semplifica il monitoraggio e l'ottimizzazione del funzionamento del sistema, contribuendo a un server più sicuro e con un funzionamento migliore.
La protezione efficace di un sistema / server FreeBSD non è particolarmente complicata. Mentre è necessario uno sforzo modesto per metterlo in funzione, paga in VPS e sicurezza del progetto sostanzialmente maggiori.
Introduzione Qualsiasi servizio connesso a Internet è un potenziale bersaglio di attacchi di forza bruta o accesso ingiustificato. Esistono strumenti come fail2ba
Questo tutorial ti mostrerà come configurare OpenBSD 5.6 con un disco completamente crittografato sul tuo VPS Vultr. Una nota sulla parte di crittografia: la maggior parte dei datacenter intorno a th
Luso di un utente sudo per accedere a un server ed eseguire comandi a livello di root è una pratica molto comune tra Linux e Unix Systems Administrator. Luso di un sud
Usi un sistema diverso? TaskWarrior è uno strumento di gestione del tempo open source che è un miglioramento dellapplicazione Todo.txt e dei suoi cloni. A causa di th
Usi un sistema diverso? osTicket è un sistema di ticket di supporto clienti open source. Il codice sorgente di osTicket è ospitato pubblicamente su Github. In questo tutorial
Varnish è un server cache open source che memorizza il contenuto da un server Web. È installato di fronte a un server Web come Apache o Nginx. La cache
Usi un sistema diverso? Osclass è un progetto open source che ti consente di creare facilmente un sito classificato senza alcuna conoscenza tecnica. È sourc
Usi un sistema diverso? Wiki.js è unapp wiki moderna, gratuita e open source, costruita su Node.js, MongoDB, Git e Markdown. Il codice sorgente di Wiki.js è publicl
Usi un sistema diverso? Directus 6.4 CMS è un sistema di gestione dei contenuti senza testa (CMS) potente e flessibile, gratuito e open source che fornisce agli sviluppatori
Questo tutorial ti mostrerà come ottenere un semplice server di posta su FreeBSD 10, con Postfix come MTA, Dovecot come MDA e Sieve per lordinamento della posta - tutto su un
Gestire il proprio server di posta elettronica può essere abbastanza gratificante. Sei responsabile dei tuoi dati. Ti consente anche una maggiore flessibilità con le tue opzioni di consegna. però
Immediatamente, i server Vultr FreeBSD non sono configurati per includere lo spazio di scambio. Se la tua intenzione è per unistanza cloud usa e getta, probabilmente non ne hai bisogno
Il sistema operativo FreeBSD utilizza UFS (Unix File System) per il suo file system delle partizioni di root; altrimenti noto come freebsd-ufs In caso di aggiornamento
Usi un sistema diverso? Flarum è un software di forum di prossima generazione gratuito e open source che rende divertente la discussione online. Il codice sorgente di Flarum è ospitato o
Usi un sistema diverso? Selfoss RSS Reader è un reade self-hosted gratuito e open source basato su Web, streaming live, mashup, feed di notizie (RSS / Atom)
Usi un sistema diverso? Introduzione Craft CMS è un CMS open source scritto in PHP. Il codice sorgente di Craft CMS è ospitato su GitHub. Questa guida ti mostrerà
Usi un sistema diverso? NodeBB è un software per forum basato su Node.js. Utilizza socket Web per interazioni istantanee e notifiche in tempo reale. Il nodo B
Usi un sistema diverso? ESpeak può generare file audio di sintesi vocale (TTS). Questi possono essere utili per molte ragioni, come la creazione della tua Torino
Usi un sistema diverso? LimeSurvey è un software di sondaggio open source scritto in PHP. Il codice sorgente di LimeSurvey è ospitato su GitHub. Questa guida ti mostrerà
Usi un sistema diverso? ProcessWire CMS 3.0 è un sistema di gestione dei contenuti (CMS) semplice, flessibile e potente, gratuito e open source. ProcessWire CMS 3.
Gli attacchi ransomware sono in aumento, ma l'intelligenza artificiale può aiutare ad affrontare l'ultimo virus informatico? L'intelligenza artificiale è la risposta? Leggi qui sai è AI boone o bane
ReactOS, un sistema operativo open source e gratuito è qui con l'ultima versione. Può essere sufficiente alle esigenze degli utenti Windows moderni e abbattere Microsoft? Scopriamo di più su questo vecchio stile, ma un'esperienza del sistema operativo più recente.
Whatsapp ha finalmente lanciato l'app desktop per utenti Mac e Windows. Ora puoi accedere facilmente a Whatsapp da Windows o Mac. Disponibile per Windows 8+ e Mac OS 10.9+
Leggi questo per sapere come l'intelligenza artificiale sta diventando popolare tra le aziende di piccole dimensioni e come sta aumentando le probabilità di farle crescere e dare un vantaggio ai loro concorrenti.
Recentemente Apple ha rilasciato macOS Catalina 10.15.4 un aggiornamento supplementare per risolvere i problemi, ma sembra che l'aggiornamento stia causando più problemi che portano al bricking delle macchine mac. Leggi questo articolo per saperne di più
13 strumenti commerciali per l'estrazione dei dati dai Big Data
Il nostro computer memorizza tutti i dati in un modo organizzato noto come file system di journaling. È un metodo efficiente che consente al computer di cercare e visualizzare i file non appena si preme search.https://wethegeek.com/?p=94116&preview=true
Man mano che la scienza si evolve a un ritmo rapido, assumendo gran parte dei nostri sforzi, aumentano anche i rischi di sottoporci a una singolarità inspiegabile. Leggi, cosa potrebbe significare per noi la singolarità.
Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1
L'intelligenza artificiale nell'assistenza sanitaria ha compiuto grandi passi avanti negli ultimi decenni. Pertanto, il futuro dell'IA in sanità continua a crescere giorno dopo giorno.