L'importanza del blocco degli accessi a risorse vietate interessa qualsiasi amministratore che potrebbe essere ufficialmente accusato di non rispettare la legge o le disposizioni delle autorità competenti.

Perché reinventare la ruota quando ci sono programmi e distribuzioni specializzati per le nostre esigenze, ad esempio: Zeroshell, pfSense, ClearOS.
Un'altra domanda è emersa dai vertici: Il prodotto utilizzato ha un certificato di sicurezza del nostro stato?
Abbiamo esperienza con le distribuzioni menzionate:
- Zeroshell — gli sviluppatori ci hanno persino regalato una licenza per 2 anni, ma si è rivelato che la distribuzione non era logica per noi in quanto svolgeva una funzione critica;
- pfSense — rispetto e onore, ma allo stesso tempo noioso, abituarsi alla riga di comando del firewall FreeBSD e non abbastanza comodo per noi (penso sia questione di abitudine, ma non si è rivelato "la strada giusta");
- ClearOS — si è rivelato molto lento sulla nostra attrezzatura, non siamo riusciti a procedere oltre un test serio, quindi a cosa servono interfacce così pesanti?
- Ideco SELECTA. Discutere del prodotto "Aideco" è un discorso a parte, è un prodotto interessante, ma per motivi politici non è per noi, e vorrei anche mettere in discussione la loro licenza per lo stesso Linux, Roundcube, ecc. Da dove pensano di avere il diritto di vendere un prodotto finito composto da moduli sviluppati e modificati dalla comunità di internet distribuiti secondo GPL&etc. Python Capisco che ora riceverò grida di protesta che richiedono una giustificazione dettagliata delle mie sensazioni soggettive, ma voglio dire che questo nodo della rete è anche un bilanciatore di traffico su 4 canali esterni verso Internet, e ogni canale ha le sue peculiarità. Inoltre, è diventato cruciale per noi far funzionare uno dei diversi interfacce di rete in spazi di indirizzamento diversi, e io
sono pronto a riconoscere che non sono pronto a usare VLAN ovunque sia necessario e non; abbiamo dispositivi come TP-Link TL-R480T+ che non funzionano in modo ideale, presentano alcune peculiarità. Questa parte su Linux è riuscita a essere configurata ragionevolmente grazie al sito ufficiale di Ubuntu.Bilanciamento IP: unire più canali internet in uno. . Ogni canale può «crollare» in qualsiasi momento, così come può risalire. Se sei interessato a uno script che funzioni attualmente (e questo meriterebbe una pubblicazione a parte) — scrivi nei commenti.
La soluzione in esame non pretende di essere unica, ma voglio porre una domanda: «Perché un'azienda dovrebbe adattarsi a prodotti di terzi discutibili con requisiti hardware seri quando si può considerare un'opzione alternativa?».
Se in RF c'è un elenco del Roskomnadzor, in Ucraina c'è un allegato alla Decisione del Consiglio per la Sicurezza Nazionale (ad esempio. ), i dirigenti locali non sono inattivi. Ad esempio, ci è stata fornita una lista di siti vietati, secondo la direzione, che peggiorano la produttività lavorativa.
Parlando con colleghi di altre aziende dove per default sono vietati tutti i siti e solo su richiesta con il permesso del superiore si può accedere a un sito specifico, sorridendo rispettosamente, pensando e «fumando sulla questione», è arrivata la comprensione che la vita è comunque bella e abbiamo iniziato la nostra ricerca.
Avendo la possibilità di non solo analizzare cosa si scrive nei «libri delle casalinghe» sulla filtrazione del traffico, ma anche di osservare cosa accade sui canali di diversi fornitori, abbiamo notato le seguenti ricette (tutti gli screenshot sono leggermente ritagliati, vi prego di comprendere):
Fornitore 1
— non si preoccupa e impone i propri server DNS e un proxy trasparente. Beh, che dire?.. almeno abbiamo accesso dove serve (se è necessario :))
Fornitore 2
— crede che debba pensarci il suo fornitore principale, il supporto tecnico del fornitore principale ha persino ammesso perché non posso accedere al sito che non è vietato ma a me necessario. Penso che l'immagine ti divertirà 🙂

