In generale, la sicurezza è una cosa fondamentale, come già accennato. Ci sono ragioni per cui esistono firewall e non sono solo gli altri lemming ad essere stupidi idioti.
Questa risposta arriva, poiché la ricerca di "fail2ban" in questa pagina non mi ha dato alcun risultato. Quindi, se raddoppio altri contenuti, abbi pazienza. E mi scusi, se ho un po 'di rabbia, fornisco un'esperienza semplice in quanto ciò potrebbe tornare utile per gli altri. :)
Considerazioni sulla rete, locale o esterna
Questo è piuttosto specifico per Linux e si concentra sul firewall basato su host, che di solito è il caso d'uso. Il firewall esterno va di pari passo con un'adeguata struttura di rete e altre considerazioni sulla sicurezza di solito vanno in quella direzione. O sai cosa è implicito qui, quindi probabilmente non avrai bisogno di questo post. Oppure no, quindi continua a leggere.
L'esecuzione di firewall esternamente e localmente può sembrare un lavoro controintuitivo e doppio. Ma questo dà anche la possibilità di cambiare le regole su quello esterno, senza compromettere la sicurezza di tutti gli altri host. La necessità potrebbe derivare da motivi di debug o perché qualcuno ha appena fatto una cazzata. Un altro caso d'uso arriverà nella sezione "Firewall globale adattivo", per il quale occorreranno anche firewall sia globali che locali.
Costo e disponibilità e la stessa storia per tutto il tempo:
Il firewall è solo un aspetto di un sistema sicuro adeguato. Non installare un firewall in quanto "costa" denaro, introduce uno SPOF o qualunque altra cosa sia una cazzata, scusate il mio francese qui. Basta impostare un cluster. Oh, ma cosa succede se la cella di fuoco ha un'interruzione? Quindi impostare il cluster su due o più compartimenti antincendio.
Ma cosa succede se l'intero datacenter non è raggiungibile, poiché entrambi i vettori esterni sono fuori servizio (l'escavatore ha ucciso la tua fibra)? Quindi, fai in modo che il tuo cluster si estenda su più datacenter.
È caro? I cluster sono troppo complessi? Bene, la paranoia deve essere pagata.
Solo lamentarsi degli SPOF, ma non voler pagare più soldi o creare configurazioni un po 'più complesse è un chiaro caso di doppi standard o solo un piccolo portafoglio sul lato dell'azienda o del cliente.
Questo modello si applica a TUTTE queste discussioni, indipendentemente dal servizio che è al momento attuale. Non importa se si tratta di un gateway VPN, un Cisco ASA utilizzato solo per il firewall, un database MySQL o PostgreSQL, un sistema virtuale o hardware del server, un back-end di archiviazione, switch / router, ...
Ormai dovresti avere l'idea.
Perché preoccuparsi del firewall?
In teoria il tuo ragionamento è valido. (È possibile sfruttare solo i servizi in esecuzione.)
Ma questa è solo metà della verità. Il firewall, in particolare il firewall stateful, può fare molto di più per te. I firewall senza stato sono importanti solo se si verificano problemi di prestazioni come altri già menzionati.
Controllo degli accessi semplice, centrale e discreto
Hai citato i wrapper TCP che implementano sostanzialmente le stesse funzionalità per proteggere il tuo. Per il bene dell'argomento, supponiamo che qualcuno non lo sappia tcpd
e gli piaccia usare il mouse? fwbuilder
potrebbe venire in mente.
Avere pieno accesso dalla rete di gestione è qualcosa che avresti dovuto abilitare, che è qualcosa dei primi casi d'uso del firewall basato su host.
Che ne dite di una configurazione multi-server, in cui il database viene eseguito altrove e non è possibile inserire entrambi / tutti i computer in una sottorete condivisa (privata) per qualsiasi motivo? Utilizzare il firewall per consentire l'accesso MySQL sulla porta 3306 solo per il singolo indirizzo IP fornito dell'altro server, fatto, semplice.
E questo funziona perfettamente anche per UDP. O qualunque protocollo. I firewall possono essere così dannatamente flessibili. ;)
Mitigazione di Portscan
Inoltre, con il firewall, è possibile rilevare e mitigare i portcan generali in quanto la quantità di connessioni per periodo di tempo può essere monitorata tramite il kernel e il suo stack di rete e il firewall può agire su questo.
Inoltre, i pacchetti non validi o oscuri possono essere gestiti prima che raggiungano l'applicazione.
Limitazione del traffico in uscita
Filtrare il traffico in uscita è di solito un dolore nel culo. Ma può essere un must, a seconda del contratto.
statistica
Un'altra cosa che un firewall può darti è la statistica. (Pensa watch -n1 -d iptables -vnxL INPUT
di aver aggiunto alcune regole per gli indirizzi IP speciali proprio in alto per vedere se i pacchetti stanno arrivando.)
Puoi vedere alla luce del giorno se le cose funzionano o no. Il che è MOLTO utile quando si risolvono i problemi di connessione e si è in grado di dire all'altra persona al telefono che non si ricevono pacchetti, senza ricorrere a chat tcpdump
. Il networking è divertente, la maggior parte delle persone ora sa cosa sta facendo e tutto ciò a volte si tratta solo di semplici errori di routing. Diavolo, anche io non so sempre cosa sto facendo. Anche se ho lavorato con dozzine di sistemi ed elettrodomestici complessi, spesso anche con tunneling ormai.
IDS / IPS
Il firewalling Layer7 è di solito olio di serpente (IPS / IDS), se non viene seguito correttamente e aggiornato regolarmente. Inoltre le licenze sono dannatamente costose, quindi risparmierò a prenderne una se non avessi davvero bisogno di ottenere tutto ciò che il denaro può comprarti.
Masqerading
Facile, prova questo con i tuoi wrapper. : D
Port forwarding locale
Vedi il travestimento.
Protezione dei canali di accesso con password con indirizzi IP dinamici
Che dire se i clienti hanno indirizzi IP dinamici e non è stata distribuita una configurazione VPN? O altri approcci dinamici al firewalling? Questo è già accennato alla domanda, e qui arriverà un caso d'uso per Sfortunatamente, non riesco a trovare alcun firewall che lo faccia. parte.
È necessario aver disabilitato l'accesso all'account root tramite una password. Anche se l'accesso è limitato a determinati indirizzi IP.
Inoltre, avere ancora un altro account blanko pronto con un accesso con password se le chiavi ssh vengono perse o la distribuzione fallisce è molto utile se qualcosa va davvero storto (un utente ha accesso amministrativo alla macchina e "cose accadute"?). È la stessa idea per l'accesso alla rete in quanto ha modalità single-user su Linux o utilizza init=/bin/bash
via grub
per l'accesso locale davvero male e non può usare un disco live per qualsiasi motivo. Non ridere, ci sono prodotti di virtualizzazione che lo vietano. Anche se la funzionalità esiste, cosa succede se una versione software obsoleta viene eseguita priva della funzionalità?
Ad ogni modo, anche se esegui il tuo demone ssh su una porta esoterica e non su 22, se non hai implementato cose come il port knocking (per aprire anche un'altra porta e mitigare così i portcan, al limite lentamente di essere troppo poco pratico), le scansioni delle porte rileveranno il tuo servizio alla fine.
Di solito si configurano anche tutti i server con la stessa configurazione, con le stesse porte e servizi per motivi di efficienza. Non è possibile impostare ssh su una porta diversa su ogni macchina. Inoltre, non è possibile modificarlo su tutte le macchine ogni volta che lo si considera un'informazione "pubblica", perché è già dopo una scansione. La questione di nmap
essere legali o meno non è un problema quando si dispone di una connessione Wi-Fi compromessa.
Se questo account non è denominato "root", le persone potrebbero non essere in grado di indovinare il nome dell'account utente della "backdoor". Ma lo sapranno, se ottengono un altro server dalla tua azienda, o semplicemente acquistano un po 'di spazio web e hanno uno sguardo senza root / senza jail / senza contenuto /etc/passwd
.
Per un'illustrazione puramente teorica ora, potrebbero utilizzare un sito Web hackerabile lì per ottenere l'accesso al tuo server e cercare come le cose di solito vengono eseguite al tuo posto. I tuoi strumenti di ricerca per hacker potrebbero non funzionare 24 ore su 24, 7 giorni su 7 (di solito lo fanno di notte per motivi di prestazioni del disco per le scansioni del filesystem?) E i tuoi antivirus non vengono aggiornati nel secondo in cui un nuovo zero-day vede la luce del giorno, quindi lo farà non rilevare questi eventi in una volta, e senza altre misure di protezione potresti non sapere nemmeno cosa è successo. Per tornare alla realtà, se qualcuno ha accesso a exploit zero-day, è molto probabile che non prenderà di mira i tuoi server in quanto questi sono solo costosi. Questo è solo per illustrare che c'è sempre un modo per entrare in un sistema in caso di "necessità".
Ma di nuovo sull'argomento, non usare un account con password extra e non preoccuparti? Per favore, continua a leggere.
Anche se gli aggressori ottengono il nome e la porta di questo account aggiuntivo, una combinazione fail2ban
+ iptables
li interromperà, anche se hai utilizzato solo una password di otto lettere. Inoltre fail2ban può essere implementato anche per altri servizi, ampliando l'orizzonte di monitoraggio!
Per i tuoi servizi, se mai se ne presentasse la necessità: praticamente tutti i servizi che registrano errori su un file possono ottenere supporto fail2ban fornendo un file, quale regex corrispondere e quanti errori sono consentiti e il firewall vieterà felicemente ogni indirizzo IP viene detto a.
Non sto dicendo di usare password a 8 cifre! Ma se vengono banditi per 24 ore per cinque tentativi di password errati, puoi indovinare per quanto tempo dovranno provare se non hanno una botnet a disposizione anche con una sicurezza così scadente. E rimarrai stupito dalle password che i clienti tendono a usare, non solo per ssh
. Dando un'occhiata alle password di posta delle persone tramite Plesk ti dice tutto ciò che preferiresti non voler sapere, se mai lo facessi, ma cosa non sto cercando di implicare qui, ovviamente. :)
Firewall globale adattivo
fail2ban
è solo un'applicazione che usa qualcosa del genere iptables -I <chain_name> 1 -s <IP> -j DROP
, ma puoi facilmente creare queste cose da solo con un po 'di magia Bash abbastanza velocemente.
Per espandere ulteriormente qualcosa del genere, aggregare tutti gli indirizzi IP fail2ban dai server all'interno della rete su un server aggiuntivo, che cura tutti gli elenchi e li passa a sua volta ai firewall principali bloccando tutto il traffico già ai margini della rete.
Tale funzionalità non può essere venduta (certo che può, ma sarà solo un sistema fragile e succherà), ma deve essere intrecciata nella tua infrastruttura.
Mentre ci sei, puoi anche usare gli indirizzi IP della blacklist o gli elenchi da altre fonti, sia che tu sia aggregato da te stesso o da quelli esterni.