Vorrei bloccare i siti utilizzando iptables
. Come posso procedere e come posso garantire che le iptables
regole vengano salvate?
Vorrei bloccare i siti utilizzando iptables
. Come posso procedere e come posso garantire che le iptables
regole vengano salvate?
Risposte:
Il blocco dei siti con le regole di iptables è una pessima idea, principalmente perché iptables (come la maggior parte dei firewall) si occupa degli indirizzi IP e la relazione tra un sito e i suoi indirizzi IP è piuttosto libera:
Un sito può avere molti indirizzi IP, che possono essere cambiati piuttosto frequentemente. Una volta create le regole di iptables, anche se si specifica il nome di un sito come parte di una regola, viene utilizzato il primo indirizzo IP in quel momento . Se l'indirizzo del sito cambia, le regole di iptables non saranno aggiornate.
Un indirizzo IP può ospitare molti siti (e succede spesso). Questo diventerà solo più frequente, a causa della scarsità dell'indirizzo IP. Se blocchi un indirizzo IP, blocchi tutti i siti ospitati su di esso.
Quindi, anche se altre risposte spiegano come lo fai, ti esorto a cercare un'altra soluzione. Ad esempio, l'installazione di un proxy http trasparente consentirà di ottenere ciò di cui hai bisogno. Questo HOWTO proxy HTTP trasparente è un po 'obsoleto, ma ti aiuterà a iniziare.
Una volta che si dispone di un proxy trasparente, è possibile aggiungere regole arbitrarie ad esso per bloccare siti specifici, non è nemmeno necessario utilizzare la funzione di memorizzazione nella cache di calamari, se non lo si desidera.
Esistono altri modi per gestire il blocco del sito (altri firewall, proxy, ecc.), Ma le regole di iptables sono praticamente uno dei peggiori modi possibili per gestirlo.
È possibile utilizzare la corrispondenza delle stringhe iptables per raggiungere questo obiettivo:
iptables -A OUTPUT -p tcp -m string --string "block-me.com" --algo kmp -j REJECT
-A OUTPUT
aggiunge la seguente regola alla OUTPUT
catena.
-m string --string "block-me.com" --algo kmp
dice a iptables di cercare la stringa block-me.com
usando l' algoritmo di corrispondenza Knuth-Morris-Pratt .
Il modo più semplice per ripristinare i tuoi iptables quando riavvii il tuo computer è installare il pacchetto iptables-persistent
se disponibile sul tuo sistema. Se installi il pacchetto dopo aver impostato le nuove regole ti verrà chiesto se desideri salvare le regole attualmente utilizzate per un uso permanente. iptables-persistent
fondamentalmente carica solo le regole salvate nei file /etc/iptables/rules.v4
e /etc/iptables/rules.v6
.
Se si modificano nuovamente le regole, per salvare le modifiche e ripristinarle al riavvio, è necessario salvarle nei file sopra menzionati utilizzando i comandi
iptables-save > /etc/iptables/rules.v4
iptables-save > /etc/iptables/rules.v6
Ora verranno ripristinati al riavvio.
In realtà non hai nemmeno bisogno iptables-persistent
. Questa domanda ha un'altra soluzione quasi altrettanto semplice.
Si noti che è necessario eseguire iptables-save
come root o in sudo
questo modo:
sudo bash -c "iptables-save > /etc/iptables/rules.v4"
Se esegui semplicemente sudo iptables-save > /etc/iptables/rules.v4
, riceverai un messaggio "Accesso negato" per rules.v4
.
Esistono diversi modi in cui possiamo limitare i siti https.
1- Proxy di calamari
2- IPtables
Con Squid Proxy Server
-> Apri la tua configurazione squid nel mio caso (vim /etc/squid/squid.conf)
-> Posiziona le regole come definito.
acl badsite dstdomain .facebook.com .soundcloud.com .playit.pk .songs.com
http_reply_access deny badsite # Questa riga blocca HTTP
http_access nega CONNECT badsite # Questo blocco di linea HTTPS
-> Dopo questo riavvia il tuo calamaro
Con Iptables È necessario inserire le regole come definito qui
iptables -N STREAM
iptables -I OUTPUT -m stringa --stringa "www.facebook.com" --algo bm --da 1 - a 600 -j STREAM
iptables -I OUTPUT -m stringa --stringa "facebook.com" --algo bm --da 1 - a 600 -j STREAM
iptables -I FORWARD -m stringa --stringa "www.facebook.com" --algo bm --da 1 - a 600 -j STREAM
iptables -I FORWARD -m stringa --stringa "facebook.com" --algo bm --da 1 - a 600 -j STREAM iptables -A STREAM -j REJECT
Sotto gentoo, per salvare le regole di iptables che hai aggiunto, usa
/etc/init.d/iptables save
Tuttavia, dovrai anche assicurarti che lo script init iptables (il cui scopo è ricaricare le regole) sia eseguito all'avvio:
rc-update add iptables default
Entrambi i comandi dovrebbero essere eseguiti come root (tramite sudo se lo hai installato)
ok, diciamo che vuoi bloccare l'indirizzo IP 192.168.1.5, inseriscilo al prompt dei comandi nello script della shell:
iptables -A INPUT -s 192.168.1.5 -j DROP
Quindi è possibile bloccare l'indirizzo IP in uscita 192.168.1.2 dal server con questo comando:
iptables -A OUTPUT -d 192.168.1.2 -j DROP
e dovrebbe impedire a quel sito di disturbarti di nuovo. spero che questo ti aiuti.
-p tcp
tuo dal blocco in uscita, in quanto fermerebbe solo i pacchetti tcp in uscita, piuttosto che tutti i pacchetti.
-A INPUT -p tcp -m tcp -d www.facebook.com -j DROP
l'abbiamo appena studiato oggi
Debian 7
se si desidera consentire loro di eseguire il ping di questo sito, aggiungere semplicemente --dport 80,443
dopo il nome del sito Web