Si è scoperto che traducono i nomi dei siti vietati in indirizzi IP e bloccano proprio l'IP (non si preoccupano che su questo indirizzo IP possano esserci anche 20 siti).
Fornitore 3
— lascia passare il traffico in una direzione, ma non lo lascia tornare lungo il percorso.
Fornitore 4
— vieta tutte le manipolazioni con i pacchetti nella direzione indicata.
E cosa fare con VPN (Opera browser rispetto) e plugin per browser? Giocando all'inizio con il nodo Mikrotik, abbiamo persino avuto una ricetta pesante per L7, dalla quale in seguito abbiamo dovuto rinunciare (ci possono essere più nomi proibiti, diventa triste quando, oltre alle proprie responsabilità dirette per le rotte, la CPU PPC460GT si carica al 100% su 30 espressioni).
.
Cosa è diventato chiaro:
DNS su 127.0.0.1 non è affatto una panacea; le versioni moderne dei browser possono comunque aggirare questi problemi. Non è possibile limitare tutti gli utenti a diritti ristretti, e non si può dimenticare l'enorme quantità di DNS alternativi. Internet non è statico, e oltre ai nuovi indirizzi DNS, i siti proibiti acquistano nuovi indirizzi, cambiano i domini di primo livello, possono aggiungere/rimuovere un simbolo dal loro indirizzo. Tuttavia, ha comunque diritto a esistere qualcosa come:
ip route add blackhole 1.2.3.4Sarebbe piuttosto efficace ottenere un elenco di indirizzi IP dalla lista dei siti proibiti, ma per i motivi sopra menzionati, siamo passati a considerazioni su Iptables. Esisteva già un bilanciatore attivo su CentOS Linux release 7.5.1804.
La connessione a Internet per l'utente deve essere veloce e il browser non deve aspettare mezz'ora, concludendo che questa pagina non è disponibile. Dopo lunghe ricerche, siamo giunti a questo modello:
File 1 -> /script/denied_host, elenco dei nomi proibiti:
test.test
blablabla.bubu
torrent
pornoFile 2 -> /script/denied_range, elenco degli spazi indirizzi e indirizzi proibiti:
192.168.111.0/24
241.242.0.0/16File-script 3 -> ipt.sh, che esegue il lavoro con iptables:
# считываем полезную информацию из перечней файлов
HOSTS=`cat /script/denied_host | grep -v '^#'`
RANGE=`cat /script/denied_range | grep -v '^#'`
echo "Stopping firewall and allowing everyone..."
# сбрасываем все настройки iptables, разрешая то что не запрещено
sudo iptables -F
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
#решаем обновить информацию о маршрутах (особенность нашей архитектуры)
sudo sh rout.sh
# циклически обрабатывая каждую строку файла применяем правило блокировки строки
for i in $HOSTS; do
sudo iptables -I FORWARD -m string --string $i --algo bm --from 1 --to 600 -p tcp -j REJECT --reject-with tcp-reset;
sudo iptables -I FORWARD -m string --string $i --algo bm --from 1 --to 600 -p udp -j DROP;
done
# циклически обрабатывая каждую строку файла применяем правило блокировки адреса
for i in $RANGE; do
sudo iptables -I FORWARD -p UDP -d $i -j DROP;
sudo iptables -I FORWARD -p TCP -d $i -j REJECT --reject-with tcp-reset;
done
L'uso di sudo è dovuto al fatto che abbiamo un piccolo hack per la gestione tramite interfaccia WEB, ma come ha dimostrato l'esperienza di utilizzo di questo modello per più di un anno, il WEB non è così essenziale. Dopo l'implementazione ci sarebbe stata la voglia di portare l'elenco dei siti in un database, ecc. Il numero di host bloccati è di oltre 250 + una decina di spazi indirizzi. Ci sono effettivamente problemi quando si accede a un sito tramite connessione https; come sistemista, ho delle lamentele sui browser :), ma questi sono casi particolari; la maggior parte degli attivatori dell'assenza di accesso alla risorsa ricade comunque dalla nostra parte, blocchiamo con successo anche Opera VPN, plugin come friGate e la telemetria di Microsoft.

Fonte: habr.com
